[
  {
    "path": ".gitattributes",
    "content": "src/Assets/* linguist-vendored\nsrc/Templates/* linguist-vendored"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Smartphone (please complete the following information):**\n - Device: [e.g. iPhone6]\n - OS: [e.g. iOS8.1]\n - Browser [e.g. stock browser, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".gitignore",
    "content": "/vendor\ncomposer.phar\ncomposer.lock\n.DS_Store\n/node_modules\n.idea\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: php\n\nphp:\n  - 7.1\n\nbefore_script:\n  - travis_retry composer self-update\n  - travis_retry composer install --no-interaction\n\nscript: vendor/bin/phpunit\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributions are always welcome\n\n## Quick guide\n\n * Fork the repo.\n * Checkout the branch you want to make changes on:\n  * Develop branch in 95% of the cases.\n * Install the dependencies: `composer install`.\n * Create branch such as: `feature-foo` or `fix-bar`.\n * Write some awesome code!\n * Add some tests, and ensure your code is PSR-2 compliant.\n * Submit your Pull Request\n\n## When opening a pull request\nYou can do some things to increase the chance that your pull request is accepted the first time:\n\n * Submit one pull request per fix or feature.\n * If your changes are not up to date - rebase your branch on the parent branch.\n * Follow the conventions used in the project.\n * Remember about tests and documentation.\n\n## Naming Conventions\n\n * Use camelCase, not underscores, for variable, function and method names, arguments.\n * Use namespaces for all classes.\n * Prefix abstract classes with Abstract.\n * Suffix interfaces with Interface.\n * Suffix traits with Trait.\n * Suffix exceptions with Exception.\n * Suffix services with Service.\n * Use alphanumeric characters and underscores for file names.\n\n## PHPDoc\n\nWe generally follow the doc standards of Laravel.\n\n```\n/**\n * Register a binding with the container.\n *\n * @param  string|array  $abstract\n * @param  \\Closure|string|null  $concrete\n * @param  bool  $shared\n * @return void\n */\npublic function bind($abstract, $concrete = null, $shared = false)\n{\n    //\n}\n```\n\n## Other general standards we follow\n * [PSR-1: Basic Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md)\n * [PSR-2: Coding Style Guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)\n * [PSR-4: Autoloading Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md)\n * [Symfony Coding Standards](http://symfony.com/doc/current/contributing/code/standards.html)\n"
  },
  {
    "path": "LICENSE.md",
    "content": "The MIT License (MIT)\nCopyright (c) Grafite Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "README.md",
    "content": "# Grafite CMS\n\n> Grafite has archived this project and no longer supports or develops this code. We recommend using only as a source of ideas for your own code.\n\n**CMS** - Add a CMS to any Laravel app to gain control of: pages, blogs, galleries, events, custom modules, images and more.\n\n[![Build Status](https://travis-ci.org/GrafiteInc/CMS.svg?branch=master)](https://travis-ci.org/GrafiteInc/CMS)\n[![Packagist](https://img.shields.io/packagist/dt/grafite/cms.svg?maxAge=2592000)](https://packagist.org/packages/grafite/cms)\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000)](https://packagist.org/packages/grafite/cms)\n\nGrafite CMS is a full fledged CMS that can be added to any Laravel application. It provides you with full control of things like: pages, menus, links, widgets, blogs, events, faqs etc.\nGrafite CMS comes with a module builder for all your custom CMS needs, as well as a module publishing tools. So if you decide to reuse some modules on future projects you can easily publish thier assets seamlessly. If you wish to make your Grafite CMS module into a PHP package, then you will need to have it publish its assets to the `cms/modules` directory.\n\n### What is simple vs complex setup?\nSimple setup uses Grafite Builder as the backbone of an app for you using Laravel, once the setup command has been run you will have a full CMS as an app. Complex setup is specifically for developers who want to add a CMS to their existing app.\n\n##### Author(s):\n* [Matt Lantz](https://github.com/mlantz) ([@mattylantz](http://twitter.com/mattylantz), mattlantz at gmail dot com)\n\n## General Requirements\n1. PHP 7.1.3+\n1. MySQL 5.7+\n2. OpenSSL\n\n## Compatibility and Support\n| Laravel Version | Package Tag | Supported |\n|-----------------|-------------|-----------|\n| 5.8.x | 3.3.x | no |\n| 5.7.x | 3.x.x | no |\n| 5.6.x | 3.0.x | no |\n| 5.5.x | 2.4.x | no |\n| 5.4.x | 2.3.x | no |\n\n## Documentation\n\n### Installation\n\nCreate a new Laravel application, and make a database somewhere and update the .env file.\n\n* Run the following command:\n\n```bash\ncomposer require grafite/cms\n```\n\n* Then run the vendor publish:\n\n```bash\nphp artisan vendor:publish --provider=\"Grafite\\Cms\\GrafiteCmsProvider\"\n```\n\n!!! Tip \"If you wish to use the publish datetime picker - set your app's timezone config to correspond with your location\"\n\n## Simple Setup\n\n!!! warning \"The simple setup requires a fresh Laravel application.\"\n\nIf you're looking to do a simple website with a powerful CMS, and the only people logging on to the app are the CMS managers.\nThen you can run the setup command, it will install everything it needs, run its migrations and give you a login to start with.\nTake control of your website in seconds.\n\n```php\nphp artisan grafite:cms-setup\n```\n\nNow you're done setup. Login, and start building your amazing new website!\n\nYou can login as an admin with the following credentials:\n\n```\nU: admin@example.com\nP: admin\n```\n\n## Complex Setup\n\n!!! warning \"Complex setup is needed for applications that have already have existing code including the login/logout set up.\"\n\nIf you just want to add Grafite CMS to your existing application and already have your own application running then follow the instructions below:\n\n* Add the following to your routes provider:\n\n```php\nrequire base_path('routes/cms.php');\n```\n\n* Add the following to your app.scss file, you will want to modify depending on your theme of choice.\n\n```css\n@import \"resources/themes/default/assets/sass/_theme.scss\";\n```\n\n* Then migrate:\n\n```bash\nphp artisan migrate\n```\n\n* Then add to the Kernel Route Middleware:\n\n```php\n'cms' => \\App\\Http\\Middleware\\GrafiteCms::class,\n'cms-api' => \\App\\Http\\Middleware\\GrafiteCmsApi::class,\n'cms-language' => \\App\\Http\\Middleware\\GrafiteCmsLanguage::class,\n'cms-analytics' => \\Grafite\\Cms\\Middleware\\GrafiteCmsAnalytics::class,\n```\n\nIn order to have modules load as well please edit the autoload psr-4 portion to your composer file:\n```json\n\"autoload\": {\n    ...\n    \"psr-4\": {\n        \"App\\\\\": \"app/\",\n        ...\n        \"Cms\\\\\": \"cms/\"\n        }\n}\n```\n\n## CMS Access\nRoute to the administration dashboard is \"/cms/dashboard\".\n\nGrafite CMS requires Grafite Builder to run (only for the FormMaker), but Grafite CMS does not require you to use the Grafite Builder version of roles. But you will still need to ensure some degree of control for Grafite CMS's access. This is done in the Grafite CMS Middleware, using the gate and the Grafite CMS Policy. If you opt in to the roles system provided by Grafite Builder, then you can replace 'cms' with admin to handle the Grafite CMS authorization, if not, you will need to set your own security policy for access to Grafite CMS. To do this simply add the Grafite CMS policy to your `app/Providers/AuthServiceProvider.php` file, and ensure that any rules you wish it to use are in within the policy method. We suggest a policy similar to below.\n\nPossible CMS Access Policy:\n```\nGate::define('cms', function ($user) {\n    return (bool) $user;\n});\n\nGate::define('cms-api', function ($user) {\n    return true;\n});\n```\n\nOr Using Grafite Builder:\n```\nGate::define('cms', function ($user) {\n    return ($user->roles->first()->name === 'admin');\n});\n```\n\n### Fun Route Trick\n\nIf you're looking for clean URL pages without having to have the URL preceed with `page` or `p` then you can\nadd this to your routes.\n\n> Make sure you put it at the bottom of the routes or it may conflict with others.\n\n```php\nRoute::get('{url}', function ($url) {\n    return app(App\\Http\\Controllers\\Cms\\PagesController::class)->show($url);\n})->where('url', '([A-z\\d-\\/_.]+)?');\n```\n\n### Roles & Permissions (simple setup only)\n\nWith the roles middleware you can specify which roles are applicable separating them with pipes: `['middleware' => ['roles:admin|moderator|member']]`.\n\nThe Grafite CMS middleware utilizes the roles to ensure that a user is an 'admin'. But you can elaborate on this substantially, you can create multiple roles, and then set their access in your app, using the roles middleware. But, what happens when you want to allow multiple roles to access the CMS but only allow Admins to access your custom modules? You can use permissions for this. Similar to the roles middleware you can set the permissions `['middleware' => ['permissions:admin|cms']]`. You can set custom permissions in `config/permissions.php`. This means you can set different role permissions for parts of your CMS, giving you even more control.\n\n## API Endpoints\n\nGrafite CMS comes with a collection of handy API endpoints if you wish to use them. You can define your own policies for access and customize the middleware as you see fit.\n\n#### Token\n\nThe basic Grafite CMS API endpoints must carry the Grafite CMS `apiToken` defined in the config for the app. This can be provided by adding the following to any request:\n\n```\n?token={your token}\n```\n\n** All published and public facing data will be available via the API by default.\n\n```\n/cms/api/blog\n/cms/api/blog/{id}\n/cms/api/events\n/cms/api/events/{id}\n/cms/api/faqs\n/cms/api/faqs/{id}\n/cms/api/files\n/cms/api/files/{id}\n/cms/api/images\n/cms/api/images/{id}\n/cms/api/pages\n/cms/api/pages/{id}\n/cms/api/widgets\n/cms/api/widgets/{id}\n```\n\n## Images\n\nImages are resized on upload for a better quality response time. They follow the guidelines specified in the `config` under `cms.max-image-size`.\n\n## S3\n\nRegarding S3 bucket usage. You will need to set the permissions accordingly to allow images to be saved to your buckets. Then you need to set your buckets to allow public viewing access.\nThis is an example of such a policy.\n\n```\n{\n    \"Version\":\"2008-10-17\",\n    \"Statement\":[{\n        \"Sid\":\"AllowPublicRead\",\n        \"Effect\":\"Allow\",\n        \"Principal\": {\n            \"AWS\": \"*\"\n        },\n        \"Action\":[\"s3:GetObject\"],\n        \"Resource\":[\"arn:aws:s3:::MY_BUCKET/public/images/*\"]\n    }]\n}\n```\n\nReplace `MY_BUCKET` with your bucket name.\n\n## FileSystem Config\n\nIf using S3 you will need to add the following line to your filesystem config: `'visibility' => 'public',`\n\nAlso Provides\n------\nThe Grafite CMS package also provides the following packages:\n\n* DevFactory/Minify\n* Grafte/Builder\n\n### Config\n\nGrafite CMS has a rather elaborate config with many options available. You can expand the core modules, enable / disable features, and configure so much more.\n\n| Key | Description |\n| ------ | ----- |\n| analytics | Choose an analytics engine for the dashboard (internal or google) |\n| pixabay | Your pixabay API code |\n| db-prefix | Add a prefix to the Grafite CMS content tables |\n| live-preview | Preview your site in the editor view |\n| frontend-namespace | Sets the default namespace for the frontend code |\n| frontend-theme | The theme for the frontend |\n| load-modules | Do you want to load the external modules |\n| module-directory | Directory for custom Grafite CMS modules |\n| active-core-modules | Which core Grafite CMS modules are active |\n| rss | A set of attributes which can be set for the RSS feed |\n| site-mapped-modules | The module urls and their repositories that build the site map XML |\n| auto-translate | Automatically translate your content to other languages with Google Translate |\n| default-language | Your website's default language |\n| languages | Languages available in your website (enables their tabs in the editor) |\n| storage-location | Storage for files/ images (s3 or local) |\n| max-file-upload-size | The maximum file size for upload (Must also be set in php.ini) |\n| preview-image-size | When uploading images we cache clones at a smaller size (default: 800) |\n| cloudfront | Set a cloudfront URL to swap for the S3 bucket link |\n| backend-title | A title for the CMS (default: cms) |\n| backend-route-prefix | The route prefix for the backend of the CMS (default: cms) |\n| backend-theme | Theme for the backend (standard|dark) |\n| registration-available | Enable or disable registration |\n| pagination | Results per pack in backend |\n| api-key | Api Key for the Redactor photo and file injection |\n| api-token | Api Token for the Redactor photo and file injection, and the general external API calls |\n| forms | Forms config for core modules |\n\n### API\n\nGrafite's CMS API is very simple, and it has a VERY simple auth system using a single token which can be defined with in your env. You can easily use this to manage integration with various platforms etc.\nThe general base route for all API requests is:\n\n```\n/cms/api/{resource-url}?token={CMS_API_TOKEN}\n```\n\n| URL | Resource |\n| ------ | ----- |\n| blog | Blog |\n| events | Events |\n| endorsements | Endorsements |\n| faqs | FAQs |\n| files | Files |\n| images | Images |\n| pages | Pages |\n| widgets | Widgets |\n\nEach of these routes can be called or, you can also get a specific resource instance with the ID:\n\nExample:\n```\n/cms/api/blog/1?token=9a78sd6f9as6df9\n```\n\n### Multilingual\n\nTranslations\n-----\nAll too often we need translations in our sites and even our apps. Grafite CMS has got a very simple way of handling multiple languages. Translations is set up so that in the config if you add any languages to the `languages` array you will be able to define custom entries for those languages.\n\n#### Auto-Translate\n\n```php\nauto-translate: false\n```\n\nIn order to enable the auto-translate ensure that it is set to true in your config.\n\n## Translatable Modules\n\nSimply add the translatable trait to your module's model and then update your modules to follow a similar pattern to the Grafite CMS pages structure see the following files for reference:\n\n```\nGrafite\\Cms\\Controllers\\PagesController\nGrafite\\Cms\\Repositories\\PageRepository\nGrafite\\Cms\\Models\\Page\n```\n\n#### Archiving and Clean up:\n\nYou will need to extend `CmsModel` rather than the default Model. It will also need to use the `Translatable` Trait.\n\n```\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass Books extends CmsModel\n{\n    use Translatable;\n}\n```\n\nYou will also need to set bindings similar to this in your module event provider.\n\n```\n'eloquent.saved: Grafite\\Cms\\Models\\Page' => [\n    'Grafite\\Cms\\Models\\Page@afterSaved',\n],\n'eloquent.created: Grafite\\Cms\\Models\\Page' => [\n    'Grafite\\Cms\\Models\\Page@afterCreate',\n],\n'eloquent.deleting: Grafite\\Cms\\Models\\Page' => [\n    'Grafite\\Cms\\Models\\Page@beingDeleted',\n],\n```\n\nThese bindings ensure that when you save you create an archive of the previous entry, and on deleting of a item the system clears out any translations and archives it left behind.\nThe created binding allows for the auto-translate so you can utilize the power of Google Translate.\n\n## Language Links\n\nGrafite CMS comes with a blade directive which generates links for your supported languages and provides a simple way to swap between the languages of a single page or blog entry while remaining on the same URL.\n\n## Supporting Language URL Prefixes\n\nBy default we support the use of cookies to handle languages and swapping them. Since each page/blog/event etc can have a specific url relative to its language with this current build there isn't much point to the prefixes for languages. But, that being said, sometimes its handy so here is an easy way to add support for it.\n\nJust add this code to the `map()` method in the `RouteServiceProvider.php`:\n\n```php\n$segments = request()->segments();\n$supportedLanguages = array_keys(config('cms.languages'));\n\nif (isset($segments[0]) && in_array($segments[0], $supportedLanguages)) {\n    $language = $segments[0];\n    unset($segments[0]);\n    return redirect(implode('/', $segments))->withCookie('language', encrypt($language))->send();\n}\n```\n\n### Promotions\n\nMuch like the term implies promotions are like advertisements. They are intended to be treated like widgets, the main difference is that they have time scopes. This means you can put together promotional materials and content and set their publish date and time, as well as a finished at date and time to have the promotion disappear. This makes it very easy to schedule launches of campaigns etc.\n\n```\n@promotion('slug')\n```\n\nYou can set these on any theme files. We recommend you leave them in the theme files and simply change the content and dates when you need to.\n\n### Themes\n\nGrafite CMS has a full scope theming tool built right in. You can easily generate basic themes that can be built on and kept clear of your views.\nAll the listed templates with a star are optional - otherwise everything else is required, for the basic support.\n\nBasic Theme Structure\n------\n* assets\n    * js\n        * theme.js\n    * sass\n        * _basic.scss <span class=\"fa fa-star\"></span>\n        * _theme.scss\n* blog\n    * all.blade.php\n    * featured-template.blade.php\n    * show.blade.php\n* events\n    * all.blade.php\n    * date.blade.php\n    * calendar.blade.php\n    * featured-template.blade.php\n    * show.blade.php\n* faqs\n    * all.blade.php\n* gallery\n    * all.blade.php\n    * show.blade.php\n* layout\n    * master.blade.php\n* pages\n    * all.blade.php\n    * featured-template.blade.php\n    * home.blade.php\n    * show.blade.php\n* partials\n    * navigation.blade.php\n* public\n    * img\n\nYou have the ability to include other theme views into your view using the <code>&#64;theme('path')</code> directive with Blade. Otherwise its basically anything and everything Blade can do including any directives you wish to expand it with.\n\n### Blade Directives\n\nGrafite CMS has some custom directives added to Blade which allows you to include files from your theme easily, as well as other parts.\n\n#### &#64;theme('path.to.view')\nYou can always add the <code>cms-frontend::</code> namespace to the <code>&#64;include('path')</code> or instead use <code>&#64;theme('path')</code>.\n\n#### &#64;block('slug')\n\nCreate unique and elegant designs with block directives in your templates for pages and blogs.\n\n!!! Warning\n    With the block blade directive you do not specify the module it needs to load, it determines that from the first string in the request URL.\n    It will default to page if no matching module name matches the URL. In the case of something like `events`, it expects the variable in the template\n    to be `$event`. It is wrapped in the `optional` method to protect the view from breaking the app.\n\n#### &#64;menu('slug')\n\nEasily add menus to your views with the menu blade directive.\n\n#### &#64;modules(['modules-to-ignore'], 'link-class', 'list-item-class')\n\nGenerate links to modules automatically (Bootstrap 4 by default).\n\n#### &#64;widget('slug')\n\nAdd widgets to your views with the menu blade directive, just specify the SLUG.\n\n#### &#64;image('id', 'class')\n\nProvides an image URL with an html tag and extra for adding a class\n\n#### &#64;image_link('ID')\n\nProvides an image URL\n\n#### &#64;images('tag')\n\nImages will be provided as an array, and if you skip the tag then the method will return all images, otherwise it follows the tagging.\n\n#### &#64;edit('module', 'id')\n\nThere is also the Grafite CMS Service which can be run inside your blade views. Its as simple as {{ Cms::method() }}\n\n#### &#64;markdown('content')\n\nConvert your markdown blog or page entries into HTML.\n\n#### &#64;languages('link-class', 'list-item-class')\n\nGenerate links for each supported lanugage in your website\n\nHelper Methods Available:\n------\n* menu('slug', 'optional-view-path')\n* images('tag')\n* widget('slug')\n* editBtn('module', 'id')\n\n### Pages and Blocks\n\nThere are some special features for pages which are not available for other parts of the site.\n\n#### Blocks\n\nPages are special and can often require complex designs. If your application needs some of the more abstract designs you can still use Grafite CMS for page management by using the block system.\n\n```php\n{!! $page->block('main') !!}\n```\nor\n```\n{{ block('main') }}\n```\n\nBy placing code like this in your template Grafite CMS will generate the `main` block if it does not exist yet. If it does and has content it will render the content. It's really that simple.\n\n### Publishing\n\n#### Command\n```\nphp artisan theme:publish {name}\n```\n\nThe Grafite CMS theme publisher will publish the public directory only. If you want to integrate assets you need to do so using your `webpack` or `gulp` file, pending on which setup you use.\n\n| Laravel Verison | Asset builder |\n| --- | --- |\n| 5.4+ | `webpack.mix.js` |\n| 5.3 | `gulpfile.js` |\n\nBasic Theme (top tier)\n------\n* assets\n* blog\n* events\n* faqs\n* gallery\n* layout\n* pages\n* partials\n* public\n    * img\n\n### Symlink\n\n#### Command\n```\nphp artisan theme:link {name}\n```\n\nThe Grafite CMS theme link tool will create a symlink between your public folder and a folder in your public directory called `theme`.\nThis can make it easier to manage assets within a theme.\n\n| Laravel Verison | Asset builder |\n| --- | --- |\n| 5.4+ | `webpack.mix.js` |\n| 5.3 | `gulpfile.js` |\n\nBasic Theme (top tier)\n------\n* assets\n* blog\n* events\n* faqs\n* gallery\n* layout\n* pages\n* partials\n* public -> `{app_directory}/public/theme`\n    * img\n\n### Modules\n\nGrafite CMS comes with a handful of modules for handling a basic application/website including: Images, Files, Blog, Pages, Faqs, etc.\nBelow you will find a full listing of the modules that come pre-packaged with Grafite CMS.\nIn order to create your own Modules and ensure that they are loaded you MUST add `\"Cms\\\\\": \"cms/\"` to the PSR-4 group in your `composer.json` file.\n\nPre-packaged Modules\n------\n* Blog\n* Pages\n* Menus\n* Widgets\n* Faqs\n* Images\n* Files\n* Events\n\nYou have the freedom to make any modules you want. You can use the `artisan module:make` or the `artisan module:crud` to generate them and then `artisan module:publish` to publish their contents.\n\n### Assets\n\nGrafite CMS modules have an `Assets` directory which is intended to contain all your JS and SASS or CSS. In order to load the Assets in your Module, you can use the `Cms` facade.\n\nGrafite CMS comes with a Minify package so you can easily load your modules assets with calls like below. You don't have to set the content-type.\nBut pending on what you're loading you may want to override what the Cms service determines is the content-type.\n\nSo if you want to load your css file in your Sample module's Assets you could do the following:\n\n`Assets/css/styles.css` is the file we're grabbing.\n\n```\n<link rel=\"stylesheet\" type=\"text/css\" href=\"{{ Cms::moduleAsset('sample', 'css/styles.css', 'text/css') }}\">\n```\n\nOr we can load some JavaScript, and yes jQuery is already inside Grafite CMS.\n\n`Assets/js/module.js` is the file we're grabbing.\n\n```\n<script type=\"text/javascript\" src=\"{{ Cms::moduleAsset('sample', 'js/module.js', 'application/javascript') }}\"></script>\n```\n\n### Composer\n\nSo now you've made a CMS module and it's serving your application well, but now you've decided that it would make more sense for it to be a composer package, that you can run inside any app for easier maintenance. This also gives you far more freedom to decide how you wish to integrate the module into your app.\n\n```\nmodule:composer {name} {namespace}\n```\n\nThis will generate a composer file, as well set the namespace of your module to a new package namespace.\n\n### Config\n\nThe configs are autoloaded and are added to the cms config.\n\n```\nconfig('cms.modules.sample') // would retrieve the sample modules internal config.php contents\n```\n\nIf you want to access a config that is customizable for your module you can publish one:\n\n```\nphp artisan vendor:publish\n```\n\n### CRUD\n\nGrafite CMS can generate custom CRUD modules for your application giving it all the power you want as fast as possble. Simply run the command: `php artisan module:crud` and discover the many hidden powers inside the Grafite CMS.\nThe CRUD generator will produce a module with basic unit tests started. You would then need to setup your migrations etc, and then publish the module to your app. Check out the publishing for more details.\n\n#### Forms\nYou can use the Form Maker tool which is provided by [Grafite Builder](https://github.com/GrafiteInc/Builder)\n\n#### Redactor\nYou can utilize redactor (the WYSIWYG) in your CRUD by adding `.redactor` to any textarea class.\n\n#### Images and Files:\nInside the redactor instance you can easily add images and files which you have uploaded to Grafite CMS. Its as easy as clicking them to have them added to the entry.\n\n#### Front-end/ Theme\nWhen you generate a module the system will also generate a front-end or theme component which is kept in the `Publishes` directory. The is the portion of code that your visitors will see. You will need to publish this code using the `php artisan module:publish {name}` command.\nProvided you leave the module inside the `cms/modules` directory. However, you can also make your module into a composer package.\n\n### Files &amp; Images\n\nGrafite CMS is always concerned with security of what you provide, the potential open doors in your website/ app. As such, the Files which are uploaded to the CMS are locked outside of the public access points.\n\n*What does this mean?*\n\nThis means that when you're website is providing these to visitors they are actually getting them through an API access point. This is done to ensure that the files do not reveal thier location. This means that no webscrappers can crawl your directories and take off files they shouldn't be, including files that have yet to be released.\n\n#### Storage Location\n\nIn the config you can set the storage location for your file uploads. This can be either S3 or local. To get S3 to work correctly you need to configure Laravel as you would with S3. Grafite CMS will take it from there. So simply add your details to the config and it should work. The CMS loads all the third-party packages you will need.\n\n### Make\n\nGrafite CMS has a powerful CRUD builder. But lets say you want to have a custom module that integrates with another service or doesn't involve a CRUD at all.\nThen the `php artisan module:make` command will be your best tool. It will create a minimum viable module with a very basic admin layer and client layer which you can customize as you see fit.\n\n#### Redactor\nYou can utilize redactor in your module by adding `.redactor` to any textarea class.\n\n#### Images and Files:\nInside the redactor instance you can easily add images and files which you have uploaded to the CMS. Its as easy as clicking them to have them added to the entry.\n\n#### Front-end/ Theme\nWhen you generate a module the system will also generate a front-end or theme component which is kept in the `Publishes` directory. The is the portion of code that your visitors will see. You will need to publish this code using the `php artisan module:publish {name}` command.\n\n### Publish\n\nAll custom modules will need to have their `Publishes` folder published in order to have their code added to you app. We've wrapped this into one simple command:\n\n```\nphp artisan module:publish\n```\n\nRunning this will place the files in the matching folders in your app. So if you want to have files put in migrations make sure your `Publishes` folder has a migration file in a directory like this:\n\n```\nPublishes/database/migrations/migration_file.php\n```\n\nIf you switch themes in Grafite CMS you will need to republish your module. The views are added directly into the themes.\n\n## License\nGrafite CMS is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)\n\n## Redactor License\nGrafite has an OEM licence for the use of Redactor in the Grafite CMS package.\nYou are fully welcome to use Grafite CMS package and incorporate it into any apps you build, you are permitted to offer those apps as SaaS or other products.\nHowever, you are not entitle to strip out parts of Redactor and resell them, please see this [license](https://imperavi.com/redactor/license/) for more information\n\n### Bug Reporting and Feature Requests\nPlease add as many details as possible regarding submission of issues and feature requests\n\n### Disclaimer\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "changelog.md",
    "content": "# Change Log - Grafite CMS\nAll notable changes to this project will be documented in this file.\nThis project adheres to [Semantic Versioning](http://semver.org/).\n----\n\n## [v3.3.0] - 2019-09-04\n\n### Added\n- Compatible with Laravel 5.7 and up\n\n## [v3.2.2] - 2018-10-25\n\n### Added\n- Ability to delete hero images\n\n### Changed\n- Module migrations\n\n### Fixed\n- npm security audit\n- Mobile UI fixes\n- Menu and link fixes\n\n## [v3.2.1] - 2018-09-14\n\n### Fixed\n- Issue with middleware not being added via simple setup\n\n## [v3.2.0] - 2018-09-06\n\n### Changed\n- Laravel 5.7 support\n\n## [v3.1.9] - 2018-09-06\n\n### Changed\n- Added info on Redactor to readme\n\n### Fixed\n- Issue with file and image upload\n\n## [v3.1.8] - 2018-09-05\n\n### Fixed\n- Issue with file and image uploads\n-  and bulk photo delete\n\n## [v3.1.7] - 2018-09-03\n\n### Added\n- New Promotions component\n- All new Redactor 3 integration\n- Google Analytics support upgrade\n\n### Changed\n- Improved API component\n- Improved module templates\n- Link page connection improvements\n\n### Fixed\n- Issues with languages\n- Issues with UI\n- Issues with images\n\n## [v3.1.6] - 2018-08-01\n\n### Changed\n- Improved the urls of published files\n\n### Fixed\n- Issue with CMS modules\n- Issues with translations\n- Issue with notifications\n\n## [v3.1.5] - 2018-07-03\n\n### Changed\n- Added optional class to menu blade directive\n\n### Fixed\n- Issue with menus\n- Issue with BaseService files\n\n## [v3.1.4] - 2018-06-24\n\n### Changed\n- Minor code cleanup\n\n### Fixed\n- Issue with notifications\n\n## [v3.1.3] - 2018-06-18\n\n### Fixed\n- Minor issues with dark theme\n- Test fixes\n\n## [v3.1.2] - 2018-06-18\n\n### Added\n- Translatable menu links\n- New theme symlink command\n\n### Fixed\n- Side panel spacing\n- Translation improvements\n\n## [v3.1.1] - 2018-04-19\n\n### Fixed\n- Issue with file and image saving\n- Improved language switching links\n\n## [v3.1.0] - 2018-04-12\n\n### Added\n- RSS feed\n- Module Block support\n- Site Map\n- Block directive support for Blogs\n\n### Fixed\n- Routes\n- Success Messages\n- Table CMS prefixes\n- Link validation\n- Module searches\n\n## [v3.0.1] - 2018-03-23\n\n### Fixed\n- Minor style fixes\n\n## [v3.0.0] - 2018-03-23\n\n### Changed\n- Bootstrap upgrade\n- Overhaul of codebase\n- General Improvements\n- Laravel 5.6 compatibility upgrade\n\n## [v2.4.6] - 2018-02-21\n\n### Fixed\n- Issue with payloads\n\n## [v2.4.5] - 2018-02-21\n\n### Added\n- Cloudfront support\n\n### Fixed\n- Security concern\n- Language issue\n- Date issue\n\n## [v2.4.4] - 2017-10-25\n\n### Added\n- WYSIWYG icon feature\n\n## [v2.4.3] - 2017-09-21\n\n### Changed\n- Removed logout link from basic theme\n\n### Fixed\n- Fixed issue with setup command\n- Corrected a bad route definition\n\n## [v2.4.2] - 2017-09-19\n\n### Fixed\n- Issue with blog tags\n\n## [v2.4.1] - 2017-09-18\n\n### Added\n- published_at as dates\n- enhanced the admin dashboard\n\n### Changed\n- Code clean up\n\n## [v2.4.0] - 2017-09-15\n\n### Changed\n- Now supporting Laravel 5.5\n\n## [v2.3.32] - 2017-09-15\n\n### Changed\n- Improved loading time of images drastically\n\n### Fixed\n- Refactored the images as assets\n\n## [v2.3.31] - 2017-08-11\n\n### Fixed\n- Further image improvments\n\n## [v2.3.30] - 2017-08-10\n\n### Fixed\n- Minor issues with Images\n\n## [v2.3.29] - 2017-07-10\n\n### Fixed\n- Minor issue with Quazar tests\n\n## [v2.3.28] - 2017-07-10\n\n### Added\n- New entity relations for images\n- Bulk image deleting\n\n## [v2.3.27] - 2017-07-06\n\n### Fixed\n- Fixes issue with JS which broke the image upload\n\n## [v2.3.26] - 2017-07-03\n\n### Fixed\n- Issue with blog history view\n\n## [v2.3.25] - 2017-06-22\n\n### Added\n- Sortable menus\n\n### Fixed\n- Issue with images\n\n## [v2.3.24] - 2017-06-03\n\n### Fixed\n- Corrected internal API issue\n\n## [v2.3.23] - 2017-06-03\n\n### Added\n- Backend route prefix default: cabin\n\n### Changed\n- Refactored asset caching and local detection\n\n### Fixed\n- Issue with widgets and translations\n\n## [v2.3.22] - 2017-05-31\n\n### Changed\n- Refactored the asset system\n\n### Fixed\n- Updates to the generated tests\n\n## [v2.3.21] - 2017-05-18\n\n### Fixed\n- Minor issues with images and S3\n\n## [v2.3.20] - 2017-05-15\n\n### Changed\n- Switched to admin@example.org\n\n## [v2.3.19] - 2017-05-07\n\n### Fixed\n- Fixes an issue with the 24 hour clock in Repositories\n\n## [v2.3.18] - 2017-05-04\n\n### Fixed\n- Resolved issue with inaccurate published_at regarding timezones\n\n## [v2.3.17] - 2017-05-03\n\n### Added\n- Dashboard view for admin\n- Admin dashboard link\n\n### Fixed\n- Better feedback in image/file insert\n- Menu and page block fixes\n- Fixes for windows directories\n- Language and block related fixes\n- Fillable fixes\n\n## [v2.3.16] - 2017-04-26\n\n### Added\n- Modules now can be ignored by the menu directive via config or expression\n\n### Changed\n- Allows fillables to be modified for default modules\n\n## [v2.3.15] - 2017-04-11\n\n### Changed\n- Fillable fields for the models\n\n## [v2.3.14] - 2017-04-10\n\n### Changed\n- Improved the structure of the setup command\n\n## [v2.3.13] - 2017-04-09\n\n### Fixed\n- Issue when saving if template is not specified\n\n## [v2.3.12] - 2017-04-09\n\n### Fixed\n- Issue with multilingual\n- Issue with template parsing\n\n## [v2.3.11] - 2017-04-09\n\n### Added\n- New block templating for pages\n\n### Fixed\n- Some minor doc issues\n\n## [v2.3.10] - 2017-03-24\n\n### Fixed\n- Issue with empty value\n\n## [v2.3.9] - 2017-03-07\n\n### Changed\n- Split a service into traits for easier management\n\n### Fixed\n- Menu loading issue\n\n## [v2.3.8] - 2017-03-03\n\n### Fixed\n- More module template fixes\n\n## [v2.3.7] - 2017-03-03\n\n### Fixed\n- Minor fixes for the module loader\n- Fixed issue with module builder\n\n## [v2.3.6] - 2017-03-03\n\n### Fixed\n- Issue with route vs url\n\n## [v2.3.5] - 2017-03-03\n\n### Fixed\n- Minor issue with module crud\n- Navigation issue\n\n## [v2.3.4] - 2017-02-22\n\n### Changed\n- Minor style improvements\n\n## [v2.3.3] - 2017-02-20\n\n### Changed\n- Minor style updates and improvements\n\n## [v2.3.2] - 2017-02-19\n\n### Added\n- New sorting in the index pages for admin views\n\n### Changed\n- Updated the charts in the dashboard\n\n## [v2.3.1] - 2017-02-13\n\n### Fixed\n- Fixes an issue with S3 storage\n\n## [v2.3.0] - 2017-01-27\n\n### Added\n- New history and revert actions\n- New module composer packager\n- New internal analytics component\n\n### Changed\n- Laravel 5.4 compatibility\n\n## [v2.2.12] - 2016-12-28\n\n### Fixed\n- Fixes issue with Minify breaking CDN libs\n\n## [v2.2.11] - 2016-12-26\n\n### Added\n- New normalizer for entry content\n- New image blade tags\n\n## [v2.2.10] - 2016-12-15\n\n### Added\n- New middleware for language setting\n\n### Changed\n- Minor improvements\n- Also added ability to customize dashboard\n\n## [v2.2.9] - 2016-12-06\n\n### Changed\n- Readme updates\n\n### Fixed\n- Fixed issue with permissions and roles.\n\n## [v2.2.8] - 2016-12-05\n\n### Changed\n- Added support for MySQL 5.6\n\n## [v2.2.7] - 2016-12-05\n\n### Fixed\n- Incorrect text in config\n\n## [v2.2.6] - 2016-12-05\n\n### Added\n- New db-prefix option for cabin tables\n- New live preview in editor view\n\n### Fixed\n- Image loading times\n\n## [v2.2.5] - 2016-11-17\n\n### Fixed\n- Minor fix for setup\n\n## [v2.2.4] - 2016-11-10\n\n### Fixed\n- Minor issue with typos\n\n## [v2.2.3] - 2016-11-09\n\n### Fixed\n- Fixed a couple issues which came from the Laracogs updates\n\n## [v2.2.2] - 2016-11-04\n\n### Changed\n- Tweaked backend css and js\n\n### Fixed\n- Minor issue with route listing\n\n## [v2.2.1] - 2016-10-30\n\n### Added\n- New logo and more customizations\n\n### Changed\n- Better migrations for archives and translations\n\n### Fixed\n- Minor UI flow issues\n\n## [v2.2.0] - 2016-10-28\n\n### Added\n- Now with multilingual support\n\n### Changed\n- Internal improvements to UI and flow\n\n### Fixed\n- Better blog listing\n- menu issue resolved\n\n## [v2.1.3] - 2016-10-24\n\n### Changed\n- Updates to docs on landing page\n\n### Fixed\n- Minor issue with team leftover\n\n## [v2.1.2] - 2016-10-21\n\n### Added\n- New tokens for API calls\n\n### Changed\n- Moved migrations to publish directory\n\n### Fixed\n- API requests with gateway\n\n## [v2.1.1] - 2016-10-21\n\n### Fixed\n- Minor issues with quick setup\n\n## [v2.1.0] - 2016-10-21\n\n### Added\n- New API layer for basic API requests\n\n### Changed\n- Renamed models and repositories with singular names. This requires updates to your app's PagesController etc.\n\n### Fixed\n- General improvements and fixes for simple setup\n\n## [v2.0.1] - 2016-10-01\n\n### Fixed\n- Default to not loading modules\n\n## [v2.0.0] - 2016-09-29\n\n### Added\n- Now supports Laravel 5.3\n\n## [v1.4.24] - 2016-08-30\n\n### Fixed\n- Missing service provider\n\n## [v1.4.23] - 2016-08-30\n\n### Fixed\n- More markdown issues\n\n## [v1.4.22] - 2016-08-30\n\n### Fixed\n- Markdown issues\n\n## [v1.4.21] - 2016-07-27\n\n### Fixed\n- Fixes some issues with the Module maker\n\n## [v1.4.20] - 2016-07-25\n\n### Fixed\n- Fixed issues with templates and setup\n\n## [v1.4.19] - 2016-07-11\n\n### Changed\n- General code quality improvements\n\n## [v1.4.18] - 2016-07-09\n### Fixed\n- Fixes issue module providers\n\n## [v1.4.17] - 2016-07-08\n### Changed\n- Set up markdown support with markdown template and blade directive\n\n## [v1.4.16] - 2016-07-07\n### Changed\n- General improvements with WYSIWYG\n- Code Style improvements\n- Readme updates and refactoring\n\n## [v1.4.15] - 2016-07-05\n### Changed\n- Merged in PR #16\n\n## [v1.4.14] - 2016-07-04\n### Added\n- Images are now searchable\n### Changed\n- Minor cleanup\n\n## [v1.4.13] - 2016-07-04\n### Added\n- New service provider support\n### Changed\n- Improved overall support of modules\n### Fixed\n- Add in missing helper methods\n-  Fixed improperly named columns\n\n## [v1.4.12] - 2016-06-23\n### Fixed\n- Issue with quick install and missing Quarx in composer.json\n\n## [v1.4.11] - 2016-06-22\n### Changed\n- Changed models for core elements to use guarded vs fillable for expandability\n### Fixed\n- Fixed some unit tests\n\n## [v1.4.10] - 2016-06-21\n### Fixed\n- Fixed issue with file paths #10\n\n## [v1.4.9] - 2016-06-13\n### Fixed\n- Missing tests key\n\n## [v1.4.8] - 2016-06-13\n### Fixed\n- Issues resulting from the schema option on the crud generator\n\n## [v1.4.7] - 2016-06-12\n### Fixed\n- Fixes default template issue\n\n## [v1.4.6] - 2016-06-05\n### Changed\n- Removed ID and asset encryption for faster loading times.\n### Fixed\n- Missing schema generator\n\n## [v1.4.5] - 2016-06-03\n### Added\n- Now supports S3\n### Fixed\n- Issue with public gallery and published_at\n\n## [v1.4.4] - 2016-06-01\n### Added\n- New publish date\n- Added event tracking and rollback for custom modules\n### Changed\n- Better template layouts internally.\n\n## [v1.4.3] - 2016-05-31\n### Added\n- Auto-publish theme assets with quick start\n- Auto gulp running\n### Fixed\n- Issues with quick start and composer dump\n\n## [v1.4.2] - 2016-05-31\n### Added\n- Simple setup for fast website making\n### Changed\n- Moved the dashboard layout around\n- Simple setup drops some of the Laracogs additions\n\n## [v1.4.1] - 2016-05-31\n### Changed\n- Fixed naming issues\n\n## [v1.4.0] - 2016-05-31\n### Changed\n- Switched uuid to slugs please update your database columns accordingly (widgets & menus)\n- Also improved and updated the help information\n\n## [v1.3.6] - 2016-05-26\n### Added\n- New Theme files for custom modules\n### Changed\n- Overall improvements\n- Better module publishing\n\n## [v1.3.5] - 2016-05-20\n### Changed\n- Improved loading times\n- Improved encryption\n- Improved performance\n\n## [v1.3.4] - 2016-05-08\n### Added\n- Some stuff\n- more stuff\n### Fixed\n- method1 something\n\n## [v1.3.3] - 2016-05-06\n### Added\n- New changelog for easier tracking\n### Changed\n- Improved cryptography utilities\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\": \"grafite/cms\",\n    \"description\": \"Add a CMS to any Laravel app/website to gain control of: pages, blogs, galleries, events, custom modules, images and more.\",\n    \"license\": \"MIT\",\n    \"authors\": [\n        {\n            \"name\": \"Matt Lantz\",\n            \"email\": \"mattlantz@gmail.com\"\n        }\n    ],\n    \"require\": {\n        \"php\": \">=7.1.3\",\n        \"illuminate/support\": \"^5.7\",\n        \"grafite/crudmaker\": \"1.4.*\",\n        \"grafite/formmaker\": \"1.3.*\",\n        \"laravelcollective/html\": \"^5.7\",\n        \"devfactory/minify\": \"1.0.*\",\n        \"aws/aws-sdk-php\": \"^3.18\",\n        \"league/flysystem-aws-s3-v3\": \"^1.0\",\n        \"graham-campbell/markdown\": \"^10.0\",\n        \"intervention/image\": \"^2.4\",\n        \"stichoza/google-translate-php\": \"^3.2\",\n        \"donatj/phpuseragentparser\": \"^0.5.3\"\n    },\n    \"require-dev\": {\n        \"mockery/mockery\": \"~1.0\",\n        \"mikey179/vfsstream\": \"^1.6\",\n        \"orchestra/testbench\": \"^3.6\",\n        \"phpunit/phpunit\": \"~7.0\"\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"Grafite\\\\Cms\\\\\": \"src/\"\n        },\n        \"files\": [\n          \"src/Helpers/blade.php\",\n          \"src/Helpers/general.php\"\n        ]\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Tests\\\\\": \"tests/\"\n        },\n        \"classmap\": [\n            \"tests/factories/\"\n        ]\n    },\n    \"minimum-stability\": \"dev\",\n    \"prefer-stable\": true,\n    \"extra\": {\n        \"laravel\": {\n            \"providers\": [\n                \"Grafite\\\\Cms\\\\GrafiteCmsProvider\"\n            ]\n        }\n    }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"private\": true,\n    \"scripts\": {\n        \"dev\": \"npm run development\",\n        \"development\": \"cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"prod\": \"npm run production\",\n        \"watch\": \"cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"production\": \"cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js\"\n    },\n    \"devDependencies\": {\n        \"axios\": \"^0.18\",\n        \"bootstrap\": \">=4.1.2\",\n        \"cross-env\": \"^5.1\",\n        \"jquery\": \"^3.2\",\n        \"laravel-mix\": \"^2.1.14\",\n        \"lodash\": \"^4.17.4\",\n        \"popper.js\": \"^1.12\",\n        \"vue\": \"^2.5.7\"\n    }\n}\n"
  },
  {
    "path": "phpunit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit backupGlobals=\"false\"\n         backupStaticAttributes=\"false\"\n         bootstrap=\"vendor/autoload.php\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n         processIsolation=\"false\"\n         stopOnFailure=\"false\"\n>\n    <testsuites>\n        <testsuite name=\"Grafite CMS Tests\">\n            <directory>./tests/</directory>\n        </testsuite>\n    </testsuites>\n    <php>\n        <env name=\"APP_ENV\" value=\"testing\"/>\n        <env name=\"APP_DEBUG\" value=\"true\"/>\n        <env name=\"APP_KEY\" value=\"AckfSECXIvnK5r28GVIWUAxmbBSjTsmF\"/>\n    </php>\n</phpunit>\n"
  },
  {
    "path": "src/Assets/dist/css/all.css",
    "content": "/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno <m@tias.me>\n */\n.dropzone, .dropzone * {\n  box-sizing: border-box; }\n\n.dropzone {\n  position: relative; }\n  .dropzone .dz-preview {\n    position: relative;\n    display: inline-block;\n    width: 120px;\n    margin: 0.5em; }\n    .dropzone .dz-preview .dz-progress {\n      display: block;\n      height: 15px;\n      border: 1px solid #aaa; }\n      .dropzone .dz-preview .dz-progress .dz-upload {\n        display: block;\n        height: 100%;\n        width: 0;\n        background: green; }\n    .dropzone .dz-preview .dz-error-message {\n      color: red;\n      display: none; }\n    .dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark {\n      display: block; }\n    .dropzone .dz-preview.dz-success .dz-success-mark {\n      display: block; }\n    .dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark {\n      position: absolute;\n      display: none;\n      left: 30px;\n      top: 30px;\n      width: 54px;\n      height: 58px;\n      left: 50%;\n      margin-left: -27px; }\n\n/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno <m@tias.me>\n */\n@-webkit-keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@-moz-keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@-webkit-keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@-moz-keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@-webkit-keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n@-moz-keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n@keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n.dropzone, .dropzone * {\n  box-sizing: border-box; }\n\n.dropzone {\n  min-height: 150px;\n  border: 2px solid rgba(0, 0, 0, 0.3);\n  background: white;\n  padding: 20px 20px; }\n  .dropzone.dz-clickable {\n    cursor: pointer; }\n    .dropzone.dz-clickable * {\n      cursor: default; }\n    .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {\n      cursor: pointer; }\n  .dropzone.dz-started .dz-message {\n    display: none; }\n  .dropzone.dz-drag-hover {\n    border-style: solid; }\n    .dropzone.dz-drag-hover .dz-message {\n      opacity: 0.5; }\n  .dropzone .dz-message {\n    text-align: center;\n    margin: 2em 0; }\n  .dropzone .dz-preview {\n    position: relative;\n    display: inline-block;\n    vertical-align: top;\n    margin: 16px;\n    min-height: 100px; }\n    .dropzone .dz-preview:hover {\n      z-index: 1000; }\n      .dropzone .dz-preview:hover .dz-details {\n        opacity: 1; }\n    .dropzone .dz-preview.dz-file-preview .dz-image {\n      border-radius: 20px;\n      background: #999;\n      background: linear-gradient(to bottom, #eee, #ddd); }\n    .dropzone .dz-preview.dz-file-preview .dz-details {\n      opacity: 1; }\n    .dropzone .dz-preview.dz-image-preview {\n      background: white; }\n      .dropzone .dz-preview.dz-image-preview .dz-details {\n        -webkit-transition: opacity 0.2s linear;\n        -moz-transition: opacity 0.2s linear;\n        -ms-transition: opacity 0.2s linear;\n        -o-transition: opacity 0.2s linear;\n        transition: opacity 0.2s linear; }\n    .dropzone .dz-preview .dz-remove {\n      font-size: 14px;\n      text-align: center;\n      display: block;\n      cursor: pointer;\n      border: none; }\n      .dropzone .dz-preview .dz-remove:hover {\n        text-decoration: underline; }\n    .dropzone .dz-preview:hover .dz-details {\n      opacity: 1; }\n    .dropzone .dz-preview .dz-details {\n      z-index: 20;\n      position: absolute;\n      top: 0;\n      left: 0;\n      opacity: 0;\n      font-size: 13px;\n      min-width: 100%;\n      max-width: 100%;\n      padding: 2em 1em;\n      text-align: center;\n      color: rgba(0, 0, 0, 0.9);\n      line-height: 150%; }\n      .dropzone .dz-preview .dz-details .dz-size {\n        margin-bottom: 1em;\n        font-size: 16px; }\n      .dropzone .dz-preview .dz-details .dz-filename {\n        white-space: nowrap; }\n        .dropzone .dz-preview .dz-details .dz-filename:hover span {\n          border: 1px solid rgba(200, 200, 200, 0.8);\n          background-color: rgba(255, 255, 255, 0.8); }\n        .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\n          overflow: hidden;\n          text-overflow: ellipsis; }\n          .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\n            border: 1px solid transparent; }\n      .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {\n        background-color: rgba(255, 255, 255, 0.4);\n        padding: 0 0.4em;\n        border-radius: 3px; }\n    .dropzone .dz-preview:hover .dz-image img {\n      -webkit-transform: scale(1.05, 1.05);\n      -moz-transform: scale(1.05, 1.05);\n      -ms-transform: scale(1.05, 1.05);\n      -o-transform: scale(1.05, 1.05);\n      transform: scale(1.05, 1.05);\n      -webkit-filter: blur(8px);\n      filter: blur(8px); }\n    .dropzone .dz-preview .dz-image {\n      border-radius: 20px;\n      overflow: hidden;\n      width: 120px;\n      height: 120px;\n      position: relative;\n      display: block;\n      z-index: 10; }\n      .dropzone .dz-preview .dz-image img {\n        display: block; }\n    .dropzone .dz-preview.dz-success .dz-success-mark {\n      -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }\n    .dropzone .dz-preview.dz-error .dz-error-mark {\n      opacity: 1;\n      -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }\n    .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {\n      pointer-events: none;\n      opacity: 0;\n      z-index: 500;\n      position: absolute;\n      display: block;\n      top: 50%;\n      left: 50%;\n      margin-left: -27px;\n      margin-top: -27px; }\n      .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {\n        display: block;\n        width: 54px;\n        height: 54px; }\n    .dropzone .dz-preview.dz-processing .dz-progress {\n      opacity: 1;\n      -webkit-transition: all 0.2s linear;\n      -moz-transition: all 0.2s linear;\n      -ms-transition: all 0.2s linear;\n      -o-transition: all 0.2s linear;\n      transition: all 0.2s linear; }\n    .dropzone .dz-preview.dz-complete .dz-progress {\n      opacity: 0;\n      -webkit-transition: opacity 0.4s ease-in;\n      -moz-transition: opacity 0.4s ease-in;\n      -ms-transition: opacity 0.4s ease-in;\n      -o-transition: opacity 0.4s ease-in;\n      transition: opacity 0.4s ease-in; }\n    .dropzone .dz-preview:not(.dz-processing) .dz-progress {\n      -webkit-animation: pulse 6s ease infinite;\n      -moz-animation: pulse 6s ease infinite;\n      -ms-animation: pulse 6s ease infinite;\n      -o-animation: pulse 6s ease infinite;\n      animation: pulse 6s ease infinite; }\n    .dropzone .dz-preview .dz-progress {\n      opacity: 1;\n      z-index: 1000;\n      pointer-events: none;\n      position: absolute;\n      height: 16px;\n      left: 50%;\n      top: 50%;\n      margin-top: -8px;\n      width: 80px;\n      margin-left: -40px;\n      background: rgba(255, 255, 255, 0.9);\n      -webkit-transform: scale(1);\n      border-radius: 8px;\n      overflow: hidden; }\n      .dropzone .dz-preview .dz-progress .dz-upload {\n        background: #333;\n        background: linear-gradient(to bottom, #666, #444);\n        position: absolute;\n        top: 0;\n        left: 0;\n        bottom: 0;\n        width: 0;\n        -webkit-transition: width 300ms ease-in-out;\n        -moz-transition: width 300ms ease-in-out;\n        -ms-transition: width 300ms ease-in-out;\n        -o-transition: width 300ms ease-in-out;\n        transition: width 300ms ease-in-out; }\n    .dropzone .dz-preview.dz-error .dz-error-message {\n      display: block; }\n    .dropzone .dz-preview.dz-error:hover .dz-error-message {\n      opacity: 1;\n      pointer-events: auto; }\n    .dropzone .dz-preview .dz-error-message {\n      pointer-events: none;\n      z-index: 1000;\n      position: absolute;\n      display: block;\n      display: none;\n      opacity: 0;\n      -webkit-transition: opacity 0.3s ease;\n      -moz-transition: opacity 0.3s ease;\n      -ms-transition: opacity 0.3s ease;\n      -o-transition: opacity 0.3s ease;\n      transition: opacity 0.3s ease;\n      border-radius: 8px;\n      font-size: 13px;\n      top: 130px;\n      left: -10px;\n      width: 140px;\n      background: #be2626;\n      background: linear-gradient(to bottom, #be2626, #a92222);\n      padding: 0.5em 1.2em;\n      color: white; }\n      .dropzone .dz-preview .dz-error-message:after {\n        content: '';\n        position: absolute;\n        top: -6px;\n        left: 64px;\n        width: 0;\n        height: 0;\n        border-left: 6px solid transparent;\n        border-right: 6px solid transparent;\n        border-bottom: 6px solid #be2626; }\n\n/*\n\tIcon font\n*/\n@font-face {\n  font-family: 'RedactorFont';\n  src: url('redactor-font.eot');\n}\n@font-face {\n  font-family: 'RedactorFont';\n  src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n  font-weight: normal;\n  font-style: normal;\n}\n/*\n\tBox\n*/\n.redactor-box {\n  position: relative;\n  overflow: visible;\n  margin-bottom: 24px;\n}\n.redactor-box textarea {\n  display: block;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  width: 100%;\n  overflow: auto;\n  outline: none;\n  border: none;\n  background-color: #111;\n  box-shadow: none;\n  color: #ccc;\n  font-size: 13px;\n  font-family: Menlo, Monaco, monospace, sans-serif;\n  resize: none;\n}\n.redactor-box textarea:focus {\n  outline: none;\n}\n.redactor-editor,\n.redactor-box {\n  background: #fff;\n}\n/*\n\tZ-index setup\n*/\n.redactor-editor,\n.redactor-box,\n.redactor-box textarea {\n  z-index: auto;\n}\n.redactor-box-fullscreen {\n  z-index: 1051;\n}\n.redactor-toolbar {\n  z-index: 100;\n}\n.redactor-dropdown {\n  z-index: 1052;\n}\n#redactor-modal-overlay,\n#redactor-modal-box,\n#redactor-modal {\n  z-index: 1053;\n}\n/*\n\tResize\n*/\n.redactor-resize {\n  background: #f4f4f4;\n  padding: 4px 0 3px 0;\n  cursor: move;\n  border: 1px solid #e3e3e3;\n  border-top: none;\n}\n.redactor-resize div {\n  width: 30px;\n  margin: auto;\n  border-top: 1px solid #bbb;\n  border-bottom: 1px solid #fff;\n}\n/*\n\tFullscreen\n*/\nbody .redactor-box-fullscreen {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n}\n/*\n\tUtils\n*/\n.body-redactor-hidden {\n  overflow: hidden;\n}\n/*\n\tEditor\n*/\n.redactor-editor {\n  position: relative;\n  overflow: auto;\n  margin: 0 !important;\n  padding: 20px;\n  outline: none;\n  white-space: normal;\n  border: 1px solid #eee;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n  font-size: 14px;\n  line-height: 1.6em;\n}\n.redactor-editor:focus {\n  outline: none;\n}\n.toolbar-fixed-box + .redactor-editor {\n  padding-top: 32px !important;\n}\n/*\n\tPlaceholder\n*/\n.redactor-placeholder {\n  position: relative;\n}\n.redactor-placeholder:after {\n  position: absolute;\n  top: 20px;\n  left: 20px;\n  content: attr(placeholder);\n  color: #999 !important;\n  font-weight: normal !important;\n}\n/* Placeholder in linebreaks mode */\n.redactor-linebreaks.redactor-placeholder:after {\n  top: 20px;\n  left: 20px;\n}\n/*\n\tToolbar\n*/\n.redactor-toolbar {\n  position: relative;\n  top: 0;\n  left: 0;\n  margin: 0 !important;\n  padding: 0 !important;\n  list-style: none !important;\n  font-size: 14px !important;\n  line-height: 1 !important;\n  background: #fff;\n  border: none;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.redactor-toolbar:after {\n  content: \"\";\n  display: table;\n  clear: both;\n}\n.redactor-toolbar.redactor-toolbar-overflow {\n  overflow-y: auto;\n  height: 29px;\n  white-space: nowrap;\n}\n.redactor-toolbar.redactor-toolbar-external {\n  z-index: 999;\n  box-shadow: none;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.redactor-toolbar li {\n  vertical-align: top;\n  display: inline-block;\n  margin: 0 !important;\n  padding: 0 !important;\n  outline: none;\n  list-style: none !important;\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n.redactor-toolbar li a {\n  display: block;\n  color: #333;\n  text-align: center;\n  padding: 9px 10px;\n  outline: none;\n  border: none;\n  text-decoration: none;\n  cursor: pointer;\n  zoom: 1;\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n.redactor-toolbar li a:hover {\n  outline: none;\n  background-color: #1f78d8;\n  color: #fff;\n}\n.redactor-toolbar li a:hover i:before {\n  color: #fff;\n}\n.redactor-toolbar li a:active,\n.redactor-toolbar li a.redactor-act {\n  outline: none;\n  background-color: #ccc;\n  color: #444;\n}\n.redactor-toolbar li a.redactor-btn-image {\n  width: 14px;\n  height: 14px;\n  background-position: center center;\n  background-repeat: no-repeat;\n}\n.redactor-toolbar li a.fa-redactor-btn {\n  display: inline-block;\n  padding: 9px 10px 8px 10px;\n  line-height: 1;\n}\n.redactor-toolbar li a.redactor-button-disabled {\n  filter: alpha(opacity=30);\n  -moz-opacity: 0.3;\n  opacity: 0.3;\n}\n.redactor-toolbar li a.redactor-button-disabled:hover {\n  color: #333;\n  outline: none;\n  background-color: transparent !important;\n  cursor: default;\n}\n/*\n\tIcons\n*/\n.re-icon {\n  font-family: 'RedactorFont';\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.re-icon i:before {\n  position: relative;\n  font-size: 14px;\n}\n.re-video:before {\n  content: \"\\e600\";\n}\n.re-unorderedlist:before {\n  content: \"\\e601\";\n}\n.re-undo:before {\n  content: \"\\e602\";\n}\n.re-underline:before {\n  content: \"\\e603\";\n}\n.re-textdirection:before {\n  content: \"\\e604\";\n}\n.re-fontcolor:before {\n  content: \"\\e605\";\n}\n.re-table:before {\n  content: \"\\e606\";\n}\n.re-redo:before {\n  content: \"\\e607\";\n}\n.re-quote:before {\n  content: \"\\e608\";\n}\n.re-outdent:before {\n  content: \"\\e609\";\n}\n.re-orderedlist:before {\n  content: \"\\e60a\";\n}\n.re-link:before {\n  content: \"\\e60b\";\n}\n.re-horizontalrule:before {\n  content: \"\\e60c\";\n}\n.re-italic:before {\n  content: \"\\e60d\";\n}\n.re-indent:before {\n  content: \"\\e60e\";\n}\n.re-image:before {\n  content: \"\\e60f\";\n}\n.re-fullscreen:before {\n  content: \"\\e610\";\n}\n.re-normalscreen:before {\n  content: \"\\e611\";\n}\n.re-formatting:before {\n  content: \"\\e612\";\n}\n.re-fontsize:before {\n  content: \"\\e613\";\n}\n.re-fontfamily:before {\n  content: \"\\e614\";\n}\n.re-deleted:before {\n  content: \"\\e615\";\n}\n.re-html:before {\n  content: \"\\e616\";\n}\n.re-clips:before {\n  content: \"\\e617\";\n}\n.re-bold:before {\n  content: \"\\e618\";\n}\n.re-backcolor:before {\n  content: \"\\e619\";\n}\n.re-file:before {\n  content: \"\\e61a\";\n}\n.re-alignright:before {\n  content: \"\\e61b\";\n}\n.re-alignment:before,\n.re-alignleft:before {\n  content: \"\\e61c\";\n}\n.re-alignjustify:before {\n  content: \"\\e61d\";\n}\n.re-aligncenter:before {\n  content: \"\\e61e\";\n}\n.re-gallery:before {\n  content: \"\\e61f\";\n}\n/*\n\tToolbar tooltip\n*/\n.redactor-toolbar-tooltip {\n  position: absolute;\n  z-index: 1054;\n  text-align: center;\n  top: 0;\n  left: 0;\n  background: #000;\n  color: #fff;\n  padding: 5px 8px;\n  line-height: 1;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n  font-size: 12px;\n  border-radius: 2px;\n}\n/*\n\tDropdown\n*/\n.redactor-dropdown {\n  position: absolute;\n  top: 28px;\n  left: 0;\n  padding: 0;\n  min-width: 220px;\n  max-height: 254px;\n  overflow: auto;\n  background-color: #fff;\n  box-shadow: 0 1px 7px rgba(0, 0, 0, 0.25);\n  font-size: 14px;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n  line-height: 1.6em;\n}\n.redactor-dropdown a {\n  display: block;\n  padding: 10px 15px;\n  color: #000;\n  text-decoration: none;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n}\n.redactor-dropdown a:last-child {\n  border-bottom: none;\n}\n.redactor-dropdown a:hover {\n  background-color: #1f78d8;\n  color: #fff !important;\n  text-decoration: none;\n}\n/*\n\tIMAGE BOX\n*/\n#redactor-image-box {\n  position: relative;\n  max-width: 100%;\n  display: inline-block;\n  line-height: 0;\n  outline: 1px dashed rgba(0, 0, 0, 0.6);\n}\n#redactor-image-editter {\n  position: absolute;\n  z-index: 5;\n  top: 50%;\n  left: 50%;\n  margin-top: -11px;\n  margin-left: -18px;\n  line-height: 1;\n  background-color: #000;\n  color: #fff;\n  font-size: 11px;\n  padding: 7px 10px;\n  cursor: pointer;\n}\n#redactor-image-resizer {\n  position: absolute;\n  z-index: 2;\n  line-height: 1;\n  cursor: nw-resize;\n  bottom: -4px;\n  right: -5px;\n  border: 1px solid #fff;\n  background-color: #000;\n  width: 8px;\n  height: 8px;\n}\n/*\n\tLINK TOOLTIP\n*/\n.redactor-link-tooltip {\n  position: absolute;\n  z-index: 49999;\n  padding: 10px;\n  line-height: 1;\n  display: inline-block;\n  background-color: #000;\n  color: #555 !important;\n}\n.redactor-link-tooltip,\n.redactor-link-tooltip a {\n  font-size: 12px;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n}\n.redactor-link-tooltip a {\n  color: #ccc;\n  margin: 0 5px;\n  text-decoration: none;\n}\n.redactor-link-tooltip a:hover {\n  color: #fff;\n}\n/*\n\tDROPAREA\n*/\n#redactor-droparea {\n  position: relative;\n  overflow: hidden;\n  padding: 140px 20px;\n  border: 3px dashed rgba(0, 0, 0, 0.1);\n}\n#redactor-droparea.drag-hover {\n  background: rgba(200, 222, 250, 0.75);\n}\n#redactor-droparea.drag-drop {\n  background: rgba(250, 248, 200, 0.5);\n}\n#redactor-droparea-placeholder {\n  text-align: center;\n  font-size: 12px;\n  color: rgba(0, 0, 0, 0.7);\n}\n/*\n\tPROGRESS\n*/\n#redactor-progress {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  z-index: 1000000;\n  height: 10px;\n}\n#redactor-progress span {\n  display: block;\n  width: 100%;\n  height: 100%;\n  background-color: #3d58a8;\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n  background-size: 40px 40px;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n/*\n\tMODAL\n*/\n#redactor-modal-overlay {\n  position: fixed;\n  top: 0;\n  left: 0;\n  margin: auto;\n  overflow: auto;\n  width: 100%;\n  height: 100%;\n  background-color: #000 !important;\n  filter: alpha(opacity=30);\n  -moz-opacity: 0.3;\n  opacity: 0.3;\n}\n#redactor-modal-box {\n  position: fixed;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n#redactor-modal {\n  position: relative;\n  margin: auto;\n  margin-bottom: 20px;\n  padding: 0;\n  background: #fff;\n  color: #000;\n  font-size: 14px !important;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n  box-shadow: 0 1px 70px rgba(0, 0, 0, 0.5);\n}\n#redactor-modal header {\n  padding: 30px 40px 5px 40px;\n  font-size: 18px;\n  font-weight: bold;\n}\n#redactor-modal section {\n  padding: 30px 40px 50px 40px;\n}\n#redactor-modal label {\n  display: block;\n  float: none !important;\n  margin: 15px 0 3px 0 !important;\n  padding: 0;\n}\n#redactor-modal input[type=\"radio\"],\n#redactor-modal input[type=\"checkbox\"] {\n  position: relative;\n  top: -1px;\n}\n#redactor-modal select {\n  width: 100%;\n}\n#redactor-modal input[type=\"text\"],\n#redactor-modal input[type=\"password\"],\n#redactor-modal input[type=\"email\"],\n#redactor-modal input[type=\"url\"],\n#redactor-modal textarea {\n  position: relative;\n  z-index: 2;\n  margin: 0;\n  padding: 5px 4px;\n  height: 28px;\n  border: 1px solid #ccc;\n  border-radius: 1px;\n  background-color: white;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset;\n  color: #333;\n  width: 100%;\n  font-size: 14px;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n  -moz-transition: border 0.3s ease-in;\n  transition: border 0.3s ease-in;\n}\n#redactor-modal input[type=\"text\"]:focus,\n#redactor-modal input[type=\"password\"]:focus,\n#redactor-modal input[type=\"email\"]:focus,\n#redactor-modal input[type=\"url\"]:focus,\n#redactor-modal textarea:focus {\n  outline: none;\n  border-color: #5ca9e4;\n  box-shadow: 0 0 0 2px rgba(70, 161, 231, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2) inset;\n}\n#redactor-modal input[type=\"text\"].redactor-input-error,\n#redactor-modal input[type=\"password\"].redactor-input-error,\n#redactor-modal input[type=\"email\"].redactor-input-error,\n#redactor-modal input[type=\"url\"].redactor-input-error,\n#redactor-modal textarea.redactor-input-error {\n  border-color: #e82f2f;\n  box-shadow: 0 0 0 2px rgba(232, 47, 47, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2) inset;\n}\n#redactor-modal textarea {\n  display: block;\n  margin-top: 4px;\n  line-height: 1.4em;\n}\n/*\n\tTabs in Modal\n*/\n#redactor-modal-tabber {\n  margin-bottom: 15px;\n  font-size: 12px;\n}\n#redactor-modal-tabber a {\n  border: 1px solid #ddd;\n  line-height: 1;\n  padding: 8px 15px;\n  margin-right: -1px;\n  text-decoration: none;\n  color: #000;\n}\n#redactor-modal-tabber a:hover {\n  background-color: #1f78d8;\n  border-color: #1f78d8;\n  color: #fff;\n}\n#redactor-modal-tabber a.active {\n  cursor: default;\n  background-color: #ddd;\n  border-color: #ddd;\n  color: rgba(0, 0, 0, 0.6);\n}\n/*\n\tList in Modal\n*/\n#redactor-modal #redactor-modal-list {\n  margin-left: 0;\n  padding-left: 0;\n  list-style: none;\n  max-height: 250px;\n  overflow-x: auto;\n}\n#redactor-modal #redactor-modal-list li {\n  border-bottom: 1px solid #ddd;\n}\n#redactor-modal #redactor-modal-list li:last-child {\n  border-bottom: none;\n}\n#redactor-modal #redactor-modal-list a {\n  padding: 10px 5px;\n  color: #000;\n  text-decoration: none;\n  font-size: 13px;\n  display: block;\n  position: relative;\n}\n#redactor-modal #redactor-modal-list a:hover {\n  background-color: #eee;\n}\n#redactor-modal-close {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  width: 30px;\n  height: 30px;\n  text-align: right;\n  color: #bbb;\n  font-size: 30px;\n  font-weight: 300;\n  cursor: pointer;\n}\n#redactor-modal-close:hover {\n  color: #000;\n}\n#redactor-modal footer button {\n  position: relative;\n  width: 100%;\n  padding: 14px 16px;\n  margin: 0;\n  outline: none;\n  border: none;\n  background-color: #ddd;\n  color: #000;\n  text-align: center;\n  text-decoration: none;\n  font-weight: normal;\n  font-size: 12px;\n  font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;\n  line-height: 1;\n  cursor: pointer;\n}\n#redactor-modal footer button:hover {\n  color: #777;\n  background: none;\n  background: #bbb;\n  text-decoration: none;\n}\n#redactor-modal footer button.redactor-modal-delete-btn {\n  background: none;\n  color: #fff;\n  background-color: #b52525;\n}\n#redactor-modal footer button.redactor-modal-delete-btn:hover {\n  color: rgba(255, 255, 255, 0.6);\n  background-color: #881b1b;\n}\n#redactor-modal footer button.redactor-modal-action-btn {\n  background: none;\n  color: #fff;\n  background-color: #2461b5;\n}\n#redactor-modal footer button.redactor-modal-action-btn:hover {\n  color: rgba(255, 255, 255, 0.6);\n  background-color: #1a4580;\n}\n/*\n\t##############################################\n\n\tDROPDOWN FORMATTING\n\n\t##############################################\n*/\n.redactor-dropdown .redactor-formatting-blockquote {\n  color: rgba(0, 0, 0, 0.4);\n  font-style: italic;\n}\n.redactor-dropdown .redactor-formatting-pre {\n  font-family: monospace, sans-serif;\n}\n.redactor-dropdown .redactor-formatting-h1 {\n  font-size: 36px;\n  line-height: 36px;\n  font-weight: bold;\n}\n.redactor-dropdown .redactor-formatting-h2 {\n  font-size: 24px;\n  line-height: 36px;\n  font-weight: bold;\n}\n.redactor-dropdown .redactor-formatting-h3 {\n  font-size: 21px;\n  line-height: 30px;\n  font-weight: bold;\n}\n.redactor-dropdown .redactor-formatting-h4 {\n  font-size: 18px;\n  line-height: 26px;\n  font-weight: bold;\n}\n.redactor-dropdown .redactor-formatting-h5 {\n  font-size: 16px;\n  line-height: 23px;\n  font-weight: bold;\n}\n/*\n\t##############################################\n\n\t CONTENT STYLES\n\n\t##############################################\n*/\n.redactor-editor code,\n.redactor-editor pre {\n  font-family: Menlo, Monaco, monospace, sans-serif;\n}\n.redactor-editor div,\n.redactor-editor p,\n.redactor-editor ul,\n.redactor-editor ol,\n.redactor-editor table,\n.redactor-editor dl,\n.redactor-editor blockquote,\n.redactor-editor pre {\n  font-size: 14px;\n  line-height: 1.6em;\n}\n.redactor-editor a {\n  color: #15c;\n  text-decoration: underline;\n}\n.redactor-editor object,\n.redactor-editor embed,\n.redactor-editor video,\n.redactor-editor img {\n  max-width: 100%;\n  width: auto;\n}\n.redactor-editor video,\n.redactor-editor img {\n  height: auto;\n}\n.redactor-editor div,\n.redactor-editor p,\n.redactor-editor ul,\n.redactor-editor ol,\n.redactor-editor table,\n.redactor-editor dl,\n.redactor-editor figure,\n.redactor-editor blockquote,\n.redactor-editor pre {\n  margin: 0;\n  margin-bottom: 15px;\n  border: none;\n  background: none;\n  box-shadow: none;\n}\n.redactor-editor iframe,\n.redactor-editor object,\n.redactor-editor hr {\n  margin-bottom: 15px;\n}\n.redactor-editor blockquote {\n  margin-left: 1.6em !important;\n  padding-left: 0;\n  color: #777;\n  font-style: italic;\n}\n.redactor-editor ul,\n.redactor-editor ol {\n  padding-left: 2em;\n}\n.redactor-editor ul ul,\n.redactor-editor ol ol,\n.redactor-editor ul ol,\n.redactor-editor ol ul {\n  margin: 2px;\n  padding: 0;\n  padding-left: 2em;\n  border: none;\n}\n.redactor-editor dl dt {\n  font-weight: bold;\n}\n.redactor-editor dd {\n  margin-left: 1em;\n}\n.redactor-editor table {\n  border-collapse: collapse;\n  font-size: 1em;\n  width: 100%;\n}\n.redactor-editor table td,\n.redactor-editor table th {\n  padding: 5px;\n  border: 1px solid #ddd;\n  vertical-align: top;\n}\n.redactor-editor table thead td,\n.redactor-editor table th {\n  font-weight: bold;\n  border-bottom-color: #888;\n}\n.redactor-editor code {\n  background-color: #d8d7d7;\n}\n.redactor-editor pre {\n  overflow: auto;\n  padding: 1em;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  background: #f8f8f8;\n  white-space: pre;\n  font-size: 90%;\n}\n.redactor-editor hr {\n  display: block;\n  height: 1px;\n  border: 0;\n  border-top: 1px solid #ccc;\n}\n.redactor-editor h1,\n.redactor-editor h2,\n.redactor-editor h3,\n.redactor-editor h4,\n.redactor-editor h5,\n.redactor-editor h6 {\n  font-weight: bold;\n  color: #000;\n  padding: 0;\n  background: none;\n  text-rendering: optimizeLegibility;\n  margin: 0 0 .5em 0;\n}\n.redactor-editor h1,\n.redactor-editor h2,\n.redactor-editor h3,\n.redactor-editor h4 {\n  line-height: 1.3;\n}\n.redactor-editor h1 {\n  font-size: 36px;\n}\n.redactor-editor h2 {\n  font-size: 24px;\n  margin-bottom: .7em;\n}\n.redactor-editor h3 {\n  font-size: 21px;\n}\n.redactor-editor h4 {\n  font-size: 18px;\n}\n.redactor-editor h5 {\n  font-size: 16px;\n}\n.redactor-editor h6 {\n  font-size: 12px;\n  text-transform: uppercase;\n}\n.re-btn-icon {\n  width: 45px;\n}\n.re-icon-list {\n  overflow-y: scroll;\n  max-height: 200px;\n}\n\n/*!\n * Datetimepicker for Bootstrap 3\n * version : 4.17.47\n * https://github.com/Eonasdan/bootstrap-datetimepicker/\n */\n.bootstrap-datetimepicker-widget {\n  list-style: none;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu {\n  display: block;\n  margin: 2px 0;\n  padding: 4px;\n  width: 19em;\n}\n@media (min-width: 768px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n@media (min-width: 992px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n@media (min-width: 1200px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n.bootstrap-datetimepicker-widget.dropdown-menu:before,\n.bootstrap-datetimepicker-widget.dropdown-menu:after {\n  content: '';\n  display: inline-block;\n  position: absolute;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  top: -7px;\n  left: 7px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid white;\n  top: -6px;\n  left: 8px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.top:before {\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-top: 7px solid #ccc;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  bottom: -7px;\n  left: 6px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.top:after {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-top: 6px solid white;\n  bottom: -6px;\n  left: 7px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {\n  left: auto;\n  right: 6px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {\n  left: auto;\n  right: 7px;\n}\n.bootstrap-datetimepicker-widget .list-unstyled {\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget a[data-action] {\n  padding: 6px 0;\n}\n.bootstrap-datetimepicker-widget a[data-action]:active {\n  box-shadow: none;\n}\n.bootstrap-datetimepicker-widget .timepicker-hour,\n.bootstrap-datetimepicker-widget .timepicker-minute,\n.bootstrap-datetimepicker-widget .timepicker-second {\n  width: 54px;\n  font-weight: bold;\n  font-size: 1.2em;\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget button[data-action] {\n  padding: 6px;\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"incrementHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Increment Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"incrementMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Increment Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"decrementHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Decrement Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"decrementMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Decrement Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"showHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Show Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"showMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Show Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"togglePeriod\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Toggle AM/PM\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"clear\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Clear the picker\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"today\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Set the date to today\";\n}\n.bootstrap-datetimepicker-widget .picker-switch {\n  text-align: center;\n}\n.bootstrap-datetimepicker-widget .picker-switch::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Toggle Date and Time Screens\";\n}\n.bootstrap-datetimepicker-widget .picker-switch td {\n  padding: 0;\n  margin: 0;\n  height: auto;\n  width: auto;\n  line-height: inherit;\n}\n.bootstrap-datetimepicker-widget .picker-switch td span {\n  line-height: 2.5;\n  height: 2.5em;\n  width: 100%;\n}\n.bootstrap-datetimepicker-widget table {\n  width: 100%;\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget table td,\n.bootstrap-datetimepicker-widget table th {\n  text-align: center;\n  border-radius: 4px;\n}\n.bootstrap-datetimepicker-widget table th {\n  height: 20px;\n  line-height: 20px;\n  width: 20px;\n}\n.bootstrap-datetimepicker-widget table th.picker-switch {\n  width: 145px;\n}\n.bootstrap-datetimepicker-widget table th.disabled,\n.bootstrap-datetimepicker-widget table th.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget table th.prev::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Previous Month\";\n}\n.bootstrap-datetimepicker-widget table th.next::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Next Month\";\n}\n.bootstrap-datetimepicker-widget table thead tr:first-child th {\n  cursor: pointer;\n}\n.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {\n  background: #eeeeee;\n}\n.bootstrap-datetimepicker-widget table td {\n  height: 54px;\n  line-height: 54px;\n  width: 54px;\n}\n.bootstrap-datetimepicker-widget table td.cw {\n  font-size: .8em;\n  height: 20px;\n  line-height: 20px;\n  color: #777777;\n}\n.bootstrap-datetimepicker-widget table td.day {\n  height: 20px;\n  line-height: 20px;\n  width: 20px;\n}\n.bootstrap-datetimepicker-widget table td.day:hover,\n.bootstrap-datetimepicker-widget table td.hour:hover,\n.bootstrap-datetimepicker-widget table td.minute:hover,\n.bootstrap-datetimepicker-widget table td.second:hover {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.bootstrap-datetimepicker-widget table td.old,\n.bootstrap-datetimepicker-widget table td.new {\n  color: #777777;\n}\n.bootstrap-datetimepicker-widget table td.today {\n  position: relative;\n}\n.bootstrap-datetimepicker-widget table td.today:before {\n  content: '';\n  display: inline-block;\n  border: solid transparent;\n  border-width: 0 0 7px 7px;\n  border-bottom-color: #337ab7;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  bottom: 4px;\n  right: 4px;\n}\n.bootstrap-datetimepicker-widget table td.active,\n.bootstrap-datetimepicker-widget table td.active:hover {\n  background-color: #337ab7;\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.bootstrap-datetimepicker-widget table td.active.today:before {\n  border-bottom-color: #fff;\n}\n.bootstrap-datetimepicker-widget table td.disabled,\n.bootstrap-datetimepicker-widget table td.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget table td span {\n  display: inline-block;\n  width: 54px;\n  height: 54px;\n  line-height: 54px;\n  margin: 2px 1.5px;\n  cursor: pointer;\n  border-radius: 4px;\n}\n.bootstrap-datetimepicker-widget table td span:hover {\n  background: #eeeeee;\n}\n.bootstrap-datetimepicker-widget table td span.active {\n  background-color: #337ab7;\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.bootstrap-datetimepicker-widget table td span.old {\n  color: #777777;\n}\n.bootstrap-datetimepicker-widget table td span.disabled,\n.bootstrap-datetimepicker-widget table td span.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget.usetwentyfour td.hour {\n  height: 27px;\n  line-height: 27px;\n}\n.bootstrap-datetimepicker-widget.wider {\n  width: 21em;\n}\n.bootstrap-datetimepicker-widget .datepicker-decades .decade {\n  line-height: 1.8em !important;\n}\n.input-group.date .input-group-addon {\n  cursor: pointer;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n/**\n * rawCSS\n *\n * A simple CSS structure document\n *\n * @package     rawCSS\n * @author      Matt Lantz\n * @copyright   Copyright (c) 2014 Matt Lantz\n * @license     http://ottacon.co/rawcss/license.html\n * @link        http://ottacon.co/rawcss\n * @since       Version 1.0\n *\n */\n.raw-color-000000{color:#000000;}.raw-color-080808{color:#080808;}.raw-color-101010{color:#101010;}.raw-color-181818{color:#181818;}.raw-color-202020{color:#202020;}.raw-color-282828{color:#282828;}.raw-color-303030{color:#303030;}.raw-color-383838{color:#383838;}.raw-color-404040{color:#404040;}.raw-color-484848{color:#484848;}.raw-color-505050{color:#505050;}.raw-color-585858{color:#585858;}.raw-color-606060{color:#606060;}.raw-color-686868{color:#686868;}.raw-color-707070{color:#707070;}.raw-color-787878{color:#787878;}.raw-color-808080{color:#808080;}.raw-color-888888{color:#888888;}.raw-color-909090{color:#909090;}.raw-color-989898{color:#989898;}.raw-color-A0A0A0{color:#A0A0A0;}.raw-color-A8A8A8{color:#A8A8A8;}.raw-color-B0B0B0{color:#B0B0B0;}.raw-color-B8B8B8{color:#B8B8B8;}.raw-color-C0C0C0{color:#C0C0C0;}.raw-color-C8C8C8{color:#C8C8C8;}.raw-color-D0D0D0{color:#D0D0D0;}.raw-color-D8D8D8{color:#D8D8D8;}.raw-color-E0E0E0{color:#E0E0E0;}.raw-color-E8E8E8{color:#E8E8E8;}.raw-color-F0F0F0{color:#F0F0F0;}.raw-color-F8F8F8{color:#F8F8F8;}.raw-color-FFFFFF{color:#FFFFFF;}.raw-bg-000000{background-color:#000000;}.raw-bg-080808{background-color:#080808;}.raw-bg-101010{background-color:#101010;}.raw-bg-181818{background-color:#181818;}.raw-bg-202020{background-color:#202020;}.raw-bg-282828{background-color:#282828;}.raw-bg-303030{background-color:#303030;}.raw-bg-383838{background-color:#383838;}.raw-bg-404040{background-color:#404040;}.raw-bg-484848{background-color:#484848;}.raw-bg-505050{background-color:#505050;}.raw-bg-585858{background-color:#585858;}.raw-bg-606060{background-color:#606060;}.raw-bg-686868{background-color:#686868;}.raw-bg-707070{background-color:#707070;}.raw-bg-787878{background-color:#787878;}.raw-bg-808080{background-color:#808080;}.raw-bg-888888{background-color:#888888;}.raw-bg-909090{background-color:#909090;}.raw-bg-989898{background-color:#989898;}.raw-bg-A0A0A0{background-color:#A0A0A0;}.raw-bg-A8A8A8{background-color:#A8A8A8;}.raw-bg-B0B0B0{background-color:#B0B0B0;}.raw-bg-B8B8B8{background-color:#B8B8B8;}.raw-bg-C0C0C0{background-color:#C0C0C0;}.raw-bg-C8C8C8{background-color:#C8C8C8;}.raw-bg-D0D0D0{background-color:#D0D0D0;}.raw-bg-D8D8D8{background-color:#D8D8D8;}.raw-bg-E0E0E0{background-color:#E0E0E0;}.raw-bg-E8E8E8{background-color:#E8E8E8;}.raw-bg-F0F0F0{background-color:#F0F0F0;}.raw-bg-F8F8F8{background-color:#F8F8F8;}.raw-bg-FFFFFF{background-color:#FFFFFF;}.raw-bg-000000{background:#000000;}.raw-bg-000033{background:#000033;}.raw-bg-000066{background:#000066;}.raw-bg-000099{background:#000099;}.raw-bg-0000CC{background:#0000CC;}.raw-bg-0000FF{background:#0000FF;}.raw-bg-003300{background:#003300;}.raw-bg-003333{background:#003333;}.raw-bg-003366{background:#003366;}.raw-bg-003399{background:#003399;}.raw-bg-0033CC{background:#0033CC;}.raw-bg-0033FF{background:#0033FF;}.raw-bg-006600{background:#006600;}.raw-bg-006633{background:#006633;}.raw-bg-006666{background:#006666;}.raw-bg-006699{background:#006699;}.raw-bg-0066CC{background:#0066CC;}.raw-bg-0066FF{background:#0066FF;}.raw-bg-009900{background:#009900;}.raw-bg-009933{background:#009933;}.raw-bg-009966{background:#009966;}.raw-bg-009999{background:#009999;}.raw-bg-0099CC{background:#0099CC;}.raw-bg-0099FF{background:#0099FF;}.raw-bg-00CC00{background:#00CC00;}.raw-bg-00CC33{background:#00CC33;}.raw-bg-00CC66{background:#00CC66;}.raw-bg-00CC99{background:#00CC99;}.raw-bg-00CCCC{background:#00CCCC;}.raw-bg-00CCFF{background:#00CCFF;}.raw-bg-00FF00{background:#00FF00;}.raw-bg-00FF33{background:#00FF33;}.raw-bg-00FF66{background:#00FF66;}.raw-bg-00FF99{background:#00FF99;}.raw-bg-00FFCC{background:#00FFCC;}.raw-bg-00FFFF{background:#00FFFF;}.raw-bg-330000{background:#330000;}.raw-bg-330033{background:#330033;}.raw-bg-330066{background:#330066;}.raw-bg-330099{background:#330099;}.raw-bg-3300CC{background:#3300CC;}.raw-bg-3300FF{background:#3300FF;}.raw-bg-333300{background:#333300;}.raw-bg-333333{background:#333333;}.raw-bg-333366{background:#333366;}.raw-bg-333399{background:#333399;}.raw-bg-3333CC{background:#3333CC;}.raw-bg-3333FF{background:#3333FF;}.raw-bg-336600{background:#336600;}.raw-bg-336633{background:#336633;}.raw-bg-336666{background:#336666;}.raw-bg-336699{background:#336699;}.raw-bg-3366CC{background:#3366CC;}.raw-bg-3366FF{background:#3366FF;}.raw-bg-339900{background:#339900;}.raw-bg-339933{background:#339933;}.raw-bg-339966{background:#339966;}.raw-bg-339999{background:#339999;}.raw-bg-3399CC{background:#3399CC;}.raw-bg-3399FF{background:#3399FF;}.raw-bg-33CC00{background:#33CC00;}.raw-bg-33CC33{background:#33CC33;}.raw-bg-33CC66{background:#33CC66;}.raw-bg-33CC99{background:#33CC99;}.raw-bg-33CCCC{background:#33CCCC;}.raw-bg-33CCFF{background:#33CCFF;}.raw-bg-33FF00{background:#33FF00;}.raw-bg-33FF33{background:#33FF33;}.raw-bg-33FF66{background:#33FF66;}.raw-bg-33FF99{background:#33FF99;}.raw-bg-33FFCC{background:#33FFCC;}.raw-bg-33FFFF{background:#33FFFF;}.raw-bg-660000{background:#660000;}.raw-bg-660033{background:#660033;}.raw-bg-660066{background:#660066;}.raw-bg-660099{background:#660099;}.raw-bg-6600CC{background:#6600CC;}.raw-bg-6600FF{background:#6600FF;}.raw-bg-663300{background:#663300;}.raw-bg-663333{background:#663333;}.raw-bg-663366{background:#663366;}.raw-bg-663399{background:#663399;}.raw-bg-6633CC{background:#6633CC;}.raw-bg-6633FF{background:#6633FF;}.raw-bg-666600{background:#666600;}.raw-bg-666633{background:#666633;}.raw-bg-666666{background:#666666;}.raw-bg-666699{background:#666699;}.raw-bg-6666CC{background:#6666CC;}.raw-bg-6666FF{background:#6666FF;}.raw-bg-669900{background:#669900;}.raw-bg-669933{background:#669933;}.raw-bg-669966{background:#669966;}.raw-bg-669999{background:#669999;}.raw-bg-6699CC{background:#6699CC;}.raw-bg-6699FF{background:#6699FF;}.raw-bg-66CC00{background:#66CC00;}.raw-bg-66CC33{background:#66CC33;}.raw-bg-66CC66{background:#66CC66;}.raw-bg-66CC99{background:#66CC99;}.raw-bg-66CCCC{background:#66CCCC;}.raw-bg-66CCFF{background:#66CCFF;}.raw-bg-66FF00{background:#66FF00;}.raw-bg-66FF33{background:#66FF33;}.raw-bg-66FF66{background:#66FF66;}.raw-bg-66FF99{background:#66FF99;}.raw-bg-66FFCC{background:#66FFCC;}.raw-bg-66FFFF{background:#66FFFF;}.raw-bg-990000{background:#990000;}.raw-bg-990033{background:#990033;}.raw-bg-990066{background:#990066;}.raw-bg-990099{background:#990099;}.raw-bg-9900CC{background:#9900CC;}.raw-bg-9900FF{background:#9900FF;}.raw-bg-993300{background:#993300;}.raw-bg-993333{background:#993333;}.raw-bg-993366{background:#993366;}.raw-bg-993399{background:#993399;}.raw-bg-9933CC{background:#9933CC;}.raw-bg-9933FF{background:#9933FF;}.raw-bg-996600{background:#996600;}.raw-bg-996633{background:#996633;}.raw-bg-996666{background:#996666;}.raw-bg-996699{background:#996699;}.raw-bg-9966CC{background:#9966CC;}.raw-bg-9966FF{background:#9966FF;}.raw-bg-999900{background:#999900;}.raw-bg-999933{background:#999933;}.raw-bg-999966{background:#999966;}.raw-bg-999999{background:#999999;}.raw-bg-9999CC{background:#9999CC;}.raw-bg-9999FF{background:#9999FF;}.raw-bg-99CC00{background:#99CC00;}.raw-bg-99CC33{background:#99CC33;}.raw-bg-99CC66{background:#99CC66;}.raw-bg-99CC99{background:#99CC99;}.raw-bg-99CCCC{background:#99CCCC;}.raw-bg-99CCFF{background:#99CCFF;}.raw-bg-99FF00{background:#99FF00;}.raw-bg-99FF33{background:#99FF33;}.raw-bg-99FF66{background:#99FF66;}.raw-bg-99FF99{background:#99FF99;}.raw-bg-99FFCC{background:#99FFCC;}.raw-bg-99FFFF{background:#99FFFF;}.raw-bg-CC0000{background:#CC0000;}.raw-bg-CC0033{background:#CC0033;}.raw-bg-CC0066{background:#CC0066;}.raw-bg-CC0099{background:#CC0099;}.raw-bg-CC00CC{background:#CC00CC;}.raw-bg-CC00FF{background:#CC00FF;}.raw-bg-CC3300{background:#CC3300;}.raw-bg-CC3333{background:#CC3333;}.raw-bg-CC3366{background:#CC3366;}.raw-bg-CC3399{background:#CC3399;}.raw-bg-CC33CC{background:#CC33CC;}.raw-bg-CC33FF{background:#CC33FF;}.raw-bg-CC6600{background:#CC6600;}.raw-bg-CC6633{background:#CC6633;}.raw-bg-CC6666{background:#CC6666;}.raw-bg-CC6699{background:#CC6699;}.raw-bg-CC66CC{background:#CC66CC;}.raw-bg-CC66FF{background:#CC66FF;}.raw-bg-CC9900{background:#CC9900;}.raw-bg-CC9933{background:#CC9933;}.raw-bg-CC9966{background:#CC9966;}.raw-bg-CC9999{background:#CC9999;}.raw-bg-CC99CC{background:#CC99CC;}.raw-bg-CC99FF{background:#CC99FF;}.raw-bg-CCCC00{background:#CCCC00;}.raw-bg-CCCC33{background:#CCCC33;}.raw-bg-CCCC66{background:#CCCC66;}.raw-bg-CCCC99{background:#CCCC99;}.raw-bg-CCCCCC{background:#CCCCCC;}.raw-bg-CCCCFF{background:#CCCCFF;}.raw-bg-CCFF00{background:#CCFF00;}.raw-bg-CCFF33{background:#CCFF33;}.raw-bg-CCFF66{background:#CCFF66;}.raw-bg-CCFF99{background:#CCFF99;}.raw-bg-CCFFCC{background:#CCFFCC;}.raw-bg-CCFFFF{background:#CCFFFF;}.raw-bg-FF0000{background:#FF0000;}.raw-bg-FF0033{background:#FF0033;}.raw-bg-FF0066{background:#FF0066;}.raw-bg-FF0099{background:#FF0099;}.raw-bg-FF00CC{background:#FF00CC;}.raw-bg-FF00FF{background:#FF00FF;}.raw-bg-FF3300{background:#FF3300;}.raw-bg-FF3333{background:#FF3333;}.raw-bg-FF3366{background:#FF3366;}.raw-bg-FF3399{background:#FF3399;}.raw-bg-FF33CC{background:#FF33CC;}.raw-bg-FF33FF{background:#FF33FF;}.raw-bg-FF6600{background:#FF6600;}.raw-bg-FF6633{background:#FF6633;}.raw-bg-FF6666{background:#FF6666;}.raw-bg-FF6699{background:#FF6699;}.raw-bg-FF66CC{background:#FF66CC;}.raw-bg-FF66FF{background:#FF66FF;}.raw-bg-FF9900{background:#FF9900;}.raw-bg-FF9933{background:#FF9933;}.raw-bg-FF9966{background:#FF9966;}.raw-bg-FF9999{background:#FF9999;}.raw-bg-FF99CC{background:#FF99CC;}.raw-bg-FF99FF{background:#FF99FF;}.raw-bg-FFCC00{background:#FFCC00;}.raw-bg-FFCC33{background:#FFCC33;}.raw-bg-FFCC66{background:#FFCC66;}.raw-bg-FFCC99{background:#FFCC99;}.raw-bg-FFCCCC{background:#FFCCCC;}.raw-bg-FFCCFF{background:#FFCCFF;}.raw-bg-FFFF00{background:#FFFF00;}.raw-bg-FFFF33{background:#FFFF33;}.raw-bg-FFFF66{background:#FFFF66;}.raw-bg-FFFF99{background:#FFFF99;}.raw-bg-FFFFCC{background:#FFFFCC;}.raw-bg-FFFFFF{background:#FFFFFF;}.raw-block-1{height:1px;}.raw-block-2{height:2px;}.raw-block-3{height:3px;}.raw-block-4{height:4px;}.raw-block-5{height:5px;}.raw-block-10{height:10px;}.raw-block-15{height:15px;}.raw-block-20{height:20px;}.raw-block-25{height:25px;}.raw-block-30{height:30px;}.raw-block-35{height:35px;}.raw-block-40{height:40px;}.raw-block-45{height:45px;}.raw-block-50{height:50px;}.raw-block-55{height:55px;}.raw-block-60{height:60px;}.raw-block-65{height:65px;}.raw-block-70{height:70px;}.raw-block-75{height:75px;}.raw-block-80{height:80px;}.raw-block-85{height:85px;}.raw-block-90{height:90px;}.raw-block-95{height:95px;}.raw-block-100{height:100px;}.raw-block-150{height:150px;}.raw-block-200{height:200px;}.raw-block-250{height:250px;}.raw-block-300{height:300px;}.raw-block-350{height:350px;}.raw-block-400{height:400px;}.raw-block-450{height:450px;}.raw-block-500{height:500px;}.raw-block-550{height:550px;}.raw-block-600{height:600px;}.raw-block-650{height:650px;}.raw-block-700{height:700px;}.raw-block-750{height:750px;}.raw-block-800{height:800px;}.raw-block-850{height:850px;}.raw-block-900{height:900px;}.raw-block-950{height:950px;}.raw-block-1000{height:1000px;}.raw-color-000000{color:#000000;}.raw-color-000033{color:#000033;}.raw-color-000066{color:#000066;}.raw-color-000099{color:#000099;}.raw-color-0000CC{color:#0000CC;}.raw-color-0000FF{color:#0000FF;}.raw-color-003300{color:#003300;}.raw-color-003333{color:#003333;}.raw-color-003366{color:#003366;}.raw-color-003399{color:#003399;}.raw-color-0033CC{color:#0033CC;}.raw-color-0033FF{color:#0033FF;}.raw-color-006600{color:#006600;}.raw-color-006633{color:#006633;}.raw-color-006666{color:#006666;}.raw-color-006699{color:#006699;}.raw-color-0066CC{color:#0066CC;}.raw-color-0066FF{color:#0066FF;}.raw-color-009900{color:#009900;}.raw-color-009933{color:#009933;}.raw-color-009966{color:#009966;}.raw-color-009999{color:#009999;}.raw-color-0099CC{color:#0099CC;}.raw-color-0099FF{color:#0099FF;}.raw-color-00CC00{color:#00CC00;}.raw-color-00CC33{color:#00CC33;}.raw-color-00CC66{color:#00CC66;}.raw-color-00CC99{color:#00CC99;}.raw-color-00CCCC{color:#00CCCC;}.raw-color-00CCFF{color:#00CCFF;}.raw-color-00FF00{color:#00FF00;}.raw-color-00FF33{color:#00FF33;}.raw-color-00FF66{color:#00FF66;}.raw-color-00FF99{color:#00FF99;}.raw-color-00FFCC{color:#00FFCC;}.raw-color-00FFFF{color:#00FFFF;}.raw-color-330000{color:#330000;}.raw-color-330033{color:#330033;}.raw-color-330066{color:#330066;}.raw-color-330099{color:#330099;}.raw-color-3300CC{color:#3300CC;}.raw-color-3300FF{color:#3300FF;}.raw-color-333300{color:#333300;}.raw-color-333333{color:#333333;}.raw-color-333366{color:#333366;}.raw-color-333399{color:#333399;}.raw-color-3333CC{color:#3333CC;}.raw-color-3333FF{color:#3333FF;}.raw-color-336600{color:#336600;}.raw-color-336633{color:#336633;}.raw-color-336666{color:#336666;}.raw-color-336699{color:#336699;}.raw-color-3366CC{color:#3366CC;}.raw-color-3366FF{color:#3366FF;}.raw-color-339900{color:#339900;}.raw-color-339933{color:#339933;}.raw-color-339966{color:#339966;}.raw-color-339999{color:#339999;}.raw-color-3399CC{color:#3399CC;}.raw-color-3399FF{color:#3399FF;}.raw-color-33CC00{color:#33CC00;}.raw-color-33CC33{color:#33CC33;}.raw-color-33CC66{color:#33CC66;}.raw-color-33CC99{color:#33CC99;}.raw-color-33CCCC{color:#33CCCC;}.raw-color-33CCFF{color:#33CCFF;}.raw-color-33FF00{color:#33FF00;}.raw-color-33FF33{color:#33FF33;}.raw-color-33FF66{color:#33FF66;}.raw-color-33FF99{color:#33FF99;}.raw-color-33FFCC{color:#33FFCC;}.raw-color-33FFFF{color:#33FFFF;}.raw-color-660000{color:#660000;}.raw-color-660033{color:#660033;}.raw-color-660066{color:#660066;}.raw-color-660099{color:#660099;}.raw-color-6600CC{color:#6600CC;}.raw-color-6600FF{color:#6600FF;}.raw-color-663300{color:#663300;}.raw-color-663333{color:#663333;}.raw-color-663366{color:#663366;}.raw-color-663399{color:#663399;}.raw-color-6633CC{color:#6633CC;}.raw-color-6633FF{color:#6633FF;}.raw-color-666600{color:#666600;}.raw-color-666633{color:#666633;}.raw-color-666666{color:#666666;}.raw-color-666699{color:#666699;}.raw-color-6666CC{color:#6666CC;}.raw-color-6666FF{color:#6666FF;}.raw-color-669900{color:#669900;}.raw-color-669933{color:#669933;}.raw-color-669966{color:#669966;}.raw-color-669999{color:#669999;}.raw-color-6699CC{color:#6699CC;}.raw-color-6699FF{color:#6699FF;}.raw-color-66CC00{color:#66CC00;}.raw-color-66CC33{color:#66CC33;}.raw-color-66CC66{color:#66CC66;}.raw-color-66CC99{color:#66CC99;}.raw-color-66CCCC{color:#66CCCC;}.raw-color-66CCFF{color:#66CCFF;}.raw-color-66FF00{color:#66FF00;}.raw-color-66FF33{color:#66FF33;}.raw-color-66FF66{color:#66FF66;}.raw-color-66FF99{color:#66FF99;}.raw-color-66FFCC{color:#66FFCC;}.raw-color-66FFFF{color:#66FFFF;}.raw-color-990000{color:#990000;}.raw-color-990033{color:#990033;}.raw-color-990066{color:#990066;}.raw-color-990099{color:#990099;}.raw-color-9900CC{color:#9900CC;}.raw-color-9900FF{color:#9900FF;}.raw-color-993300{color:#993300;}.raw-color-993333{color:#993333;}.raw-color-993366{color:#993366;}.raw-color-993399{color:#993399;}.raw-color-9933CC{color:#9933CC;}.raw-color-9933FF{color:#9933FF;}.raw-color-996600{color:#996600;}.raw-color-996633{color:#996633;}.raw-color-996666{color:#996666;}.raw-color-996699{color:#996699;}.raw-color-9966CC{color:#9966CC;}.raw-color-9966FF{color:#9966FF;}.raw-color-999900{color:#999900;}.raw-color-999933{color:#999933;}.raw-color-999966{color:#999966;}.raw-color-999999{color:#999999;}.raw-color-9999CC{color:#9999CC;}.raw-color-9999FF{color:#9999FF;}.raw-color-99CC00{color:#99CC00;}.raw-color-99CC33{color:#99CC33;}.raw-color-99CC66{color:#99CC66;}.raw-color-99CC99{color:#99CC99;}.raw-color-99CCCC{color:#99CCCC;}.raw-color-99CCFF{color:#99CCFF;}.raw-color-99FF00{color:#99FF00;}.raw-color-99FF33{color:#99FF33;}.raw-color-99FF66{color:#99FF66;}.raw-color-99FF99{color:#99FF99;}.raw-color-99FFCC{color:#99FFCC;}.raw-color-99FFFF{color:#99FFFF;}.raw-color-CC0000{color:#CC0000;}.raw-color-CC0033{color:#CC0033;}.raw-color-CC0066{color:#CC0066;}.raw-color-CC0099{color:#CC0099;}.raw-color-CC00CC{color:#CC00CC;}.raw-color-CC00FF{color:#CC00FF;}.raw-color-CC3300{color:#CC3300;}.raw-color-CC3333{color:#CC3333;}.raw-color-CC3366{color:#CC3366;}.raw-color-CC3399{color:#CC3399;}.raw-color-CC33CC{color:#CC33CC;}.raw-color-CC33FF{color:#CC33FF;}.raw-color-CC6600{color:#CC6600;}.raw-color-CC6633{color:#CC6633;}.raw-color-CC6666{color:#CC6666;}.raw-color-CC6699{color:#CC6699;}.raw-color-CC66CC{color:#CC66CC;}.raw-color-CC66FF{color:#CC66FF;}.raw-color-CC9900{color:#CC9900;}.raw-color-CC9933{color:#CC9933;}.raw-color-CC9966{color:#CC9966;}.raw-color-CC9999{color:#CC9999;}.raw-color-CC99CC{color:#CC99CC;}.raw-color-CC99FF{color:#CC99FF;}.raw-color-CCCC00{color:#CCCC00;}.raw-color-CCCC33{color:#CCCC33;}.raw-color-CCCC66{color:#CCCC66;}.raw-color-CCCC99{color:#CCCC99;}.raw-color-CCCCCC{color:#CCCCCC;}.raw-color-CCCCFF{color:#CCCCFF;}.raw-color-CCFF00{color:#CCFF00;}.raw-color-CCFF33{color:#CCFF33;}.raw-color-CCFF66{color:#CCFF66;}.raw-color-CCFF99{color:#CCFF99;}.raw-color-CCFFCC{color:#CCFFCC;}.raw-color-CCFFFF{color:#CCFFFF;}.raw-color-FF0000{color:#FF0000;}.raw-color-FF0033{color:#FF0033;}.raw-color-FF0066{color:#FF0066;}.raw-color-FF0099{color:#FF0099;}.raw-color-FF00CC{color:#FF00CC;}.raw-color-FF00FF{color:#FF00FF;}.raw-color-FF3300{color:#FF3300;}.raw-color-FF3333{color:#FF3333;}.raw-color-FF3366{color:#FF3366;}.raw-color-FF3399{color:#FF3399;}.raw-color-FF33CC{color:#FF33CC;}.raw-color-FF33FF{color:#FF33FF;}.raw-color-FF6600{color:#FF6600;}.raw-color-FF6633{color:#FF6633;}.raw-color-FF6666{color:#FF6666;}.raw-color-FF6699{color:#FF6699;}.raw-color-FF66CC{color:#FF66CC;}.raw-color-FF66FF{color:#FF66FF;}.raw-color-FF9900{color:#FF9900;}.raw-color-FF9933{color:#FF9933;}.raw-color-FF9966{color:#FF9966;}.raw-color-FF9999{color:#FF9999;}.raw-color-FF99CC{color:#FF99CC;}.raw-color-FF99FF{color:#FF99FF;}.raw-color-FFCC00{color:#FFCC00;}.raw-color-FFCC33{color:#FFCC33;}.raw-color-FFCC66{color:#FFCC66;}.raw-color-FFCC99{color:#FFCC99;}.raw-color-FFCCCC{color:#FFCCCC;}.raw-color-FFCCFF{color:#FFCCFF;}.raw-color-FFFF00{color:#FFFF00;}.raw-color-FFFF33{color:#FFFF33;}.raw-color-FFFF66{color:#FFFF66;}.raw-color-FFFF99{color:#FFFF99;}.raw-color-FFFFCC{color:#FFFFCC;}.raw-color-FFFFFF{color:#FFFFFF;}.raw-height-1{height:1%;}.raw-height-2{height:2%;}.raw-height-3{height:3%;}.raw-height-4{height:4%;}.raw-height-5{height:5%;}.raw-height-6{height:6%;}.raw-height-7{height:7%;}.raw-height-8{height:8%;}.raw-height-9{height:9%;}.raw-height-10{height:10%;}.raw-height-11{height:11%;}.raw-height-12{height:12%;}.raw-height-13{height:13%;}.raw-height-14{height:14%;}.raw-height-15{height:15%;}.raw-height-16{height:16%;}.raw-height-17{height:17%;}.raw-height-18{height:18%;}.raw-height-19{height:19%;}.raw-height-20{height:20%;}.raw-height-21{height:21%;}.raw-height-22{height:22%;}.raw-height-23{height:23%;}.raw-height-24{height:24%;}.raw-height-25{height:25%;}.raw-height-26{height:26%;}.raw-height-27{height:27%;}.raw-height-28{height:28%;}.raw-height-29{height:29%;}.raw-height-30{height:30%;}.raw-height-31{height:31%;}.raw-height-32{height:32%;}.raw-height-33{height:33%;}.raw-height-34{height:34%;}.raw-height-35{height:35%;}.raw-height-36{height:36%;}.raw-height-37{height:37%;}.raw-height-38{height:38%;}.raw-height-39{height:39%;}.raw-height-40{height:40%;}.raw-height-41{height:41%;}.raw-height-42{height:42%;}.raw-height-43{height:43%;}.raw-height-44{height:44%;}.raw-height-45{height:45%;}.raw-height-46{height:46%;}.raw-height-47{height:47%;}.raw-height-48{height:48%;}.raw-height-49{height:49%;}.raw-height-50{height:50%;}.raw-height-51{height:51%;}.raw-height-52{height:52%;}.raw-height-53{height:53%;}.raw-height-54{height:54%;}.raw-height-55{height:55%;}.raw-height-56{height:56%;}.raw-height-57{height:57%;}.raw-height-58{height:58%;}.raw-height-59{height:59%;}.raw-height-60{height:60%;}.raw-height-61{height:61%;}.raw-height-62{height:62%;}.raw-height-63{height:63%;}.raw-height-64{height:64%;}.raw-height-65{height:65%;}.raw-height-66{height:66%;}.raw-height-67{height:67%;}.raw-height-68{height:68%;}.raw-height-69{height:69%;}.raw-height-70{height:70%;}.raw-height-71{height:71%;}.raw-height-72{height:72%;}.raw-height-73{height:73%;}.raw-height-74{height:74%;}.raw-height-75{height:75%;}.raw-height-76{height:76%;}.raw-height-77{height:77%;}.raw-height-78{height:78%;}.raw-height-79{height:79%;}.raw-height-80{height:80%;}.raw-height-81{height:81%;}.raw-height-82{height:82%;}.raw-height-83{height:83%;}.raw-height-84{height:84%;}.raw-height-85{height:85%;}.raw-height-86{height:86%;}.raw-height-87{height:87%;}.raw-height-88{height:88%;}.raw-height-89{height:89%;}.raw-height-90{height:90%;}.raw-height-91{height:91%;}.raw-height-92{height:92%;}.raw-height-93{height:93%;}.raw-height-94{height:94%;}.raw-height-95{height:95%;}.raw-height-96{height:96%;}.raw-height-97{height:97%;}.raw-height-98{height:98%;}.raw-height-99{height:99%;}.raw-height-100{height:100%;}.raw-margin-top-4{margin-top:4px;}.raw-margin-top-8{margin-top:8px;}.raw-margin-top-12{margin-top:12px;}.raw-margin-top-16{margin-top:16px;}.raw-margin-top-20{margin-top:20px;}.raw-margin-top-24{margin-top:24px;}.raw-margin-top-28{margin-top:28px;}.raw-margin-top-32{margin-top:32px;}.raw-margin-top-36{margin-top:36px;}.raw-margin-top-40{margin-top:40px;}.raw-margin-top-44{margin-top:44px;}.raw-margin-top-48{margin-top:48px;}.raw-margin-top-52{margin-top:52px;}.raw-margin-top-56{margin-top:56px;}.raw-margin-top-60{margin-top:60px;}.raw-margin-top-64{margin-top:64px;}.raw-margin-top-68{margin-top:68px;}.raw-margin-top-72{margin-top:72px;}.raw-margin-top-76{margin-top:76px;}.raw-margin-top-80{margin-top:80px;}.raw-margin-top-84{margin-top:84px;}.raw-margin-top-88{margin-top:88px;}.raw-margin-top-92{margin-top:92px;}.raw-margin-top-96{margin-top:96px;}.raw-margin-top-100{margin-top:100px;}.raw-margin-top-104{margin-top:104px;}.raw-margin-top-108{margin-top:108px;}.raw-margin-top-112{margin-top:112px;}.raw-margin-top-116{margin-top:116px;}.raw-margin-top-120{margin-top:120px;}.raw-margin-top-124{margin-top:124px;}.raw-margin-top-128{margin-top:128px;}.raw-margin-top-132{margin-top:132px;}.raw-margin-top-136{margin-top:136px;}.raw-margin-top-140{margin-top:140px;}.raw-margin-top-144{margin-top:144px;}.raw-margin-top-148{margin-top:148px;}.raw-margin-top-152{margin-top:152px;}.raw-margin-top-156{margin-top:156px;}.raw-margin-top-160{margin-top:160px;}.raw-margin-top-164{margin-top:164px;}.raw-margin-top-168{margin-top:168px;}.raw-margin-top-172{margin-top:172px;}.raw-margin-top-176{margin-top:176px;}.raw-margin-top-180{margin-top:180px;}.raw-margin-top-184{margin-top:184px;}.raw-margin-top-188{margin-top:188px;}.raw-margin-top-192{margin-top:192px;}.raw-margin-top-196{margin-top:196px;}.raw-margin-top-200{margin-top:200px;}.raw-margin-top-204{margin-top:204px;}.raw-margin-top-208{margin-top:208px;}.raw-margin-top-212{margin-top:212px;}.raw-margin-top-216{margin-top:216px;}.raw-margin-top-220{margin-top:220px;}.raw-margin-top-224{margin-top:224px;}.raw-margin-top-228{margin-top:228px;}.raw-margin-top-232{margin-top:232px;}.raw-margin-top-236{margin-top:236px;}.raw-margin-top-240{margin-top:240px;}.raw-margin-top-244{margin-top:244px;}.raw-margin-top-248{margin-top:248px;}.raw-margin-top-252{margin-top:252px;}.raw-margin-top-256{margin-top:256px;}.raw-margin-top-260{margin-top:260px;}.raw-margin-top-264{margin-top:264px;}.raw-margin-top-268{margin-top:268px;}.raw-margin-top-272{margin-top:272px;}.raw-margin-top-276{margin-top:276px;}.raw-margin-top-280{margin-top:280px;}.raw-margin-top-284{margin-top:284px;}.raw-margin-top-288{margin-top:288px;}.raw-margin-top-292{margin-top:292px;}.raw-margin-top-296{margin-top:296px;}.raw-margin-top-300{margin-top:300px;}.raw-margin-top-304{margin-top:304px;}.raw-margin-top-308{margin-top:308px;}.raw-margin-top-312{margin-top:312px;}.raw-margin-top-316{margin-top:316px;}.raw-margin-top-320{margin-top:320px;}.raw-margin-top-324{margin-top:324px;}.raw-margin-top-328{margin-top:328px;}.raw-margin-top-332{margin-top:332px;}.raw-margin-top-336{margin-top:336px;}.raw-margin-top-340{margin-top:340px;}.raw-margin-top-344{margin-top:344px;}.raw-margin-top-348{margin-top:348px;}.raw-margin-top-352{margin-top:352px;}.raw-margin-top-356{margin-top:356px;}.raw-margin-top-360{margin-top:360px;}.raw-margin-top-364{margin-top:364px;}.raw-margin-top-368{margin-top:368px;}.raw-margin-top-372{margin-top:372px;}.raw-margin-top-376{margin-top:376px;}.raw-margin-top-380{margin-top:380px;}.raw-margin-top-384{margin-top:384px;}.raw-margin-top-388{margin-top:388px;}.raw-margin-top-392{margin-top:392px;}.raw-margin-top-396{margin-top:396px;}.raw-margin-top-400{margin-top:400px;}.raw-margin-left-4{margin-left:4px;}.raw-margin-left-8{margin-left:8px;}.raw-margin-left-12{margin-left:12px;}.raw-margin-left-16{margin-left:16px;}.raw-margin-left-20{margin-left:20px;}.raw-margin-left-24{margin-left:24px;}.raw-margin-left-28{margin-left:28px;}.raw-margin-left-32{margin-left:32px;}.raw-margin-left-36{margin-left:36px;}.raw-margin-left-40{margin-left:40px;}.raw-margin-left-44{margin-left:44px;}.raw-margin-left-48{margin-left:48px;}.raw-margin-left-52{margin-left:52px;}.raw-margin-left-56{margin-left:56px;}.raw-margin-left-60{margin-left:60px;}.raw-margin-left-64{margin-left:64px;}.raw-margin-left-68{margin-left:68px;}.raw-margin-left-72{margin-left:72px;}.raw-margin-left-76{margin-left:76px;}.raw-margin-left-80{margin-left:80px;}.raw-margin-left-84{margin-left:84px;}.raw-margin-left-88{margin-left:88px;}.raw-margin-left-92{margin-left:92px;}.raw-margin-left-96{margin-left:96px;}.raw-margin-left-100{margin-left:100px;}.raw-margin-left-104{margin-left:104px;}.raw-margin-left-108{margin-left:108px;}.raw-margin-left-112{margin-left:112px;}.raw-margin-left-116{margin-left:116px;}.raw-margin-left-120{margin-left:120px;}.raw-margin-left-124{margin-left:124px;}.raw-margin-left-128{margin-left:128px;}.raw-margin-left-132{margin-left:132px;}.raw-margin-left-136{margin-left:136px;}.raw-margin-left-140{margin-left:140px;}.raw-margin-left-144{margin-left:144px;}.raw-margin-left-148{margin-left:148px;}.raw-margin-left-152{margin-left:152px;}.raw-margin-left-156{margin-left:156px;}.raw-margin-left-160{margin-left:160px;}.raw-margin-left-164{margin-left:164px;}.raw-margin-left-168{margin-left:168px;}.raw-margin-left-172{margin-left:172px;}.raw-margin-left-176{margin-left:176px;}.raw-margin-left-180{margin-left:180px;}.raw-margin-left-184{margin-left:184px;}.raw-margin-left-188{margin-left:188px;}.raw-margin-left-192{margin-left:192px;}.raw-margin-left-196{margin-left:196px;}.raw-margin-left-200{margin-left:200px;}.raw-margin-left-204{margin-left:204px;}.raw-margin-left-208{margin-left:208px;}.raw-margin-left-212{margin-left:212px;}.raw-margin-left-216{margin-left:216px;}.raw-margin-left-220{margin-left:220px;}.raw-margin-left-224{margin-left:224px;}.raw-margin-left-228{margin-left:228px;}.raw-margin-left-232{margin-left:232px;}.raw-margin-left-236{margin-left:236px;}.raw-margin-left-240{margin-left:240px;}.raw-margin-left-244{margin-left:244px;}.raw-margin-left-248{margin-left:248px;}.raw-margin-left-252{margin-left:252px;}.raw-margin-left-256{margin-left:256px;}.raw-margin-left-260{margin-left:260px;}.raw-margin-left-264{margin-left:264px;}.raw-margin-left-268{margin-left:268px;}.raw-margin-left-272{margin-left:272px;}.raw-margin-left-276{margin-left:276px;}.raw-margin-left-280{margin-left:280px;}.raw-margin-left-284{margin-left:284px;}.raw-margin-left-288{margin-left:288px;}.raw-margin-left-292{margin-left:292px;}.raw-margin-left-296{margin-left:296px;}.raw-margin-left-300{margin-left:300px;}.raw-margin-left-304{margin-left:304px;}.raw-margin-left-308{margin-left:308px;}.raw-margin-left-312{margin-left:312px;}.raw-margin-left-316{margin-left:316px;}.raw-margin-left-320{margin-left:320px;}.raw-margin-left-324{margin-left:324px;}.raw-margin-left-328{margin-left:328px;}.raw-margin-left-332{margin-left:332px;}.raw-margin-left-336{margin-left:336px;}.raw-margin-left-340{margin-left:340px;}.raw-margin-left-344{margin-left:344px;}.raw-margin-left-348{margin-left:348px;}.raw-margin-left-352{margin-left:352px;}.raw-margin-left-356{margin-left:356px;}.raw-margin-left-360{margin-left:360px;}.raw-margin-left-364{margin-left:364px;}.raw-margin-left-368{margin-left:368px;}.raw-margin-left-372{margin-left:372px;}.raw-margin-left-376{margin-left:376px;}.raw-margin-left-380{margin-left:380px;}.raw-margin-left-384{margin-left:384px;}.raw-margin-left-388{margin-left:388px;}.raw-margin-left-392{margin-left:392px;}.raw-margin-left-396{margin-left:396px;}.raw-margin-left-400{margin-left:400px;}.raw-margin-right-4{margin-right:4px;}.raw-margin-right-8{margin-right:8px;}.raw-margin-right-12{margin-right:12px;}.raw-margin-right-16{margin-right:16px;}.raw-margin-right-20{margin-right:20px;}.raw-margin-right-24{margin-right:24px;}.raw-margin-right-28{margin-right:28px;}.raw-margin-right-32{margin-right:32px;}.raw-margin-right-36{margin-right:36px;}.raw-margin-right-40{margin-right:40px;}.raw-margin-right-44{margin-right:44px;}.raw-margin-right-48{margin-right:48px;}.raw-margin-right-52{margin-right:52px;}.raw-margin-right-56{margin-right:56px;}.raw-margin-right-60{margin-right:60px;}.raw-margin-right-64{margin-right:64px;}.raw-margin-right-68{margin-right:68px;}.raw-margin-right-72{margin-right:72px;}.raw-margin-right-76{margin-right:76px;}.raw-margin-right-80{margin-right:80px;}.raw-margin-right-84{margin-right:84px;}.raw-margin-right-88{margin-right:88px;}.raw-margin-right-92{margin-right:92px;}.raw-margin-right-96{margin-right:96px;}.raw-margin-right-100{margin-right:100px;}.raw-margin-right-104{margin-right:104px;}.raw-margin-right-108{margin-right:108px;}.raw-margin-right-112{margin-right:112px;}.raw-margin-right-116{margin-right:116px;}.raw-margin-right-120{margin-right:120px;}.raw-margin-right-124{margin-right:124px;}.raw-margin-right-128{margin-right:128px;}.raw-margin-right-132{margin-right:132px;}.raw-margin-right-136{margin-right:136px;}.raw-margin-right-140{margin-right:140px;}.raw-margin-right-144{margin-right:144px;}.raw-margin-right-148{margin-right:148px;}.raw-margin-right-152{margin-right:152px;}.raw-margin-right-156{margin-right:156px;}.raw-margin-right-160{margin-right:160px;}.raw-margin-right-164{margin-right:164px;}.raw-margin-right-168{margin-right:168px;}.raw-margin-right-172{margin-right:172px;}.raw-margin-right-176{margin-right:176px;}.raw-margin-right-180{margin-right:180px;}.raw-margin-right-184{margin-right:184px;}.raw-margin-right-188{margin-right:188px;}.raw-margin-right-192{margin-right:192px;}.raw-margin-right-196{margin-right:196px;}.raw-margin-right-200{margin-right:200px;}.raw-margin-right-204{margin-right:204px;}.raw-margin-right-208{margin-right:208px;}.raw-margin-right-212{margin-right:212px;}.raw-margin-right-216{margin-right:216px;}.raw-margin-right-220{margin-right:220px;}.raw-margin-right-224{margin-right:224px;}.raw-margin-right-228{margin-right:228px;}.raw-margin-right-232{margin-right:232px;}.raw-margin-right-236{margin-right:236px;}.raw-margin-right-240{margin-right:240px;}.raw-margin-right-244{margin-right:244px;}.raw-margin-right-248{margin-right:248px;}.raw-margin-right-252{margin-right:252px;}.raw-margin-right-256{margin-right:256px;}.raw-margin-right-260{margin-right:260px;}.raw-margin-right-264{margin-right:264px;}.raw-margin-right-268{margin-right:268px;}.raw-margin-right-272{margin-right:272px;}.raw-margin-right-276{margin-right:276px;}.raw-margin-right-280{margin-right:280px;}.raw-margin-right-284{margin-right:284px;}.raw-margin-right-288{margin-right:288px;}.raw-margin-right-292{margin-right:292px;}.raw-margin-right-296{margin-right:296px;}.raw-margin-right-300{margin-right:300px;}.raw-margin-right-304{margin-right:304px;}.raw-margin-right-308{margin-right:308px;}.raw-margin-right-312{margin-right:312px;}.raw-margin-right-316{margin-right:316px;}.raw-margin-right-320{margin-right:320px;}.raw-margin-right-324{margin-right:324px;}.raw-margin-right-328{margin-right:328px;}.raw-margin-right-332{margin-right:332px;}.raw-margin-right-336{margin-right:336px;}.raw-margin-right-340{margin-right:340px;}.raw-margin-right-344{margin-right:344px;}.raw-margin-right-348{margin-right:348px;}.raw-margin-right-352{margin-right:352px;}.raw-margin-right-356{margin-right:356px;}.raw-margin-right-360{margin-right:360px;}.raw-margin-right-364{margin-right:364px;}.raw-margin-right-368{margin-right:368px;}.raw-margin-right-372{margin-right:372px;}.raw-margin-right-376{margin-right:376px;}.raw-margin-right-380{margin-right:380px;}.raw-margin-right-384{margin-right:384px;}.raw-margin-right-388{margin-right:388px;}.raw-margin-right-392{margin-right:392px;}.raw-margin-right-396{margin-right:396px;}.raw-margin-right-400{margin-right:400px;}.raw-margin-bottom-4{margin-bottom:4px;}.raw-margin-bottom-8{margin-bottom:8px;}.raw-margin-bottom-12{margin-bottom:12px;}.raw-margin-bottom-16{margin-bottom:16px;}.raw-margin-bottom-20{margin-bottom:20px;}.raw-margin-bottom-24{margin-bottom:24px;}.raw-margin-bottom-28{margin-bottom:28px;}.raw-margin-bottom-32{margin-bottom:32px;}.raw-margin-bottom-36{margin-bottom:36px;}.raw-margin-bottom-40{margin-bottom:40px;}.raw-margin-bottom-44{margin-bottom:44px;}.raw-margin-bottom-48{margin-bottom:48px;}.raw-margin-bottom-52{margin-bottom:52px;}.raw-margin-bottom-56{margin-bottom:56px;}.raw-margin-bottom-60{margin-bottom:60px;}.raw-margin-bottom-64{margin-bottom:64px;}.raw-margin-bottom-68{margin-bottom:68px;}.raw-margin-bottom-72{margin-bottom:72px;}.raw-margin-bottom-76{margin-bottom:76px;}.raw-margin-bottom-80{margin-bottom:80px;}.raw-margin-bottom-84{margin-bottom:84px;}.raw-margin-bottom-88{margin-bottom:88px;}.raw-margin-bottom-92{margin-bottom:92px;}.raw-margin-bottom-96{margin-bottom:96px;}.raw-margin-bottom-100{margin-bottom:100px;}.raw-margin-bottom-104{margin-bottom:104px;}.raw-margin-bottom-108{margin-bottom:108px;}.raw-margin-bottom-112{margin-bottom:112px;}.raw-margin-bottom-116{margin-bottom:116px;}.raw-margin-bottom-120{margin-bottom:120px;}.raw-margin-bottom-124{margin-bottom:124px;}.raw-margin-bottom-128{margin-bottom:128px;}.raw-margin-bottom-132{margin-bottom:132px;}.raw-margin-bottom-136{margin-bottom:136px;}.raw-margin-bottom-140{margin-bottom:140px;}.raw-margin-bottom-144{margin-bottom:144px;}.raw-margin-bottom-148{margin-bottom:148px;}.raw-margin-bottom-152{margin-bottom:152px;}.raw-margin-bottom-156{margin-bottom:156px;}.raw-margin-bottom-160{margin-bottom:160px;}.raw-margin-bottom-164{margin-bottom:164px;}.raw-margin-bottom-168{margin-bottom:168px;}.raw-margin-bottom-172{margin-bottom:172px;}.raw-margin-bottom-176{margin-bottom:176px;}.raw-margin-bottom-180{margin-bottom:180px;}.raw-margin-bottom-184{margin-bottom:184px;}.raw-margin-bottom-188{margin-bottom:188px;}.raw-margin-bottom-192{margin-bottom:192px;}.raw-margin-bottom-196{margin-bottom:196px;}.raw-margin-bottom-200{margin-bottom:200px;}.raw-margin-bottom-204{margin-bottom:204px;}.raw-margin-bottom-208{margin-bottom:208px;}.raw-margin-bottom-212{margin-bottom:212px;}.raw-margin-bottom-216{margin-bottom:216px;}.raw-margin-bottom-220{margin-bottom:220px;}.raw-margin-bottom-224{margin-bottom:224px;}.raw-margin-bottom-228{margin-bottom:228px;}.raw-margin-bottom-232{margin-bottom:232px;}.raw-margin-bottom-236{margin-bottom:236px;}.raw-margin-bottom-240{margin-bottom:240px;}.raw-margin-bottom-244{margin-bottom:244px;}.raw-margin-bottom-248{margin-bottom:248px;}.raw-margin-bottom-252{margin-bottom:252px;}.raw-margin-bottom-256{margin-bottom:256px;}.raw-margin-bottom-260{margin-bottom:260px;}.raw-margin-bottom-264{margin-bottom:264px;}.raw-margin-bottom-268{margin-bottom:268px;}.raw-margin-bottom-272{margin-bottom:272px;}.raw-margin-bottom-276{margin-bottom:276px;}.raw-margin-bottom-280{margin-bottom:280px;}.raw-margin-bottom-284{margin-bottom:284px;}.raw-margin-bottom-288{margin-bottom:288px;}.raw-margin-bottom-292{margin-bottom:292px;}.raw-margin-bottom-296{margin-bottom:296px;}.raw-margin-bottom-300{margin-bottom:300px;}.raw-margin-bottom-304{margin-bottom:304px;}.raw-margin-bottom-308{margin-bottom:308px;}.raw-margin-bottom-312{margin-bottom:312px;}.raw-margin-bottom-316{margin-bottom:316px;}.raw-margin-bottom-320{margin-bottom:320px;}.raw-margin-bottom-324{margin-bottom:324px;}.raw-margin-bottom-328{margin-bottom:328px;}.raw-margin-bottom-332{margin-bottom:332px;}.raw-margin-bottom-336{margin-bottom:336px;}.raw-margin-bottom-340{margin-bottom:340px;}.raw-margin-bottom-344{margin-bottom:344px;}.raw-margin-bottom-348{margin-bottom:348px;}.raw-margin-bottom-352{margin-bottom:352px;}.raw-margin-bottom-356{margin-bottom:356px;}.raw-margin-bottom-360{margin-bottom:360px;}.raw-margin-bottom-364{margin-bottom:364px;}.raw-margin-bottom-368{margin-bottom:368px;}.raw-margin-bottom-372{margin-bottom:372px;}.raw-margin-bottom-376{margin-bottom:376px;}.raw-margin-bottom-380{margin-bottom:380px;}.raw-margin-bottom-384{margin-bottom:384px;}.raw-margin-bottom-388{margin-bottom:388px;}.raw-margin-bottom-392{margin-bottom:392px;}.raw-margin-bottom-396{margin-bottom:396px;}.raw-margin-bottom-400{margin-bottom:400px;}.raw-margin-4{margin:4px;}.raw-margin-8{margin:8px;}.raw-margin-12{margin:12px;}.raw-margin-16{margin:16px;}.raw-margin-20{margin:20px;}.raw-margin-24{margin:24px;}.raw-margin-28{margin:28px;}.raw-margin-32{margin:32px;}.raw-margin-36{margin:36px;}.raw-margin-40{margin:40px;}.raw-margin-44{margin:44px;}.raw-margin-48{margin:48px;}.raw-margin-52{margin:52px;}.raw-margin-56{margin:56px;}.raw-margin-60{margin:60px;}.raw-margin-64{margin:64px;}.raw-margin-68{margin:68px;}.raw-margin-72{margin:72px;}.raw-margin-76{margin:76px;}.raw-margin-80{margin:80px;}.raw-margin-84{margin:84px;}.raw-margin-88{margin:88px;}.raw-margin-92{margin:92px;}.raw-margin-96{margin:96px;}.raw-margin-100{margin:100px;}.raw-margin-104{margin:104px;}.raw-margin-108{margin:108px;}.raw-margin-112{margin:112px;}.raw-margin-116{margin:116px;}.raw-margin-120{margin:120px;}.raw-margin-124{margin:124px;}.raw-margin-128{margin:128px;}.raw-margin-132{margin:132px;}.raw-margin-136{margin:136px;}.raw-margin-140{margin:140px;}.raw-margin-144{margin:144px;}.raw-margin-148{margin:148px;}.raw-margin-152{margin:152px;}.raw-margin-156{margin:156px;}.raw-margin-160{margin:160px;}.raw-margin-164{margin:164px;}.raw-margin-168{margin:168px;}.raw-margin-172{margin:172px;}.raw-margin-176{margin:176px;}.raw-margin-180{margin:180px;}.raw-margin-184{margin:184px;}.raw-margin-188{margin:188px;}.raw-margin-192{margin:192px;}.raw-margin-196{margin:196px;}.raw-margin-200{margin:200px;}.raw-margin-204{margin:204px;}.raw-margin-208{margin:208px;}.raw-margin-212{margin:212px;}.raw-margin-216{margin:216px;}.raw-margin-220{margin:220px;}.raw-margin-224{margin:224px;}.raw-margin-228{margin:228px;}.raw-margin-232{margin:232px;}.raw-margin-236{margin:236px;}.raw-margin-240{margin:240px;}.raw-margin-244{margin:244px;}.raw-margin-248{margin:248px;}.raw-margin-252{margin:252px;}.raw-margin-256{margin:256px;}.raw-margin-260{margin:260px;}.raw-margin-264{margin:264px;}.raw-margin-268{margin:268px;}.raw-margin-272{margin:272px;}.raw-margin-276{margin:276px;}.raw-margin-280{margin:280px;}.raw-margin-284{margin:284px;}.raw-margin-288{margin:288px;}.raw-margin-292{margin:292px;}.raw-margin-296{margin:296px;}.raw-margin-300{margin:300px;}.raw-margin-304{margin:304px;}.raw-margin-308{margin:308px;}.raw-margin-312{margin:312px;}.raw-margin-316{margin:316px;}.raw-margin-320{margin:320px;}.raw-margin-324{margin:324px;}.raw-margin-328{margin:328px;}.raw-margin-332{margin:332px;}.raw-margin-336{margin:336px;}.raw-margin-340{margin:340px;}.raw-margin-344{margin:344px;}.raw-margin-348{margin:348px;}.raw-margin-352{margin:352px;}.raw-margin-356{margin:356px;}.raw-margin-360{margin:360px;}.raw-margin-364{margin:364px;}.raw-margin-368{margin:368px;}.raw-margin-372{margin:372px;}.raw-margin-376{margin:376px;}.raw-margin-380{margin:380px;}.raw-margin-384{margin:384px;}.raw-margin-388{margin:388px;}.raw-margin-392{margin:392px;}.raw-margin-396{margin:396px;}.raw-margin-400{margin:400px;}.raw-margin-auto{margin:0 auto;}.raw-margin-top-0{margin-top:0;}.raw-margin-top-5{margin-top:5px;}.raw-margin-top-10{margin-top:10px;}.raw-margin-top-15{margin-top:15px;}.raw-margin-top-20{margin-top:20px;}.raw-margin-top-25{margin-top:25px;}.raw-margin-top-30{margin-top:30px;}.raw-margin-top-35{margin-top:35px;}.raw-margin-top-40{margin-top:40px;}.raw-margin-top-45{margin-top:45px;}.raw-margin-top-50{margin-top:50px;}.raw-margin-top-55{margin-top:55px;}.raw-margin-top-60{margin-top:60px;}.raw-margin-top-65{margin-top:65px;}.raw-margin-top-70{margin-top:70px;}.raw-margin-top-75{margin-top:75px;}.raw-margin-top-80{margin-top:80px;}.raw-margin-top-85{margin-top:85px;}.raw-margin-top-90{margin-top:90px;}.raw-margin-top-95{margin-top:95px;}.raw-margin-top-100{margin-top:100px;}.raw-margin-top-105{margin-top:105px;}.raw-margin-top-110{margin-top:110px;}.raw-margin-top-115{margin-top:115px;}.raw-margin-top-120{margin-top:120px;}.raw-margin-top-125{margin-top:125px;}.raw-margin-top-130{margin-top:130px;}.raw-margin-top-135{margin-top:135px;}.raw-margin-top-140{margin-top:140px;}.raw-margin-top-145{margin-top:145px;}.raw-margin-top-150{margin-top:150px;}.raw-margin-top-155{margin-top:155px;}.raw-margin-top-160{margin-top:160px;}.raw-margin-top-165{margin-top:165px;}.raw-margin-top-170{margin-top:170px;}.raw-margin-top-175{margin-top:175px;}.raw-margin-top-180{margin-top:180px;}.raw-margin-top-185{margin-top:185px;}.raw-margin-top-190{margin-top:190px;}.raw-margin-top-195{margin-top:195px;}.raw-margin-top-200{margin-top:200px;}.raw-margin-right-0{margin-right:0;}.raw-margin-right-5{margin-right:5px;}.raw-margin-right-10{margin-right:10px;}.raw-margin-right-15{margin-right:15px;}.raw-margin-right-20{margin-right:20px;}.raw-margin-right-25{margin-right:25px;}.raw-margin-right-30{margin-right:30px;}.raw-margin-right-35{margin-right:35px;}.raw-margin-right-40{margin-right:40px;}.raw-margin-right-45{margin-right:45px;}.raw-margin-right-50{margin-right:50px;}.raw-margin-right-55{margin-right:55px;}.raw-margin-right-60{margin-right:60px;}.raw-margin-right-65{margin-right:65px;}.raw-margin-right-70{margin-right:70px;}.raw-margin-right-75{margin-right:75px;}.raw-margin-right-80{margin-right:80px;}.raw-margin-right-85{margin-right:85px;}.raw-margin-right-90{margin-right:90px;}.raw-margin-right-95{margin-right:95px;}.raw-margin-right-100{margin-right:100px;}.raw-margin-right-105{margin-right:105px;}.raw-margin-right-110{margin-right:110px;}.raw-margin-right-115{margin-right:115px;}.raw-margin-right-120{margin-right:120px;}.raw-margin-right-125{margin-right:125px;}.raw-margin-right-130{margin-right:130px;}.raw-margin-right-135{margin-right:135px;}.raw-margin-right-140{margin-right:140px;}.raw-margin-right-145{margin-right:145px;}.raw-margin-right-150{margin-right:150px;}.raw-margin-right-155{margin-right:155px;}.raw-margin-right-160{margin-right:160px;}.raw-margin-right-165{margin-right:165px;}.raw-margin-right-170{margin-right:170px;}.raw-margin-right-175{margin-right:175px;}.raw-margin-right-180{margin-right:180px;}.raw-margin-right-185{margin-right:185px;}.raw-margin-right-190{margin-right:190px;}.raw-margin-right-195{margin-right:195px;}.raw-margin-right-200{margin-right:200px;}.raw-margin-bottom-0{margin-bottom:0;}.raw-margin-bottom-5{margin-bottom:5px;}.raw-margin-bottom-10{margin-bottom:10px;}.raw-margin-bottom-15{margin-bottom:15px;}.raw-margin-bottom-20{margin-bottom:20px;}.raw-margin-bottom-25{margin-bottom:25px;}.raw-margin-bottom-30{margin-bottom:30px;}.raw-margin-bottom-35{margin-bottom:35px;}.raw-margin-bottom-40{margin-bottom:40px;}.raw-margin-bottom-45{margin-bottom:45px;}.raw-margin-bottom-50{margin-bottom:50px;}.raw-margin-bottom-55{margin-bottom:55px;}.raw-margin-bottom-60{margin-bottom:60px;}.raw-margin-bottom-65{margin-bottom:65px;}.raw-margin-bottom-70{margin-bottom:70px;}.raw-margin-bottom-75{margin-bottom:75px;}.raw-margin-bottom-80{margin-bottom:80px;}.raw-margin-bottom-85{margin-bottom:85px;}.raw-margin-bottom-90{margin-bottom:90px;}.raw-margin-bottom-95{margin-bottom:95px;}.raw-margin-bottom-100{margin-bottom:100px;}.raw-margin-bottom-105{margin-bottom:105px;}.raw-margin-bottom-110{margin-bottom:110px;}.raw-margin-bottom-115{margin-bottom:115px;}.raw-margin-bottom-120{margin-bottom:120px;}.raw-margin-bottom-125{margin-bottom:125px;}.raw-margin-bottom-130{margin-bottom:130px;}.raw-margin-bottom-135{margin-bottom:135px;}.raw-margin-bottom-140{margin-bottom:140px;}.raw-margin-bottom-145{margin-bottom:145px;}.raw-margin-bottom-150{margin-bottom:150px;}.raw-margin-bottom-155{margin-bottom:155px;}.raw-margin-bottom-160{margin-bottom:160px;}.raw-margin-bottom-165{margin-bottom:165px;}.raw-margin-bottom-170{margin-bottom:170px;}.raw-margin-bottom-175{margin-bottom:175px;}.raw-margin-bottom-180{margin-bottom:180px;}.raw-margin-bottom-185{margin-bottom:185px;}.raw-margin-bottom-190{margin-bottom:190px;}.raw-margin-bottom-195{margin-bottom:195px;}.raw-margin-bottom-200{margin-bottom:200px;}.raw-margin-left-0{margin-left:0;}.raw-margin-left-5{margin-left:5px;}.raw-margin-left-10{margin-left:10px;}.raw-margin-left-15{margin-left:15px;}.raw-margin-left-20{margin-left:20px;}.raw-margin-left-25{margin-left:25px;}.raw-margin-left-30{margin-left:30px;}.raw-margin-left-35{margin-left:35px;}.raw-margin-left-40{margin-left:40px;}.raw-margin-left-45{margin-left:45px;}.raw-margin-left-50{margin-left:50px;}.raw-margin-left-55{margin-left:55px;}.raw-margin-left-60{margin-left:60px;}.raw-margin-left-65{margin-left:65px;}.raw-margin-left-70{margin-left:70px;}.raw-margin-left-75{margin-left:75px;}.raw-margin-left-80{margin-left:80px;}.raw-margin-left-85{margin-left:85px;}.raw-margin-left-90{margin-left:90px;}.raw-margin-left-95{margin-left:95px;}.raw-margin-left-100{margin-left:100px;}.raw-margin-left-105{margin-left:105px;}.raw-margin-left-110{margin-left:110px;}.raw-margin-left-115{margin-left:115px;}.raw-margin-left-120{margin-left:120px;}.raw-margin-left-125{margin-left:125px;}.raw-margin-left-130{margin-left:130px;}.raw-margin-left-135{margin-left:135px;}.raw-margin-left-140{margin-left:140px;}.raw-margin-left-145{margin-left:145px;}.raw-margin-left-150{margin-left:150px;}.raw-margin-left-155{margin-left:155px;}.raw-margin-left-160{margin-left:160px;}.raw-margin-left-165{margin-left:165px;}.raw-margin-left-170{margin-left:170px;}.raw-margin-left-175{margin-left:175px;}.raw-margin-left-180{margin-left:180px;}.raw-margin-left-185{margin-left:185px;}.raw-margin-left-190{margin-left:190px;}.raw-margin-left-195{margin-left:195px;}.raw-margin-left-200{margin-left:200px;}.raw-margin-0{margin:0;}.raw-margin-5{margin:5px;}.raw-margin-10{margin:10px;}.raw-margin-15{margin:15px;}.raw-margin-20{margin:20px;}.raw-margin-25{margin:25px;}.raw-margin-30{margin:30px;}.raw-margin-35{margin:35px;}.raw-margin-40{margin:40px;}.raw-margin-45{margin:45px;}.raw-margin-50{margin:50px;}.raw-margin-55{margin:55px;}.raw-margin-60{margin:60px;}.raw-margin-65{margin:65px;}.raw-margin-70{margin:70px;}.raw-margin-75{margin:75px;}.raw-margin-80{margin:80px;}.raw-margin-85{margin:85px;}.raw-margin-90{margin:90px;}.raw-margin-95{margin:95px;}.raw-margin-100{margin:100px;}.raw-margin-105{margin:105px;}.raw-margin-110{margin:110px;}.raw-margin-115{margin:115px;}.raw-margin-120{margin:120px;}.raw-margin-125{margin:125px;}.raw-margin-130{margin:130px;}.raw-margin-135{margin:135px;}.raw-margin-140{margin:140px;}.raw-margin-145{margin:145px;}.raw-margin-150{margin:150px;}.raw-margin-155{margin:155px;}.raw-margin-160{margin:160px;}.raw-margin-165{margin:165px;}.raw-margin-170{margin:170px;}.raw-margin-175{margin:175px;}.raw-margin-180{margin:180px;}.raw-margin-185{margin:185px;}.raw-margin-190{margin:190px;}.raw-margin-195{margin:195px;}.raw-margin-200{margin:200px;}.raw-margin-auto{margin:0 auto;}.raw-padding-top-4{padding-top:4px;}.raw-padding-top-8{padding-top:8px;}.raw-padding-top-12{padding-top:12px;}.raw-padding-top-16{padding-top:16px;}.raw-padding-top-20{padding-top:20px;}.raw-padding-top-24{padding-top:24px;}.raw-padding-top-28{padding-top:28px;}.raw-padding-top-32{padding-top:32px;}.raw-padding-top-36{padding-top:36px;}.raw-padding-top-40{padding-top:40px;}.raw-padding-top-44{padding-top:44px;}.raw-padding-top-48{padding-top:48px;}.raw-padding-top-52{padding-top:52px;}.raw-padding-top-56{padding-top:56px;}.raw-padding-top-60{padding-top:60px;}.raw-padding-top-64{padding-top:64px;}.raw-padding-top-68{padding-top:68px;}.raw-padding-top-72{padding-top:72px;}.raw-padding-top-76{padding-top:76px;}.raw-padding-top-80{padding-top:80px;}.raw-padding-top-84{padding-top:84px;}.raw-padding-top-88{padding-top:88px;}.raw-padding-top-92{padding-top:92px;}.raw-padding-top-96{padding-top:96px;}.raw-padding-top-100{padding-top:100px;}.raw-padding-top-104{padding-top:104px;}.raw-padding-top-108{padding-top:108px;}.raw-padding-top-112{padding-top:112px;}.raw-padding-top-116{padding-top:116px;}.raw-padding-top-120{padding-top:120px;}.raw-padding-top-124{padding-top:124px;}.raw-padding-top-128{padding-top:128px;}.raw-padding-top-132{padding-top:132px;}.raw-padding-top-136{padding-top:136px;}.raw-padding-top-140{padding-top:140px;}.raw-padding-top-144{padding-top:144px;}.raw-padding-top-148{padding-top:148px;}.raw-padding-top-152{padding-top:152px;}.raw-padding-top-156{padding-top:156px;}.raw-padding-top-160{padding-top:160px;}.raw-padding-top-164{padding-top:164px;}.raw-padding-top-168{padding-top:168px;}.raw-padding-top-172{padding-top:172px;}.raw-padding-top-176{padding-top:176px;}.raw-padding-top-180{padding-top:180px;}.raw-padding-top-184{padding-top:184px;}.raw-padding-top-188{padding-top:188px;}.raw-padding-top-192{padding-top:192px;}.raw-padding-top-196{padding-top:196px;}.raw-padding-top-200{padding-top:200px;}.raw-padding-top-204{padding-top:204px;}.raw-padding-top-208{padding-top:208px;}.raw-padding-top-212{padding-top:212px;}.raw-padding-top-216{padding-top:216px;}.raw-padding-top-220{padding-top:220px;}.raw-padding-top-224{padding-top:224px;}.raw-padding-top-228{padding-top:228px;}.raw-padding-top-232{padding-top:232px;}.raw-padding-top-236{padding-top:236px;}.raw-padding-top-240{padding-top:240px;}.raw-padding-top-244{padding-top:244px;}.raw-padding-top-248{padding-top:248px;}.raw-padding-top-252{padding-top:252px;}.raw-padding-top-256{padding-top:256px;}.raw-padding-top-260{padding-top:260px;}.raw-padding-top-264{padding-top:264px;}.raw-padding-top-268{padding-top:268px;}.raw-padding-top-272{padding-top:272px;}.raw-padding-top-276{padding-top:276px;}.raw-padding-top-280{padding-top:280px;}.raw-padding-top-284{padding-top:284px;}.raw-padding-top-288{padding-top:288px;}.raw-padding-top-292{padding-top:292px;}.raw-padding-top-296{padding-top:296px;}.raw-padding-top-300{padding-top:300px;}.raw-padding-top-304{padding-top:304px;}.raw-padding-top-308{padding-top:308px;}.raw-padding-top-312{padding-top:312px;}.raw-padding-top-316{padding-top:316px;}.raw-padding-top-320{padding-top:320px;}.raw-padding-top-324{padding-top:324px;}.raw-padding-top-328{padding-top:328px;}.raw-padding-top-332{padding-top:332px;}.raw-padding-top-336{padding-top:336px;}.raw-padding-top-340{padding-top:340px;}.raw-padding-top-344{padding-top:344px;}.raw-padding-top-348{padding-top:348px;}.raw-padding-top-352{padding-top:352px;}.raw-padding-top-356{padding-top:356px;}.raw-padding-top-360{padding-top:360px;}.raw-padding-top-364{padding-top:364px;}.raw-padding-top-368{padding-top:368px;}.raw-padding-top-372{padding-top:372px;}.raw-padding-top-376{padding-top:376px;}.raw-padding-top-380{padding-top:380px;}.raw-padding-top-384{padding-top:384px;}.raw-padding-top-388{padding-top:388px;}.raw-padding-top-392{padding-top:392px;}.raw-padding-top-396{padding-top:396px;}.raw-padding-top-400{padding-top:400px;}.raw-padding-left-4{padding-left:4px;}.raw-padding-left-8{padding-left:8px;}.raw-padding-left-12{padding-left:12px;}.raw-padding-left-16{padding-left:16px;}.raw-padding-left-20{padding-left:20px;}.raw-padding-left-24{padding-left:24px;}.raw-padding-left-28{padding-left:28px;}.raw-padding-left-32{padding-left:32px;}.raw-padding-left-36{padding-left:36px;}.raw-padding-left-40{padding-left:40px;}.raw-padding-left-44{padding-left:44px;}.raw-padding-left-48{padding-left:48px;}.raw-padding-left-52{padding-left:52px;}.raw-padding-left-56{padding-left:56px;}.raw-padding-left-60{padding-left:60px;}.raw-padding-left-64{padding-left:64px;}.raw-padding-left-68{padding-left:68px;}.raw-padding-left-72{padding-left:72px;}.raw-padding-left-76{padding-left:76px;}.raw-padding-left-80{padding-left:80px;}.raw-padding-left-84{padding-left:84px;}.raw-padding-left-88{padding-left:88px;}.raw-padding-left-92{padding-left:92px;}.raw-padding-left-96{padding-left:96px;}.raw-padding-left-100{padding-left:100px;}.raw-padding-left-104{padding-left:104px;}.raw-padding-left-108{padding-left:108px;}.raw-padding-left-112{padding-left:112px;}.raw-padding-left-116{padding-left:116px;}.raw-padding-left-120{padding-left:120px;}.raw-padding-left-124{padding-left:124px;}.raw-padding-left-128{padding-left:128px;}.raw-padding-left-132{padding-left:132px;}.raw-padding-left-136{padding-left:136px;}.raw-padding-left-140{padding-left:140px;}.raw-padding-left-144{padding-left:144px;}.raw-padding-left-148{padding-left:148px;}.raw-padding-left-152{padding-left:152px;}.raw-padding-left-156{padding-left:156px;}.raw-padding-left-160{padding-left:160px;}.raw-padding-left-164{padding-left:164px;}.raw-padding-left-168{padding-left:168px;}.raw-padding-left-172{padding-left:172px;}.raw-padding-left-176{padding-left:176px;}.raw-padding-left-180{padding-left:180px;}.raw-padding-left-184{padding-left:184px;}.raw-padding-left-188{padding-left:188px;}.raw-padding-left-192{padding-left:192px;}.raw-padding-left-196{padding-left:196px;}.raw-padding-left-200{padding-left:200px;}.raw-padding-left-204{padding-left:204px;}.raw-padding-left-208{padding-left:208px;}.raw-padding-left-212{padding-left:212px;}.raw-padding-left-216{padding-left:216px;}.raw-padding-left-220{padding-left:220px;}.raw-padding-left-224{padding-left:224px;}.raw-padding-left-228{padding-left:228px;}.raw-padding-left-232{padding-left:232px;}.raw-padding-left-236{padding-left:236px;}.raw-padding-left-240{padding-left:240px;}.raw-padding-left-244{padding-left:244px;}.raw-padding-left-248{padding-left:248px;}.raw-padding-left-252{padding-left:252px;}.raw-padding-left-256{padding-left:256px;}.raw-padding-left-260{padding-left:260px;}.raw-padding-left-264{padding-left:264px;}.raw-padding-left-268{padding-left:268px;}.raw-padding-left-272{padding-left:272px;}.raw-padding-left-276{padding-left:276px;}.raw-padding-left-280{padding-left:280px;}.raw-padding-left-284{padding-left:284px;}.raw-padding-left-288{padding-left:288px;}.raw-padding-left-292{padding-left:292px;}.raw-padding-left-296{padding-left:296px;}.raw-padding-left-300{padding-left:300px;}.raw-padding-left-304{padding-left:304px;}.raw-padding-left-308{padding-left:308px;}.raw-padding-left-312{padding-left:312px;}.raw-padding-left-316{padding-left:316px;}.raw-padding-left-320{padding-left:320px;}.raw-padding-left-324{padding-left:324px;}.raw-padding-left-328{padding-left:328px;}.raw-padding-left-332{padding-left:332px;}.raw-padding-left-336{padding-left:336px;}.raw-padding-left-340{padding-left:340px;}.raw-padding-left-344{padding-left:344px;}.raw-padding-left-348{padding-left:348px;}.raw-padding-left-352{padding-left:352px;}.raw-padding-left-356{padding-left:356px;}.raw-padding-left-360{padding-left:360px;}.raw-padding-left-364{padding-left:364px;}.raw-padding-left-368{padding-left:368px;}.raw-padding-left-372{padding-left:372px;}.raw-padding-left-376{padding-left:376px;}.raw-padding-left-380{padding-left:380px;}.raw-padding-left-384{padding-left:384px;}.raw-padding-left-388{padding-left:388px;}.raw-padding-left-392{padding-left:392px;}.raw-padding-left-396{padding-left:396px;}.raw-padding-left-400{padding-left:400px;}.raw-padding-right-4{padding-right:4px;}.raw-padding-right-8{padding-right:8px;}.raw-padding-right-12{padding-right:12px;}.raw-padding-right-16{padding-right:16px;}.raw-padding-right-20{padding-right:20px;}.raw-padding-right-24{padding-right:24px;}.raw-padding-right-28{padding-right:28px;}.raw-padding-right-32{padding-right:32px;}.raw-padding-right-36{padding-right:36px;}.raw-padding-right-40{padding-right:40px;}.raw-padding-right-44{padding-right:44px;}.raw-padding-right-48{padding-right:48px;}.raw-padding-right-52{padding-right:52px;}.raw-padding-right-56{padding-right:56px;}.raw-padding-right-60{padding-right:60px;}.raw-padding-right-64{padding-right:64px;}.raw-padding-right-68{padding-right:68px;}.raw-padding-right-72{padding-right:72px;}.raw-padding-right-76{padding-right:76px;}.raw-padding-right-80{padding-right:80px;}.raw-padding-right-84{padding-right:84px;}.raw-padding-right-88{padding-right:88px;}.raw-padding-right-92{padding-right:92px;}.raw-padding-right-96{padding-right:96px;}.raw-padding-right-100{padding-right:100px;}.raw-padding-right-104{padding-right:104px;}.raw-padding-right-108{padding-right:108px;}.raw-padding-right-112{padding-right:112px;}.raw-padding-right-116{padding-right:116px;}.raw-padding-right-120{padding-right:120px;}.raw-padding-right-124{padding-right:124px;}.raw-padding-right-128{padding-right:128px;}.raw-padding-right-132{padding-right:132px;}.raw-padding-right-136{padding-right:136px;}.raw-padding-right-140{padding-right:140px;}.raw-padding-right-144{padding-right:144px;}.raw-padding-right-148{padding-right:148px;}.raw-padding-right-152{padding-right:152px;}.raw-padding-right-156{padding-right:156px;}.raw-padding-right-160{padding-right:160px;}.raw-padding-right-164{padding-right:164px;}.raw-padding-right-168{padding-right:168px;}.raw-padding-right-172{padding-right:172px;}.raw-padding-right-176{padding-right:176px;}.raw-padding-right-180{padding-right:180px;}.raw-padding-right-184{padding-right:184px;}.raw-padding-right-188{padding-right:188px;}.raw-padding-right-192{padding-right:192px;}.raw-padding-right-196{padding-right:196px;}.raw-padding-right-200{padding-right:200px;}.raw-padding-right-204{padding-right:204px;}.raw-padding-right-208{padding-right:208px;}.raw-padding-right-212{padding-right:212px;}.raw-padding-right-216{padding-right:216px;}.raw-padding-right-220{padding-right:220px;}.raw-padding-right-224{padding-right:224px;}.raw-padding-right-228{padding-right:228px;}.raw-padding-right-232{padding-right:232px;}.raw-padding-right-236{padding-right:236px;}.raw-padding-right-240{padding-right:240px;}.raw-padding-right-244{padding-right:244px;}.raw-padding-right-248{padding-right:248px;}.raw-padding-right-252{padding-right:252px;}.raw-padding-right-256{padding-right:256px;}.raw-padding-right-260{padding-right:260px;}.raw-padding-right-264{padding-right:264px;}.raw-padding-right-268{padding-right:268px;}.raw-padding-right-272{padding-right:272px;}.raw-padding-right-276{padding-right:276px;}.raw-padding-right-280{padding-right:280px;}.raw-padding-right-284{padding-right:284px;}.raw-padding-right-288{padding-right:288px;}.raw-padding-right-292{padding-right:292px;}.raw-padding-right-296{padding-right:296px;}.raw-padding-right-300{padding-right:300px;}.raw-padding-right-304{padding-right:304px;}.raw-padding-right-308{padding-right:308px;}.raw-padding-right-312{padding-right:312px;}.raw-padding-right-316{padding-right:316px;}.raw-padding-right-320{padding-right:320px;}.raw-padding-right-324{padding-right:324px;}.raw-padding-right-328{padding-right:328px;}.raw-padding-right-332{padding-right:332px;}.raw-padding-right-336{padding-right:336px;}.raw-padding-right-340{padding-right:340px;}.raw-padding-right-344{padding-right:344px;}.raw-padding-right-348{padding-right:348px;}.raw-padding-right-352{padding-right:352px;}.raw-padding-right-356{padding-right:356px;}.raw-padding-right-360{padding-right:360px;}.raw-padding-right-364{padding-right:364px;}.raw-padding-right-368{padding-right:368px;}.raw-padding-right-372{padding-right:372px;}.raw-padding-right-376{padding-right:376px;}.raw-padding-right-380{padding-right:380px;}.raw-padding-right-384{padding-right:384px;}.raw-padding-right-388{padding-right:388px;}.raw-padding-right-392{padding-right:392px;}.raw-padding-right-396{padding-right:396px;}.raw-padding-right-400{padding-right:400px;}.raw-padding-bottom-4{padding-bottom:4px;}.raw-padding-bottom-8{padding-bottom:8px;}.raw-padding-bottom-12{padding-bottom:12px;}.raw-padding-bottom-16{padding-bottom:16px;}.raw-padding-bottom-20{padding-bottom:20px;}.raw-padding-bottom-24{padding-bottom:24px;}.raw-padding-bottom-28{padding-bottom:28px;}.raw-padding-bottom-32{padding-bottom:32px;}.raw-padding-bottom-36{padding-bottom:36px;}.raw-padding-bottom-40{padding-bottom:40px;}.raw-padding-bottom-44{padding-bottom:44px;}.raw-padding-bottom-48{padding-bottom:48px;}.raw-padding-bottom-52{padding-bottom:52px;}.raw-padding-bottom-56{padding-bottom:56px;}.raw-padding-bottom-60{padding-bottom:60px;}.raw-padding-bottom-64{padding-bottom:64px;}.raw-padding-bottom-68{padding-bottom:68px;}.raw-padding-bottom-72{padding-bottom:72px;}.raw-padding-bottom-76{padding-bottom:76px;}.raw-padding-bottom-80{padding-bottom:80px;}.raw-padding-bottom-84{padding-bottom:84px;}.raw-padding-bottom-88{padding-bottom:88px;}.raw-padding-bottom-92{padding-bottom:92px;}.raw-padding-bottom-96{padding-bottom:96px;}.raw-padding-bottom-100{padding-bottom:100px;}.raw-padding-bottom-104{padding-bottom:104px;}.raw-padding-bottom-108{padding-bottom:108px;}.raw-padding-bottom-112{padding-bottom:112px;}.raw-padding-bottom-116{padding-bottom:116px;}.raw-padding-bottom-120{padding-bottom:120px;}.raw-padding-bottom-124{padding-bottom:124px;}.raw-padding-bottom-128{padding-bottom:128px;}.raw-padding-bottom-132{padding-bottom:132px;}.raw-padding-bottom-136{padding-bottom:136px;}.raw-padding-bottom-140{padding-bottom:140px;}.raw-padding-bottom-144{padding-bottom:144px;}.raw-padding-bottom-148{padding-bottom:148px;}.raw-padding-bottom-152{padding-bottom:152px;}.raw-padding-bottom-156{padding-bottom:156px;}.raw-padding-bottom-160{padding-bottom:160px;}.raw-padding-bottom-164{padding-bottom:164px;}.raw-padding-bottom-168{padding-bottom:168px;}.raw-padding-bottom-172{padding-bottom:172px;}.raw-padding-bottom-176{padding-bottom:176px;}.raw-padding-bottom-180{padding-bottom:180px;}.raw-padding-bottom-184{padding-bottom:184px;}.raw-padding-bottom-188{padding-bottom:188px;}.raw-padding-bottom-192{padding-bottom:192px;}.raw-padding-bottom-196{padding-bottom:196px;}.raw-padding-bottom-200{padding-bottom:200px;}.raw-padding-bottom-204{padding-bottom:204px;}.raw-padding-bottom-208{padding-bottom:208px;}.raw-padding-bottom-212{padding-bottom:212px;}.raw-padding-bottom-216{padding-bottom:216px;}.raw-padding-bottom-220{padding-bottom:220px;}.raw-padding-bottom-224{padding-bottom:224px;}.raw-padding-bottom-228{padding-bottom:228px;}.raw-padding-bottom-232{padding-bottom:232px;}.raw-padding-bottom-236{padding-bottom:236px;}.raw-padding-bottom-240{padding-bottom:240px;}.raw-padding-bottom-244{padding-bottom:244px;}.raw-padding-bottom-248{padding-bottom:248px;}.raw-padding-bottom-252{padding-bottom:252px;}.raw-padding-bottom-256{padding-bottom:256px;}.raw-padding-bottom-260{padding-bottom:260px;}.raw-padding-bottom-264{padding-bottom:264px;}.raw-padding-bottom-268{padding-bottom:268px;}.raw-padding-bottom-272{padding-bottom:272px;}.raw-padding-bottom-276{padding-bottom:276px;}.raw-padding-bottom-280{padding-bottom:280px;}.raw-padding-bottom-284{padding-bottom:284px;}.raw-padding-bottom-288{padding-bottom:288px;}.raw-padding-bottom-292{padding-bottom:292px;}.raw-padding-bottom-296{padding-bottom:296px;}.raw-padding-bottom-300{padding-bottom:300px;}.raw-padding-bottom-304{padding-bottom:304px;}.raw-padding-bottom-308{padding-bottom:308px;}.raw-padding-bottom-312{padding-bottom:312px;}.raw-padding-bottom-316{padding-bottom:316px;}.raw-padding-bottom-320{padding-bottom:320px;}.raw-padding-bottom-324{padding-bottom:324px;}.raw-padding-bottom-328{padding-bottom:328px;}.raw-padding-bottom-332{padding-bottom:332px;}.raw-padding-bottom-336{padding-bottom:336px;}.raw-padding-bottom-340{padding-bottom:340px;}.raw-padding-bottom-344{padding-bottom:344px;}.raw-padding-bottom-348{padding-bottom:348px;}.raw-padding-bottom-352{padding-bottom:352px;}.raw-padding-bottom-356{padding-bottom:356px;}.raw-padding-bottom-360{padding-bottom:360px;}.raw-padding-bottom-364{padding-bottom:364px;}.raw-padding-bottom-368{padding-bottom:368px;}.raw-padding-bottom-372{padding-bottom:372px;}.raw-padding-bottom-376{padding-bottom:376px;}.raw-padding-bottom-380{padding-bottom:380px;}.raw-padding-bottom-384{padding-bottom:384px;}.raw-padding-bottom-388{padding-bottom:388px;}.raw-padding-bottom-392{padding-bottom:392px;}.raw-padding-bottom-396{padding-bottom:396px;}.raw-padding-bottom-400{padding-bottom:400px;}.raw-padding-4{padding:4px;}.raw-padding-8{padding:8px;}.raw-padding-12{padding:12px;}.raw-padding-16{padding:16px;}.raw-padding-20{padding:20px;}.raw-padding-24{padding:24px;}.raw-padding-28{padding:28px;}.raw-padding-32{padding:32px;}.raw-padding-36{padding:36px;}.raw-padding-40{padding:40px;}.raw-padding-44{padding:44px;}.raw-padding-48{padding:48px;}.raw-padding-52{padding:52px;}.raw-padding-56{padding:56px;}.raw-padding-60{padding:60px;}.raw-padding-64{padding:64px;}.raw-padding-68{padding:68px;}.raw-padding-72{padding:72px;}.raw-padding-76{padding:76px;}.raw-padding-80{padding:80px;}.raw-padding-84{padding:84px;}.raw-padding-88{padding:88px;}.raw-padding-92{padding:92px;}.raw-padding-96{padding:96px;}.raw-padding-100{padding:100px;}.raw-padding-104{padding:104px;}.raw-padding-108{padding:108px;}.raw-padding-112{padding:112px;}.raw-padding-116{padding:116px;}.raw-padding-120{padding:120px;}.raw-padding-124{padding:124px;}.raw-padding-128{padding:128px;}.raw-padding-132{padding:132px;}.raw-padding-136{padding:136px;}.raw-padding-140{padding:140px;}.raw-padding-144{padding:144px;}.raw-padding-148{padding:148px;}.raw-padding-152{padding:152px;}.raw-padding-156{padding:156px;}.raw-padding-160{padding:160px;}.raw-padding-164{padding:164px;}.raw-padding-168{padding:168px;}.raw-padding-172{padding:172px;}.raw-padding-176{padding:176px;}.raw-padding-180{padding:180px;}.raw-padding-184{padding:184px;}.raw-padding-188{padding:188px;}.raw-padding-192{padding:192px;}.raw-padding-196{padding:196px;}.raw-padding-200{padding:200px;}.raw-padding-204{padding:204px;}.raw-padding-208{padding:208px;}.raw-padding-212{padding:212px;}.raw-padding-216{padding:216px;}.raw-padding-220{padding:220px;}.raw-padding-224{padding:224px;}.raw-padding-228{padding:228px;}.raw-padding-232{padding:232px;}.raw-padding-236{padding:236px;}.raw-padding-240{padding:240px;}.raw-padding-244{padding:244px;}.raw-padding-248{padding:248px;}.raw-padding-252{padding:252px;}.raw-padding-256{padding:256px;}.raw-padding-260{padding:260px;}.raw-padding-264{padding:264px;}.raw-padding-268{padding:268px;}.raw-padding-272{padding:272px;}.raw-padding-276{padding:276px;}.raw-padding-280{padding:280px;}.raw-padding-284{padding:284px;}.raw-padding-288{padding:288px;}.raw-padding-292{padding:292px;}.raw-padding-296{padding:296px;}.raw-padding-300{padding:300px;}.raw-padding-304{padding:304px;}.raw-padding-308{padding:308px;}.raw-padding-312{padding:312px;}.raw-padding-316{padding:316px;}.raw-padding-320{padding:320px;}.raw-padding-324{padding:324px;}.raw-padding-328{padding:328px;}.raw-padding-332{padding:332px;}.raw-padding-336{padding:336px;}.raw-padding-340{padding:340px;}.raw-padding-344{padding:344px;}.raw-padding-348{padding:348px;}.raw-padding-352{padding:352px;}.raw-padding-356{padding:356px;}.raw-padding-360{padding:360px;}.raw-padding-364{padding:364px;}.raw-padding-368{padding:368px;}.raw-padding-372{padding:372px;}.raw-padding-376{padding:376px;}.raw-padding-380{padding:380px;}.raw-padding-384{padding:384px;}.raw-padding-388{padding:388px;}.raw-padding-392{padding:392px;}.raw-padding-396{padding:396px;}.raw-padding-400{padding:400px;}.raw-padding-auto{margin:0 auto;}.raw-padding-top-0{padding-top:0;}.raw-padding-top-5{padding-top:5px;}.raw-padding-top-10{padding-top:10px;}.raw-padding-top-15{padding-top:15px;}.raw-padding-top-20{padding-top:20px;}.raw-padding-top-25{padding-top:25px;}.raw-padding-top-30{padding-top:30px;}.raw-padding-top-35{padding-top:35px;}.raw-padding-top-40{padding-top:40px;}.raw-padding-top-45{padding-top:45px;}.raw-padding-top-50{padding-top:50px;}.raw-padding-top-55{padding-top:55px;}.raw-padding-top-60{padding-top:60px;}.raw-padding-top-65{padding-top:65px;}.raw-padding-top-70{padding-top:70px;}.raw-padding-top-75{padding-top:75px;}.raw-padding-top-80{padding-top:80px;}.raw-padding-top-85{padding-top:85px;}.raw-padding-top-90{padding-top:90px;}.raw-padding-top-95{padding-top:95px;}.raw-padding-top-100{padding-top:100px;}.raw-padding-top-105{padding-top:105px;}.raw-padding-top-110{padding-top:110px;}.raw-padding-top-115{padding-top:115px;}.raw-padding-top-120{padding-top:120px;}.raw-padding-top-125{padding-top:125px;}.raw-padding-top-130{padding-top:130px;}.raw-padding-top-135{padding-top:135px;}.raw-padding-top-140{padding-top:140px;}.raw-padding-top-145{padding-top:145px;}.raw-padding-top-150{padding-top:150px;}.raw-padding-top-155{padding-top:155px;}.raw-padding-top-160{padding-top:160px;}.raw-padding-top-165{padding-top:165px;}.raw-padding-top-170{padding-top:170px;}.raw-padding-top-175{padding-top:175px;}.raw-padding-top-180{padding-top:180px;}.raw-padding-top-185{padding-top:185px;}.raw-padding-top-190{padding-top:190px;}.raw-padding-top-195{padding-top:195px;}.raw-padding-top-200{padding-top:200px;}.raw-padding-right-0{padding-right:0;}.raw-padding-right-5{padding-right:5px;}.raw-padding-right-10{padding-right:10px;}.raw-padding-right-15{padding-right:15px;}.raw-padding-right-20{padding-right:20px;}.raw-padding-right-25{padding-right:25px;}.raw-padding-right-30{padding-right:30px;}.raw-padding-right-35{padding-right:35px;}.raw-padding-right-40{padding-right:40px;}.raw-padding-right-45{padding-right:45px;}.raw-padding-right-50{padding-right:50px;}.raw-padding-right-55{padding-right:55px;}.raw-padding-right-60{padding-right:60px;}.raw-padding-right-65{padding-right:65px;}.raw-padding-right-70{padding-right:70px;}.raw-padding-right-75{padding-right:75px;}.raw-padding-right-80{padding-right:80px;}.raw-padding-right-85{padding-right:85px;}.raw-padding-right-90{padding-right:90px;}.raw-padding-right-95{padding-right:95px;}.raw-padding-right-100{padding-right:100px;}.raw-padding-right-105{padding-right:105px;}.raw-padding-right-110{padding-right:110px;}.raw-padding-right-115{padding-right:115px;}.raw-padding-right-120{padding-right:120px;}.raw-padding-right-125{padding-right:125px;}.raw-padding-right-130{padding-right:130px;}.raw-padding-right-135{padding-right:135px;}.raw-padding-right-140{padding-right:140px;}.raw-padding-right-145{padding-right:145px;}.raw-padding-right-150{padding-right:150px;}.raw-padding-right-155{padding-right:155px;}.raw-padding-right-160{padding-right:160px;}.raw-padding-right-165{padding-right:165px;}.raw-padding-right-170{padding-right:170px;}.raw-padding-right-175{padding-right:175px;}.raw-padding-right-180{padding-right:180px;}.raw-padding-right-185{padding-right:185px;}.raw-padding-right-190{padding-right:190px;}.raw-padding-right-195{padding-right:195px;}.raw-padding-right-200{padding-right:200px;}.raw-padding-bottom-0{padding-bottom:0;}.raw-padding-bottom-5{padding-bottom:5px;}.raw-padding-bottom-10{padding-bottom:10px;}.raw-padding-bottom-15{padding-bottom:15px;}.raw-padding-bottom-20{padding-bottom:20px;}.raw-padding-bottom-25{padding-bottom:25px;}.raw-padding-bottom-30{padding-bottom:30px;}.raw-padding-bottom-35{padding-bottom:35px;}.raw-padding-bottom-40{padding-bottom:40px;}.raw-padding-bottom-45{padding-bottom:45px;}.raw-padding-bottom-50{padding-bottom:50px;}.raw-padding-bottom-55{padding-bottom:55px;}.raw-padding-bottom-60{padding-bottom:60px;}.raw-padding-bottom-65{padding-bottom:65px;}.raw-padding-bottom-70{padding-bottom:70px;}.raw-padding-bottom-75{padding-bottom:75px;}.raw-padding-bottom-80{padding-bottom:80px;}.raw-padding-bottom-85{padding-bottom:85px;}.raw-padding-bottom-90{padding-bottom:90px;}.raw-padding-bottom-95{padding-bottom:95px;}.raw-padding-bottom-100{padding-bottom:100px;}.raw-padding-bottom-105{padding-bottom:105px;}.raw-padding-bottom-110{padding-bottom:110px;}.raw-padding-bottom-115{padding-bottom:115px;}.raw-padding-bottom-120{padding-bottom:120px;}.raw-padding-bottom-125{padding-bottom:125px;}.raw-padding-bottom-130{padding-bottom:130px;}.raw-padding-bottom-135{padding-bottom:135px;}.raw-padding-bottom-140{padding-bottom:140px;}.raw-padding-bottom-145{padding-bottom:145px;}.raw-padding-bottom-150{padding-bottom:150px;}.raw-padding-bottom-155{padding-bottom:155px;}.raw-padding-bottom-160{padding-bottom:160px;}.raw-padding-bottom-165{padding-bottom:165px;}.raw-padding-bottom-170{padding-bottom:170px;}.raw-padding-bottom-175{padding-bottom:175px;}.raw-padding-bottom-180{padding-bottom:180px;}.raw-padding-bottom-185{padding-bottom:185px;}.raw-padding-bottom-190{padding-bottom:190px;}.raw-padding-bottom-195{padding-bottom:195px;}.raw-padding-bottom-200{padding-bottom:200px;}.raw-padding-left-0{padding-left:0;}.raw-padding-left-5{padding-left:5px;}.raw-padding-left-10{padding-left:10px;}.raw-padding-left-15{padding-left:15px;}.raw-padding-left-20{padding-left:20px;}.raw-padding-left-25{padding-left:25px;}.raw-padding-left-30{padding-left:30px;}.raw-padding-left-35{padding-left:35px;}.raw-padding-left-40{padding-left:40px;}.raw-padding-left-45{padding-left:45px;}.raw-padding-left-50{padding-left:50px;}.raw-padding-left-55{padding-left:55px;}.raw-padding-left-60{padding-left:60px;}.raw-padding-left-65{padding-left:65px;}.raw-padding-left-70{padding-left:70px;}.raw-padding-left-75{padding-left:75px;}.raw-padding-left-80{padding-left:80px;}.raw-padding-left-85{padding-left:85px;}.raw-padding-left-90{padding-left:90px;}.raw-padding-left-95{padding-left:95px;}.raw-padding-left-100{padding-left:100px;}.raw-padding-left-105{padding-left:105px;}.raw-padding-left-110{padding-left:110px;}.raw-padding-left-115{padding-left:115px;}.raw-padding-left-120{padding-left:120px;}.raw-padding-left-125{padding-left:125px;}.raw-padding-left-130{padding-left:130px;}.raw-padding-left-135{padding-left:135px;}.raw-padding-left-140{padding-left:140px;}.raw-padding-left-145{padding-left:145px;}.raw-padding-left-150{padding-left:150px;}.raw-padding-left-155{padding-left:155px;}.raw-padding-left-160{padding-left:160px;}.raw-padding-left-165{padding-left:165px;}.raw-padding-left-170{padding-left:170px;}.raw-padding-left-175{padding-left:175px;}.raw-padding-left-180{padding-left:180px;}.raw-padding-left-185{padding-left:185px;}.raw-padding-left-190{padding-left:190px;}.raw-padding-left-195{padding-left:195px;}.raw-padding-left-200{padding-left:200px;}.raw-padding-0{padding:0;}.raw-padding-5{padding:5px;}.raw-padding-10{padding:10px;}.raw-padding-15{padding:15px;}.raw-padding-20{padding:20px;}.raw-padding-25{padding:25px;}.raw-padding-30{padding:30px;}.raw-padding-35{padding:35px;}.raw-padding-40{padding:40px;}.raw-padding-45{padding:45px;}.raw-padding-50{padding:50px;}.raw-padding-55{padding:55px;}.raw-padding-60{padding:60px;}.raw-padding-65{padding:65px;}.raw-padding-70{padding:70px;}.raw-padding-75{padding:75px;}.raw-padding-80{padding:80px;}.raw-padding-85{padding:85px;}.raw-padding-90{padding:90px;}.raw-padding-95{padding:95px;}.raw-padding-100{padding:100px;}.raw-padding-105{padding:105px;}.raw-padding-110{padding:110px;}.raw-padding-115{padding:115px;}.raw-padding-120{padding:120px;}.raw-padding-125{padding:125px;}.raw-padding-130{padding:130px;}.raw-padding-135{padding:135px;}.raw-padding-140{padding:140px;}.raw-padding-145{padding:145px;}.raw-padding-150{padding:150px;}.raw-padding-155{padding:155px;}.raw-padding-160{padding:160px;}.raw-padding-165{padding:165px;}.raw-padding-170{padding:170px;}.raw-padding-175{padding:175px;}.raw-padding-180{padding:180px;}.raw-padding-185{padding:185px;}.raw-padding-190{padding:190px;}.raw-padding-195{padding:195px;}.raw-padding-200{padding:200px;}.raw-left{float:left;}.raw-right{float:right;}.raw-none{float:none;}.raw-pos-relative{position:relative;}.raw-pos-absolute{position:absolute;}.raw1{width:1%;}.raw2{width:2%;}.raw3{width:3%;}.raw4{width:4%;}.raw5{width:5%;}.raw6{width:6%;}.raw7{width:7%;}.raw8{width:8%;}.raw9{width:9%;}.raw10{width:10%;}.raw11{width:11%;}.raw12{width:12%;}.raw13{width:13%;}.raw14{width:14%;}.raw15{width:15%;}.raw16{width:16%;}.raw17{width:17%;}.raw18{width:18%;}.raw19{width:19%;}.raw20{width:20%;}.raw21{width:21%;}.raw22{width:22%;}.raw23{width:23%;}.raw24{width:24%;}.raw25{width:25%;}.raw26{width:26%;}.raw27{width:27%;}.raw28{width:28%;}.raw29{width:29%;}.raw30{width:30%;}.raw31{width:31%;}.raw32{width:32%;}.raw33{width:33%;}.raw34{width:34%;}.raw35{width:35%;}.raw36{width:36%;}.raw37{width:37%;}.raw38{width:38%;}.raw39{width:39%;}.raw40{width:40%;}.raw41{width:41%;}.raw42{width:42%;}.raw43{width:43%;}.raw44{width:44%;}.raw45{width:45%;}.raw46{width:46%;}.raw47{width:47%;}.raw48{width:48%;}.raw49{width:49%;}.raw50{width:50%;}.raw51{width:51%;}.raw52{width:52%;}.raw53{width:53%;}.raw54{width:54%;}.raw55{width:55%;}.raw56{width:56%;}.raw57{width:57%;}.raw58{width:58%;}.raw59{width:59%;}.raw60{width:60%;}.raw61{width:61%;}.raw62{width:62%;}.raw63{width:63%;}.raw64{width:64%;}.raw65{width:65%;}.raw66{width:66%;}.raw67{width:67%;}.raw68{width:68%;}.raw69{width:69%;}.raw70{width:70%;}.raw71{width:71%;}.raw72{width:72%;}.raw73{width:73%;}.raw74{width:74%;}.raw75{width:75%;}.raw76{width:76%;}.raw77{width:77%;}.raw78{width:78%;}.raw79{width:79%;}.raw80{width:80%;}.raw81{width:81%;}.raw82{width:82%;}.raw83{width:83%;}.raw84{width:84%;}.raw85{width:85%;}.raw86{width:86%;}.raw87{width:87%;}.raw88{width:88%;}.raw89{width:89%;}.raw90{width:90%;}.raw91{width:91%;}.raw92{width:92%;}.raw93{width:93%;}.raw94{width:94%;}.raw95{width:95%;}.raw96{width:96%;}.raw97{width:97%;}.raw98{width:98%;}.raw99{width:99%;}.raw100{width:100%;}\n\n/*\n|--------------------------------------------------------------------------\n| Desktop\n|--------------------------------------------------------------------------\n*/\n\n@media screen and (min-width: 984px) and (max-width: 1272px) {\n    .raw-t-hide {\n        display: block !important;\n    }\n}\n\n/*\n|--------------------------------------------------------------------------\n| Mobile\n|--------------------------------------------------------------------------\n*/\n\n@media screen and (max-width: 696px) {\n\n    .raw-t-hide {\n        display: hidden;\n    }\n\n    #mainNavbar {\n        background-color: #333;\n    }\n\n    .raw-m-hide {\n        display: none;\n    }\n\n    .raw-m-hide-important {\n        display: none !important;\n    }\n\n    .sidebar-menu-btn {\n        float: left !important;\n        margin-left: 16px;\n    }\n\n    .navbar-brand {\n        position: relative;\n        margin-left: -45px;\n        left: 25%;\n    }\n\n    .nav-open {\n        display: inline;\n    }\n\n    .nav-close {\n        display: none;\n    }\n\n}\n/*\n|--------------------------------------------------------------------------\n| Gondolyn Custom Styles\n|--------------------------------------------------------------------------\n*/\n\nhtml, body {\n    width: 100%;\n    min-height: 100%;\n    overflow-x: hidden;\n    overflow-y: auto;\n}\n\n.text-centered {\n    text-align: center;\n}\n\n.cms-footer {\n    height: 60px;\n    background-color: #222;\n}\n\n.cms-footer p, .cms-footer a {\n    line-height: 60px;\n    color: #FFF;\n}\n\n.cms-footer a:hover {\n    color: #FFF;\n}\n\n.scrollable {\n    overflow: scroll;\n}\n\n.tab-link {\n    margin-top: 8px;\n}\n\n.header-input {\n    width: 240px !important;\n}\n\n.main {\n    padding-top: 24px;\n    padding-left: 24px;\n    padding-right: 24px;\n}\n\n.main h1 {\n    margin-top: 0px;\n}\n\n.page-header {\n    padding-bottom: 24px;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Notifications\n|--------------------------------------------------------------------------\n*/\n\n.cms-notification {\n    width: 260px;\n    min-height: 30px;\n    position: fixed;\n    z-index: 10000;\n    right: -300px;\n    top: 24px;\n    display: none;\n    padding: 8px 8px 0 8px;\n}\n\n.cms-notify {\n    float: left;\n    margin-left: 10px;\n    width: 200px;\n}\n\n.cms-notify-closer {\n    width: 20px;\n    margin-left: 10px;\n    float: left;\n    line-height: 20px;\n}\n\n.cms-notify-closer-icon {\n    cursor: pointer;\n}\n\n/*\n|--------------------------------------------------------------------------\n| User Manager\n|--------------------------------------------------------------------------\n*/\n\n.user-row {\n    height: 48px;\n}\n\n    .user-row a, .user-row p{\n        line-height: 48px;\n        padding-left: 8px;\n    }\n\n.user-row:nth-child(odd) {\n    background: #EEE;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Globals\n|--------------------------------------------------------------------------\n*/\n\ntextarea {\n    resize: vertical;\n}\n\n.table-input {\n    border: none;\n    background-color: transparent;\n}\n\n    .table-input:focus {\n        outline: 0;\n        border-bottom: 1px solid #BBB;\n    }\n\n/*\n|--------------------------------------------------------------------------\n| Twitter Typeahead\n|--------------------------------------------------------------------------\n*/\n\nspan.twitter-typeahead {\n    width: 100%;\n}\n\n.tt-menu {\n    background-color: #FFF;\n    border: 1px solid #DDD;\n}\n\n    .tt-suggestion {\n        min-width: 200px;\n        padding: 8px;\n    }\n        .tt-suggestion:hover {\n            cursor: pointer;\n            background-color: #222;\n            color: #FFF;\n        }\n\n        .tt-suggestion:focus {\n            text-decoration: underline;\n        }\n\n.navbar-header .back-link a, .navbar-header .back-link a:hover  {\n    color: #EEE;\n}\n\n.navbar-nav {\n    margin-right: 14px !important;\n}\n\n.list-row {\n    margin-top: 12px;\n}\n\n.thumbnail-box {\n    max-height: 90px;\n    height: 90px;\n    overflow: hidden;\n    display: table-cell;\n    vertical-align: middle;\n    text-align: center;\n}\n\n.thumbnail-box .img {\n    background-position: center center;\n    background-size: cover;\n    height: 100%;\n    cursor: pointer;\n}\n\n.overflow-hidden {\n    overflow: hidden;\n}\n\n.cms-errors li {\n    list-style: none;\n}\n\n.profile-image {\n    width: 100%;\n    border-radius: 50%;\n    overflow: hidden;\n    margin: 48px auto;\n    background-position: center center;\n    background-size: cover;\n}\n\n.profile-image:after {\n  content: \"\";\n  display: block;\n  padding-bottom: 100%;\n}\n\n.sidebar-header {\n    text-align: center;\n    color: #EEE;\n    background-color: #444;\n    padding: 16px 0;\n}\n\n.cms-logo {\n    background-color: #333;\n    background-size: cover;\n    background-position: center center;\n    background-image: url('data:image/png;base64,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');\n    position: relative;\n    height: 51px;\n    width: 60px;\n    display: block;\n    top: -15px;\n    left: -15px;\n    float: left\n}\n\n/*\n|--------------------------------------------------------------------------\n| Cms Styles\n|--------------------------------------------------------------------------\n*/\n\n.image-listing {\n    max-height: 300px;\n}\n\n.panel-help {\n    height: auto !important;\n}\n\n.image-panel {\n    height: 320px;\n}\n\n    .image-panel .thumbnail {\n        overflow: hidden;\n        text-align: center;\n    }\n\n    .image-panel .img {\n        width: 100%;\n        height: 200px;\n        background-size: cover;\n        background-position: center center;\n    }\n\n.table-form {\n    width: calc(100% - 30px);\n    margin-left: 15px;\n    margin-right: 15px;\n}\n\n.bootstrap-tagsinput .tag {\n    font-size: 100% !important;\n    padding: 0.6em !important;\n}\n\n.navbar-toggle span {\n    color: #FFF;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Dashboard\n|--------------------------------------------------------------------------\n*/\n\n.sub-header {\n  padding-bottom: 10px;\n  border-bottom: 1px solid #eee;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Menu Overlay\n|--------------------------------------------------------------------------\n*/\n\n.overlay {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 500;\n    background-color: rgba(0,0,0,0.6);\n    display: none;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Sidebar\n|--------------------------------------------------------------------------\n*/\n\n.sidebar {\n    display: block;\n    position: fixed !important;\n    z-index: 1000;\n    bottom: 0;\n    top: 31px;\n    width: 300px;\n    padding: 20px;\n    background-color: #333;\n    overflow-x: hidden;\n    height: 100%;\n    overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */\n}\n@media (min-width: 768px) {\n    .sidebar {\n        width: 16.66666667%;\n        min-width: 200px;\n    }\n}\n@media (max-width: 768px) {\n    .sidebar {\n        left: -300px;\n    }\n}\n\n.nav-sidebar {\n    margin-right: 0px;\n    margin-bottom: 20px;\n    margin-left: -20px;\n    width: calc(100% + 40px);\n}\n\n.nav-sidebar > li > a {\n    padding-right: 20px;\n    padding-left: 20px;\n    border-left: 4px solid #333;\n    color: #FFF;\n}\n.nav-sidebar > li > a:hover {\n    border-left: 4px solid #dd4814;\n    background-color: #555 !important;\n    color: #FFF;\n}\n.nav-sidebar > .active > a,\n.nav-sidebar > .active > a:focus {\n    border-left: 4px solid #dd4814;\n    background-color: #FFF;\n    color: #222;\n}\n\n.nav-sidebar > .active > a:hover {\n    border-left: 4px solid #dd4814;\n    background-color: #FFF;\n    color: #FFF;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Placeholders\n|--------------------------------------------------------------------------\n*/\n\n.placeholders {\n    margin-bottom: 30px;\n    text-align: center;\n}\n.placeholders h4 {\n    margin-bottom: 0;\n}\n.placeholder {\n    margin-bottom: 20px;\n}\n.placeholder img {\n    display: inline-block;\n    border-radius: 50%;\n}\n\n/*\n|--------------------------------------------------------------------------\n| iFrame\n|--------------------------------------------------------------------------\n*/\n\n#wrap {\n    height: calc(545px * 0.65);\n}\n\n#frame {\n    width: 150%;\n    position: relative;\n    z-index: 0;\n    height: 545px;\n    border: 1px solid #ddd;\n}\n\n#frame {\n    transform: scale(0.65);\n    transform-origin: 0 0;\n    -ms-zoom: 0.65;\n    -moz-transform: scale(0.65);\n    -moz-transform-origin: 0 0;\n    -o-transform: scale(0.65);\n    -o-transform-origin: 0 0;\n    -webkit-transform: scale(0.65);\n    -webkit-transform-origin: 0 0;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Gondolyn Loaders\n|--------------------------------------------------------------------------\n*/\n\n.loading-overlay {\n    position: fixed;\n    z-index: 100000000;\n    display: none;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background-color: rgba(0, 0, 0, 0.7);\n}\n\n/*\n|--------------------------------------------------------------------------\n| Pane\n|--------------------------------------------------------------------------\n*/\n\n.pane {\n  width: 30px;\n  height: 30px;\n  background-color: #FFF;\n  margin: 240px auto;\n  -webkit-animation: rotateplane 1.2s infinite ease-in-out;\n  animation: rotateplane 1.2s infinite ease-in-out;\n}\n\n@-webkit-keyframes rotateplane {\n  0% { -webkit-transform: perspective(120px) }\n  50% { -webkit-transform: perspective(120px) rotateY(180deg) }\n  100% { -webkit-transform: perspective(120px) rotateY(180deg)  rotateX(180deg) }\n}\n\n@keyframes rotateplane {\n  0% {\n    transform: perspective(120px) rotateX(0deg) rotateY(0deg);\n    -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)\n  } 50% {\n    transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);\n    -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)\n  } 100% {\n    transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);\n    -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);\n  }\n}\n\n/*\n|--------------------------------------------------------------------------\n| Cubed\n|--------------------------------------------------------------------------\n*/\n\n.cubed {\n  margin: 240px auto;\n  width: 64px;\n  height: 64px;\n  position: relative;\n}\n\n.cube1, .cube2 {\n  background-color: #FFF;\n  width: 20px;\n  height: 20px;\n  position: absolute;\n  top: 0;\n  left: 0;\n\n  -webkit-animation: cubemove 1.8s infinite ease-in-out;\n  animation: cubemove 1.8s infinite ease-in-out;\n}\n\n.cube2 {\n  -webkit-animation-delay: -0.9s;\n  animation-delay: -0.9s;\n}\n\n@-webkit-keyframes cubemove {\n  25% { -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5) }\n  50% { -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg) }\n  75% { -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5) }\n  100% { -webkit-transform: rotate(-360deg) }\n}\n\n@keyframes cubemove {\n  25% {\n    transform: translateX(42px) rotate(-90deg) scale(0.5);\n    -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);\n  } 50% {\n    transform: translateX(42px) translateY(42px) rotate(-179deg);\n    -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);\n  } 50.1% {\n    transform: translateX(42px) translateY(42px) rotate(-180deg);\n    -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);\n  } 75% {\n    transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);\n    -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);\n  } 100% {\n    transform: rotate(-360deg);\n    -webkit-transform: rotate(-360deg);\n  }\n}\n\n/*\n|--------------------------------------------------------------------------\n| Bounce\n|--------------------------------------------------------------------------\n*/\n\n.bounce {\n  margin: 240px auto 0;\n  width: 80px;\n  text-align: center;\n}\n\n.bounce > div {\n  width: 18px;\n  height: 18px;\n  background-color: #FFF;\n\n  border-radius: 100%;\n  display: inline-block;\n  -webkit-animation: bouncedelay 1.4s infinite ease-in-out;\n  animation: bouncedelay 1.4s infinite ease-in-out;\n  /* Prevent first frame from flickering when animation starts */\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.bounce .bounce1 {\n  -webkit-animation-delay: -0.32s;\n  animation-delay: -0.32s;\n}\n\n.bounce .bounce2 {\n  -webkit-animation-delay: -0.16s;\n  animation-delay: -0.16s;\n}\n\n@-webkit-keyframes bouncedelay {\n  0%, 80%, 100% { -webkit-transform: scale(0.0) }\n  40% { -webkit-transform: scale(1.0) }\n}\n\n@keyframes bouncedelay {\n  0%, 80%, 100% {\n    transform: scale(0.0);\n    -webkit-transform: scale(0.0);\n  } 40% {\n    transform: scale(1.0);\n    -webkit-transform: scale(1.0);\n  }\n}\n\n/*\n|--------------------------------------------------------------------------\n| Spinner\n|--------------------------------------------------------------------------\n*/\n\n.spinner {\n  margin: 240px auto;\n  width: 60px;\n  height: 60px;\n  position: relative;\n}\n\n.container1 > div, .container2 > div, .container3 > div {\n  width: 6px;\n  height: 6px;\n  background-color: #FFF;\n\n  border-radius: 100%;\n  position: absolute;\n  -webkit-animation: bouncedelay 1.2s infinite ease-in-out;\n  animation: bouncedelay 1.2s infinite ease-in-out;\n  /* Prevent first frame from flickering when animation starts */\n  -webkit-animation-fill-mode: both;\n  animation-fill-mode: both;\n}\n\n.spinner .spinner-container {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n}\n\n.container2 {\n  -webkit-transform: rotateZ(45deg);\n  transform: rotateZ(45deg);\n}\n\n.container3 {\n  -webkit-transform: rotateZ(90deg);\n  transform: rotateZ(90deg);\n}\n\n.circle1 { top: 0; left: 0; }\n.circle2 { top: 0; right: 0; }\n.circle3 { right: 0; bottom: 0; }\n.circle4 { left: 0; bottom: 0; }\n\n.container2 .circle1 {\n  -webkit-animation-delay: -1.1s;\n  animation-delay: -1.1s;\n}\n\n.container3 .circle1 {\n  -webkit-animation-delay: -1.0s;\n  animation-delay: -1.0s;\n}\n\n.container1 .circle2 {\n  -webkit-animation-delay: -0.9s;\n  animation-delay: -0.9s;\n}\n\n.container2 .circle2 {\n  -webkit-animation-delay: -0.8s;\n  animation-delay: -0.8s;\n}\n\n.container3 .circle2 {\n  -webkit-animation-delay: -0.7s;\n  animation-delay: -0.7s;\n}\n\n.container1 .circle3 {\n  -webkit-animation-delay: -0.6s;\n  animation-delay: -0.6s;\n}\n\n.container2 .circle3 {\n  -webkit-animation-delay: -0.5s;\n  animation-delay: -0.5s;\n}\n\n.container3 .circle3 {\n  -webkit-animation-delay: -0.4s;\n  animation-delay: -0.4s;\n}\n\n.container1 .circle4 {\n  -webkit-animation-delay: -0.3s;\n  animation-delay: -0.3s;\n}\n\n.container2 .circle4 {\n  -webkit-animation-delay: -0.2s;\n  animation-delay: -0.2s;\n}\n\n.container3 .circle4 {\n  -webkit-animation-delay: -0.1s;\n  animation-delay: -0.1s;\n}\n\n@-webkit-keyframes bouncedelay {\n  0%, 80%, 100% { -webkit-transform: scale(0.0) }\n  40% { -webkit-transform: scale(1.0) }\n}\n\n@keyframes bouncedelay {\n  0%, 80%, 100% {\n    transform: scale(0.0);\n    -webkit-transform: scale(0.0);\n  } 40% {\n    transform: scale(1.0);\n    -webkit-transform: scale(1.0);\n  }\n}\n.dropzone {\n    border: dotted;\n    margin-bottom: 24px;\n}\n\n.dz-message {\n    margin-top: 3em !important;\n}\n\n.bootstrap-tagsinput .tag {\n    font-size: 100% !important;\n    padding: 0.6em !important;\n}\n\n.selectable {\n    cursor: pointer;\n}\n\n.selected-highlight {\n    background-color: #FEF1B5;\n    border-color: #EEC900;\n}\n/*# sourceMappingURL=all.css.map */\n"
  },
  {
    "path": "src/Assets/dist/css/cms.css",
    "content": "html{position:relative;min-height:100%}body{margin-bottom:60px}.form-small{width:100%;max-width:330px;padding:15px;margin:48px auto 0}.page-title{font-size:1.4rem}.footer{position:fixed;bottom:0;width:100%;height:60px;line-height:60px;background-color:#f5f5f5;z-index:9999}.navbar{line-height:1}.navbar-brand{padding-top:0;padding-bottom:0;background-color:rgba(0,0,0,.25);-webkit-box-shadow:inset 0 0 0 rgba(0,0,0,.25);box-shadow:inset 0 0 0 rgba(0,0,0,.25);height:60px;line-height:60px;width:320px}.border-top{border-top:1px solid #e5e5e5}.border-bottom{border-bottom:1px solid #e5e5e5}.alert{width:330px;position:absolute;top:72px;right:24px;z-index:1000}.main{margin-bottom:40px}.table-striped td{line-height:1.9}.table-striped td .btn-sm{line-height:1.8}.placeholders{margin-bottom:30px;text-align:center}.placeholders h4{margin-bottom:0}.placeholder{margin-bottom:20px}.placeholder img{display:inline-block;border-radius:50%}#wrap{height:419.25px}#frame{width:150%;position:relative;z-index:0;height:645px;border:1px solid #ddd;transform:scale(.65);transform-origin:0 0;-ms-zoom:.65;-moz-transform:scale(.65);-moz-transform-origin:0 0;-o-transform:scale(.65);-o-transform-origin:0 0;-webkit-transform:scale(.65);-webkit-transform-origin:0 0}.cms-notification{width:260px;min-height:30px;position:fixed;z-index:10000;right:-300px;top:124px;display:none;padding:8px 8px 0;border-radius:4px;color:#fff;-webkit-box-shadow:0 0 3px;box-shadow:0 0 3px}.cms-notify{float:left;margin-left:10px;width:200px}.cms-notify-closer{width:20px;margin-left:10px;float:left;line-height:20px}.cms-notify-closer-icon{cursor:pointer}textarea{resize:vertical}.table-input{border:none;background-color:transparent}.table-input:focus{outline:0;border-bottom:1px solid #bbb}span.twitter-typeahead{width:100%}.tt-menu{background-color:#fff;border:1px solid #ddd}.tt-suggestion{min-width:200px;padding:8px}.tt-suggestion:hover{cursor:pointer;background-color:#222;color:#fff}.tt-suggestion:focus{text-decoration:underline}.navbar-header .back-link a,.navbar-header .back-link a:hover{color:#eee}.navbar-nav{margin-right:14px!important}.list-row{margin-top:12px}.thumbnail-box{max-height:90px;height:90px;overflow:hidden;display:table-cell;vertical-align:middle;text-align:center}.thumbnail-box .img{background-position:50%;background-size:cover;height:100%;cursor:pointer}.overflow-hidden{overflow:hidden}.cms-errors li{list-style:none}.profile-image{width:100%;border-radius:50%;overflow:hidden;margin:48px auto;background-position:50%;background-size:cover}.profile-image:after{content:\"\";display:block;padding-bottom:100%}.bulk-image-delete{display:none}.image-listing{max-height:300px}.card-help{height:auto!important;margin-bottom:24px}.image-panel{height:320px}.image-panel .thumbnail{overflow:hidden;text-align:center}.image-panel .img{width:100%;height:200px;background-size:cover;background-position:50%}.table-form{width:calc(100% - 30px);margin-left:15px;margin-right:15px}.navbar-toggle span{color:#fff}.checkbox label{width:200px;margin-left:24px;padding-top:20px}pre{padding:8px;background-color:#222;color:#eee;border-radius:4px}.tag{background-color:purple}.well{padding:16px;background-color:#ecf0f1;border-radius:4px}@media (max-width:1024px){.t-hidden{display:none}}@media (max-width:576px){.m-hidden{display:none}}.dropzone{border:dotted;margin-bottom:24px}.dz-message{margin-top:3em!important}.bootstrap-tagsinput .tag{font-size:100%!important;padding:.6em!important;background-color:purple;border-radius:2px;margin-right:3px;color:#fff}.selectable{cursor:pointer}.selected-highlight{background-color:#fef1b5;border-color:#eec900}.sidebar{width:320px;position:fixed;top:60px;bottom:60px;left:0;z-index:100;padding:0;-webkit-transition:all .3s;transition:all .3s;z-index:1001}.sidebar-sticky{position:-webkit-sticky;position:sticky;top:60px;height:calc(100vh - 135px);overflow-x:hidden;overflow-y:auto}.sidebar .nav-link{font-weight:500;color:#333}.sidebar .nav-link .feather{margin-right:4px;color:#999}.sidebar .nav-link .active{color:#007bff}.sidebar .nav-link.active .feather,.sidebar .nav-link:hover .feather{color:inherit}.sidebar-heading{font-size:.75rem;text-transform:uppercase}.sidebar-header{line-height:48px}.sidebar-header span{padding-left:16px}.main{width:calc(100% - 320px)}.sidebar-toggle{display:none}@media (max-width:1024px){.sidebar-toggle{display:inline-block}.main{width:100%}.sidebar{top:60px;margin-left:-320px}.sidebar.toggled{margin-left:0}}@media (max-width:576px){.navbar-brand{width:100%;padding-right:15px}.sidebar{top:8px;margin-left:-320px}.sidebar-sticky{margin-top:94px;height:calc(100vh - 180px)}}"
  },
  {
    "path": "src/Assets/dist/css/vendor.css",
    "content": ".dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-mark,.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px}@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%,70%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,.3);background:#fff;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom,#eee,#ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-ms-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:rgba(255,255,255,.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,.4);padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05,1.05);-moz-transform:scale(1.05,1.05);-ms-transform:scale(1.05,1.05);-o-transform:scale(1.05,1.05);transform:scale(1.05,1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(.77,0,.175,1);-moz-animation:passing-through 3s cubic-bezier(.77,0,.175,1);-ms-animation:passing-through 3s cubic-bezier(.77,0,.175,1);-o-animation:passing-through 3s cubic-bezier(.77,0,.175,1);animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(.77,0,.175,1);-moz-animation:slide-in 3s cubic-bezier(.77,0,.175,1);-ms-animation:slide-in 3s cubic-bezier(.77,0,.175,1);-o-animation:slide-in 3s cubic-bezier(.77,0,.175,1);animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-error-mark svg,.dropzone .dz-preview .dz-success-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all .2s linear;-moz-transition:all .2s linear;-ms-transition:all .2s linear;-o-transition:all .2s linear;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity .4s ease-in;-moz-transition:opacity .4s ease-in;-ms-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom,#666,#444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width .3s ease-in-out;-moz-transition:width .3s ease-in-out;-ms-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity .3s ease;-moz-transition:opacity .3s ease;-ms-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom,#be2626,#a92222);padding:.5em 1.2em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:'';position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626}/*!\n * Datetimepicker for Bootstrap 3\n * version : 4.17.47\n * https://github.com/Eonasdan/bootstrap-datetimepicker/\n */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:576px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:after,.bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Increment Hours\"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Increment Minutes\"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Decrement Hours\"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Decrement Minutes\"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Show Hours\"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Show Minutes\"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Toggle AM/PM\"}.bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Clear the picker\"}.bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Set the date to today\"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Toggle Date and Time Screens\"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td i,.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:.25rem;padding:.5em}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#dee2e6;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Previous Month\"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:\"Next Month\"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#f8f9fa}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#dee2e6}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#f8f9fa;cursor:pointer}.bootstrap-datetimepicker-widget table td.new,.bootstrap-datetimepicker-widget table td.old{color:#dee2e6}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#dee2e6;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#dee2e6;color:#007bff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#dee2e6;cursor:not-allowed}.bootstrap-datetimepicker-widget table td i,.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:.25rem}.bootstrap-datetimepicker-widget table td i:hover,.bootstrap-datetimepicker-widget table td span:hover{background:#f8f9fa}.bootstrap-datetimepicker-widget table td i.active,.bootstrap-datetimepicker-widget table td span.active{background-color:#dee2e6;color:#007bff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td i.old,.bootstrap-datetimepicker-widget table td span.old{color:#dee2e6}.bootstrap-datetimepicker-widget table td i.disabled,.bootstrap-datetimepicker-widget table td i.disabled:hover,.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#dee2e6;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.raw-color-000000{color:#000}.raw-color-080808{color:#080808}.raw-color-101010{color:#101010}.raw-color-181818{color:#181818}.raw-color-202020{color:#202020}.raw-color-282828{color:#282828}.raw-color-303030{color:#303030}.raw-color-383838{color:#383838}.raw-color-404040{color:#404040}.raw-color-484848{color:#484848}.raw-color-505050{color:#505050}.raw-color-585858{color:#585858}.raw-color-606060{color:#606060}.raw-color-686868{color:#686868}.raw-color-707070{color:#707070}.raw-color-787878{color:#787878}.raw-color-808080{color:grey}.raw-color-888888{color:#888}.raw-color-909090{color:#909090}.raw-color-989898{color:#989898}.raw-color-A0A0A0{color:#a0a0a0}.raw-color-A8A8A8{color:#a8a8a8}.raw-color-B0B0B0{color:#b0b0b0}.raw-color-B8B8B8{color:#b8b8b8}.raw-color-C0C0C0{color:silver}.raw-color-C8C8C8{color:#c8c8c8}.raw-color-D0D0D0{color:#d0d0d0}.raw-color-D8D8D8{color:#d8d8d8}.raw-color-E0E0E0{color:#e0e0e0}.raw-color-E8E8E8{color:#e8e8e8}.raw-color-F0F0F0{color:#f0f0f0}.raw-color-F8F8F8{color:#f8f8f8}.raw-color-FFFFFF{color:#fff}.raw-bg-000000{background-color:#000}.raw-bg-080808{background-color:#080808}.raw-bg-101010{background-color:#101010}.raw-bg-181818{background-color:#181818}.raw-bg-202020{background-color:#202020}.raw-bg-282828{background-color:#282828}.raw-bg-303030{background-color:#303030}.raw-bg-383838{background-color:#383838}.raw-bg-404040{background-color:#404040}.raw-bg-484848{background-color:#484848}.raw-bg-505050{background-color:#505050}.raw-bg-585858{background-color:#585858}.raw-bg-606060{background-color:#606060}.raw-bg-686868{background-color:#686868}.raw-bg-707070{background-color:#707070}.raw-bg-787878{background-color:#787878}.raw-bg-808080{background-color:grey}.raw-bg-888888{background-color:#888}.raw-bg-909090{background-color:#909090}.raw-bg-989898{background-color:#989898}.raw-bg-A0A0A0{background-color:#a0a0a0}.raw-bg-A8A8A8{background-color:#a8a8a8}.raw-bg-B0B0B0{background-color:#b0b0b0}.raw-bg-B8B8B8{background-color:#b8b8b8}.raw-bg-C0C0C0{background-color:silver}.raw-bg-C8C8C8{background-color:#c8c8c8}.raw-bg-D0D0D0{background-color:#d0d0d0}.raw-bg-D8D8D8{background-color:#d8d8d8}.raw-bg-E0E0E0{background-color:#e0e0e0}.raw-bg-E8E8E8{background-color:#e8e8e8}.raw-bg-F0F0F0{background-color:#f0f0f0}.raw-bg-F8F8F8{background-color:#f8f8f8}.raw-bg-FFFFFF{background-color:#fff}.raw-bg-000000{background:#000}.raw-bg-000033{background:#003}.raw-bg-000066{background:#006}.raw-bg-000099{background:#009}.raw-bg-0000CC{background:#00c}.raw-bg-0000FF{background:#00f}.raw-bg-003300{background:#030}.raw-bg-003333{background:#033}.raw-bg-003366{background:#036}.raw-bg-003399{background:#039}.raw-bg-0033CC{background:#03c}.raw-bg-0033FF{background:#03f}.raw-bg-006600{background:#060}.raw-bg-006633{background:#063}.raw-bg-006666{background:#066}.raw-bg-006699{background:#069}.raw-bg-0066CC{background:#06c}.raw-bg-0066FF{background:#06f}.raw-bg-009900{background:#090}.raw-bg-009933{background:#093}.raw-bg-009966{background:#096}.raw-bg-009999{background:#099}.raw-bg-0099CC{background:#09c}.raw-bg-0099FF{background:#09f}.raw-bg-00CC00{background:#0c0}.raw-bg-00CC33{background:#0c3}.raw-bg-00CC66{background:#0c6}.raw-bg-00CC99{background:#0c9}.raw-bg-00CCCC{background:#0cc}.raw-bg-00CCFF{background:#0cf}.raw-bg-00FF00{background:#0f0}.raw-bg-00FF33{background:#0f3}.raw-bg-00FF66{background:#0f6}.raw-bg-00FF99{background:#0f9}.raw-bg-00FFCC{background:#0fc}.raw-bg-00FFFF{background:#0ff}.raw-bg-330000{background:#300}.raw-bg-330033{background:#303}.raw-bg-330066{background:#306}.raw-bg-330099{background:#309}.raw-bg-3300CC{background:#30c}.raw-bg-3300FF{background:#30f}.raw-bg-333300{background:#330}.raw-bg-333333{background:#333}.raw-bg-333366{background:#336}.raw-bg-333399{background:#339}.raw-bg-3333CC{background:#33c}.raw-bg-3333FF{background:#33f}.raw-bg-336600{background:#360}.raw-bg-336633{background:#363}.raw-bg-336666{background:#366}.raw-bg-336699{background:#369}.raw-bg-3366CC{background:#36c}.raw-bg-3366FF{background:#36f}.raw-bg-339900{background:#390}.raw-bg-339933{background:#393}.raw-bg-339966{background:#396}.raw-bg-339999{background:#399}.raw-bg-3399CC{background:#39c}.raw-bg-3399FF{background:#39f}.raw-bg-33CC00{background:#3c0}.raw-bg-33CC33{background:#3c3}.raw-bg-33CC66{background:#3c6}.raw-bg-33CC99{background:#3c9}.raw-bg-33CCCC{background:#3cc}.raw-bg-33CCFF{background:#3cf}.raw-bg-33FF00{background:#3f0}.raw-bg-33FF33{background:#3f3}.raw-bg-33FF66{background:#3f6}.raw-bg-33FF99{background:#3f9}.raw-bg-33FFCC{background:#3fc}.raw-bg-33FFFF{background:#3ff}.raw-bg-660000{background:#600}.raw-bg-660033{background:#603}.raw-bg-660066{background:#606}.raw-bg-660099{background:#609}.raw-bg-6600CC{background:#60c}.raw-bg-6600FF{background:#60f}.raw-bg-663300{background:#630}.raw-bg-663333{background:#633}.raw-bg-663366{background:#636}.raw-bg-663399{background:#639}.raw-bg-6633CC{background:#63c}.raw-bg-6633FF{background:#63f}.raw-bg-666600{background:#660}.raw-bg-666633{background:#663}.raw-bg-666666{background:#666}.raw-bg-666699{background:#669}.raw-bg-6666CC{background:#66c}.raw-bg-6666FF{background:#66f}.raw-bg-669900{background:#690}.raw-bg-669933{background:#693}.raw-bg-669966{background:#696}.raw-bg-669999{background:#699}.raw-bg-6699CC{background:#69c}.raw-bg-6699FF{background:#69f}.raw-bg-66CC00{background:#6c0}.raw-bg-66CC33{background:#6c3}.raw-bg-66CC66{background:#6c6}.raw-bg-66CC99{background:#6c9}.raw-bg-66CCCC{background:#6cc}.raw-bg-66CCFF{background:#6cf}.raw-bg-66FF00{background:#6f0}.raw-bg-66FF33{background:#6f3}.raw-bg-66FF66{background:#6f6}.raw-bg-66FF99{background:#6f9}.raw-bg-66FFCC{background:#6fc}.raw-bg-66FFFF{background:#6ff}.raw-bg-990000{background:#900}.raw-bg-990033{background:#903}.raw-bg-990066{background:#906}.raw-bg-990099{background:#909}.raw-bg-9900CC{background:#90c}.raw-bg-9900FF{background:#90f}.raw-bg-993300{background:#930}.raw-bg-993333{background:#933}.raw-bg-993366{background:#936}.raw-bg-993399{background:#939}.raw-bg-9933CC{background:#93c}.raw-bg-9933FF{background:#93f}.raw-bg-996600{background:#960}.raw-bg-996633{background:#963}.raw-bg-996666{background:#966}.raw-bg-996699{background:#969}.raw-bg-9966CC{background:#96c}.raw-bg-9966FF{background:#96f}.raw-bg-999900{background:#990}.raw-bg-999933{background:#993}.raw-bg-999966{background:#996}.raw-bg-999999{background:#999}.raw-bg-9999CC{background:#99c}.raw-bg-9999FF{background:#99f}.raw-bg-99CC00{background:#9c0}.raw-bg-99CC33{background:#9c3}.raw-bg-99CC66{background:#9c6}.raw-bg-99CC99{background:#9c9}.raw-bg-99CCCC{background:#9cc}.raw-bg-99CCFF{background:#9cf}.raw-bg-99FF00{background:#9f0}.raw-bg-99FF33{background:#9f3}.raw-bg-99FF66{background:#9f6}.raw-bg-99FF99{background:#9f9}.raw-bg-99FFCC{background:#9fc}.raw-bg-99FFFF{background:#9ff}.raw-bg-CC0000{background:#c00}.raw-bg-CC0033{background:#c03}.raw-bg-CC0066{background:#c06}.raw-bg-CC0099{background:#c09}.raw-bg-CC00CC{background:#c0c}.raw-bg-CC00FF{background:#c0f}.raw-bg-CC3300{background:#c30}.raw-bg-CC3333{background:#c33}.raw-bg-CC3366{background:#c36}.raw-bg-CC3399{background:#c39}.raw-bg-CC33CC{background:#c3c}.raw-bg-CC33FF{background:#c3f}.raw-bg-CC6600{background:#c60}.raw-bg-CC6633{background:#c63}.raw-bg-CC6666{background:#c66}.raw-bg-CC6699{background:#c69}.raw-bg-CC66CC{background:#c6c}.raw-bg-CC66FF{background:#c6f}.raw-bg-CC9900{background:#c90}.raw-bg-CC9933{background:#c93}.raw-bg-CC9966{background:#c96}.raw-bg-CC9999{background:#c99}.raw-bg-CC99CC{background:#c9c}.raw-bg-CC99FF{background:#c9f}.raw-bg-CCCC00{background:#cc0}.raw-bg-CCCC33{background:#cc3}.raw-bg-CCCC66{background:#cc6}.raw-bg-CCCC99{background:#cc9}.raw-bg-CCCCCC{background:#ccc}.raw-bg-CCCCFF{background:#ccf}.raw-bg-CCFF00{background:#cf0}.raw-bg-CCFF33{background:#cf3}.raw-bg-CCFF66{background:#cf6}.raw-bg-CCFF99{background:#cf9}.raw-bg-CCFFCC{background:#cfc}.raw-bg-CCFFFF{background:#cff}.raw-bg-FF0000{background:red}.raw-bg-FF0033{background:#f03}.raw-bg-FF0066{background:#f06}.raw-bg-FF0099{background:#f09}.raw-bg-FF00CC{background:#f0c}.raw-bg-FF00FF{background:#f0f}.raw-bg-FF3300{background:#f30}.raw-bg-FF3333{background:#f33}.raw-bg-FF3366{background:#f36}.raw-bg-FF3399{background:#f39}.raw-bg-FF33CC{background:#f3c}.raw-bg-FF33FF{background:#f3f}.raw-bg-FF6600{background:#f60}.raw-bg-FF6633{background:#f63}.raw-bg-FF6666{background:#f66}.raw-bg-FF6699{background:#f69}.raw-bg-FF66CC{background:#f6c}.raw-bg-FF66FF{background:#f6f}.raw-bg-FF9900{background:#f90}.raw-bg-FF9933{background:#f93}.raw-bg-FF9966{background:#f96}.raw-bg-FF9999{background:#f99}.raw-bg-FF99CC{background:#f9c}.raw-bg-FF99FF{background:#f9f}.raw-bg-FFCC00{background:#fc0}.raw-bg-FFCC33{background:#fc3}.raw-bg-FFCC66{background:#fc6}.raw-bg-FFCC99{background:#fc9}.raw-bg-FFCCCC{background:#fcc}.raw-bg-FFCCFF{background:#fcf}.raw-bg-FFFF00{background:#ff0}.raw-bg-FFFF33{background:#ff3}.raw-bg-FFFF66{background:#ff6}.raw-bg-FFFF99{background:#ff9}.raw-bg-FFFFCC{background:#ffc}.raw-bg-FFFFFF{background:#fff}.raw-block-1{height:1px}.raw-block-2{height:2px}.raw-block-3{height:3px}.raw-block-4{height:4px}.raw-block-5{height:5px}.raw-block-10{height:10px}.raw-block-15{height:15px}.raw-block-20{height:20px}.raw-block-25{height:25px}.raw-block-30{height:30px}.raw-block-35{height:35px}.raw-block-40{height:40px}.raw-block-45{height:45px}.raw-block-50{height:50px}.raw-block-55{height:55px}.raw-block-60{height:60px}.raw-block-65{height:65px}.raw-block-70{height:70px}.raw-block-75{height:75px}.raw-block-80{height:80px}.raw-block-85{height:85px}.raw-block-90{height:90px}.raw-block-95{height:95px}.raw-block-100{height:100px}.raw-block-150{height:150px}.raw-block-200{height:200px}.raw-block-250{height:250px}.raw-block-300{height:300px}.raw-block-350{height:350px}.raw-block-400{height:400px}.raw-block-450{height:450px}.raw-block-500{height:500px}.raw-block-550{height:550px}.raw-block-600{height:600px}.raw-block-650{height:650px}.raw-block-700{height:700px}.raw-block-750{height:750px}.raw-block-800{height:800px}.raw-block-850{height:850px}.raw-block-900{height:900px}.raw-block-950{height:950px}.raw-block-1000{height:1000px}.raw-color-000000{color:#000}.raw-color-000033{color:#003}.raw-color-000066{color:#006}.raw-color-000099{color:#009}.raw-color-0000CC{color:#00c}.raw-color-0000FF{color:#00f}.raw-color-003300{color:#030}.raw-color-003333{color:#033}.raw-color-003366{color:#036}.raw-color-003399{color:#039}.raw-color-0033CC{color:#03c}.raw-color-0033FF{color:#03f}.raw-color-006600{color:#060}.raw-color-006633{color:#063}.raw-color-006666{color:#066}.raw-color-006699{color:#069}.raw-color-0066CC{color:#06c}.raw-color-0066FF{color:#06f}.raw-color-009900{color:#090}.raw-color-009933{color:#093}.raw-color-009966{color:#096}.raw-color-009999{color:#099}.raw-color-0099CC{color:#09c}.raw-color-0099FF{color:#09f}.raw-color-00CC00{color:#0c0}.raw-color-00CC33{color:#0c3}.raw-color-00CC66{color:#0c6}.raw-color-00CC99{color:#0c9}.raw-color-00CCCC{color:#0cc}.raw-color-00CCFF{color:#0cf}.raw-color-00FF00{color:#0f0}.raw-color-00FF33{color:#0f3}.raw-color-00FF66{color:#0f6}.raw-color-00FF99{color:#0f9}.raw-color-00FFCC{color:#0fc}.raw-color-00FFFF{color:#0ff}.raw-color-330000{color:#300}.raw-color-330033{color:#303}.raw-color-330066{color:#306}.raw-color-330099{color:#309}.raw-color-3300CC{color:#30c}.raw-color-3300FF{color:#30f}.raw-color-333300{color:#330}.raw-color-333333{color:#333}.raw-color-333366{color:#336}.raw-color-333399{color:#339}.raw-color-3333CC{color:#33c}.raw-color-3333FF{color:#33f}.raw-color-336600{color:#360}.raw-color-336633{color:#363}.raw-color-336666{color:#366}.raw-color-336699{color:#369}.raw-color-3366CC{color:#36c}.raw-color-3366FF{color:#36f}.raw-color-339900{color:#390}.raw-color-339933{color:#393}.raw-color-339966{color:#396}.raw-color-339999{color:#399}.raw-color-3399CC{color:#39c}.raw-color-3399FF{color:#39f}.raw-color-33CC00{color:#3c0}.raw-color-33CC33{color:#3c3}.raw-color-33CC66{color:#3c6}.raw-color-33CC99{color:#3c9}.raw-color-33CCCC{color:#3cc}.raw-color-33CCFF{color:#3cf}.raw-color-33FF00{color:#3f0}.raw-color-33FF33{color:#3f3}.raw-color-33FF66{color:#3f6}.raw-color-33FF99{color:#3f9}.raw-color-33FFCC{color:#3fc}.raw-color-33FFFF{color:#3ff}.raw-color-660000{color:#600}.raw-color-660033{color:#603}.raw-color-660066{color:#606}.raw-color-660099{color:#609}.raw-color-6600CC{color:#60c}.raw-color-6600FF{color:#60f}.raw-color-663300{color:#630}.raw-color-663333{color:#633}.raw-color-663366{color:#636}.raw-color-663399{color:#639}.raw-color-6633CC{color:#63c}.raw-color-6633FF{color:#63f}.raw-color-666600{color:#660}.raw-color-666633{color:#663}.raw-color-666666{color:#666}.raw-color-666699{color:#669}.raw-color-6666CC{color:#66c}.raw-color-6666FF{color:#66f}.raw-color-669900{color:#690}.raw-color-669933{color:#693}.raw-color-669966{color:#696}.raw-color-669999{color:#699}.raw-color-6699CC{color:#69c}.raw-color-6699FF{color:#69f}.raw-color-66CC00{color:#6c0}.raw-color-66CC33{color:#6c3}.raw-color-66CC66{color:#6c6}.raw-color-66CC99{color:#6c9}.raw-color-66CCCC{color:#6cc}.raw-color-66CCFF{color:#6cf}.raw-color-66FF00{color:#6f0}.raw-color-66FF33{color:#6f3}.raw-color-66FF66{color:#6f6}.raw-color-66FF99{color:#6f9}.raw-color-66FFCC{color:#6fc}.raw-color-66FFFF{color:#6ff}.raw-color-990000{color:#900}.raw-color-990033{color:#903}.raw-color-990066{color:#906}.raw-color-990099{color:#909}.raw-color-9900CC{color:#90c}.raw-color-9900FF{color:#90f}.raw-color-993300{color:#930}.raw-color-993333{color:#933}.raw-color-993366{color:#936}.raw-color-993399{color:#939}.raw-color-9933CC{color:#93c}.raw-color-9933FF{color:#93f}.raw-color-996600{color:#960}.raw-color-996633{color:#963}.raw-color-996666{color:#966}.raw-color-996699{color:#969}.raw-color-9966CC{color:#96c}.raw-color-9966FF{color:#96f}.raw-color-999900{color:#990}.raw-color-999933{color:#993}.raw-color-999966{color:#996}.raw-color-999999{color:#999}.raw-color-9999CC{color:#99c}.raw-color-9999FF{color:#99f}.raw-color-99CC00{color:#9c0}.raw-color-99CC33{color:#9c3}.raw-color-99CC66{color:#9c6}.raw-color-99CC99{color:#9c9}.raw-color-99CCCC{color:#9cc}.raw-color-99CCFF{color:#9cf}.raw-color-99FF00{color:#9f0}.raw-color-99FF33{color:#9f3}.raw-color-99FF66{color:#9f6}.raw-color-99FF99{color:#9f9}.raw-color-99FFCC{color:#9fc}.raw-color-99FFFF{color:#9ff}.raw-color-CC0000{color:#c00}.raw-color-CC0033{color:#c03}.raw-color-CC0066{color:#c06}.raw-color-CC0099{color:#c09}.raw-color-CC00CC{color:#c0c}.raw-color-CC00FF{color:#c0f}.raw-color-CC3300{color:#c30}.raw-color-CC3333{color:#c33}.raw-color-CC3366{color:#c36}.raw-color-CC3399{color:#c39}.raw-color-CC33CC{color:#c3c}.raw-color-CC33FF{color:#c3f}.raw-color-CC6600{color:#c60}.raw-color-CC6633{color:#c63}.raw-color-CC6666{color:#c66}.raw-color-CC6699{color:#c69}.raw-color-CC66CC{color:#c6c}.raw-color-CC66FF{color:#c6f}.raw-color-CC9900{color:#c90}.raw-color-CC9933{color:#c93}.raw-color-CC9966{color:#c96}.raw-color-CC9999{color:#c99}.raw-color-CC99CC{color:#c9c}.raw-color-CC99FF{color:#c9f}.raw-color-CCCC00{color:#cc0}.raw-color-CCCC33{color:#cc3}.raw-color-CCCC66{color:#cc6}.raw-color-CCCC99{color:#cc9}.raw-color-CCCCCC{color:#ccc}.raw-color-CCCCFF{color:#ccf}.raw-color-CCFF00{color:#cf0}.raw-color-CCFF33{color:#cf3}.raw-color-CCFF66{color:#cf6}.raw-color-CCFF99{color:#cf9}.raw-color-CCFFCC{color:#cfc}.raw-color-CCFFFF{color:#cff}.raw-color-FF0000{color:red}.raw-color-FF0033{color:#f03}.raw-color-FF0066{color:#f06}.raw-color-FF0099{color:#f09}.raw-color-FF00CC{color:#f0c}.raw-color-FF00FF{color:#f0f}.raw-color-FF3300{color:#f30}.raw-color-FF3333{color:#f33}.raw-color-FF3366{color:#f36}.raw-color-FF3399{color:#f39}.raw-color-FF33CC{color:#f3c}.raw-color-FF33FF{color:#f3f}.raw-color-FF6600{color:#f60}.raw-color-FF6633{color:#f63}.raw-color-FF6666{color:#f66}.raw-color-FF6699{color:#f69}.raw-color-FF66CC{color:#f6c}.raw-color-FF66FF{color:#f6f}.raw-color-FF9900{color:#f90}.raw-color-FF9933{color:#f93}.raw-color-FF9966{color:#f96}.raw-color-FF9999{color:#f99}.raw-color-FF99CC{color:#f9c}.raw-color-FF99FF{color:#f9f}.raw-color-FFCC00{color:#fc0}.raw-color-FFCC33{color:#fc3}.raw-color-FFCC66{color:#fc6}.raw-color-FFCC99{color:#fc9}.raw-color-FFCCCC{color:#fcc}.raw-color-FFCCFF{color:#fcf}.raw-color-FFFF00{color:#ff0}.raw-color-FFFF33{color:#ff3}.raw-color-FFFF66{color:#ff6}.raw-color-FFFF99{color:#ff9}.raw-color-FFFFCC{color:#ffc}.raw-color-FFFFFF{color:#fff}.raw-height-1{height:1%}.raw-height-2{height:2%}.raw-height-3{height:3%}.raw-height-4{height:4%}.raw-height-5{height:5%}.raw-height-6{height:6%}.raw-height-7{height:7%}.raw-height-8{height:8%}.raw-height-9{height:9%}.raw-height-10{height:10%}.raw-height-11{height:11%}.raw-height-12{height:12%}.raw-height-13{height:13%}.raw-height-14{height:14%}.raw-height-15{height:15%}.raw-height-16{height:16%}.raw-height-17{height:17%}.raw-height-18{height:18%}.raw-height-19{height:19%}.raw-height-20{height:20%}.raw-height-21{height:21%}.raw-height-22{height:22%}.raw-height-23{height:23%}.raw-height-24{height:24%}.raw-height-25{height:25%}.raw-height-26{height:26%}.raw-height-27{height:27%}.raw-height-28{height:28%}.raw-height-29{height:29%}.raw-height-30{height:30%}.raw-height-31{height:31%}.raw-height-32{height:32%}.raw-height-33{height:33%}.raw-height-34{height:34%}.raw-height-35{height:35%}.raw-height-36{height:36%}.raw-height-37{height:37%}.raw-height-38{height:38%}.raw-height-39{height:39%}.raw-height-40{height:40%}.raw-height-41{height:41%}.raw-height-42{height:42%}.raw-height-43{height:43%}.raw-height-44{height:44%}.raw-height-45{height:45%}.raw-height-46{height:46%}.raw-height-47{height:47%}.raw-height-48{height:48%}.raw-height-49{height:49%}.raw-height-50{height:50%}.raw-height-51{height:51%}.raw-height-52{height:52%}.raw-height-53{height:53%}.raw-height-54{height:54%}.raw-height-55{height:55%}.raw-height-56{height:56%}.raw-height-57{height:57%}.raw-height-58{height:58%}.raw-height-59{height:59%}.raw-height-60{height:60%}.raw-height-61{height:61%}.raw-height-62{height:62%}.raw-height-63{height:63%}.raw-height-64{height:64%}.raw-height-65{height:65%}.raw-height-66{height:66%}.raw-height-67{height:67%}.raw-height-68{height:68%}.raw-height-69{height:69%}.raw-height-70{height:70%}.raw-height-71{height:71%}.raw-height-72{height:72%}.raw-height-73{height:73%}.raw-height-74{height:74%}.raw-height-75{height:75%}.raw-height-76{height:76%}.raw-height-77{height:77%}.raw-height-78{height:78%}.raw-height-79{height:79%}.raw-height-80{height:80%}.raw-height-81{height:81%}.raw-height-82{height:82%}.raw-height-83{height:83%}.raw-height-84{height:84%}.raw-height-85{height:85%}.raw-height-86{height:86%}.raw-height-87{height:87%}.raw-height-88{height:88%}.raw-height-89{height:89%}.raw-height-90{height:90%}.raw-height-91{height:91%}.raw-height-92{height:92%}.raw-height-93{height:93%}.raw-height-94{height:94%}.raw-height-95{height:95%}.raw-height-96{height:96%}.raw-height-97{height:97%}.raw-height-98{height:98%}.raw-height-99{height:99%}.raw-height-100{height:100%}.raw-margin-top-4{margin-top:4px}.raw-margin-top-8{margin-top:8px}.raw-margin-top-12{margin-top:12px}.raw-margin-top-16{margin-top:16px}.raw-margin-top-20{margin-top:20px}.raw-margin-top-24{margin-top:24px}.raw-margin-top-28{margin-top:28px}.raw-margin-top-32{margin-top:32px}.raw-margin-top-36{margin-top:36px}.raw-margin-top-40{margin-top:40px}.raw-margin-top-44{margin-top:44px}.raw-margin-top-48{margin-top:48px}.raw-margin-top-52{margin-top:52px}.raw-margin-top-56{margin-top:56px}.raw-margin-top-60{margin-top:60px}.raw-margin-top-64{margin-top:64px}.raw-margin-top-68{margin-top:68px}.raw-margin-top-72{margin-top:72px}.raw-margin-top-76{margin-top:76px}.raw-margin-top-80{margin-top:80px}.raw-margin-top-84{margin-top:84px}.raw-margin-top-88{margin-top:88px}.raw-margin-top-92{margin-top:92px}.raw-margin-top-96{margin-top:96px}.raw-margin-top-100{margin-top:100px}.raw-margin-top-104{margin-top:104px}.raw-margin-top-108{margin-top:108px}.raw-margin-top-112{margin-top:112px}.raw-margin-top-116{margin-top:116px}.raw-margin-top-120{margin-top:120px}.raw-margin-top-124{margin-top:124px}.raw-margin-top-128{margin-top:128px}.raw-margin-top-132{margin-top:132px}.raw-margin-top-136{margin-top:136px}.raw-margin-top-140{margin-top:140px}.raw-margin-top-144{margin-top:144px}.raw-margin-top-148{margin-top:148px}.raw-margin-top-152{margin-top:152px}.raw-margin-top-156{margin-top:156px}.raw-margin-top-160{margin-top:160px}.raw-margin-top-164{margin-top:164px}.raw-margin-top-168{margin-top:168px}.raw-margin-top-172{margin-top:172px}.raw-margin-top-176{margin-top:176px}.raw-margin-top-180{margin-top:180px}.raw-margin-top-184{margin-top:184px}.raw-margin-top-188{margin-top:188px}.raw-margin-top-192{margin-top:192px}.raw-margin-top-196{margin-top:196px}.raw-margin-top-200{margin-top:200px}.raw-margin-top-204{margin-top:204px}.raw-margin-top-208{margin-top:208px}.raw-margin-top-212{margin-top:212px}.raw-margin-top-216{margin-top:216px}.raw-margin-top-220{margin-top:220px}.raw-margin-top-224{margin-top:224px}.raw-margin-top-228{margin-top:228px}.raw-margin-top-232{margin-top:232px}.raw-margin-top-236{margin-top:236px}.raw-margin-top-240{margin-top:240px}.raw-margin-top-244{margin-top:244px}.raw-margin-top-248{margin-top:248px}.raw-margin-top-252{margin-top:252px}.raw-margin-top-256{margin-top:256px}.raw-margin-top-260{margin-top:260px}.raw-margin-top-264{margin-top:264px}.raw-margin-top-268{margin-top:268px}.raw-margin-top-272{margin-top:272px}.raw-margin-top-276{margin-top:276px}.raw-margin-top-280{margin-top:280px}.raw-margin-top-284{margin-top:284px}.raw-margin-top-288{margin-top:288px}.raw-margin-top-292{margin-top:292px}.raw-margin-top-296{margin-top:296px}.raw-margin-top-300{margin-top:300px}.raw-margin-top-304{margin-top:304px}.raw-margin-top-308{margin-top:308px}.raw-margin-top-312{margin-top:312px}.raw-margin-top-316{margin-top:316px}.raw-margin-top-320{margin-top:320px}.raw-margin-top-324{margin-top:324px}.raw-margin-top-328{margin-top:328px}.raw-margin-top-332{margin-top:332px}.raw-margin-top-336{margin-top:336px}.raw-margin-top-340{margin-top:340px}.raw-margin-top-344{margin-top:344px}.raw-margin-top-348{margin-top:348px}.raw-margin-top-352{margin-top:352px}.raw-margin-top-356{margin-top:356px}.raw-margin-top-360{margin-top:360px}.raw-margin-top-364{margin-top:364px}.raw-margin-top-368{margin-top:368px}.raw-margin-top-372{margin-top:372px}.raw-margin-top-376{margin-top:376px}.raw-margin-top-380{margin-top:380px}.raw-margin-top-384{margin-top:384px}.raw-margin-top-388{margin-top:388px}.raw-margin-top-392{margin-top:392px}.raw-margin-top-396{margin-top:396px}.raw-margin-top-400{margin-top:400px}.raw-margin-left-4{margin-left:4px}.raw-margin-left-8{margin-left:8px}.raw-margin-left-12{margin-left:12px}.raw-margin-left-16{margin-left:16px}.raw-margin-left-20{margin-left:20px}.raw-margin-left-24{margin-left:24px}.raw-margin-left-28{margin-left:28px}.raw-margin-left-32{margin-left:32px}.raw-margin-left-36{margin-left:36px}.raw-margin-left-40{margin-left:40px}.raw-margin-left-44{margin-left:44px}.raw-margin-left-48{margin-left:48px}.raw-margin-left-52{margin-left:52px}.raw-margin-left-56{margin-left:56px}.raw-margin-left-60{margin-left:60px}.raw-margin-left-64{margin-left:64px}.raw-margin-left-68{margin-left:68px}.raw-margin-left-72{margin-left:72px}.raw-margin-left-76{margin-left:76px}.raw-margin-left-80{margin-left:80px}.raw-margin-left-84{margin-left:84px}.raw-margin-left-88{margin-left:88px}.raw-margin-left-92{margin-left:92px}.raw-margin-left-96{margin-left:96px}.raw-margin-left-100{margin-left:100px}.raw-margin-left-104{margin-left:104px}.raw-margin-left-108{margin-left:108px}.raw-margin-left-112{margin-left:112px}.raw-margin-left-116{margin-left:116px}.raw-margin-left-120{margin-left:120px}.raw-margin-left-124{margin-left:124px}.raw-margin-left-128{margin-left:128px}.raw-margin-left-132{margin-left:132px}.raw-margin-left-136{margin-left:136px}.raw-margin-left-140{margin-left:140px}.raw-margin-left-144{margin-left:144px}.raw-margin-left-148{margin-left:148px}.raw-margin-left-152{margin-left:152px}.raw-margin-left-156{margin-left:156px}.raw-margin-left-160{margin-left:160px}.raw-margin-left-164{margin-left:164px}.raw-margin-left-168{margin-left:168px}.raw-margin-left-172{margin-left:172px}.raw-margin-left-176{margin-left:176px}.raw-margin-left-180{margin-left:180px}.raw-margin-left-184{margin-left:184px}.raw-margin-left-188{margin-left:188px}.raw-margin-left-192{margin-left:192px}.raw-margin-left-196{margin-left:196px}.raw-margin-left-200{margin-left:200px}.raw-margin-left-204{margin-left:204px}.raw-margin-left-208{margin-left:208px}.raw-margin-left-212{margin-left:212px}.raw-margin-left-216{margin-left:216px}.raw-margin-left-220{margin-left:220px}.raw-margin-left-224{margin-left:224px}.raw-margin-left-228{margin-left:228px}.raw-margin-left-232{margin-left:232px}.raw-margin-left-236{margin-left:236px}.raw-margin-left-240{margin-left:240px}.raw-margin-left-244{margin-left:244px}.raw-margin-left-248{margin-left:248px}.raw-margin-left-252{margin-left:252px}.raw-margin-left-256{margin-left:256px}.raw-margin-left-260{margin-left:260px}.raw-margin-left-264{margin-left:264px}.raw-margin-left-268{margin-left:268px}.raw-margin-left-272{margin-left:272px}.raw-margin-left-276{margin-left:276px}.raw-margin-left-280{margin-left:280px}.raw-margin-left-284{margin-left:284px}.raw-margin-left-288{margin-left:288px}.raw-margin-left-292{margin-left:292px}.raw-margin-left-296{margin-left:296px}.raw-margin-left-300{margin-left:300px}.raw-margin-left-304{margin-left:304px}.raw-margin-left-308{margin-left:308px}.raw-margin-left-312{margin-left:312px}.raw-margin-left-316{margin-left:316px}.raw-margin-left-320{margin-left:320px}.raw-margin-left-324{margin-left:324px}.raw-margin-left-328{margin-left:328px}.raw-margin-left-332{margin-left:332px}.raw-margin-left-336{margin-left:336px}.raw-margin-left-340{margin-left:340px}.raw-margin-left-344{margin-left:344px}.raw-margin-left-348{margin-left:348px}.raw-margin-left-352{margin-left:352px}.raw-margin-left-356{margin-left:356px}.raw-margin-left-360{margin-left:360px}.raw-margin-left-364{margin-left:364px}.raw-margin-left-368{margin-left:368px}.raw-margin-left-372{margin-left:372px}.raw-margin-left-376{margin-left:376px}.raw-margin-left-380{margin-left:380px}.raw-margin-left-384{margin-left:384px}.raw-margin-left-388{margin-left:388px}.raw-margin-left-392{margin-left:392px}.raw-margin-left-396{margin-left:396px}.raw-margin-left-400{margin-left:400px}.raw-margin-right-4{margin-right:4px}.raw-margin-right-8{margin-right:8px}.raw-margin-right-12{margin-right:12px}.raw-margin-right-16{margin-right:16px}.raw-margin-right-20{margin-right:20px}.raw-margin-right-24{margin-right:24px}.raw-margin-right-28{margin-right:28px}.raw-margin-right-32{margin-right:32px}.raw-margin-right-36{margin-right:36px}.raw-margin-right-40{margin-right:40px}.raw-margin-right-44{margin-right:44px}.raw-margin-right-48{margin-right:48px}.raw-margin-right-52{margin-right:52px}.raw-margin-right-56{margin-right:56px}.raw-margin-right-60{margin-right:60px}.raw-margin-right-64{margin-right:64px}.raw-margin-right-68{margin-right:68px}.raw-margin-right-72{margin-right:72px}.raw-margin-right-76{margin-right:76px}.raw-margin-right-80{margin-right:80px}.raw-margin-right-84{margin-right:84px}.raw-margin-right-88{margin-right:88px}.raw-margin-right-92{margin-right:92px}.raw-margin-right-96{margin-right:96px}.raw-margin-right-100{margin-right:100px}.raw-margin-right-104{margin-right:104px}.raw-margin-right-108{margin-right:108px}.raw-margin-right-112{margin-right:112px}.raw-margin-right-116{margin-right:116px}.raw-margin-right-120{margin-right:120px}.raw-margin-right-124{margin-right:124px}.raw-margin-right-128{margin-right:128px}.raw-margin-right-132{margin-right:132px}.raw-margin-right-136{margin-right:136px}.raw-margin-right-140{margin-right:140px}.raw-margin-right-144{margin-right:144px}.raw-margin-right-148{margin-right:148px}.raw-margin-right-152{margin-right:152px}.raw-margin-right-156{margin-right:156px}.raw-margin-right-160{margin-right:160px}.raw-margin-right-164{margin-right:164px}.raw-margin-right-168{margin-right:168px}.raw-margin-right-172{margin-right:172px}.raw-margin-right-176{margin-right:176px}.raw-margin-right-180{margin-right:180px}.raw-margin-right-184{margin-right:184px}.raw-margin-right-188{margin-right:188px}.raw-margin-right-192{margin-right:192px}.raw-margin-right-196{margin-right:196px}.raw-margin-right-200{margin-right:200px}.raw-margin-right-204{margin-right:204px}.raw-margin-right-208{margin-right:208px}.raw-margin-right-212{margin-right:212px}.raw-margin-right-216{margin-right:216px}.raw-margin-right-220{margin-right:220px}.raw-margin-right-224{margin-right:224px}.raw-margin-right-228{margin-right:228px}.raw-margin-right-232{margin-right:232px}.raw-margin-right-236{margin-right:236px}.raw-margin-right-240{margin-right:240px}.raw-margin-right-244{margin-right:244px}.raw-margin-right-248{margin-right:248px}.raw-margin-right-252{margin-right:252px}.raw-margin-right-256{margin-right:256px}.raw-margin-right-260{margin-right:260px}.raw-margin-right-264{margin-right:264px}.raw-margin-right-268{margin-right:268px}.raw-margin-right-272{margin-right:272px}.raw-margin-right-276{margin-right:276px}.raw-margin-right-280{margin-right:280px}.raw-margin-right-284{margin-right:284px}.raw-margin-right-288{margin-right:288px}.raw-margin-right-292{margin-right:292px}.raw-margin-right-296{margin-right:296px}.raw-margin-right-300{margin-right:300px}.raw-margin-right-304{margin-right:304px}.raw-margin-right-308{margin-right:308px}.raw-margin-right-312{margin-right:312px}.raw-margin-right-316{margin-right:316px}.raw-margin-right-320{margin-right:320px}.raw-margin-right-324{margin-right:324px}.raw-margin-right-328{margin-right:328px}.raw-margin-right-332{margin-right:332px}.raw-margin-right-336{margin-right:336px}.raw-margin-right-340{margin-right:340px}.raw-margin-right-344{margin-right:344px}.raw-margin-right-348{margin-right:348px}.raw-margin-right-352{margin-right:352px}.raw-margin-right-356{margin-right:356px}.raw-margin-right-360{margin-right:360px}.raw-margin-right-364{margin-right:364px}.raw-margin-right-368{margin-right:368px}.raw-margin-right-372{margin-right:372px}.raw-margin-right-376{margin-right:376px}.raw-margin-right-380{margin-right:380px}.raw-margin-right-384{margin-right:384px}.raw-margin-right-388{margin-right:388px}.raw-margin-right-392{margin-right:392px}.raw-margin-right-396{margin-right:396px}.raw-margin-right-400{margin-right:400px}.raw-margin-bottom-4{margin-bottom:4px}.raw-margin-bottom-8{margin-bottom:8px}.raw-margin-bottom-12{margin-bottom:12px}.raw-margin-bottom-16{margin-bottom:16px}.raw-margin-bottom-20{margin-bottom:20px}.raw-margin-bottom-24{margin-bottom:24px}.raw-margin-bottom-28{margin-bottom:28px}.raw-margin-bottom-32{margin-bottom:32px}.raw-margin-bottom-36{margin-bottom:36px}.raw-margin-bottom-40{margin-bottom:40px}.raw-margin-bottom-44{margin-bottom:44px}.raw-margin-bottom-48{margin-bottom:48px}.raw-margin-bottom-52{margin-bottom:52px}.raw-margin-bottom-56{margin-bottom:56px}.raw-margin-bottom-60{margin-bottom:60px}.raw-margin-bottom-64{margin-bottom:64px}.raw-margin-bottom-68{margin-bottom:68px}.raw-margin-bottom-72{margin-bottom:72px}.raw-margin-bottom-76{margin-bottom:76px}.raw-margin-bottom-80{margin-bottom:80px}.raw-margin-bottom-84{margin-bottom:84px}.raw-margin-bottom-88{margin-bottom:88px}.raw-margin-bottom-92{margin-bottom:92px}.raw-margin-bottom-96{margin-bottom:96px}.raw-margin-bottom-100{margin-bottom:100px}.raw-margin-bottom-104{margin-bottom:104px}.raw-margin-bottom-108{margin-bottom:108px}.raw-margin-bottom-112{margin-bottom:112px}.raw-margin-bottom-116{margin-bottom:116px}.raw-margin-bottom-120{margin-bottom:120px}.raw-margin-bottom-124{margin-bottom:124px}.raw-margin-bottom-128{margin-bottom:128px}.raw-margin-bottom-132{margin-bottom:132px}.raw-margin-bottom-136{margin-bottom:136px}.raw-margin-bottom-140{margin-bottom:140px}.raw-margin-bottom-144{margin-bottom:144px}.raw-margin-bottom-148{margin-bottom:148px}.raw-margin-bottom-152{margin-bottom:152px}.raw-margin-bottom-156{margin-bottom:156px}.raw-margin-bottom-160{margin-bottom:160px}.raw-margin-bottom-164{margin-bottom:164px}.raw-margin-bottom-168{margin-bottom:168px}.raw-margin-bottom-172{margin-bottom:172px}.raw-margin-bottom-176{margin-bottom:176px}.raw-margin-bottom-180{margin-bottom:180px}.raw-margin-bottom-184{margin-bottom:184px}.raw-margin-bottom-188{margin-bottom:188px}.raw-margin-bottom-192{margin-bottom:192px}.raw-margin-bottom-196{margin-bottom:196px}.raw-margin-bottom-200{margin-bottom:200px}.raw-margin-bottom-204{margin-bottom:204px}.raw-margin-bottom-208{margin-bottom:208px}.raw-margin-bottom-212{margin-bottom:212px}.raw-margin-bottom-216{margin-bottom:216px}.raw-margin-bottom-220{margin-bottom:220px}.raw-margin-bottom-224{margin-bottom:224px}.raw-margin-bottom-228{margin-bottom:228px}.raw-margin-bottom-232{margin-bottom:232px}.raw-margin-bottom-236{margin-bottom:236px}.raw-margin-bottom-240{margin-bottom:240px}.raw-margin-bottom-244{margin-bottom:244px}.raw-margin-bottom-248{margin-bottom:248px}.raw-margin-bottom-252{margin-bottom:252px}.raw-margin-bottom-256{margin-bottom:256px}.raw-margin-bottom-260{margin-bottom:260px}.raw-margin-bottom-264{margin-bottom:264px}.raw-margin-bottom-268{margin-bottom:268px}.raw-margin-bottom-272{margin-bottom:272px}.raw-margin-bottom-276{margin-bottom:276px}.raw-margin-bottom-280{margin-bottom:280px}.raw-margin-bottom-284{margin-bottom:284px}.raw-margin-bottom-288{margin-bottom:288px}.raw-margin-bottom-292{margin-bottom:292px}.raw-margin-bottom-296{margin-bottom:296px}.raw-margin-bottom-300{margin-bottom:300px}.raw-margin-bottom-304{margin-bottom:304px}.raw-margin-bottom-308{margin-bottom:308px}.raw-margin-bottom-312{margin-bottom:312px}.raw-margin-bottom-316{margin-bottom:316px}.raw-margin-bottom-320{margin-bottom:320px}.raw-margin-bottom-324{margin-bottom:324px}.raw-margin-bottom-328{margin-bottom:328px}.raw-margin-bottom-332{margin-bottom:332px}.raw-margin-bottom-336{margin-bottom:336px}.raw-margin-bottom-340{margin-bottom:340px}.raw-margin-bottom-344{margin-bottom:344px}.raw-margin-bottom-348{margin-bottom:348px}.raw-margin-bottom-352{margin-bottom:352px}.raw-margin-bottom-356{margin-bottom:356px}.raw-margin-bottom-360{margin-bottom:360px}.raw-margin-bottom-364{margin-bottom:364px}.raw-margin-bottom-368{margin-bottom:368px}.raw-margin-bottom-372{margin-bottom:372px}.raw-margin-bottom-376{margin-bottom:376px}.raw-margin-bottom-380{margin-bottom:380px}.raw-margin-bottom-384{margin-bottom:384px}.raw-margin-bottom-388{margin-bottom:388px}.raw-margin-bottom-392{margin-bottom:392px}.raw-margin-bottom-396{margin-bottom:396px}.raw-margin-bottom-400{margin-bottom:400px}.raw-margin-4{margin:4px}.raw-margin-8{margin:8px}.raw-margin-12{margin:12px}.raw-margin-16{margin:16px}.raw-margin-20{margin:20px}.raw-margin-24{margin:24px}.raw-margin-28{margin:28px}.raw-margin-32{margin:32px}.raw-margin-36{margin:36px}.raw-margin-40{margin:40px}.raw-margin-44{margin:44px}.raw-margin-48{margin:48px}.raw-margin-52{margin:52px}.raw-margin-56{margin:56px}.raw-margin-60{margin:60px}.raw-margin-64{margin:64px}.raw-margin-68{margin:68px}.raw-margin-72{margin:72px}.raw-margin-76{margin:76px}.raw-margin-80{margin:80px}.raw-margin-84{margin:84px}.raw-margin-88{margin:88px}.raw-margin-92{margin:92px}.raw-margin-96{margin:96px}.raw-margin-100{margin:100px}.raw-margin-104{margin:104px}.raw-margin-108{margin:108px}.raw-margin-112{margin:112px}.raw-margin-116{margin:116px}.raw-margin-120{margin:120px}.raw-margin-124{margin:124px}.raw-margin-128{margin:128px}.raw-margin-132{margin:132px}.raw-margin-136{margin:136px}.raw-margin-140{margin:140px}.raw-margin-144{margin:144px}.raw-margin-148{margin:148px}.raw-margin-152{margin:152px}.raw-margin-156{margin:156px}.raw-margin-160{margin:160px}.raw-margin-164{margin:164px}.raw-margin-168{margin:168px}.raw-margin-172{margin:172px}.raw-margin-176{margin:176px}.raw-margin-180{margin:180px}.raw-margin-184{margin:184px}.raw-margin-188{margin:188px}.raw-margin-192{margin:192px}.raw-margin-196{margin:196px}.raw-margin-200{margin:200px}.raw-margin-204{margin:204px}.raw-margin-208{margin:208px}.raw-margin-212{margin:212px}.raw-margin-216{margin:216px}.raw-margin-220{margin:220px}.raw-margin-224{margin:224px}.raw-margin-228{margin:228px}.raw-margin-232{margin:232px}.raw-margin-236{margin:236px}.raw-margin-240{margin:240px}.raw-margin-244{margin:244px}.raw-margin-248{margin:248px}.raw-margin-252{margin:252px}.raw-margin-256{margin:256px}.raw-margin-260{margin:260px}.raw-margin-264{margin:264px}.raw-margin-268{margin:268px}.raw-margin-272{margin:272px}.raw-margin-276{margin:276px}.raw-margin-280{margin:280px}.raw-margin-284{margin:284px}.raw-margin-288{margin:288px}.raw-margin-292{margin:292px}.raw-margin-296{margin:296px}.raw-margin-300{margin:300px}.raw-margin-304{margin:304px}.raw-margin-308{margin:308px}.raw-margin-312{margin:312px}.raw-margin-316{margin:316px}.raw-margin-320{margin:320px}.raw-margin-324{margin:324px}.raw-margin-328{margin:328px}.raw-margin-332{margin:332px}.raw-margin-336{margin:336px}.raw-margin-340{margin:340px}.raw-margin-344{margin:344px}.raw-margin-348{margin:348px}.raw-margin-352{margin:352px}.raw-margin-356{margin:356px}.raw-margin-360{margin:360px}.raw-margin-364{margin:364px}.raw-margin-368{margin:368px}.raw-margin-372{margin:372px}.raw-margin-376{margin:376px}.raw-margin-380{margin:380px}.raw-margin-384{margin:384px}.raw-margin-388{margin:388px}.raw-margin-392{margin:392px}.raw-margin-396{margin:396px}.raw-margin-400{margin:400px}.raw-margin-auto{margin:0 auto}.raw-margin-top-0{margin-top:0}.raw-margin-top-5{margin-top:5px}.raw-margin-top-10{margin-top:10px}.raw-margin-top-15{margin-top:15px}.raw-margin-top-20{margin-top:20px}.raw-margin-top-25{margin-top:25px}.raw-margin-top-30{margin-top:30px}.raw-margin-top-35{margin-top:35px}.raw-margin-top-40{margin-top:40px}.raw-margin-top-45{margin-top:45px}.raw-margin-top-50{margin-top:50px}.raw-margin-top-55{margin-top:55px}.raw-margin-top-60{margin-top:60px}.raw-margin-top-65{margin-top:65px}.raw-margin-top-70{margin-top:70px}.raw-margin-top-75{margin-top:75px}.raw-margin-top-80{margin-top:80px}.raw-margin-top-85{margin-top:85px}.raw-margin-top-90{margin-top:90px}.raw-margin-top-95{margin-top:95px}.raw-margin-top-100{margin-top:100px}.raw-margin-top-105{margin-top:105px}.raw-margin-top-110{margin-top:110px}.raw-margin-top-115{margin-top:115px}.raw-margin-top-120{margin-top:120px}.raw-margin-top-125{margin-top:125px}.raw-margin-top-130{margin-top:130px}.raw-margin-top-135{margin-top:135px}.raw-margin-top-140{margin-top:140px}.raw-margin-top-145{margin-top:145px}.raw-margin-top-150{margin-top:150px}.raw-margin-top-155{margin-top:155px}.raw-margin-top-160{margin-top:160px}.raw-margin-top-165{margin-top:165px}.raw-margin-top-170{margin-top:170px}.raw-margin-top-175{margin-top:175px}.raw-margin-top-180{margin-top:180px}.raw-margin-top-185{margin-top:185px}.raw-margin-top-190{margin-top:190px}.raw-margin-top-195{margin-top:195px}.raw-margin-top-200{margin-top:200px}.raw-margin-right-0{margin-right:0}.raw-margin-right-5{margin-right:5px}.raw-margin-right-10{margin-right:10px}.raw-margin-right-15{margin-right:15px}.raw-margin-right-20{margin-right:20px}.raw-margin-right-25{margin-right:25px}.raw-margin-right-30{margin-right:30px}.raw-margin-right-35{margin-right:35px}.raw-margin-right-40{margin-right:40px}.raw-margin-right-45{margin-right:45px}.raw-margin-right-50{margin-right:50px}.raw-margin-right-55{margin-right:55px}.raw-margin-right-60{margin-right:60px}.raw-margin-right-65{margin-right:65px}.raw-margin-right-70{margin-right:70px}.raw-margin-right-75{margin-right:75px}.raw-margin-right-80{margin-right:80px}.raw-margin-right-85{margin-right:85px}.raw-margin-right-90{margin-right:90px}.raw-margin-right-95{margin-right:95px}.raw-margin-right-100{margin-right:100px}.raw-margin-right-105{margin-right:105px}.raw-margin-right-110{margin-right:110px}.raw-margin-right-115{margin-right:115px}.raw-margin-right-120{margin-right:120px}.raw-margin-right-125{margin-right:125px}.raw-margin-right-130{margin-right:130px}.raw-margin-right-135{margin-right:135px}.raw-margin-right-140{margin-right:140px}.raw-margin-right-145{margin-right:145px}.raw-margin-right-150{margin-right:150px}.raw-margin-right-155{margin-right:155px}.raw-margin-right-160{margin-right:160px}.raw-margin-right-165{margin-right:165px}.raw-margin-right-170{margin-right:170px}.raw-margin-right-175{margin-right:175px}.raw-margin-right-180{margin-right:180px}.raw-margin-right-185{margin-right:185px}.raw-margin-right-190{margin-right:190px}.raw-margin-right-195{margin-right:195px}.raw-margin-right-200{margin-right:200px}.raw-margin-bottom-0{margin-bottom:0}.raw-margin-bottom-5{margin-bottom:5px}.raw-margin-bottom-10{margin-bottom:10px}.raw-margin-bottom-15{margin-bottom:15px}.raw-margin-bottom-20{margin-bottom:20px}.raw-margin-bottom-25{margin-bottom:25px}.raw-margin-bottom-30{margin-bottom:30px}.raw-margin-bottom-35{margin-bottom:35px}.raw-margin-bottom-40{margin-bottom:40px}.raw-margin-bottom-45{margin-bottom:45px}.raw-margin-bottom-50{margin-bottom:50px}.raw-margin-bottom-55{margin-bottom:55px}.raw-margin-bottom-60{margin-bottom:60px}.raw-margin-bottom-65{margin-bottom:65px}.raw-margin-bottom-70{margin-bottom:70px}.raw-margin-bottom-75{margin-bottom:75px}.raw-margin-bottom-80{margin-bottom:80px}.raw-margin-bottom-85{margin-bottom:85px}.raw-margin-bottom-90{margin-bottom:90px}.raw-margin-bottom-95{margin-bottom:95px}.raw-margin-bottom-100{margin-bottom:100px}.raw-margin-bottom-105{margin-bottom:105px}.raw-margin-bottom-110{margin-bottom:110px}.raw-margin-bottom-115{margin-bottom:115px}.raw-margin-bottom-120{margin-bottom:120px}.raw-margin-bottom-125{margin-bottom:125px}.raw-margin-bottom-130{margin-bottom:130px}.raw-margin-bottom-135{margin-bottom:135px}.raw-margin-bottom-140{margin-bottom:140px}.raw-margin-bottom-145{margin-bottom:145px}.raw-margin-bottom-150{margin-bottom:150px}.raw-margin-bottom-155{margin-bottom:155px}.raw-margin-bottom-160{margin-bottom:160px}.raw-margin-bottom-165{margin-bottom:165px}.raw-margin-bottom-170{margin-bottom:170px}.raw-margin-bottom-175{margin-bottom:175px}.raw-margin-bottom-180{margin-bottom:180px}.raw-margin-bottom-185{margin-bottom:185px}.raw-margin-bottom-190{margin-bottom:190px}.raw-margin-bottom-195{margin-bottom:195px}.raw-margin-bottom-200{margin-bottom:200px}.raw-margin-left-0{margin-left:0}.raw-margin-left-5{margin-left:5px}.raw-margin-left-10{margin-left:10px}.raw-margin-left-15{margin-left:15px}.raw-margin-left-20{margin-left:20px}.raw-margin-left-25{margin-left:25px}.raw-margin-left-30{margin-left:30px}.raw-margin-left-35{margin-left:35px}.raw-margin-left-40{margin-left:40px}.raw-margin-left-45{margin-left:45px}.raw-margin-left-50{margin-left:50px}.raw-margin-left-55{margin-left:55px}.raw-margin-left-60{margin-left:60px}.raw-margin-left-65{margin-left:65px}.raw-margin-left-70{margin-left:70px}.raw-margin-left-75{margin-left:75px}.raw-margin-left-80{margin-left:80px}.raw-margin-left-85{margin-left:85px}.raw-margin-left-90{margin-left:90px}.raw-margin-left-95{margin-left:95px}.raw-margin-left-100{margin-left:100px}.raw-margin-left-105{margin-left:105px}.raw-margin-left-110{margin-left:110px}.raw-margin-left-115{margin-left:115px}.raw-margin-left-120{margin-left:120px}.raw-margin-left-125{margin-left:125px}.raw-margin-left-130{margin-left:130px}.raw-margin-left-135{margin-left:135px}.raw-margin-left-140{margin-left:140px}.raw-margin-left-145{margin-left:145px}.raw-margin-left-150{margin-left:150px}.raw-margin-left-155{margin-left:155px}.raw-margin-left-160{margin-left:160px}.raw-margin-left-165{margin-left:165px}.raw-margin-left-170{margin-left:170px}.raw-margin-left-175{margin-left:175px}.raw-margin-left-180{margin-left:180px}.raw-margin-left-185{margin-left:185px}.raw-margin-left-190{margin-left:190px}.raw-margin-left-195{margin-left:195px}.raw-margin-left-200{margin-left:200px}.raw-margin-0{margin:0}.raw-margin-5{margin:5px}.raw-margin-10{margin:10px}.raw-margin-15{margin:15px}.raw-margin-20{margin:20px}.raw-margin-25{margin:25px}.raw-margin-30{margin:30px}.raw-margin-35{margin:35px}.raw-margin-40{margin:40px}.raw-margin-45{margin:45px}.raw-margin-50{margin:50px}.raw-margin-55{margin:55px}.raw-margin-60{margin:60px}.raw-margin-65{margin:65px}.raw-margin-70{margin:70px}.raw-margin-75{margin:75px}.raw-margin-80{margin:80px}.raw-margin-85{margin:85px}.raw-margin-90{margin:90px}.raw-margin-95{margin:95px}.raw-margin-100{margin:100px}.raw-margin-105{margin:105px}.raw-margin-110{margin:110px}.raw-margin-115{margin:115px}.raw-margin-120{margin:120px}.raw-margin-125{margin:125px}.raw-margin-130{margin:130px}.raw-margin-135{margin:135px}.raw-margin-140{margin:140px}.raw-margin-145{margin:145px}.raw-margin-150{margin:150px}.raw-margin-155{margin:155px}.raw-margin-160{margin:160px}.raw-margin-165{margin:165px}.raw-margin-170{margin:170px}.raw-margin-175{margin:175px}.raw-margin-180{margin:180px}.raw-margin-185{margin:185px}.raw-margin-190{margin:190px}.raw-margin-195{margin:195px}.raw-margin-200{margin:200px}.raw-margin-auto{margin:0 auto}.raw-padding-top-4{padding-top:4px}.raw-padding-top-8{padding-top:8px}.raw-padding-top-12{padding-top:12px}.raw-padding-top-16{padding-top:16px}.raw-padding-top-20{padding-top:20px}.raw-padding-top-24{padding-top:24px}.raw-padding-top-28{padding-top:28px}.raw-padding-top-32{padding-top:32px}.raw-padding-top-36{padding-top:36px}.raw-padding-top-40{padding-top:40px}.raw-padding-top-44{padding-top:44px}.raw-padding-top-48{padding-top:48px}.raw-padding-top-52{padding-top:52px}.raw-padding-top-56{padding-top:56px}.raw-padding-top-60{padding-top:60px}.raw-padding-top-64{padding-top:64px}.raw-padding-top-68{padding-top:68px}.raw-padding-top-72{padding-top:72px}.raw-padding-top-76{padding-top:76px}.raw-padding-top-80{padding-top:80px}.raw-padding-top-84{padding-top:84px}.raw-padding-top-88{padding-top:88px}.raw-padding-top-92{padding-top:92px}.raw-padding-top-96{padding-top:96px}.raw-padding-top-100{padding-top:100px}.raw-padding-top-104{padding-top:104px}.raw-padding-top-108{padding-top:108px}.raw-padding-top-112{padding-top:112px}.raw-padding-top-116{padding-top:116px}.raw-padding-top-120{padding-top:120px}.raw-padding-top-124{padding-top:124px}.raw-padding-top-128{padding-top:128px}.raw-padding-top-132{padding-top:132px}.raw-padding-top-136{padding-top:136px}.raw-padding-top-140{padding-top:140px}.raw-padding-top-144{padding-top:144px}.raw-padding-top-148{padding-top:148px}.raw-padding-top-152{padding-top:152px}.raw-padding-top-156{padding-top:156px}.raw-padding-top-160{padding-top:160px}.raw-padding-top-164{padding-top:164px}.raw-padding-top-168{padding-top:168px}.raw-padding-top-172{padding-top:172px}.raw-padding-top-176{padding-top:176px}.raw-padding-top-180{padding-top:180px}.raw-padding-top-184{padding-top:184px}.raw-padding-top-188{padding-top:188px}.raw-padding-top-192{padding-top:192px}.raw-padding-top-196{padding-top:196px}.raw-padding-top-200{padding-top:200px}.raw-padding-top-204{padding-top:204px}.raw-padding-top-208{padding-top:208px}.raw-padding-top-212{padding-top:212px}.raw-padding-top-216{padding-top:216px}.raw-padding-top-220{padding-top:220px}.raw-padding-top-224{padding-top:224px}.raw-padding-top-228{padding-top:228px}.raw-padding-top-232{padding-top:232px}.raw-padding-top-236{padding-top:236px}.raw-padding-top-240{padding-top:240px}.raw-padding-top-244{padding-top:244px}.raw-padding-top-248{padding-top:248px}.raw-padding-top-252{padding-top:252px}.raw-padding-top-256{padding-top:256px}.raw-padding-top-260{padding-top:260px}.raw-padding-top-264{padding-top:264px}.raw-padding-top-268{padding-top:268px}.raw-padding-top-272{padding-top:272px}.raw-padding-top-276{padding-top:276px}.raw-padding-top-280{padding-top:280px}.raw-padding-top-284{padding-top:284px}.raw-padding-top-288{padding-top:288px}.raw-padding-top-292{padding-top:292px}.raw-padding-top-296{padding-top:296px}.raw-padding-top-300{padding-top:300px}.raw-padding-top-304{padding-top:304px}.raw-padding-top-308{padding-top:308px}.raw-padding-top-312{padding-top:312px}.raw-padding-top-316{padding-top:316px}.raw-padding-top-320{padding-top:320px}.raw-padding-top-324{padding-top:324px}.raw-padding-top-328{padding-top:328px}.raw-padding-top-332{padding-top:332px}.raw-padding-top-336{padding-top:336px}.raw-padding-top-340{padding-top:340px}.raw-padding-top-344{padding-top:344px}.raw-padding-top-348{padding-top:348px}.raw-padding-top-352{padding-top:352px}.raw-padding-top-356{padding-top:356px}.raw-padding-top-360{padding-top:360px}.raw-padding-top-364{padding-top:364px}.raw-padding-top-368{padding-top:368px}.raw-padding-top-372{padding-top:372px}.raw-padding-top-376{padding-top:376px}.raw-padding-top-380{padding-top:380px}.raw-padding-top-384{padding-top:384px}.raw-padding-top-388{padding-top:388px}.raw-padding-top-392{padding-top:392px}.raw-padding-top-396{padding-top:396px}.raw-padding-top-400{padding-top:400px}.raw-padding-left-4{padding-left:4px}.raw-padding-left-8{padding-left:8px}.raw-padding-left-12{padding-left:12px}.raw-padding-left-16{padding-left:16px}.raw-padding-left-20{padding-left:20px}.raw-padding-left-24{padding-left:24px}.raw-padding-left-28{padding-left:28px}.raw-padding-left-32{padding-left:32px}.raw-padding-left-36{padding-left:36px}.raw-padding-left-40{padding-left:40px}.raw-padding-left-44{padding-left:44px}.raw-padding-left-48{padding-left:48px}.raw-padding-left-52{padding-left:52px}.raw-padding-left-56{padding-left:56px}.raw-padding-left-60{padding-left:60px}.raw-padding-left-64{padding-left:64px}.raw-padding-left-68{padding-left:68px}.raw-padding-left-72{padding-left:72px}.raw-padding-left-76{padding-left:76px}.raw-padding-left-80{padding-left:80px}.raw-padding-left-84{padding-left:84px}.raw-padding-left-88{padding-left:88px}.raw-padding-left-92{padding-left:92px}.raw-padding-left-96{padding-left:96px}.raw-padding-left-100{padding-left:100px}.raw-padding-left-104{padding-left:104px}.raw-padding-left-108{padding-left:108px}.raw-padding-left-112{padding-left:112px}.raw-padding-left-116{padding-left:116px}.raw-padding-left-120{padding-left:120px}.raw-padding-left-124{padding-left:124px}.raw-padding-left-128{padding-left:128px}.raw-padding-left-132{padding-left:132px}.raw-padding-left-136{padding-left:136px}.raw-padding-left-140{padding-left:140px}.raw-padding-left-144{padding-left:144px}.raw-padding-left-148{padding-left:148px}.raw-padding-left-152{padding-left:152px}.raw-padding-left-156{padding-left:156px}.raw-padding-left-160{padding-left:160px}.raw-padding-left-164{padding-left:164px}.raw-padding-left-168{padding-left:168px}.raw-padding-left-172{padding-left:172px}.raw-padding-left-176{padding-left:176px}.raw-padding-left-180{padding-left:180px}.raw-padding-left-184{padding-left:184px}.raw-padding-left-188{padding-left:188px}.raw-padding-left-192{padding-left:192px}.raw-padding-left-196{padding-left:196px}.raw-padding-left-200{padding-left:200px}.raw-padding-left-204{padding-left:204px}.raw-padding-left-208{padding-left:208px}.raw-padding-left-212{padding-left:212px}.raw-padding-left-216{padding-left:216px}.raw-padding-left-220{padding-left:220px}.raw-padding-left-224{padding-left:224px}.raw-padding-left-228{padding-left:228px}.raw-padding-left-232{padding-left:232px}.raw-padding-left-236{padding-left:236px}.raw-padding-left-240{padding-left:240px}.raw-padding-left-244{padding-left:244px}.raw-padding-left-248{padding-left:248px}.raw-padding-left-252{padding-left:252px}.raw-padding-left-256{padding-left:256px}.raw-padding-left-260{padding-left:260px}.raw-padding-left-264{padding-left:264px}.raw-padding-left-268{padding-left:268px}.raw-padding-left-272{padding-left:272px}.raw-padding-left-276{padding-left:276px}.raw-padding-left-280{padding-left:280px}.raw-padding-left-284{padding-left:284px}.raw-padding-left-288{padding-left:288px}.raw-padding-left-292{padding-left:292px}.raw-padding-left-296{padding-left:296px}.raw-padding-left-300{padding-left:300px}.raw-padding-left-304{padding-left:304px}.raw-padding-left-308{padding-left:308px}.raw-padding-left-312{padding-left:312px}.raw-padding-left-316{padding-left:316px}.raw-padding-left-320{padding-left:320px}.raw-padding-left-324{padding-left:324px}.raw-padding-left-328{padding-left:328px}.raw-padding-left-332{padding-left:332px}.raw-padding-left-336{padding-left:336px}.raw-padding-left-340{padding-left:340px}.raw-padding-left-344{padding-left:344px}.raw-padding-left-348{padding-left:348px}.raw-padding-left-352{padding-left:352px}.raw-padding-left-356{padding-left:356px}.raw-padding-left-360{padding-left:360px}.raw-padding-left-364{padding-left:364px}.raw-padding-left-368{padding-left:368px}.raw-padding-left-372{padding-left:372px}.raw-padding-left-376{padding-left:376px}.raw-padding-left-380{padding-left:380px}.raw-padding-left-384{padding-left:384px}.raw-padding-left-388{padding-left:388px}.raw-padding-left-392{padding-left:392px}.raw-padding-left-396{padding-left:396px}.raw-padding-left-400{padding-left:400px}.raw-padding-right-4{padding-right:4px}.raw-padding-right-8{padding-right:8px}.raw-padding-right-12{padding-right:12px}.raw-padding-right-16{padding-right:16px}.raw-padding-right-20{padding-right:20px}.raw-padding-right-24{padding-right:24px}.raw-padding-right-28{padding-right:28px}.raw-padding-right-32{padding-right:32px}.raw-padding-right-36{padding-right:36px}.raw-padding-right-40{padding-right:40px}.raw-padding-right-44{padding-right:44px}.raw-padding-right-48{padding-right:48px}.raw-padding-right-52{padding-right:52px}.raw-padding-right-56{padding-right:56px}.raw-padding-right-60{padding-right:60px}.raw-padding-right-64{padding-right:64px}.raw-padding-right-68{padding-right:68px}.raw-padding-right-72{padding-right:72px}.raw-padding-right-76{padding-right:76px}.raw-padding-right-80{padding-right:80px}.raw-padding-right-84{padding-right:84px}.raw-padding-right-88{padding-right:88px}.raw-padding-right-92{padding-right:92px}.raw-padding-right-96{padding-right:96px}.raw-padding-right-100{padding-right:100px}.raw-padding-right-104{padding-right:104px}.raw-padding-right-108{padding-right:108px}.raw-padding-right-112{padding-right:112px}.raw-padding-right-116{padding-right:116px}.raw-padding-right-120{padding-right:120px}.raw-padding-right-124{padding-right:124px}.raw-padding-right-128{padding-right:128px}.raw-padding-right-132{padding-right:132px}.raw-padding-right-136{padding-right:136px}.raw-padding-right-140{padding-right:140px}.raw-padding-right-144{padding-right:144px}.raw-padding-right-148{padding-right:148px}.raw-padding-right-152{padding-right:152px}.raw-padding-right-156{padding-right:156px}.raw-padding-right-160{padding-right:160px}.raw-padding-right-164{padding-right:164px}.raw-padding-right-168{padding-right:168px}.raw-padding-right-172{padding-right:172px}.raw-padding-right-176{padding-right:176px}.raw-padding-right-180{padding-right:180px}.raw-padding-right-184{padding-right:184px}.raw-padding-right-188{padding-right:188px}.raw-padding-right-192{padding-right:192px}.raw-padding-right-196{padding-right:196px}.raw-padding-right-200{padding-right:200px}.raw-padding-right-204{padding-right:204px}.raw-padding-right-208{padding-right:208px}.raw-padding-right-212{padding-right:212px}.raw-padding-right-216{padding-right:216px}.raw-padding-right-220{padding-right:220px}.raw-padding-right-224{padding-right:224px}.raw-padding-right-228{padding-right:228px}.raw-padding-right-232{padding-right:232px}.raw-padding-right-236{padding-right:236px}.raw-padding-right-240{padding-right:240px}.raw-padding-right-244{padding-right:244px}.raw-padding-right-248{padding-right:248px}.raw-padding-right-252{padding-right:252px}.raw-padding-right-256{padding-right:256px}.raw-padding-right-260{padding-right:260px}.raw-padding-right-264{padding-right:264px}.raw-padding-right-268{padding-right:268px}.raw-padding-right-272{padding-right:272px}.raw-padding-right-276{padding-right:276px}.raw-padding-right-280{padding-right:280px}.raw-padding-right-284{padding-right:284px}.raw-padding-right-288{padding-right:288px}.raw-padding-right-292{padding-right:292px}.raw-padding-right-296{padding-right:296px}.raw-padding-right-300{padding-right:300px}.raw-padding-right-304{padding-right:304px}.raw-padding-right-308{padding-right:308px}.raw-padding-right-312{padding-right:312px}.raw-padding-right-316{padding-right:316px}.raw-padding-right-320{padding-right:320px}.raw-padding-right-324{padding-right:324px}.raw-padding-right-328{padding-right:328px}.raw-padding-right-332{padding-right:332px}.raw-padding-right-336{padding-right:336px}.raw-padding-right-340{padding-right:340px}.raw-padding-right-344{padding-right:344px}.raw-padding-right-348{padding-right:348px}.raw-padding-right-352{padding-right:352px}.raw-padding-right-356{padding-right:356px}.raw-padding-right-360{padding-right:360px}.raw-padding-right-364{padding-right:364px}.raw-padding-right-368{padding-right:368px}.raw-padding-right-372{padding-right:372px}.raw-padding-right-376{padding-right:376px}.raw-padding-right-380{padding-right:380px}.raw-padding-right-384{padding-right:384px}.raw-padding-right-388{padding-right:388px}.raw-padding-right-392{padding-right:392px}.raw-padding-right-396{padding-right:396px}.raw-padding-right-400{padding-right:400px}.raw-padding-bottom-4{padding-bottom:4px}.raw-padding-bottom-8{padding-bottom:8px}.raw-padding-bottom-12{padding-bottom:12px}.raw-padding-bottom-16{padding-bottom:16px}.raw-padding-bottom-20{padding-bottom:20px}.raw-padding-bottom-24{padding-bottom:24px}.raw-padding-bottom-28{padding-bottom:28px}.raw-padding-bottom-32{padding-bottom:32px}.raw-padding-bottom-36{padding-bottom:36px}.raw-padding-bottom-40{padding-bottom:40px}.raw-padding-bottom-44{padding-bottom:44px}.raw-padding-bottom-48{padding-bottom:48px}.raw-padding-bottom-52{padding-bottom:52px}.raw-padding-bottom-56{padding-bottom:56px}.raw-padding-bottom-60{padding-bottom:60px}.raw-padding-bottom-64{padding-bottom:64px}.raw-padding-bottom-68{padding-bottom:68px}.raw-padding-bottom-72{padding-bottom:72px}.raw-padding-bottom-76{padding-bottom:76px}.raw-padding-bottom-80{padding-bottom:80px}.raw-padding-bottom-84{padding-bottom:84px}.raw-padding-bottom-88{padding-bottom:88px}.raw-padding-bottom-92{padding-bottom:92px}.raw-padding-bottom-96{padding-bottom:96px}.raw-padding-bottom-100{padding-bottom:100px}.raw-padding-bottom-104{padding-bottom:104px}.raw-padding-bottom-108{padding-bottom:108px}.raw-padding-bottom-112{padding-bottom:112px}.raw-padding-bottom-116{padding-bottom:116px}.raw-padding-bottom-120{padding-bottom:120px}.raw-padding-bottom-124{padding-bottom:124px}.raw-padding-bottom-128{padding-bottom:128px}.raw-padding-bottom-132{padding-bottom:132px}.raw-padding-bottom-136{padding-bottom:136px}.raw-padding-bottom-140{padding-bottom:140px}.raw-padding-bottom-144{padding-bottom:144px}.raw-padding-bottom-148{padding-bottom:148px}.raw-padding-bottom-152{padding-bottom:152px}.raw-padding-bottom-156{padding-bottom:156px}.raw-padding-bottom-160{padding-bottom:160px}.raw-padding-bottom-164{padding-bottom:164px}.raw-padding-bottom-168{padding-bottom:168px}.raw-padding-bottom-172{padding-bottom:172px}.raw-padding-bottom-176{padding-bottom:176px}.raw-padding-bottom-180{padding-bottom:180px}.raw-padding-bottom-184{padding-bottom:184px}.raw-padding-bottom-188{padding-bottom:188px}.raw-padding-bottom-192{padding-bottom:192px}.raw-padding-bottom-196{padding-bottom:196px}.raw-padding-bottom-200{padding-bottom:200px}.raw-padding-bottom-204{padding-bottom:204px}.raw-padding-bottom-208{padding-bottom:208px}.raw-padding-bottom-212{padding-bottom:212px}.raw-padding-bottom-216{padding-bottom:216px}.raw-padding-bottom-220{padding-bottom:220px}.raw-padding-bottom-224{padding-bottom:224px}.raw-padding-bottom-228{padding-bottom:228px}.raw-padding-bottom-232{padding-bottom:232px}.raw-padding-bottom-236{padding-bottom:236px}.raw-padding-bottom-240{padding-bottom:240px}.raw-padding-bottom-244{padding-bottom:244px}.raw-padding-bottom-248{padding-bottom:248px}.raw-padding-bottom-252{padding-bottom:252px}.raw-padding-bottom-256{padding-bottom:256px}.raw-padding-bottom-260{padding-bottom:260px}.raw-padding-bottom-264{padding-bottom:264px}.raw-padding-bottom-268{padding-bottom:268px}.raw-padding-bottom-272{padding-bottom:272px}.raw-padding-bottom-276{padding-bottom:276px}.raw-padding-bottom-280{padding-bottom:280px}.raw-padding-bottom-284{padding-bottom:284px}.raw-padding-bottom-288{padding-bottom:288px}.raw-padding-bottom-292{padding-bottom:292px}.raw-padding-bottom-296{padding-bottom:296px}.raw-padding-bottom-300{padding-bottom:300px}.raw-padding-bottom-304{padding-bottom:304px}.raw-padding-bottom-308{padding-bottom:308px}.raw-padding-bottom-312{padding-bottom:312px}.raw-padding-bottom-316{padding-bottom:316px}.raw-padding-bottom-320{padding-bottom:320px}.raw-padding-bottom-324{padding-bottom:324px}.raw-padding-bottom-328{padding-bottom:328px}.raw-padding-bottom-332{padding-bottom:332px}.raw-padding-bottom-336{padding-bottom:336px}.raw-padding-bottom-340{padding-bottom:340px}.raw-padding-bottom-344{padding-bottom:344px}.raw-padding-bottom-348{padding-bottom:348px}.raw-padding-bottom-352{padding-bottom:352px}.raw-padding-bottom-356{padding-bottom:356px}.raw-padding-bottom-360{padding-bottom:360px}.raw-padding-bottom-364{padding-bottom:364px}.raw-padding-bottom-368{padding-bottom:368px}.raw-padding-bottom-372{padding-bottom:372px}.raw-padding-bottom-376{padding-bottom:376px}.raw-padding-bottom-380{padding-bottom:380px}.raw-padding-bottom-384{padding-bottom:384px}.raw-padding-bottom-388{padding-bottom:388px}.raw-padding-bottom-392{padding-bottom:392px}.raw-padding-bottom-396{padding-bottom:396px}.raw-padding-bottom-400{padding-bottom:400px}.raw-padding-4{padding:4px}.raw-padding-8{padding:8px}.raw-padding-12{padding:12px}.raw-padding-16{padding:16px}.raw-padding-20{padding:20px}.raw-padding-24{padding:24px}.raw-padding-28{padding:28px}.raw-padding-32{padding:32px}.raw-padding-36{padding:36px}.raw-padding-40{padding:40px}.raw-padding-44{padding:44px}.raw-padding-48{padding:48px}.raw-padding-52{padding:52px}.raw-padding-56{padding:56px}.raw-padding-60{padding:60px}.raw-padding-64{padding:64px}.raw-padding-68{padding:68px}.raw-padding-72{padding:72px}.raw-padding-76{padding:76px}.raw-padding-80{padding:80px}.raw-padding-84{padding:84px}.raw-padding-88{padding:88px}.raw-padding-92{padding:92px}.raw-padding-96{padding:96px}.raw-padding-100{padding:100px}.raw-padding-104{padding:104px}.raw-padding-108{padding:108px}.raw-padding-112{padding:112px}.raw-padding-116{padding:116px}.raw-padding-120{padding:120px}.raw-padding-124{padding:124px}.raw-padding-128{padding:128px}.raw-padding-132{padding:132px}.raw-padding-136{padding:136px}.raw-padding-140{padding:140px}.raw-padding-144{padding:144px}.raw-padding-148{padding:148px}.raw-padding-152{padding:152px}.raw-padding-156{padding:156px}.raw-padding-160{padding:160px}.raw-padding-164{padding:164px}.raw-padding-168{padding:168px}.raw-padding-172{padding:172px}.raw-padding-176{padding:176px}.raw-padding-180{padding:180px}.raw-padding-184{padding:184px}.raw-padding-188{padding:188px}.raw-padding-192{padding:192px}.raw-padding-196{padding:196px}.raw-padding-200{padding:200px}.raw-padding-204{padding:204px}.raw-padding-208{padding:208px}.raw-padding-212{padding:212px}.raw-padding-216{padding:216px}.raw-padding-220{padding:220px}.raw-padding-224{padding:224px}.raw-padding-228{padding:228px}.raw-padding-232{padding:232px}.raw-padding-236{padding:236px}.raw-padding-240{padding:240px}.raw-padding-244{padding:244px}.raw-padding-248{padding:248px}.raw-padding-252{padding:252px}.raw-padding-256{padding:256px}.raw-padding-260{padding:260px}.raw-padding-264{padding:264px}.raw-padding-268{padding:268px}.raw-padding-272{padding:272px}.raw-padding-276{padding:276px}.raw-padding-280{padding:280px}.raw-padding-284{padding:284px}.raw-padding-288{padding:288px}.raw-padding-292{padding:292px}.raw-padding-296{padding:296px}.raw-padding-300{padding:300px}.raw-padding-304{padding:304px}.raw-padding-308{padding:308px}.raw-padding-312{padding:312px}.raw-padding-316{padding:316px}.raw-padding-320{padding:320px}.raw-padding-324{padding:324px}.raw-padding-328{padding:328px}.raw-padding-332{padding:332px}.raw-padding-336{padding:336px}.raw-padding-340{padding:340px}.raw-padding-344{padding:344px}.raw-padding-348{padding:348px}.raw-padding-352{padding:352px}.raw-padding-356{padding:356px}.raw-padding-360{padding:360px}.raw-padding-364{padding:364px}.raw-padding-368{padding:368px}.raw-padding-372{padding:372px}.raw-padding-376{padding:376px}.raw-padding-380{padding:380px}.raw-padding-384{padding:384px}.raw-padding-388{padding:388px}.raw-padding-392{padding:392px}.raw-padding-396{padding:396px}.raw-padding-400{padding:400px}.raw-padding-auto{margin:0 auto}.raw-padding-top-0{padding-top:0}.raw-padding-top-5{padding-top:5px}.raw-padding-top-10{padding-top:10px}.raw-padding-top-15{padding-top:15px}.raw-padding-top-20{padding-top:20px}.raw-padding-top-25{padding-top:25px}.raw-padding-top-30{padding-top:30px}.raw-padding-top-35{padding-top:35px}.raw-padding-top-40{padding-top:40px}.raw-padding-top-45{padding-top:45px}.raw-padding-top-50{padding-top:50px}.raw-padding-top-55{padding-top:55px}.raw-padding-top-60{padding-top:60px}.raw-padding-top-65{padding-top:65px}.raw-padding-top-70{padding-top:70px}.raw-padding-top-75{padding-top:75px}.raw-padding-top-80{padding-top:80px}.raw-padding-top-85{padding-top:85px}.raw-padding-top-90{padding-top:90px}.raw-padding-top-95{padding-top:95px}.raw-padding-top-100{padding-top:100px}.raw-padding-top-105{padding-top:105px}.raw-padding-top-110{padding-top:110px}.raw-padding-top-115{padding-top:115px}.raw-padding-top-120{padding-top:120px}.raw-padding-top-125{padding-top:125px}.raw-padding-top-130{padding-top:130px}.raw-padding-top-135{padding-top:135px}.raw-padding-top-140{padding-top:140px}.raw-padding-top-145{padding-top:145px}.raw-padding-top-150{padding-top:150px}.raw-padding-top-155{padding-top:155px}.raw-padding-top-160{padding-top:160px}.raw-padding-top-165{padding-top:165px}.raw-padding-top-170{padding-top:170px}.raw-padding-top-175{padding-top:175px}.raw-padding-top-180{padding-top:180px}.raw-padding-top-185{padding-top:185px}.raw-padding-top-190{padding-top:190px}.raw-padding-top-195{padding-top:195px}.raw-padding-top-200{padding-top:200px}.raw-padding-right-0{padding-right:0}.raw-padding-right-5{padding-right:5px}.raw-padding-right-10{padding-right:10px}.raw-padding-right-15{padding-right:15px}.raw-padding-right-20{padding-right:20px}.raw-padding-right-25{padding-right:25px}.raw-padding-right-30{padding-right:30px}.raw-padding-right-35{padding-right:35px}.raw-padding-right-40{padding-right:40px}.raw-padding-right-45{padding-right:45px}.raw-padding-right-50{padding-right:50px}.raw-padding-right-55{padding-right:55px}.raw-padding-right-60{padding-right:60px}.raw-padding-right-65{padding-right:65px}.raw-padding-right-70{padding-right:70px}.raw-padding-right-75{padding-right:75px}.raw-padding-right-80{padding-right:80px}.raw-padding-right-85{padding-right:85px}.raw-padding-right-90{padding-right:90px}.raw-padding-right-95{padding-right:95px}.raw-padding-right-100{padding-right:100px}.raw-padding-right-105{padding-right:105px}.raw-padding-right-110{padding-right:110px}.raw-padding-right-115{padding-right:115px}.raw-padding-right-120{padding-right:120px}.raw-padding-right-125{padding-right:125px}.raw-padding-right-130{padding-right:130px}.raw-padding-right-135{padding-right:135px}.raw-padding-right-140{padding-right:140px}.raw-padding-right-145{padding-right:145px}.raw-padding-right-150{padding-right:150px}.raw-padding-right-155{padding-right:155px}.raw-padding-right-160{padding-right:160px}.raw-padding-right-165{padding-right:165px}.raw-padding-right-170{padding-right:170px}.raw-padding-right-175{padding-right:175px}.raw-padding-right-180{padding-right:180px}.raw-padding-right-185{padding-right:185px}.raw-padding-right-190{padding-right:190px}.raw-padding-right-195{padding-right:195px}.raw-padding-right-200{padding-right:200px}.raw-padding-bottom-0{padding-bottom:0}.raw-padding-bottom-5{padding-bottom:5px}.raw-padding-bottom-10{padding-bottom:10px}.raw-padding-bottom-15{padding-bottom:15px}.raw-padding-bottom-20{padding-bottom:20px}.raw-padding-bottom-25{padding-bottom:25px}.raw-padding-bottom-30{padding-bottom:30px}.raw-padding-bottom-35{padding-bottom:35px}.raw-padding-bottom-40{padding-bottom:40px}.raw-padding-bottom-45{padding-bottom:45px}.raw-padding-bottom-50{padding-bottom:50px}.raw-padding-bottom-55{padding-bottom:55px}.raw-padding-bottom-60{padding-bottom:60px}.raw-padding-bottom-65{padding-bottom:65px}.raw-padding-bottom-70{padding-bottom:70px}.raw-padding-bottom-75{padding-bottom:75px}.raw-padding-bottom-80{padding-bottom:80px}.raw-padding-bottom-85{padding-bottom:85px}.raw-padding-bottom-90{padding-bottom:90px}.raw-padding-bottom-95{padding-bottom:95px}.raw-padding-bottom-100{padding-bottom:100px}.raw-padding-bottom-105{padding-bottom:105px}.raw-padding-bottom-110{padding-bottom:110px}.raw-padding-bottom-115{padding-bottom:115px}.raw-padding-bottom-120{padding-bottom:120px}.raw-padding-bottom-125{padding-bottom:125px}.raw-padding-bottom-130{padding-bottom:130px}.raw-padding-bottom-135{padding-bottom:135px}.raw-padding-bottom-140{padding-bottom:140px}.raw-padding-bottom-145{padding-bottom:145px}.raw-padding-bottom-150{padding-bottom:150px}.raw-padding-bottom-155{padding-bottom:155px}.raw-padding-bottom-160{padding-bottom:160px}.raw-padding-bottom-165{padding-bottom:165px}.raw-padding-bottom-170{padding-bottom:170px}.raw-padding-bottom-175{padding-bottom:175px}.raw-padding-bottom-180{padding-bottom:180px}.raw-padding-bottom-185{padding-bottom:185px}.raw-padding-bottom-190{padding-bottom:190px}.raw-padding-bottom-195{padding-bottom:195px}.raw-padding-bottom-200{padding-bottom:200px}.raw-padding-left-0{padding-left:0}.raw-padding-left-5{padding-left:5px}.raw-padding-left-10{padding-left:10px}.raw-padding-left-15{padding-left:15px}.raw-padding-left-20{padding-left:20px}.raw-padding-left-25{padding-left:25px}.raw-padding-left-30{padding-left:30px}.raw-padding-left-35{padding-left:35px}.raw-padding-left-40{padding-left:40px}.raw-padding-left-45{padding-left:45px}.raw-padding-left-50{padding-left:50px}.raw-padding-left-55{padding-left:55px}.raw-padding-left-60{padding-left:60px}.raw-padding-left-65{padding-left:65px}.raw-padding-left-70{padding-left:70px}.raw-padding-left-75{padding-left:75px}.raw-padding-left-80{padding-left:80px}.raw-padding-left-85{padding-left:85px}.raw-padding-left-90{padding-left:90px}.raw-padding-left-95{padding-left:95px}.raw-padding-left-100{padding-left:100px}.raw-padding-left-105{padding-left:105px}.raw-padding-left-110{padding-left:110px}.raw-padding-left-115{padding-left:115px}.raw-padding-left-120{padding-left:120px}.raw-padding-left-125{padding-left:125px}.raw-padding-left-130{padding-left:130px}.raw-padding-left-135{padding-left:135px}.raw-padding-left-140{padding-left:140px}.raw-padding-left-145{padding-left:145px}.raw-padding-left-150{padding-left:150px}.raw-padding-left-155{padding-left:155px}.raw-padding-left-160{padding-left:160px}.raw-padding-left-165{padding-left:165px}.raw-padding-left-170{padding-left:170px}.raw-padding-left-175{padding-left:175px}.raw-padding-left-180{padding-left:180px}.raw-padding-left-185{padding-left:185px}.raw-padding-left-190{padding-left:190px}.raw-padding-left-195{padding-left:195px}.raw-padding-left-200{padding-left:200px}.raw-padding-0{padding:0}.raw-padding-5{padding:5px}.raw-padding-10{padding:10px}.raw-padding-15{padding:15px}.raw-padding-20{padding:20px}.raw-padding-25{padding:25px}.raw-padding-30{padding:30px}.raw-padding-35{padding:35px}.raw-padding-40{padding:40px}.raw-padding-45{padding:45px}.raw-padding-50{padding:50px}.raw-padding-55{padding:55px}.raw-padding-60{padding:60px}.raw-padding-65{padding:65px}.raw-padding-70{padding:70px}.raw-padding-75{padding:75px}.raw-padding-80{padding:80px}.raw-padding-85{padding:85px}.raw-padding-90{padding:90px}.raw-padding-95{padding:95px}.raw-padding-100{padding:100px}.raw-padding-105{padding:105px}.raw-padding-110{padding:110px}.raw-padding-115{padding:115px}.raw-padding-120{padding:120px}.raw-padding-125{padding:125px}.raw-padding-130{padding:130px}.raw-padding-135{padding:135px}.raw-padding-140{padding:140px}.raw-padding-145{padding:145px}.raw-padding-150{padding:150px}.raw-padding-155{padding:155px}.raw-padding-160{padding:160px}.raw-padding-165{padding:165px}.raw-padding-170{padding:170px}.raw-padding-175{padding:175px}.raw-padding-180{padding:180px}.raw-padding-185{padding:185px}.raw-padding-190{padding:190px}.raw-padding-195{padding:195px}.raw-padding-200{padding:200px}.raw-left{float:left}.raw-right{float:right}.raw-none{float:none}.raw-pos-relative{position:relative}.raw-pos-absolute{position:absolute}.raw1{width:1%}.raw2{width:2%}.raw3{width:3%}.raw4{width:4%}.raw5{width:5%}.raw6{width:6%}.raw7{width:7%}.raw8{width:8%}.raw9{width:9%}.raw10{width:10%}.raw11{width:11%}.raw12{width:12%}.raw13{width:13%}.raw14{width:14%}.raw15{width:15%}.raw16{width:16%}.raw17{width:17%}.raw18{width:18%}.raw19{width:19%}.raw20{width:20%}.raw21{width:21%}.raw22{width:22%}.raw23{width:23%}.raw24{width:24%}.raw25{width:25%}.raw26{width:26%}.raw27{width:27%}.raw28{width:28%}.raw29{width:29%}.raw30{width:30%}.raw31{width:31%}.raw32{width:32%}.raw33{width:33%}.raw34{width:34%}.raw35{width:35%}.raw36{width:36%}.raw37{width:37%}.raw38{width:38%}.raw39{width:39%}.raw40{width:40%}.raw41{width:41%}.raw42{width:42%}.raw43{width:43%}.raw44{width:44%}.raw45{width:45%}.raw46{width:46%}.raw47{width:47%}.raw48{width:48%}.raw49{width:49%}.raw50{width:50%}.raw51{width:51%}.raw52{width:52%}.raw53{width:53%}.raw54{width:54%}.raw55{width:55%}.raw56{width:56%}.raw57{width:57%}.raw58{width:58%}.raw59{width:59%}.raw60{width:60%}.raw61{width:61%}.raw62{width:62%}.raw63{width:63%}.raw64{width:64%}.raw65{width:65%}.raw66{width:66%}.raw67{width:67%}.raw68{width:68%}.raw69{width:69%}.raw70{width:70%}.raw71{width:71%}.raw72{width:72%}.raw73{width:73%}.raw74{width:74%}.raw75{width:75%}.raw76{width:76%}.raw77{width:77%}.raw78{width:78%}.raw79{width:79%}.raw80{width:80%}.raw81{width:81%}.raw82{width:82%}.raw83{width:83%}.raw84{width:84%}.raw85{width:85%}.raw86{width:86%}.raw87{width:87%}.raw88{width:88%}.raw89{width:89%}.raw90{width:90%}.raw91{width:91%}.raw92{width:92%}.raw93{width:93%}.raw94{width:94%}.raw95{width:95%}.raw96{width:96%}.raw97{width:97%}.raw98{width:98%}.raw99{width:99%}.raw100{width:100%}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.redactor-animate-hide{display:none!important}.redactor-fadeIn{opacity:0;animation:fadeIn .5s ease-in-out}.redactor-fadeOut{opacity:1;animation:fadeOut .5s ease-in-out}@font-face{font-family:Redactor;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\");font-weight:400;font-style:normal}[class*=\" re-icon-\"],[class^=re-icon-]{font-family:Redactor!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.re-icon-aligncenter:before{content:\"\\e900\"}.re-icon-alignleft:before,.re-icon-alignment:before{content:\"\\e901\"}.re-icon-alignright:before{content:\"\\e902\"}.re-icon-bold:before{content:\"\\e903\"}.re-icon-bookmark:before{content:\"\\e904\"}.re-icon-clips:before{content:\"\\e905\"}.re-icon-codesnippets:before{content:\"\\e906\"}.re-icon-deleted:before{content:\"\\e907\"}.re-icon-expand:before{content:\"\\e908\"}.re-icon-file:before{content:\"\\e909\"}.re-icon-fontcolor:before{content:\"\\e90a\"}.re-icon-fontfamily:before{content:\"\\e90b\"}.re-icon-fontsize:before{content:\"\\e90c\"}.re-icon-format:before{content:\"\\e90d\"}.re-icon-html:before{content:\"\\e90e\"}.re-icon-imagecenter:before{content:\"\\e90f\"}.re-icon-imageleft:before{content:\"\\e910\"}.re-icon-imageright:before{content:\"\\e911\"}.re-icon-image:before{content:\"\\e912\"}.re-icon-indent:before{content:\"\\e913\"}.re-icon-inline:before{content:\"\\e914\"}.re-icon-italic:before{content:\"\\e915\"}.re-icon-horizontalrule:before,.re-icon-line:before{content:\"\\e916\"}.re-icon-link:before{content:\"\\e917\"}.re-icon-ol:before,.re-icon-ordered:before{content:\"\\e918\"}.re-icon-outdent:before{content:\"\\e919\"}.re-icon-properties:before{content:\"\\e91a\"}.re-icon-readmore:before{content:\"\\e91b\"}.re-icon-redo:before{content:\"\\e91c\"}.re-icon-retract:before{content:\"\\e91d\"}.re-icon-specialcharacters:before{content:\"\\e91e\"}.re-icon-sub:before{content:\"\\e91f\"}.re-icon-sup:before{content:\"\\e920\"}.re-icon-table:before{content:\"\\e921\"}.re-icon-textdirection:before{content:\"\\e922\"}.re-icon-toggle:before{content:\"\\e923\"}.re-icon-underline:before{content:\"\\e924\"}.re-icon-undo:before{content:\"\\e925\"}.re-icon-lists:before,.re-icon-ul:before,.re-icon-unordered:before{content:\"\\e926\"}.re-icon-variable:before{content:\"\\e927\"}.re-icon-video:before{content:\"\\e928\"}.re-icon-widget:before{content:\"\\e929\"}.redactor-box,.redactor-box textarea{z-index:auto}.redactor-box{position:relative;box-sizing:border-box}.redactor-box.redactor-styles-on{margin:0;padding:0;background:#fff;border:1px solid rgba(0,0,0,.075);border-radius:3px;box-shadow:none}.redactor-box.redactor-inline{position:static}.redactor-focus.redactor-styles-on,.redactor-focus:focus.redactor-styles-on{border-color:#82b7ec!important}.redactor-over:hover.redactor-styles-on{border-color:#ee698a!important}.redactor-source-view,.redactor-source-view.redactor-styles-on{border-color:#000!important}.redactor-in{position:relative;overflow:auto;white-space:normal;box-sizing:border-box}.redactor-in:focus{outline:0}.redactor-inline .redactor-in{overflow:hidden}.redactor-in *,.redactor-read-only *{outline:0!important}.redactor-in blockquote:empty,.redactor-in h1:empty,.redactor-in h2:empty,.redactor-in h3:empty,.redactor-in h4:empty,.redactor-in h5:empty,.redactor-in h6:empty,.redactor-in p:empty{min-height:1.5em}.redactor-in b:empty,.redactor-in em:empty,.redactor-in i:empty,.redactor-in ins:empty,.redactor-in span:empty,.redactor-in strong:empty,.redactor-in sub:empty,.redactor-in sup:empty,.redactor-in u:empty{display:inline-block;min-width:1px;min-height:1rem}.redactor-in table{empty-cells:show}.redactor-in li figure{width:auto;display:inline-block;margin:0;vertical-align:top}.redactor-in figcaption:focus,.redactor-in figure code:focus,.redactor-in figure pre:focus,.redactor-in table td:focus,.redactor-in table th:focus{outline:0}.redactor-in figure[data-redactor-type=line]{margin-top:1em;padding:6px 0;vertical-align:baseline}.redactor-in figure[data-redactor-type=line] hr{margin:0;height:3px;border:none;background:rgba(0,0,0,.1)}.redactor-component{position:relative}.redactor-component[data-redactor-type=video]:before,.redactor-component[data-redactor-type=widget]:before{width:100%;height:100%;content:\"\";display:block;position:absolute;z-index:1}.redactor-component[data-redactor-type=image],.redactor-component[data-redactor-type=widget]{clear:both}.redactor-component[data-redactor-type=variable]{white-space:nowrap;background:rgba(0,125,255,.75);color:#fff;display:inline-block;padding:3px 6px;line-height:1;border-radius:4px;cursor:pointer}.redactor-component-active{outline:5px solid rgba(0,125,255,.5)!important}.redactor-component-active[data-redactor-type=image]{outline:0!important}.redactor-component-active[data-redactor-type=image] img{outline:5px solid rgba(0,125,255,.5)!important}.redactor-component-active[data-redactor-type=variable]{outline:0!important;background:#ee698a}.redactor-component-active[data-redactor-type=video]{outline:0!important}.redactor-component-active[data-redactor-type=video] iframe{outline:5px solid rgba(0,125,255,.5)!important}.redactor-blur.redactor-styles-on .redactor-component-active{outline:5px solid #ddd!important}.redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=image]{outline:0!important}.redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=image] img{outline:5px solid #ddd!important}.redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=video]{outline:0!important}.redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=video] iframe{outline:5px solid #ddd!important}.redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=variable]{outline:0!important;background:#ddd}.redactor-component-caret{position:absolute;left:-9999px}.redactor-textnodes-wrapper{display:inline-block}#redactor-image-resizer{position:absolute;background-color:rgba(0,125,255,.9);width:13px;height:13px;border:1px solid #fff;cursor:move;cursor:nwse-resize}.redactor-file-item{display:inline-block;line-height:1;padding:4px 12px;border-radius:16px;border:1px solid rgba(0,0,0,.2)}.redactor-file-remover{margin-left:2px;position:relative;right:-3px;display:inline-block;padding:0 3px;cursor:pointer;opacity:.5}.redactor-file-remover:hover{opacity:1}#redactor-overlay{position:fixed;z-index:1051;top:0;left:0;right:0;bottom:0;background-color:rgba(16,16,18,.18)}#redactor-overlay>.redactor-close{position:fixed;top:1rem;right:1rem}.redactor-source,.redactor-source:focus,.redactor-source:hover{text-align:left;box-sizing:border-box;font-family:Consolas,Menlo,Monaco,\"Courier New\",monospace;width:100%;display:block;margin:0;border:none;box-shadow:none;border-radius:0;background:#252525;color:#ccc;font-size:15px;outline:0;padding:10px 18px 20px 18px;line-height:1.5;resize:vertical}.redactor-box[dir=rtl] .redactor-source{direction:ltr}.redactor-placeholder:before{position:absolute;content:attr(placeholder);color:rgba(0,0,0,.4);font-weight:400}.redactor-in figcaption[placeholder]:empty:before{content:attr(placeholder);color:rgba(0,0,0,.4);font-weight:400}.redactor-in figcaption[placeholder]:empty:focus:before{content:\"\"}.redactor-statusbar{font-family:Consolas,Menlo,Monaco,\"Courier New\",monospace;margin:0;padding:8px 10px;position:relative;overflow:hidden;list-style:none;background:#f8f8f8;box-sizing:border-box;border:none}.redactor-statusbar li{float:left;font-size:12px;color:rgba(0,0,0,.5);padding:0 10px;line-height:16px;border-right:1px solid rgba(0,0,0,.1)}.redactor-statusbar li:last-child{border-right-color:transparent}.redactor-statusbar a{color:rgba(0,0,0,.5);text-decoration:underline}.redactor-statusbar a:hover{color:#f03c69;text-decoration:underline}.redactor-statusbar:empty{display:none}.redactor-toolbar-wrapper{position:relative}.redactor-air,.redactor-toolbar{z-index:100;font-family:\"Trebuchet MS\",\"Helvetica Neue\",Helvetica,Tahoma,sans-serif;position:relative;margin:0!important;padding:0;list-style:none!important;line-height:1!important;background:0 0;border:none;box-sizing:border-box}.redactor-box.redactor-styles-on .redactor-toolbar{padding:18px 16px 0 16px}.redactor-air a,.redactor-toolbar a{display:inline-block;box-sizing:border-box;font-size:14px;text-align:center;padding:10px 15px 9px 15px;cursor:pointer;outline:0;border:none;vertical-align:middle;text-decoration:none;zoom:1;position:relative;color:rgba(0,0,0,.85);border-radius:2px;background:rgba(255,255,255,.97);box-shadow:0 1px 2px rgba(0,0,0,.22);margin-right:5px;margin-bottom:4px}.redactor-air a.re-button-icon,.redactor-toolbar a.re-button-icon{font-size:16px;padding:9px 15px 6px 15px}.redactor-air a:hover,.redactor-toolbar a:hover{outline:0;color:#fff;background:#449aef}.redactor-toolbar a.redactor-button-active{background:rgba(245,245,245,.95);color:rgba(0,0,0,.4)}.redactor-air a.redactor-button-disabled,.redactor-toolbar a.redactor-button-disabled{opacity:.3}.redactor-air a.redactor-button-disabled:hover,.redactor-toolbar a.redactor-button-disabled:hover{color:#333;outline:0;background-color:transparent!important;cursor:default}.redactor-source-view .redactor-toolbar{background:#252525}.redactor-source-view .redactor-toolbar a{background:#000;color:#fff}.redactor-source-view .redactor-toolbar a:hover{background:#449aef}.redactor-source-view .redactor-toolbar a.redactor-button-disabled:hover{color:#fff!important;background-color:#000!important}.re-button-tooltip{display:none;position:absolute;white-space:nowrap;top:0;z-index:1052;background:rgba(0,0,0,.9);border-radius:3px;padding:5px 9px;color:rgba(255,255,255,.8);font-size:12px;line-height:1;font-family:Consolas,Menlo,Monaco,\"Courier New\",monospace}.re-button-tooltip:after{bottom:100%;left:50%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none;border-color:none;border-bottom-color:rgba(0,0,0,.9);border-width:4px;margin-left:-4px}.redactor-toolbar-wrapper-air{position:absolute;z-index:100}.redactor-air{padding:6px 3px 2px 8px;max-width:576px;min-width:200px;border-radius:4px;background:rgba(0,0,0,.97)}.redactor-air a{background:rgba(37,37,37,.95);box-shadow:none;color:rgba(255,255,255,.9)}.redactor-air a:hover{background:#3d79f2}.redactor-air a.redactor-button-active{background-color:rgba(255,255,255,.15);color:#fff}.redactor-air a.redactor-button-disabled:hover{color:#fff}.redactor-air-helper{position:absolute;right:0;top:0;line-height:1;font-size:15px;color:#000;background:rgba(255,255,255,.85);border-bottom-left-radius:4px;padding:7px 10px 6px 10px;cursor:pointer}.redactor-air-helper:hover{background:#fff}.redactor-voice-label{display:none}.redactor-context-toolbar{position:absolute;top:0;left:0;z-index:1051;background-color:rgba(0,0,0,.95);color:#555;border-radius:4px;padding:6px 18px 7px 18px;line-height:1.5;font-family:Consolas,Menlo,Monaco,\"Courier New\",monospace}.redactor-context-toolbar a{font-size:12px;color:#ccc;text-decoration:none;display:inline-block;padding:2px 0 1px 12px}.redactor-context-toolbar a:first-child{padding-left:0}.redactor-context-toolbar a i{position:relative;top:3px;font-size:16px}.redactor-context-toolbar a:before{content:'';padding-left:10px;border-left:1px solid rgba(255,255,255,.3)}.redactor-context-toolbar a:hover{color:#fff}.redactor-context-toolbar a:first-child:before{padding-left:0;border-left:none}.redactor-context-toolbar[dir=rtl] a{padding:2px 12px 1px 0}.redactor-context-toolbar[dir=rtl] a:first-child{padding-right:0}.redactor-context-toolbar[dir=rtl] a:before{padding-left:0;padding-right:10px;border-right:1px solid rgba(255,255,255,.3);border-left:none}.redactor-context-toolbar[dir=rtl] a:first-child:before{padding-right:0;border-right:none}.redactor-dropdown{font-family:\"Trebuchet MS\",\"Helvetica Neue\",Helvetica,Tahoma,sans-serif;display:none;position:absolute;z-index:1051;background-color:#fff;box-shadow:0 4px 14px rgba(0,0,0,.2);border-radius:2px;width:264px;max-height:250px;margin:0;margin-top:-1px;overflow:auto;font-size:15px;padding:0}.redactor-dropdown a span{display:inline-block;line-height:1;padding:2px 4px;border-radius:3px}.redactor-dropdown a{display:block;text-decoration:none;padding:10px 8px;white-space:nowrap;border-bottom:1px solid rgba(0,0,0,.05)}.redactor-dropdown a:last-child{border-bottom-color:transparent}.redactor-dropdown a{color:#000}.redactor-dropdown a:hover{color:#fff!important;background-color:#449aef!important}.redactor-dropdown a.redactor-dropdown-item-disabled{color:rgba(0,0,0,.4);background:#fff}.redactor-dropdown-cells{margin:10px auto}.redactor-dropdown-cells a,.redactor-dropdown-cells span{float:left;cursor:pointer;box-sizing:border-box;text-align:center;padding:0;margin:0;font-size:14px}.redactor-dropdown-selector{display:flex;text-align:center}.redactor-dropdown-selector span{flex-grow:1;font-size:12px;padding:8px;cursor:pointer}.redactor-dropdown-selector span:hover{background:#eee}.redactor-dropdown-selector span.active{cursor:text;color:rgba(0,0,0,.3);background:#eee}.redactor-dropdown-format .redactor-dropdown-item-blockquote{color:rgba(0,0,0,.4);font-style:italic}.redactor-dropdown-format .redactor-dropdown-item-pre{font-family:monospace,sans-serif}.redactor-dropdown-format .redactor-dropdown-item-h1{font-size:40px;font-weight:700;line-height:32px}.redactor-dropdown-format .redactor-dropdown-item-h2{font-size:32px;font-weight:700;line-height:32px}.redactor-dropdown-format .redactor-dropdown-item-h3{font-size:24px;font-weight:700;line-height:24px}.redactor-dropdown-format .redactor-dropdown-item-h4{font-size:21px;font-weight:700;line-height:24px}.redactor-dropdown-format .redactor-dropdown-item-h5{font-size:18px;font-weight:700;line-height:24px}.redactor-dropdown-format .redactor-dropdown-item-h6{font-size:14px;text-transform:uppercase;font-weight:700;line-height:24px}#redactor-modal{position:fixed;top:0;left:0;bottom:0;right:0;overflow-x:hidden;overflow-y:auto;z-index:1051;font-family:\"Trebuchet MS\",\"Helvetica Neue\",Helvetica,Tahoma,sans-serif;line-height:24px}.redactor-modal{position:relative;margin:16px auto;padding:0;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.07),0 2px 15px rgba(80,80,80,.25);border-radius:3px;color:#000}.redactor-modal form{margin:0;padding:0;box-sizing:border-box}.redactor-modal input,.redactor-modal select,.redactor-modal textarea{box-sizing:border-box;display:block;width:100%;font-family:inherit;font-size:16px;height:40px;outline:0;vertical-align:middle;background-color:#fff;border:1px solid #cacfd4;border-radius:.1875em;box-shadow:none;padding:0 .5em}.redactor-modal textarea{padding:.5em;height:auto;line-height:1.5;vertical-align:top}.redactor-modal select{-webkit-appearance:none;background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"12\" viewBox=\"0 0 9 12\"><path fill=\"rgba(0, 0, 0, .4);\" d=\"M0.722,4.823L-0.01,4.1,4.134-.01,4.866,0.716Zm7.555,0L9.01,4.1,4.866-.01l-0.732.726ZM0.722,7.177L-0.01,7.9,4.134,12.01l0.732-.726Zm7.555,0L9.01,7.9,4.866,12.01l-0.732-.726Z\"/></svg>');background-repeat:no-repeat;background-position:right .65em center;padding-right:28px}.redactor-modal select[multiple]{background-image:none;height:auto;padding:.5em .75em}.redactor-modal input[type=file]{width:auto;border:none;padding:0;height:auto;background:0 0;box-shadow:none;display:inline-block}.redactor-modal input[type=checkbox],.redactor-modal input[type=radio]{display:inline-block;width:auto;height:auto;padding:0;vertical-align:middle;position:relative;bottom:.15rem;font-size:115%;margin-right:3px}.redactor-modal .form-item{margin-bottom:20px}.redactor-modal .form-item:last-child{margin-bottom:0}.redactor-modal fieldset{border:1px solid rgba(0,0,0,.1);border-radius:3px;padding:16px;padding-bottom:20px;margin-bottom:20px}.redactor-modal fieldset .form-item{margin-bottom:12px}.redactor-modal label{display:block;color:#555;margin-bottom:.25em;font-size:14px}.redactor-modal label .desc,.redactor-modal label .error,.redactor-modal label .success{text-transform:none;font-weight:400}.redactor-modal label.checkbox{font-size:16px;line-height:1.5;cursor:pointer;color:inherit}.redactor-modal .form-checkboxes label.checkbox{display:inline-block;margin-right:1em}.redactor-modal input:hover,.redactor-modal select:hover,.redactor-modal textarea:hover{outline:0;background-color:#fff;border-color:#969fa9;box-shadow:none}.redactor-modal input:focus,.redactor-modal select:focus,.redactor-modal textarea:focus{transition:all linear .2s;outline:0;background-color:#fff;border-color:rgba(0,125,255,.5);box-shadow:0 0 3px rgba(0,125,255,.5)}.redactor-modal input.error,.redactor-modal select.error,.redactor-modal textarea.error{background-color:rgba(255,50,101,.1);border:1px solid #ff7f9e}.redactor-modal input.error:focus,.redactor-modal select.error:focus,.redactor-modal textarea.error:focus{border-color:#ff3265;box-shadow:0 0 1px #ff3265}.redactor-modal input.success,.redactor-modal select.success,.redactor-modal textarea.success{background-color:rgba(47,196,182,.1);border:1px solid #65dacf}.redactor-modal input.success:focus,.redactor-modal select.success:focus,.redactor-modal textarea.success:focus{border-color:#2fc4b6;box-shadow:0 0 1px #2fc4b6}.redactor-modal input.disabled,.redactor-modal input.disabled:hover,.redactor-modal input:disabled,.redactor-modal input:disabled:hover,.redactor-modal select.disabled,.redactor-modal select.disabled:hover,.redactor-modal select:disabled,.redactor-modal select:disabled:hover,.redactor-modal textarea.disabled,.redactor-modal textarea.disabled:hover,.redactor-modal textarea:disabled,.redactor-modal textarea:disabled:hover{resize:none;opacity:.6;cursor:default;font-style:italic;color:rgba(0,0,0,.5);border:1px solid #cacfd4;box-shadow:none;background-color:#fff}.redactor-modal .req{position:relative;top:1px;font-weight:700;color:#ff3265;font-size:110%}.redactor-modal .desc{color:rgba(51,51,51,.5);font-size:12px}.redactor-modal span.desc{margin-left:.25em}.redactor-modal div.desc{margin-top:.25em}.redactor-modal span.error,.redactor-modal span.success{font-size:12px;margin-left:.25em}.redactor-modal div.desc{margin-bottom:-.5em}.redactor-modal .redactor-close{position:absolute;top:16px;right:12px;font-size:30px;line-height:30px;padding:0 4px;color:#000;opacity:.3;cursor:pointer}.redactor-modal .redactor-close:hover{opacity:1}.redactor-modal .redactor-close:before{content:'\\00d7'}.redactor-modal button{display:inline-flex;align-items:center;text-decoration:none;text-align:center;font-family:inherit;font-size:15px;font-weight:500;color:#007dff;background-color:#fff;border-radius:3px;border:2px solid #007dff;min-height:40px;outline:0;padding:.5em 1.25em;cursor:pointer;line-height:1.2;vertical-align:middle;-webkit-appearance:none}.redactor-modal button:hover{outline:0;text-decoration:none;background:0 0;color:rgba(0,125,255,.6);border-color:rgba(0,125,255,.5)}.redactor-modal button.redactor-button-secondary{border-color:#2a2e34;color:#2a2e34}.redactor-modal button.redactor-button-secondary:hover{color:rgba(42,46,52,.6);border-color:rgba(42,46,52,.5)}.redactor-modal button.redactor-button-danger,.redactor-modal button.redactor-button-unstyled{background:0 0;border-color:transparent;color:rgba(42,46,52,.6)}.redactor-modal button.redactor-button-danger:hover,.redactor-modal button.redactor-button-unstyled:hover{background:0 0;border-color:transparent;color:#ff3265;text-decoration:underline}.redactor-modal .redactor-modal-group:after{content:\"\";display:table;clear:both}.redactor-modal .redactor-modal-side{float:left;width:30%;margin-right:4%}.redactor-modal .redactor-modal-side img{max-width:100%;height:auto;display:block}.redactor-modal .redactor-modal-area{float:left;width:66%}.redactor-modal[dir=rtl] .redactor-close{left:12px;right:auto}.redactor-modal[dir=rtl] textarea{direction:ltr;text-align:left}.redactor-modal[dir=rtl] .redactor-modal-footer button.redactor-button-unstyled{float:left;margin-left:0}.redactor-modal-header{padding:20px;font-size:18px;line-height:24px;font-weight:700;color:#000;border-bottom:1px solid rgba(0,0,0,.05)}.redactor-modal-header:empty{display:none}.redactor-modal-body{padding:32px 48px;padding-bottom:40px}.redactor-modal-footer{padding:24px;border-top:1px solid rgba(0,0,0,.05);overflow:hidden}.redactor-modal-footer button{margin-right:4px}.redactor-modal-footer button.redactor-button-unstyled{margin-right:0;float:right}.redactor-modal-footer:empty{display:none}.redactor-modal-tabs{display:flex;border-bottom:2px solid rgba(0,0,0,.05);margin-bottom:1em}.redactor-modal-tabs a{font-size:15px;padding:2px 0;text-decoration:none;color:rgba(0,0,0,.5);border-bottom:2px solid transparent;margin-bottom:-2px;margin-right:14px}.redactor-modal-tabs a:hover{transition:all linear .2s}.redactor-modal-tabs a.active,.redactor-modal-tabs a:hover{font-weight:500;color:#007dff;border-bottom-color:#007dff}.redactor-styles{margin:0;padding:16px 18px;color:#333;font-family:\"Trebuchet MS\",\"Helvetica Neue\",Helvetica,Tahoma,sans-serif;font-size:1em;line-height:1.5;box-sizing:border-box}.redactor-styles *,.redactor-styles :after,.redactor-styles :before{box-sizing:inherit}.redactor-styles[dir=rtl]{direction:rtl;unicode-bidi:embed}.redactor-styles[dir=rtl] ol li,.redactor-styles[dir=rtl] ul li{text-align:right}.redactor-styles[dir=rtl] ol,.redactor-styles[dir=rtl] ol ol,.redactor-styles[dir=rtl] ol ul,.redactor-styles[dir=rtl] ul,.redactor-styles[dir=rtl] ul ol,.redactor-styles[dir=rtl] ul ul{margin:0 1.5em 0 0}.redactor-styles[dir=rtl] figcaption{text-align:right}.redactor-styles a,.redactor-styles a:hover{color:#3397ff}.redactor-styles address,.redactor-styles blockquote,.redactor-styles dl,.redactor-styles figure,.redactor-styles hr,.redactor-styles p,.redactor-styles pre,.redactor-styles table{padding:0;margin:0;margin-bottom:1em}.redactor-styles ol,.redactor-styles ul{padding:0}.redactor-styles ol,.redactor-styles ol ol,.redactor-styles ol ul,.redactor-styles ul,.redactor-styles ul ol,.redactor-styles ul ul{margin:0 0 0 1.5em}.redactor-styles ol li,.redactor-styles ul li{text-align:left}.redactor-styles ol ol li{list-style-type:lower-alpha}.redactor-styles ol ol ol li{list-style-type:lower-roman}.redactor-styles ol,.redactor-styles ul{margin-bottom:1em}.redactor-styles h1,.redactor-styles h2,.redactor-styles h3,.redactor-styles h4,.redactor-styles h5,.redactor-styles h6{font-weight:700;color:#111;text-rendering:optimizeLegibility;margin:0;padding:0;margin-bottom:.5em;line-height:1.2}.redactor-styles h1{font-size:2.0736em}.redactor-styles h2{font-size:1.728em}.redactor-styles h3{font-size:1.44em}.redactor-styles h4{font-size:1.2em}.redactor-styles h5{font-size:1em}.redactor-styles h6{font-size:.83333em;text-transform:uppercase;letter-spacing:.035em}.redactor-styles blockquote{font-style:italic;color:rgba(0,0,0,.5);border:none}.redactor-styles table{width:100%}.redactor-styles code,.redactor-styles kbd,.redactor-styles mark,.redactor-styles small,.redactor-styles time,.redactor-styles var{display:inline-block;font-family:Consolas,Menlo,Monaco,\"Courier New\",monospace;font-size:87.5%;line-height:1;color:rgba(51,51,51,.9)}.redactor-styles cite,.redactor-styles var{opacity:.6}.redactor-styles var{font-style:normal}.redactor-styles abbr,.redactor-styles dfn{text-transform:uppercase}.redactor-styles abbr[title],.redactor-styles dfn[title]{text-decoration:none;border-bottom:1px dotted rgba(0,0,0,.5);cursor:help}.redactor-styles code,.redactor-styles kbd{position:relative;top:-1px;padding:.25em;padding-bottom:.2em;border-radius:2px}.redactor-styles code{background-color:#eff1f2}.redactor-styles mark{border-radius:2px;padding:.125em .25em;background-color:#fdb833}.redactor-styles kbd{border:1px solid #e5e7e9}.redactor-styles sub,.redactor-styles sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.redactor-styles sub{bottom:-.25em}.redactor-styles sup{top:-.5em}.redactor-styles pre{font-family:Consolas,Menlo,Monaco,\"Courier New\",monospace;font-size:.9em}.redactor-styles pre,.redactor-styles pre code{background-color:#f6f7f8;padding:0;top:0;display:block;line-height:1.5;color:rgba(51,51,51,.85);overflow:none;white-space:pre-wrap}.redactor-styles pre{padding:1rem}.redactor-styles table{border-collapse:collapse;max-width:100%;width:100%}.redactor-styles table caption{text-transform:uppercase;padding:0;color:rgba(0,0,0,.5);font-size:11px}.redactor-styles table td,.redactor-styles table th{border:1px solid #eee;padding:16px;padding-bottom:15px}.redactor-styles table tfoot td,.redactor-styles table tfoot th{color:rgba(0,0,0,.5)}.redactor-styles audio,.redactor-styles embed,.redactor-styles img,.redactor-styles object,.redactor-styles video{max-width:100%}.redactor-styles embed,.redactor-styles img,.redactor-styles object,.redactor-styles video{height:auto!important}.redactor-styles img{vertical-align:middle;-ms-interpolation-mode:bicubic}.redactor-styles figcaption{display:block;opacity:.6;font-size:12px;font-style:italic;text-align:left}.upload-box{display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;border:5px dashed rgba(0,125,255,.15);position:relative;width:100%;min-height:220px;background:#fff;cursor:pointer;overflow:hidden;text-align:center}.upload-placeholder{font-size:15px;line-height:1.5;color:rgba(0,0,0,.3);font-style:italic}.upload-hover{background-color:rgba(0,125,255,.075)}.upload-error{background-color:rgba(255,50,101,.075)}.upload-box-hover{outline:5px dashed rgba(0,125,255,.3)}.upload-box-error{outline:5px dashed rgba(255,50,101,.3)}.redactor-structure div,.redactor-structure h1,.redactor-structure h2,.redactor-structure h3,.redactor-structure h4,.redactor-structure h5,.redactor-structure h6{position:relative}.redactor-structure div:before,.redactor-structure h1:before,.redactor-structure h2:before,.redactor-structure h3:before,.redactor-structure h4:before,.redactor-structure h5:before,.redactor-structure h6:before{width:24px;position:absolute;font-size:10px;font-weight:400;opacity:.3;left:-26px;top:50%;margin-top:-7px;text-align:right}.redactor-structure h1:before{content:\"h1\"}.redactor-structure h2:before{content:\"h2\"}.redactor-structure h3:before{content:\"h3\"}.redactor-structure h4:before{content:\"h4\"}.redactor-structure h5:before{content:\"h5\"}.redactor-structure h6:before{content:\"h6\"}.redactor-structure div:before{content:\"div\"}#redactor-progress{position:fixed;top:0;left:0;width:100%;z-index:1000000;height:10px}#redactor-progress span{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;display:block;width:100%;height:100%;background-color:#007dff;background-size:40px 40px}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.redactor-box-fullscreen{z-index:1051;position:fixed;top:0;left:0;width:100%}.redactor-box-fullscreen-target{position:absolute!important}.redactor-body-fullscreen .redactor-context-toolbar,.redactor-body-fullscreen .redactor-dropdown{z-index:1052}.redactor-body-fullscreen #redactor-overlay{z-index:1098}.redactor-body-fullscreen #redactor-modal{z-index:1099}\n"
  },
  {
    "path": "src/Assets/dist/js/all.js",
    "content": "\n/*\n|--------------------------------------------------------------------------\n| Generals\n|--------------------------------------------------------------------------\n*/\n\n$(function () {\n    // $(\".non-form-btn\").bind(\"click\", function(e){\n    //     e.preventDefault();\n    // });\n\n    // $(\".delete-btn\").bind(\"click\", function(e){\n    //     e.preventDefault();\n    //     $('#deleteModal').modal('toggle');\n    //     var _parentForm = $(this).parent('form');\n    //     $('#deleteBtn').bind('click', function(){\n    //         _parentForm[0].submit();\n    //     });\n    // });\n\n    // $(\".delete-link-btn\").bind(\"click\", function(e){\n    //     e.preventDefault();\n    //     $('#deleteLinkModal').modal('toggle');\n    //     var _parentForm = $(this).parent('form');\n    //     $('#deleteLinkBtn').bind('click', function(){\n    //         _parentForm[0].submit();\n    //     });\n    // });\n\n    // $(\".delete-btn-confirm\").bind(\"click\", function(e){\n    //     e.preventDefault();\n    // });\n\n    // $('form.add, form.edit').submit(function(){\n    //     $('.loading-overlay').show();\n    // });\n\n    // $('a.slow-link').click(function(){\n    //     $('.loading-overlay').show();\n    // });\n\n    // $(window).resize(function(){\n    //     _setDashboard();\n    // });\n\n    // _setDashboard();\n});\n\n/*\n|--------------------------------------------------------------------------\n| Notifications - Growl Style\n|--------------------------------------------------------------------------\n*/\n\nfunction cmsNotify(message, _type) {\n    // $(\".cms-notification\").css(\"display\", \"block\");\n    // $(\".cms-notification\").addClass(_type);\n\n    // $(\".cms-notify-comment\").html(message);\n    // $(\".cms-notification\").animate({\n    //     right: \"20px\",\n    // });\n\n    // $(\".cms-notify-closer-icon\").click(function(){\n    //     $(\".cms-notification\").animate({\n    //         right: \"-300px\"\n    //     },\"\", function(){\n    //         $(\".cms-notification\").css(\"display\", \"none\");\n    //         $(\".cms-notify-comment\").html(\"\");\n    //     });\n    // });\n\n    // setTimeout(function(){\n    //     $(\".cms-notification\").animate({\n    //         right: \"-300px\"\n    //     },\"\", function(){\n    //         $(\".cms-notification\").css(\"display\", \"none\");\n    //         $(\".cms-notify-comment\").html(\"\");\n    //     });\n    // }, 8000);\n}\n\n/*\n|--------------------------------------------------------------------------\n| Twitter Typeahead - Taken straight from Twitter's docs\n|--------------------------------------------------------------------------\n*/\n\nvar typeaheadMatcher = function (strs) {\n    // return function findMatches(q, cb) {\n    //     var matches, substringRegex;\n\n    //     // an array that will be populated with substring matches\n    //     matches = [];\n\n    //     // regex used to determine if a string contains the substring `q`\n    //     substrRegex = new RegExp(q, 'i');\n\n    //     // iterate through the pool of strings and for any string that\n    //     // contains the substring `q`, add it to the `matches` array\n    //     $.each(strs, function(i, str) {\n    //         if (substrRegex.test(str)) {\n    //             matches.push(str);\n    //         }\n    //     });\n\n    //     cb(matches);\n    // };\n};\n\n/*\n|--------------------------------------------------------------------------\n| Grafite CMS\n|--------------------------------------------------------------------------\n*/\n\nvar _redactorConfig = {\n    toolbar: true,\n    visual: true,\n    minHeight: 175,\n    convertVideoLinks: true,\n    imageUpload: true,\n    buttonSource: true,\n    replaceDivs: false,\n    paragraphize: false,\n    pastePlaintext: true,\n    deniedTags: ['script'],\n    imageManagerJson: _url+'/cms/api/images/list',\n    fileManagerJson: _url+'/cms/api/files/list',\n    stockImageManagerJson: 'https://pixabay.com/api/',\n    plugins: ['table','video', 'fontcolor', 'imagemanager', 'stockimagemanager', 'filemanager', 'specialchar', 'insertIcon'],\n    buttons: ['html', 'formatting', 'fontcolor', 'bold', 'italic', 'underline', 'deleted', 'unorderedlist', 'orderedlist',\n          'outdent', 'indent', 'image', 'filemanager', 'stockimagemanager', 'video', 'link', 'alignment', 'horizontalrule', 'insertIcon'], // + 'underline'\n};\n\n$(window).load(function() {\n\n    $('.pull-down').each(function() {\n        var height = 300 - $(this).siblings('.thumbnail').height() - $(this).height() - 48;\n        $(this).css('margin-top', height);\n    });\n\n    $('textarea.redactor').redactor(_redactorConfig);\n});\n\n$(function () {\n    var _initialUrlValue = $('#Url').val();\n\n    function _urlPrepare (title) {\n        return title.replace(/[^\\w\\s]/gi, '').replace(/ /g, '-').toLowerCase();\n    }\n\n    $('#Title, #Name').bind('keyup', function () {\n        if (_initialUrlValue == '') {\n            $('#Url').val(_urlPrepare($(this).val()));\n        }\n    });\n\n    $('.timepicker').datetimepicker({\n        format: 'LT',\n        timeZone: _appTimeZone\n    });\n\n    $('.datepicker').datetimepicker({\n        format: 'YYYY-MM-DD',\n        timeZone: _appTimeZone\n    });\n\n    $('.datetimepicker').datetimepicker({\n        showTodayButton: true,\n        format: 'YYYY-MM-DD HH:mm',\n        timeZone: _appTimeZone\n    });\n\n    $('.tags').tagsinput();\n});\n\n/*\n|--------------------------------------------------------------------------\n| Dashboard Panel\n|--------------------------------------------------------------------------\n*/\n\nfunction _setDashboard () {\n    // if ($(window).width() < 768) {\n    //     $('.sidebar').css({\n    //         left: '-300px',\n    //     });\n\n    //     $('.sidebar-menu-btn .nav-open').unbind().bind('click', function(){\n    //         $('.overlay').fadeIn();\n    //         $('.sidebar').animate({\n    //             left: 0\n    //         }, 'fast');\n    //         $('.sidebar-menu-btn .nav-open').hide();\n    //         $('.sidebar-menu-btn .nav-close').show();\n    //     });\n    //     $('.sidebar-menu-btn .nav-close').unbind().bind('click', function(){\n    //         $('.overlay').fadeOut();\n    //         $('.sidebar').animate({\n    //             left: '-'+$(window).width()+'px',\n    //         }, 'fast');\n    //         $('.sidebar-menu-btn .nav-close').hide();\n    //         $('.sidebar-menu-btn .nav-open').show();\n    //     });\n    //     $('.overlay').unbind().bind('click', function(){\n    //         $('.overlay').fadeOut();\n    //         $('.sidebar').animate({\n    //             left: '-'+$(window).width()+'px',\n    //         }, 'fast');\n    //     });\n    // } else {\n    //     $('.sidebar-menu-btn').remove();\n    //     $('.sidebar').css({\n    //         left: 0\n    //     });\n    // }\n}\n\n/*\n * --------------------------------------------------------------------------\n * General\n * --------------------------------------------------------------------------\n*/\n\n$(document).ready(function () {\n    $('[data-toggle=\"tooltip\"]').tooltip();\n});\n\n/*\n * --------------------------------------------------------------------------\n * Links\n * --------------------------------------------------------------------------\n*/\n\nif ($('#External').is(':checked')) {\n    $('#External_url').parent().show();\n    $('#Page_id').parent().hide();\n} else {\n    $('#External_url').parent().hide();\n    $('#Page_id').parent().show();\n}\n\n$(window).ready(function(){\n    $('#External').bind('click', function() {\n        if ($(this).is(':checked')) {\n            $('#External_url').parent().show();\n            $('#Page_id').parent().hide();\n        } else {\n            $('#External_url').parent().hide();\n            $('#Page_id').parent().show();\n        }\n    });\n});\n\nvar linkList = document.getElementById('linkList');\n\nif (typeof linkList != 'undefined' && linkList != null) {\n    var sortable = Sortable.create(linkList, {\n        store: {\n            get: function (sortable) {\n                return _linkOrder ? _linkOrder : [];\n            },\n            set: function (sortable) {\n                var _order = sortable.toArray();\n                $.ajax({\n                    url: _cmsUrl + '/menus/' + _id + '/order',\n                    type: 'put',\n                    data: {\n                        _token: _token,\n                        order: JSON.stringify(_order)\n                    },\n                    success: function (_data) {\n                        // do nothing!\n                    }\n                });\n            }\n        }\n    });\n}\n\n/*\n * --------------------------------------------------------------------------\n * Files\n * --------------------------------------------------------------------------\n*/\n\n$(function () {\n    $('#saveFilesBtn').click(function(e){\n        e.preventDefault();\n        Dropzone.forElement('.dropzone').processQueue();\n    });\n});\n\nfunction confirmDelete (url) {\n    $('#deleteBtn').attr('href', url);\n    $('#deleteModal').modal('toggle');\n}\n\n/*\n * --------------------------------------------------------------------------\n * Images\n * --------------------------------------------------------------------------\n*/\n\n$(function () {\n    $('#saveImagesBtn').click(function(e){\n        e.preventDefault();\n        Dropzone.forElement('.dropzone').processQueue();\n    });\n\n    $('.selectable').bind('click', function () {\n        if (!$(this).hasClass('selected-highlight')) {\n            $(this).addClass('selected-highlight');\n        } else {\n            $(this).removeClass('selected-highlight');\n        }\n    });\n\n    $('.bulk-image-delete').click(function () {\n        var _images = [];\n        $('.selected-highlight').each(function () {\n            _images.push($(this).attr('data-id'));\n        });\n\n        if (_images.length > 0) {\n            $('#bulkImageDeleteModal').modal('toggle');\n            var _deleteUrl = _url + '/cms/images/bulk-delete/' + _images.join('-')\n            $('#bulkImageDelete').attr('href', _deleteUrl);\n        }\n    });\n\n    $('.img-alter-btn').click(function (e) {\n        e.stopPropagation();\n    });\n});\n\n/*\n * --------------------------------------------------------------------------\n * Previews\n * --------------------------------------------------------------------------\n*/\n\n$('.preview-toggle').bind('click', function () {\n    if ($(this).attr('data-platform') == 'desktop') {\n        $('#frame').css({\n            width: '150%'\n        });\n    }\n    if ($(this).attr('data-platform') == 'mobile') {\n        $('#frame').css({\n            width: '320px'\n        });\n    }\n});\n\n$('#frame').load(function () {\n    var frameBody = $('#frame').contents().find('body');\n    $('a', frameBody).click(function(e){\n        e.preventDefault();\n    });\n});\n\n/*\n * --------------------------------------------------------------------------\n * Pages and Blocks\n * --------------------------------------------------------------------------\n*/\n\n$(function () {\n    $('.add-block-btn').bind('click', function (e) {\n        e.preventDefault();\n        $('#blockName').val('');\n        $('#addBlockModal').modal('toggle');\n    });\n\n    $('#addBlockBtn').bind('click', function () {\n        var _slug = $('#blockName').val();\n        $('.blocks').prepend('<div id=\"block_container_'+_slug+'\" class=\"col-md-12\"><div class=\"form-group\"><h4>'+_slug+'<button type=\"button\" class=\"btn btn-xs btn-danger delete-block-btn pull-right\"><span class=\"fa fa-trash\"></span></button></h4><textarea id=\"block_'+_slug+'\" name=\"block_'+_slug+'\" class=\"form-control redactor\"></textarea></div></div>');\n        $('#addBlockModal').modal('toggle');\n        $('#block_'+_slug).redactor(_redactorConfig);\n    });\n\n    $('.delete-block-btn').bind('click', function (e) {\n        e.preventDefault();\n        $('#deleteBlockBtn').attr('data-slug', $(this).attr('data-slug'));\n        $('#deleteBlockModal').modal('toggle');\n    });\n\n    $('#deleteBlockBtn').bind('click', function () {\n        $('#'+$(this).attr('data-slug')).remove();\n        $('#deleteBlockModal').modal('toggle');\n    });\n});\n\nDropzone.options.fileDropzone = {\n    paramName: \"location\",\n    addRemoveLinks: true,\n    autoProcessQueue: false,\n    init: function() {\n        this.on(\"success\", function(file, responseText) {\n            file.serverData = responseText.data;\n            $(['name', 'original', 'mime', 'size']).each(function() {\n                $(\"#fileDetailsForm\").prepend('<input id=\"file_'+file.serverData.name+'\" name=\"location['+file.serverData.name+']['+this+']\" value=\"'+file.serverData[this]+'\" type=\"hidden\" />');\n            });\n            this.options.autoProcessQueue = true;\n        });\n        this.on(\"queuecomplete\", function(){\n            $('#fileDetailsForm').submit();\n        });\n        this.on(\"removedfile\", function(file) {\n            if (! file.serverData) {\n                return;\n            } else {\n                $.get(_url+\"/cms/files/remove/\"+file.serverData.name);\n                $(\"#file_\"+file.serverData.name).remove();\n            }\n        });\n    },\n    accept: function(file, done) {\n        done();\n    }\n};\n//# sourceMappingURL=all.js.map\n"
  },
  {
    "path": "src/Assets/dist/js/cms.js",
    "content": "function cmsNotify(e,t){$(\".cms-notification\").css(\"display\",\"block\"),$(\".cms-notification\").attr(\"class\",\"cms-notification\"),$(\".cms-notification\").addClass(t),$(\".cms-notify-comment\").html(e),$(\".cms-notification\").animate({right:\"20px\"}),$(\".cms-notify-closer\").click(function(){$(\".cms-notification\").animate({right:\"-300px\"},\"\",function(){$(\".cms-notification\").css(\"display\",\"none\"),$(\".cms-notify-comment\").html(\"\")})}),setTimeout(function(){$(\".cms-notification\").animate({right:\"-300px\"},\"\",function(){$(\".cms-notification\").css(\"display\",\"none\"),$(\".cms-notify-comment\").html(\"\")})},8e3)}function confirmDelete(e){$(\"#deleteBtn\").attr(\"href\",e),$(\"#deleteModal\").modal(\"toggle\")}$(document).ready(function(){$(\".alert\").delay(7e3).fadeOut(),$(\".sidebar-toggle\").on(\"click\",function(){$(\".sidebar\").toggleClass(\"toggled\")});var e=$(\".sidebar .active\");if(e.length&&e.parent(\".collapse\").length){var t=e.parent(\".collapse\");t.prev(\"a\").attr(\"aria-expanded\",!0),t.addClass(\"show\")}}),$(function(){$(\".non-form-btn\").bind(\"click\",function(e){e.preventDefault()}),$(\".delete-btn\").bind(\"click\",function(e){e.preventDefault(),$(\"#deleteModal\").modal(\"toggle\");var t=$(this).parent(\"form\");$(\"#deleteBtn\").bind(\"click\",function(){t[0].submit()})}),$(\".delete-link-btn\").bind(\"click\",function(e){e.preventDefault(),$(\"#deleteLinkModal\").modal(\"toggle\");var t=$(this).parent(\"form\");$(\"#deleteLinkBtn\").bind(\"click\",function(){t[0].submit()})}),$(\".delete-btn-confirm\").bind(\"click\",function(e){e.preventDefault()}),$(\"form.add, form.edit\").submit(function(){$(\".loading-overlay\").show()}),$(\"a.slow-link\").click(function(){$(\".loading-overlay\").show()})});var typeaheadMatcher=function(e){return function(t,i){var n;n=[],substrRegex=new RegExp(t,\"i\"),$.each(e,function(e,t){substrRegex.test(t)&&n.push(t)}),i(n)}},_redactorConfig={toolbarFixedTopOffset:$(window).width()<376?30:50,visual:!0,minHeight:175,convertVideoLinks:!0,imageUpload:!1,pastePlaintext:!0,imagePosition:!0,imageResizable:!0,deniedTags:[\"script\"],imageManagerJson:_url+\"/cms/api/images/list\",fileManagerJson:_url+\"/cms/api/files/list\",stockImageManagerJson:\"https://pixabay.com/api/\",formatting:[\"p\",\"blockquote\",\"pre\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\"],buttonsAddAfter:{after:\"deleted\",buttons:[\"underline\"]},plugins:[\"table\",\"fontcolor\",\"alignment\",\"specialchars\",\"video\",\"stockimagemanager\",\"fileselector\",\"imageselector\"]};$(window).load(function(){$(\".pull-down\").each(function(){var e=300-$(this).siblings(\".thumbnail\").height()-$(this).height()-48;$(this).css(\"margin-top\",e)}),$(\"textarea.redactor\").redactor(_redactorConfig)}),$(function(){function e(e){return e.replace(/[^\\w\\s]/gi,\"\").replace(/ /g,\"-\").toLowerCase()}var t=$(\"#Url\").val();$(\"#Title, #Name\").bind(\"keyup\",function(){\"\"==t&&$(\"#Url\").val(e($(this).val()))}),$(\".timepicker\").datetimepicker({format:\"LT\",timeZone:_appTimeZone}),$(\".datepicker\").datetimepicker({format:\"YYYY-MM-DD\",timeZone:_appTimeZone}),$(\".datetimepicker\").datetimepicker({showTodayButton:!0,format:\"YYYY-MM-DD HH:mm\",timeZone:_appTimeZone}),$(\".tags\").tagsinput()}),$(document).ready(function(){$('[data-toggle=\"tooltip\"]').tooltip()}),$(\"#External\").is(\":checked\")?($(\"#External_url\").parent().show(),$(\"#Page_id\").parent().hide()):($(\"#External_url\").parent().hide(),$(\"#Page_id\").parent().show()),$(window).ready(function(){$(\"#External\").bind(\"click\",function(){$(this).is(\":checked\")?($(\"#External_url\").parent().show(),$(\"#Page_id\").parent().hide()):($(\"#External_url\").parent().hide(),$(\"#Page_id\").parent().show())})});var linkList=document.getElementById(\"linkList\");if(void 0!==linkList&&null!=linkList)var sortable=Sortable.create(linkList,{store:{get:function(e){return _linkOrder||[]},set:function(e){var t=e.toArray();$.ajax({url:_cmsUrl+\"/menus/\"+_id+\"/order\",type:\"put\",data:{_token:_token,order:JSON.stringify(t)},success:function(e){}})}}});$(function(){$(\"#saveFilesBtn\").click(function(e){e.preventDefault(),Dropzone.forElement(\".dropzone\").processQueue()})}),$(function(){$(\".bulk-image-delete\").hide(),$(\"#saveImagesBtn\").click(function(e){e.preventDefault(),Dropzone.forElement(\".dropzone\").processQueue()}),$(\".selectable\").bind(\"click\",function(){$(this).hasClass(\"selected-highlight\")?$(this).removeClass(\"selected-highlight\"):$(this).addClass(\"selected-highlight\"),$(\".selected-highlight\").length>0?$(\".bulk-image-delete\").show():$(\".bulk-image-delete\").hide()}),$(\".bulk-image-delete\").click(function(){var e=[];if($(\".selected-highlight\").each(function(){e.push($(this).attr(\"data-id\"))}),e.length>0){$(\"#bulkImageDeleteModal\").modal(\"toggle\");var t=_cmsUrl+\"/images/bulk-delete/\"+e.join(\"-\");$(\"#bulkImageDelete\").attr(\"href\",t)}}),$(\".img-alter-btn\").click(function(e){e.stopPropagation()})}),$(\".preview-toggle\").bind(\"click\",function(){\"desktop\"==$(this).attr(\"data-platform\")&&$(\"#frame\").css({width:\"150%\"}),\"mobile\"==$(this).attr(\"data-platform\")&&$(\"#frame\").css({width:\"320px\"})}),$(\"#frame\").load(function(){var e=$(\"#frame\").contents().find(\"body\");$(\"a\",e).click(function(e){e.preventDefault()})}),$(function(){$(\".add-block-btn\").bind(\"click\",function(e){e.preventDefault(),$(\"#blockName\").val(\"\"),$(\"#addBlockModal\").modal(\"toggle\")}),$(\"#addBlockBtn\").bind(\"click\",function(){var e=$(\"#blockName\").val();$(\".blocks\").prepend('<div id=\"block_container_'+e+'\" class=\"col-md-12\"><div class=\"form-group\"><h4>'+e+'<button type=\"button\" class=\"btn btn-xs btn-danger delete-block-btn pull-right\"><span class=\"fa fa-trash\"></span></button></h4><textarea id=\"block_'+e+'\" name=\"block_'+e+'\" class=\"form-control redactor\"></textarea></div></div>'),$(\"#addBlockModal\").modal(\"toggle\"),$(\"#block_\"+e).redactor(_redactorConfig)}),$(\".delete-block-btn\").bind(\"click\",function(e){e.preventDefault(),$(\"#deleteBlockBtn\").attr(\"data-slug\",$(this).attr(\"data-slug\")),$(\"#deleteBlockModal\").modal(\"toggle\")}),$(\"#deleteBlockBtn\").bind(\"click\",function(){$(\"#\"+$(this).attr(\"data-slug\")).remove(),$(\"#deleteBlockModal\").modal(\"toggle\")})}),Dropzone.options.fileDropzone={paramName:\"location\",addRemoveLinks:!0,autoProcessQueue:!1,init:function(){this.on(\"success\",function(e,t){e.serverData=t.data,$([\"name\",\"original\",\"mime\",\"size\"]).each(function(){$(\"#fileDetailsForm\").prepend('<input id=\"file_'+e.serverData.name+'\" name=\"location['+e.serverData.name+\"][\"+this+']\" value=\"'+e.serverData[this]+'\" type=\"hidden\" />')}),this.options.autoProcessQueue=!0}),this.on(\"queuecomplete\",function(){$(\"#fileDetailsForm\").submit()}),this.on(\"removedfile\",function(e){e.serverData&&($.get(_url+\"/cms/files/remove/\"+e.serverData.name),$(\"#file_\"+e.serverData.name).remove())})},accept:function(e,t){t()}};\n"
  },
  {
    "path": "src/Assets/dist/js/vendor.js",
    "content": "!function(t,e){\"function\"==typeof define&&define.amd?define(\"bloodhound\",[\"jquery\"],function(i){return t.Bloodhound=e(i)}):\"object\"==typeof exports?module.exports=e(require(\"jquery\")):t.Bloodhound=e(jQuery)}(this,function(t){var e=function(){\"use strict\";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")},isString:function(t){return\"string\"==typeof t},isNumber:function(t){return\"number\"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return void 0===t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?\"\":t+\"\"},bind:t.proxy,each:function(e,i){function n(t,e){return i(e,t)}t.each(e,n)},map:t.map,filter:t.grep,every:function(e,i){var n=!0;return e?(t.each(e,function(t,o){if(!(n=i.call(null,o,t,e)))return!1}),!!n):n},some:function(e,i){var n=!1;return e?(t.each(e,function(t,o){if(n=i.call(null,o,t,e))return!1}),!!n):n},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function i(){return String(e)}return t.isFunction(e)?e:i},defer:function(t){setTimeout(t,0)},debounce:function(t,e,i){var n,o;return function(){var s,r,a=this,c=arguments;return s=function(){n=null,i||(o=t.apply(a,c))},r=i&&!n,clearTimeout(n),n=setTimeout(s,e),r&&(o=t.apply(a,c)),o}},throttle:function(t,e){var i,n,o,s,r,a;return r=0,a=function(){r=new Date,o=null,s=t.apply(i,n)},function(){var c=new Date,l=e-(c-r);return i=this,n=arguments,l<=0?(clearTimeout(o),o=null,r=c,s=t.apply(i,n)):o||(o=setTimeout(a,l)),s}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),i=\"0.11.1\",n=function(){\"use strict\";function t(t){return t=e.toStr(t),t?t.split(/\\s+/):[]}function i(t){return t=e.toStr(t),t?t.split(/\\W+/):[]}function n(t){return function(i){return i=e.isArray(i)?i:[].slice.call(arguments,0),function(n){var o=[];return e.each(i,function(i){o=o.concat(t(e.toStr(n[i])))}),o}}}return{nonword:i,whitespace:t,obj:{nonword:n(i),whitespace:n(t)}}}(),o=function(){\"use strict\";function i(i){this.maxSize=e.isNumber(i)?i:100,this.reset(),this.maxSize<=0&&(this.set=this.get=t.noop)}function n(){this.head=this.tail=null}function o(t,e){this.key=t,this.val=e,this.prev=this.next=null}return e.mixin(i.prototype,{set:function(t,e){var i,n=this.list.tail;this.size>=this.maxSize&&(this.list.remove(n),delete this.hash[n.key],this.size--),(i=this.hash[t])?(i.val=e,this.list.moveToFront(i)):(i=new o(t,e),this.list.add(i),this.hash[t]=i,this.size++)},get:function(t){var e=this.hash[t];if(e)return this.list.moveToFront(e),e.val},reset:function(){this.size=0,this.hash={},this.list=new n}}),e.mixin(n.prototype,{add:function(t){this.head&&(t.next=this.head,this.head.prev=t),this.head=t,this.tail=this.tail||t},remove:function(t){t.prev?t.prev.next=t.next:this.head=t.next,t.next?t.next.prev=t.prev:this.tail=t.prev},moveToFront:function(t){this.remove(t),this.add(t)}}),i}(),s=function(){\"use strict\";function i(t,i){this.prefix=[\"__\",t,\"__\"].join(\"\"),this.ttlKey=\"__ttl__\",this.keyMatcher=new RegExp(\"^\"+e.escapeRegExChars(this.prefix)),this.ls=i||a,!this.ls&&this._noop()}function n(){return(new Date).getTime()}function o(t){return JSON.stringify(e.isUndefined(t)?null:t)}function s(e){return t.parseJSON(e)}function r(t){var e,i,n=[],o=a.length;for(e=0;e<o;e++)(i=a.key(e)).match(t)&&n.push(i.replace(t,\"\"));return n}var a;try{a=window.localStorage,a.setItem(\"~~~\",\"!\"),a.removeItem(\"~~~\")}catch(t){a=null}return e.mixin(i.prototype,{_prefix:function(t){return this.prefix+t},_ttlKey:function(t){return this._prefix(t)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=e.noop},_safeSet:function(t,e){try{this.ls.setItem(t,e)}catch(t){\"QuotaExceededError\"===t.name&&(this.clear(),this._noop())}},get:function(t){return this.isExpired(t)&&this.remove(t),s(this.ls.getItem(this._prefix(t)))},set:function(t,i,s){return e.isNumber(s)?this._safeSet(this._ttlKey(t),o(n()+s)):this.ls.removeItem(this._ttlKey(t)),this._safeSet(this._prefix(t),o(i))},remove:function(t){return this.ls.removeItem(this._ttlKey(t)),this.ls.removeItem(this._prefix(t)),this},clear:function(){var t,e=r(this.keyMatcher);for(t=e.length;t--;)this.remove(e[t]);return this},isExpired:function(t){var i=s(this.ls.getItem(this._ttlKey(t)));return!!(e.isNumber(i)&&n()>i)}}),i}(),r=function(){\"use strict\";function i(t){t=t||{},this.cancelled=!1,this.lastReq=null,this._send=t.transport,this._get=t.limiter?t.limiter(this._get):this._get,this._cache=!1===t.cache?new o(0):a}var n=0,s={},r=6,a=new o(10);return i.setMaxPendingRequests=function(t){r=t},i.resetCache=function(){a.reset()},e.mixin(i.prototype,{_fingerprint:function(e){return e=e||{},e.url+e.type+t.param(e.data||{})},_get:function(t,e){function i(t){e(null,t),d._cache.set(c,t)}function o(){e(!0)}function a(){n--,delete s[c],d.onDeckRequestArgs&&(d._get.apply(d,d.onDeckRequestArgs),d.onDeckRequestArgs=null)}var c,l,d=this;c=this._fingerprint(t),this.cancelled||c!==this.lastReq||((l=s[c])?l.done(i).fail(o):n<r?(n++,s[c]=this._send(t).done(i).fail(o).always(a)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(i,n){var o,s;n=n||t.noop,i=e.isString(i)?{url:i}:i||{},s=this._fingerprint(i),this.cancelled=!1,this.lastReq=s,(o=this._cache.get(s))?n(null,o):this._get(i,n)},cancel:function(){this.cancelled=!0}}),i}(),a=window.SearchIndex=function(){\"use strict\";function i(i){i=i||{},i.datumTokenizer&&i.queryTokenizer||t.error(\"datumTokenizer and queryTokenizer are both required\"),this.identify=i.identify||e.stringify,this.datumTokenizer=i.datumTokenizer,this.queryTokenizer=i.queryTokenizer,this.reset()}function n(t){return t=e.filter(t,function(t){return!!t}),t=e.map(t,function(t){return t.toLowerCase()})}function o(){var t={};return t[c]=[],t[a]={},t}function s(t){for(var e={},i=[],n=0,o=t.length;n<o;n++)e[t[n]]||(e[t[n]]=!0,i.push(t[n]));return i}function r(t,e){var i=0,n=0,o=[];t=t.sort(),e=e.sort();for(var s=t.length,r=e.length;i<s&&n<r;)t[i]<e[n]?i++:t[i]>e[n]?n++:(o.push(t[i]),i++,n++);return o}var a=\"c\",c=\"i\";return e.mixin(i.prototype,{bootstrap:function(t){this.datums=t.datums,this.trie=t.trie},add:function(t){var i=this;t=e.isArray(t)?t:[t],e.each(t,function(t){var s,r;i.datums[s=i.identify(t)]=t,r=n(i.datumTokenizer(t)),e.each(r,function(t){var e,n,r;for(e=i.trie,n=t.split(\"\");r=n.shift();)e=e[a][r]||(e[a][r]=o()),e[c].push(s)})})},get:function(t){var i=this;return e.map(t,function(t){return i.datums[t]})},search:function(t){var i,o,l=this;return i=n(this.queryTokenizer(t)),e.each(i,function(t){var e,i,n,s;if(o&&0===o.length)return!1;for(e=l.trie,i=t.split(\"\");e&&(n=i.shift());)e=e[a][n];if(!e||0!==i.length)return o=[],!1;s=e[c].slice(0),o=o?r(o,s):s}),o?e.map(s(o),function(t){return l.datums[t]}):[]},all:function(){var t=[];for(var e in this.datums)t.push(this.datums[e]);return t},reset:function(){this.datums={},this.trie=o()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),i}(),c=function(){\"use strict\";function t(t){this.url=t.url,this.ttl=t.ttl,this.cache=t.cache,this.prepare=t.prepare,this.transform=t.transform,this.transport=t.transport,this.thumbprint=t.thumbprint,this.storage=new s(t.cacheKey)}var i;return i={data:\"data\",protocol:\"protocol\",thumbprint:\"thumbprint\"},e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:\"GET\",dataType:\"json\"}},store:function(t){this.cache&&(this.storage.set(i.data,t,this.ttl),this.storage.set(i.protocol,location.protocol,this.ttl),this.storage.set(i.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var t,e={};return this.cache?(e.data=this.storage.get(i.data),e.protocol=this.storage.get(i.protocol),e.thumbprint=this.storage.get(i.thumbprint),t=e.thumbprint!==this.thumbprint||e.protocol!==location.protocol,e.data&&!t?e.data:null):null},fromNetwork:function(t){function e(){t(!0)}function i(e){t(null,o.transform(e))}var n,o=this;t&&(n=this.prepare(this._settings()),this.transport(n).fail(e).done(i))},clear:function(){return this.storage.clear(),this}}),t}(),l=function(){\"use strict\";function t(t){this.url=t.url,this.prepare=t.prepare,this.transform=t.transform,this.transport=new r({cache:t.cache,limiter:t.limiter,transport:t.transport})}return e.mixin(t.prototype,{_settings:function(){return{url:this.url,type:\"GET\",dataType:\"json\"}},get:function(t,e){function i(t,i){e(t?[]:o.transform(i))}var n,o=this;if(e)return t=t||\"\",n=this.prepare(t,this._settings()),this.transport.get(n,i)},cancelLastRequest:function(){this.transport.cancel()}}),t}(),d=function(){\"use strict\";function n(n){var o;return n?(o={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:\"\",prepare:e.identity,transform:e.identity,transport:null},n=e.isString(n)?{url:n}:n,n=e.mixin(o,n),!n.url&&t.error(\"prefetch requires url to be set\"),n.transform=n.filter||n.transform,n.cacheKey=n.cacheKey||n.url,n.thumbprint=i+n.thumbprint,n.transport=n.transport?a(n.transport):t.ajax,n):null}function o(i){var n;if(i)return n={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:\"debounce\",rateLimitWait:300,transform:e.identity,transport:null},i=e.isString(i)?{url:i}:i,i=e.mixin(n,i),!i.url&&t.error(\"remote requires url to be set\"),i.transform=i.filter||i.transform,i.prepare=s(i),i.limiter=r(i),i.transport=i.transport?a(i.transport):t.ajax,delete i.replace,delete i.wildcard,delete i.rateLimitBy,delete i.rateLimitWait,i}function s(t){function e(t,e){return e.url=s(e.url,t),e}function i(t,e){return e.url=e.url.replace(r,encodeURIComponent(t)),e}function n(t,e){return e}var o,s,r;return o=t.prepare,s=t.replace,r=t.wildcard,o||(o=s?e:t.wildcard?i:n)}function r(t){var i,n,o;return i=t.limiter,n=t.rateLimitBy,o=t.rateLimitWait,i||(i=/^throttle$/i.test(n)?function(t){return function(i){return e.throttle(i,t)}}(o):function(t){return function(i){return e.debounce(i,t)}}(o)),i}function a(i){return function(n){function o(t){e.defer(function(){r.resolve(t)})}function s(t){e.defer(function(){r.reject(t)})}var r=t.Deferred();return i(n,o,s),r}}return function(i){var s,r;return s={initialize:!0,identify:e.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},i=e.mixin(s,i||{}),!i.datumTokenizer&&t.error(\"datumTokenizer is required\"),!i.queryTokenizer&&t.error(\"queryTokenizer is required\"),r=i.sorter,i.sorter=r?function(t){return t.sort(r)}:e.identity,i.local=e.isFunction(i.local)?i.local():i.local,i.prefetch=n(i.prefetch),i.remote=o(i.remote),i}}();return function(){\"use strict\";function i(t){t=d(t),this.sorter=t.sorter,this.identify=t.identify,this.sufficient=t.sufficient,this.local=t.local,this.remote=t.remote?new l(t.remote):null,this.prefetch=t.prefetch?new c(t.prefetch):null,this.index=new a({identify:this.identify,datumTokenizer:t.datumTokenizer,queryTokenizer:t.queryTokenizer}),!1!==t.initialize&&this.initialize()}var o;return o=window&&window.Bloodhound,i.noConflict=function(){return window&&(window.Bloodhound=o),i},i.tokenizers=n,e.mixin(i.prototype,{__ttAdapter:function(){function t(t,e,n){return i.search(t,e,n)}function e(t,e){return i.search(t,e)}var i=this;return this.remote?t:e},_loadPrefetch:function(){function e(t,e){if(t)return i.reject();o.add(e),o.prefetch.store(o.index.serialize()),i.resolve()}var i,n,o=this;return i=t.Deferred(),this.prefetch?(n=this.prefetch.fromCache())?(this.index.bootstrap(n),i.resolve()):this.prefetch.fromNetwork(e):i.resolve(),i.promise()},_initialize:function(){function t(){e.add(e.local)}var e=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(t),this.initPromise},initialize:function(t){return!this.initPromise||t?this._initialize():this.initPromise},add:function(t){return this.index.add(t),this},get:function(t){return t=e.isArray(t)?t:[].slice.call(arguments),this.index.get(t)},search:function(t,i,n){function o(t){var i=[];e.each(t,function(t){!e.some(s,function(e){return r.identify(t)===r.identify(e)})&&i.push(t)}),n&&n(i)}var s,r=this;return s=this.sorter(this.index.search(t)),i(this.remote?s.slice():s),this.remote&&s.length<this.sufficient?this.remote.get(t,o):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return r.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),i}()}),function(t,e){\"function\"==typeof define&&define.amd?define(\"typeahead.js\",[\"jquery\"],function(t){return e(t)}):\"object\"==typeof exports?module.exports=e(require(\"jquery\")):e(jQuery)}(0,function(t){var e=function(){\"use strict\";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2]},isBlankString:function(t){return!t||/^\\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")},isString:function(t){return\"string\"==typeof t},isNumber:function(t){return\"number\"==typeof t},isArray:t.isArray,isFunction:t.isFunction,isObject:t.isPlainObject,isUndefined:function(t){return void 0===t},isElement:function(t){return!(!t||1!==t.nodeType)},isJQuery:function(e){return e instanceof t},toStr:function(t){return e.isUndefined(t)||null===t?\"\":t+\"\"},bind:t.proxy,each:function(e,i){function n(t,e){return i(e,t)}t.each(e,n)},map:t.map,filter:t.grep,every:function(e,i){var n=!0;return e?(t.each(e,function(t,o){if(!(n=i.call(null,o,t,e)))return!1}),!!n):n},some:function(e,i){var n=!1;return e?(t.each(e,function(t,o){if(n=i.call(null,o,t,e))return!1}),!!n):n},mixin:t.extend,identity:function(t){return t},clone:function(e){return t.extend(!0,{},e)},getIdGenerator:function(){var t=0;return function(){return t++}},templatify:function(e){function i(){return String(e)}return t.isFunction(e)?e:i},defer:function(t){setTimeout(t,0)},debounce:function(t,e,i){var n,o;return function(){var s,r,a=this,c=arguments;return s=function(){n=null,i||(o=t.apply(a,c))},r=i&&!n,clearTimeout(n),n=setTimeout(s,e),r&&(o=t.apply(a,c)),o}},throttle:function(t,e){var i,n,o,s,r,a;return r=0,a=function(){r=new Date,o=null,s=t.apply(i,n)},function(){var c=new Date,l=e-(c-r);return i=this,n=arguments,l<=0?(clearTimeout(o),o=null,r=c,s=t.apply(i,n)):o||(o=setTimeout(a,l)),s}},stringify:function(t){return e.isString(t)?t:JSON.stringify(t)},noop:function(){}}}(),i=function(){\"use strict\";function t(t){var r,a;return a=e.mixin({},s,t),r={css:o(),classes:a,html:i(a),selectors:n(a)},{css:r.css,html:r.html,classes:r.classes,selectors:r.selectors,mixin:function(t){e.mixin(t,r)}}}function i(t){return{wrapper:'<span class=\"'+t.wrapper+'\"></span>',menu:'<div class=\"'+t.menu+'\"></div>'}}function n(t){var i={};return e.each(t,function(t,e){i[e]=\".\"+t}),i}function o(){var t={wrapper:{position:\"relative\",display:\"inline-block\"},hint:{position:\"absolute\",top:\"0\",left:\"0\",borderColor:\"transparent\",boxShadow:\"none\",opacity:\"1\"},input:{position:\"relative\",verticalAlign:\"top\",backgroundColor:\"transparent\"},inputWithNoHint:{position:\"relative\",verticalAlign:\"top\"},menu:{position:\"absolute\",top:\"100%\",left:\"0\",zIndex:\"100\",display:\"none\"},ltr:{left:\"0\",right:\"auto\"},rtl:{left:\"auto\",right:\" 0\"}};return e.isMsie()&&e.mixin(t.input,{backgroundImage:\"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"}),t}var s={wrapper:\"twitter-typeahead\",input:\"tt-input\",hint:\"tt-hint\",menu:\"tt-menu\",dataset:\"tt-dataset\",suggestion:\"tt-suggestion\",selectable:\"tt-selectable\",empty:\"tt-empty\",open:\"tt-open\",cursor:\"tt-cursor\",highlight:\"tt-highlight\"};return t}(),n=function(){\"use strict\";function i(e){e&&e.el||t.error(\"EventBus initialized without el\"),this.$el=t(e.el)}var n,o;return n=\"typeahead:\",o={render:\"rendered\",cursorchange:\"cursorchanged\",select:\"selected\",autocomplete:\"autocompleted\"},e.mixin(i.prototype,{_trigger:function(e,i){var o;return o=t.Event(n+e),(i=i||[]).unshift(o),this.$el.trigger.apply(this.$el,i),o},before:function(t){var e,i;return e=[].slice.call(arguments,1),i=this._trigger(\"before\"+t,e),i.isDefaultPrevented()},trigger:function(t){var e;this._trigger(t,[].slice.call(arguments,1)),(e=o[t])&&this._trigger(e,[].slice.call(arguments,1))}}),i}(),o=function(){\"use strict\";function t(t,e,i,n){var o;if(!i)return this;for(e=e.split(a),i=n?r(i,n):i,this._callbacks=this._callbacks||{};o=e.shift();)this._callbacks[o]=this._callbacks[o]||{sync:[],async:[]},this._callbacks[o][t].push(i);return this}function e(e,i,n){return t.call(this,\"async\",e,i,n)}function i(e,i,n){return t.call(this,\"sync\",e,i,n)}function n(t){var e;if(!this._callbacks)return this;for(t=t.split(a);e=t.shift();)delete this._callbacks[e];return this}function o(t){var e,i,n,o,r;if(!this._callbacks)return this;for(t=t.split(a),n=[].slice.call(arguments,1);(e=t.shift())&&(i=this._callbacks[e]);)o=s(i.sync,this,[e].concat(n)),r=s(i.async,this,[e].concat(n)),o()&&c(r);return this}function s(t,e,i){function n(){for(var n,o=0,s=t.length;!n&&o<s;o+=1)n=!1===t[o].apply(e,i);return!n}return n}function r(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}var a=/\\s+/,c=function(){return window.setImmediate?function(t){setImmediate(function(){t()})}:function(t){setTimeout(function(){t()},0)}}();return{onSync:i,onAsync:e,off:n,trigger:o}}(),s=function(t){\"use strict\";function i(t,i,n){for(var o,s=[],r=0,a=t.length;r<a;r++)s.push(e.escapeRegExChars(t[r]));return o=n?\"\\\\b(\"+s.join(\"|\")+\")\\\\b\":\"(\"+s.join(\"|\")+\")\",i?new RegExp(o):new RegExp(o,\"i\")}var n={node:null,pattern:null,tagName:\"strong\",className:null,wordsOnly:!1,caseSensitive:!1};return function(o){function s(e){var i,n,s;return(i=a.exec(e.data))&&(s=t.createElement(o.tagName),o.className&&(s.className=o.className),n=e.splitText(i.index),n.splitText(i[0].length),s.appendChild(n.cloneNode(!0)),e.parentNode.replaceChild(s,n)),!!i}function r(t,e){for(var i,n=0;n<t.childNodes.length;n++)i=t.childNodes[n],3===i.nodeType?n+=e(i)?1:0:r(i,e)}var a;o=e.mixin({},n,o),o.node&&o.pattern&&(o.pattern=e.isArray(o.pattern)?o.pattern:[o.pattern],a=i(o.pattern,o.caseSensitive,o.wordsOnly),r(o.node,s))}}(window.document),r=function(){\"use strict\";function i(i,o){i=i||{},i.input||t.error(\"input is missing\"),o.mixin(this),this.$hint=t(i.hint),this.$input=t(i.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=n(this.$input),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=e.noop)}function n(e){return t('<pre aria-hidden=\"true\"></pre>').css({position:\"absolute\",visibility:\"hidden\",whiteSpace:\"pre\",fontFamily:e.css(\"font-family\"),fontSize:e.css(\"font-size\"),fontStyle:e.css(\"font-style\"),fontVariant:e.css(\"font-variant\"),fontWeight:e.css(\"font-weight\"),wordSpacing:e.css(\"word-spacing\"),letterSpacing:e.css(\"letter-spacing\"),textIndent:e.css(\"text-indent\"),textRendering:e.css(\"text-rendering\"),textTransform:e.css(\"text-transform\")}).insertAfter(e)}function s(t,e){return i.normalizeQuery(t)===i.normalizeQuery(e)}function r(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}var a;return a={9:\"tab\",27:\"esc\",37:\"left\",39:\"right\",13:\"enter\",38:\"up\",40:\"down\"},i.normalizeQuery=function(t){return e.toStr(t).replace(/^\\s*/g,\"\").replace(/\\s{2,}/g,\" \")},e.mixin(i.prototype,o,{_onBlur:function(){this.resetInputValue(),this.trigger(\"blurred\")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger(\"focused\")},_onKeydown:function(t){var e=a[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+\"Keyed\",t)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(t,e){var i;switch(t){case\"up\":case\"down\":i=!r(e);break;default:i=!1}i&&e.preventDefault()},_shouldTrigger:function(t,e){var i;switch(t){case\"tab\":i=!r(e);break;default:i=!0}return i},_checkLanguageDirection:function(){var t=(this.$input.css(\"direction\")||\"ltr\").toLowerCase();this.dir!==t&&(this.dir=t,this.$hint.attr(\"dir\",t),this.trigger(\"langDirChanged\",t))},_setQuery:function(t,e){var i,n;i=s(t,this.query),n=!!i&&this.query.length!==t.length,this.query=t,e||i?!e&&n&&this.trigger(\"whitespaceChanged\",this.query):this.trigger(\"queryChanged\",this.query)},bind:function(){var t,i,n,o,s=this;return t=e.bind(this._onBlur,this),i=e.bind(this._onFocus,this),n=e.bind(this._onKeydown,this),o=e.bind(this._onInput,this),this.$input.on(\"blur.tt\",t).on(\"focus.tt\",i).on(\"keydown.tt\",n),!e.isMsie()||e.isMsie()>9?this.$input.on(\"input.tt\",o):this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\",function(t){a[t.which||t.keyCode]||e.defer(e.bind(s._onInput,s,t))}),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||\"\"},setQuery:function(t,e){this.setInputValue(t),this._setQuery(t,e)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(t){this.$input.val(t),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint(\"\")},clearHintIfInvalid:function(){var t,e,i,n;t=this.getInputValue(),e=this.getHint(),i=t!==e&&0===e.indexOf(t),!(n=\"\"!==t&&i&&!this.hasOverflow())&&this.clearHint()},hasFocus:function(){return this.$input.is(\":focus\")},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,i,n;return t=this.$input.val().length,i=this.$input[0].selectionStart,e.isNumber(i)?i===t:!document.selection||(n=document.selection.createRange(),n.moveStart(\"character\",-t),t===n.text.length)},destroy:function(){this.$hint.off(\".tt\"),this.$input.off(\".tt\"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=t(\"<div>\")}}),i}(),a=function(){\"use strict\";function i(i,o){i=i||{},i.templates=i.templates||{},i.templates.notFound=i.templates.notFound||i.templates.empty,i.source||t.error(\"missing source\"),i.node||t.error(\"missing node\"),i.name&&!a(i.name)&&t.error(\"invalid dataset name: \"+i.name),o.mixin(this),this.highlight=!!i.highlight,this.name=i.name||l(),this.limit=i.limit||5,this.displayFn=n(i.display||i.displayKey),this.templates=r(i.templates,this.displayFn),this.source=i.source.__ttAdapter?i.source.__ttAdapter():i.source,this.async=e.isUndefined(i.async)?this.source.length>2:!!i.async,this._resetLastSuggestion(),this.$el=t(i.node).addClass(this.classes.dataset).addClass(this.classes.dataset+\"-\"+this.name)}function n(t){function i(e){return e[t]}return t=t||e.stringify,e.isFunction(t)?t:i}function r(i,n){function o(e){return t(\"<div>\").text(n(e))}return{notFound:i.notFound&&e.templatify(i.notFound),pending:i.pending&&e.templatify(i.pending),header:i.header&&e.templatify(i.header),footer:i.footer&&e.templatify(i.footer),suggestion:i.suggestion||o}}function a(t){return/^[_a-zA-Z0-9-]+$/.test(t)}var c,l;return c={val:\"tt-selectable-display\",obj:\"tt-selectable-object\"},l=e.getIdGenerator(),i.extractData=function(e){var i=t(e);return i.data(c.obj)?{val:i.data(c.val)||\"\",obj:i.data(c.obj)||null}:null},e.mixin(i.prototype,o,{_overwrite:function(t,e){e=e||[],e.length?this._renderSuggestions(t,e):this.async&&this.templates.pending?this._renderPending(t):!this.async&&this.templates.notFound?this._renderNotFound(t):this._empty(),this.trigger(\"rendered\",this.name,e,!1)},_append:function(t,e){e=e||[],e.length&&this.$lastSuggestion.length?this._appendSuggestions(t,e):e.length?this._renderSuggestions(t,e):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(t),this.trigger(\"rendered\",this.name,e,!0)},_renderSuggestions:function(t,e){var i;i=this._getSuggestionsFragment(t,e),this.$lastSuggestion=i.children().last(),this.$el.html(i).prepend(this._getHeader(t,e)).append(this._getFooter(t,e))},_appendSuggestions:function(t,e){var i,n;i=this._getSuggestionsFragment(t,e),n=i.children().last(),this.$lastSuggestion.after(i),this.$lastSuggestion=n},_renderPending:function(t){var e=this.templates.pending;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_renderNotFound:function(t){var e=this.templates.notFound;this._resetLastSuggestion(),e&&this.$el.html(e({query:t,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(i,n){var o,r=this;return o=document.createDocumentFragment(),e.each(n,function(e){var n,s;s=r._injectQuery(i,e),n=t(r.templates.suggestion(s)).data(c.obj,e).data(c.val,r.displayFn(e)).addClass(r.classes.suggestion+\" \"+r.classes.selectable),o.appendChild(n[0])}),this.highlight&&s({className:this.classes.highlight,node:o,pattern:i}),t(o)},_getFooter:function(t,e){return this.templates.footer?this.templates.footer({query:t,suggestions:e,dataset:this.name}):null},_getHeader:function(t,e){return this.templates.header?this.templates.header({query:t,suggestions:e,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=t()},_injectQuery:function(t,i){return e.isObject(i)?e.mixin({_query:t},i):i},update:function(e){function i(t){r||(r=!0,t=(t||[]).slice(0,o.limit),a=t.length,o._overwrite(e,t),a<o.limit&&o.async&&o.trigger(\"asyncRequested\",e))}function n(i){i=i||[],!s&&a<o.limit&&(o.cancel=t.noop,a+=i.length,o._append(e,i.slice(0,o.limit-a)),o.async&&o.trigger(\"asyncReceived\",e))}var o=this,s=!1,r=!1,a=0;this.cancel(),this.cancel=function(){s=!0,o.cancel=t.noop,o.async&&o.trigger(\"asyncCanceled\",e)},this.source(e,i,n),!r&&i([])},cancel:t.noop,clear:function(){this._empty(),this.cancel(),this.trigger(\"cleared\")},isEmpty:function(){return this.$el.is(\":empty\")},destroy:function(){this.$el=t(\"<div>\")}}),i}(),c=function(){\"use strict\";function i(i,n){function o(e){var i=s.$node.find(e.node).first();return e.node=i.length?i:t(\"<div>\").appendTo(s.$node),new a(e,n)}var s=this;i=i||{},i.node||t.error(\"node is required\"),n.mixin(this),this.$node=t(i.node),this.query=null,this.datasets=e.map(i.datasets,o)}return e.mixin(i.prototype,o,{_onSelectableClick:function(e){this.trigger(\"selectableClicked\",t(e.currentTarget))},_onRendered:function(t,e,i,n){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger(\"datasetRendered\",e,i,n)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger(\"datasetCleared\")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){function t(t){return t.isEmpty()}return e.every(this.datasets,t)},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var t=this.getActiveSelectable();t&&t.removeClass(this.classes.cursor)},_ensureVisible:function(t){var e,i,n,o;e=t.position().top,i=e+t.outerHeight(!0),n=this.$node.scrollTop(),o=this.$node.height()+parseInt(this.$node.css(\"paddingTop\"),10)+parseInt(this.$node.css(\"paddingBottom\"),10),e<0?this.$node.scrollTop(n+e):o<i&&this.$node.scrollTop(n+(i-o))},bind:function(){var t,i=this;return t=e.bind(this._onSelectableClick,this),this.$node.on(\"click.tt\",this.selectors.selectable,t),e.each(this.datasets,function(t){t.onSync(\"asyncRequested\",i._propagate,i).onSync(\"asyncCanceled\",i._propagate,i).onSync(\"asyncReceived\",i._propagate,i).onSync(\"rendered\",i._onRendered,i).onSync(\"cleared\",i._onCleared,i)}),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(t){this.$node.attr(\"dir\",t)},selectableRelativeToCursor:function(t){var e,i,n,o;return i=this.getActiveSelectable(),e=this._getSelectables(),n=i?e.index(i):-1,o=n+t,o=(o+1)%(e.length+1)-1,o=o<-1?e.length-1:o,-1===o?null:e.eq(o)},setCursor:function(t){this._removeCursor(),(t=t&&t.first())&&(t.addClass(this.classes.cursor),this._ensureVisible(t))},getSelectableData:function(t){return t&&t.length?a.extractData(t):null},getActiveSelectable:function(){var t=this._getSelectables().filter(this.selectors.cursor).first();return t.length?t:null},getTopSelectable:function(){var t=this._getSelectables().first();return t.length?t:null},update:function(t){function i(e){e.update(t)}var n=t!==this.query;return n&&(this.query=t,e.each(this.datasets,i)),n},empty:function(){function t(t){t.clear()}e.each(this.datasets,t),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){function i(t){t.destroy()}this.$node.off(\".tt\"),this.$node=t(\"<div>\"),e.each(this.datasets,i)}}),i}(),l=function(){\"use strict\";function t(){c.apply(this,[].slice.call(arguments,0))}var i=c.prototype;return e.mixin(t.prototype,c.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),i.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),i.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),i._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),i._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(t){return this.$node.css(\"ltr\"===t?this.css.ltr:this.css.rtl),i.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css(\"display\",\"block\")}}),t}(),d=function(){\"use strict\";function i(i,o){var s,r,a,c,l,d,p,u,h,f,M;i=i||{},i.input||t.error(\"missing input\"),i.menu||t.error(\"missing menu\"),i.eventBus||t.error(\"missing event bus\"),o.mixin(this),this.eventBus=i.eventBus,this.minLength=e.isNumber(i.minLength)?i.minLength:1,this.input=i.input,this.menu=i.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync(\"selectableClicked\",this._onSelectableClicked,this).onSync(\"asyncRequested\",this._onAsyncRequested,this).onSync(\"asyncCanceled\",this._onAsyncCanceled,this).onSync(\"asyncReceived\",this._onAsyncReceived,this).onSync(\"datasetRendered\",this._onDatasetRendered,this).onSync(\"datasetCleared\",this._onDatasetCleared,this),s=n(this,\"activate\",\"open\",\"_onFocused\"),r=n(this,\"deactivate\",\"_onBlurred\"),a=n(this,\"isActive\",\"isOpen\",\"_onEnterKeyed\"),c=n(this,\"isActive\",\"isOpen\",\"_onTabKeyed\"),l=n(this,\"isActive\",\"_onEscKeyed\"),d=n(this,\"isActive\",\"open\",\"_onUpKeyed\"),p=n(this,\"isActive\",\"open\",\"_onDownKeyed\"),u=n(this,\"isActive\",\"isOpen\",\"_onLeftKeyed\"),h=n(this,\"isActive\",\"isOpen\",\"_onRightKeyed\"),f=n(this,\"_openIfActive\",\"_onQueryChanged\"),M=n(this,\"_openIfActive\",\"_onWhitespaceChanged\"),this.input.bind().onSync(\"focused\",s,this).onSync(\"blurred\",r,this).onSync(\"enterKeyed\",a,this).onSync(\"tabKeyed\",c,this).onSync(\"escKeyed\",l,this).onSync(\"upKeyed\",d,this).onSync(\"downKeyed\",p,this).onSync(\"leftKeyed\",u,this).onSync(\"rightKeyed\",h,this).onSync(\"queryChanged\",f,this).onSync(\"whitespaceChanged\",M,this).onSync(\"langDirChanged\",this._onLangDirChanged,this)}function n(t){var i=[].slice.call(arguments,1);return function(){var n=[].slice.call(arguments);e.each(i,function(e){return t[e].apply(t,n)})}}return e.mixin(i.prototype,{_hacks:function(){var i,n;i=this.input.$input||t(\"<div>\"),n=this.menu.$node||t(\"<div>\"),i.on(\"blur.tt\",function(t){\nvar o,s,r;o=document.activeElement,s=n.is(o),r=n.has(o).length>0,e.isMsie()&&(s||r)&&(t.preventDefault(),t.stopImmediatePropagation(),e.defer(function(){i.focus()}))}),n.on(\"mousedown.tt\",function(t){t.preventDefault()})},_onSelectableClicked:function(t,e){this.select(e)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(t,e,i,n){this._updateHint(),this.eventBus.trigger(\"render\",i,n,e)},_onAsyncRequested:function(t,e,i){this.eventBus.trigger(\"asyncrequest\",i,e)},_onAsyncCanceled:function(t,e,i){this.eventBus.trigger(\"asynccancel\",i,e)},_onAsyncReceived:function(t,e,i){this.eventBus.trigger(\"asyncreceive\",i,e)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger(\"change\",this.input.getQuery())},_onEnterKeyed:function(t,e){var i;(i=this.menu.getActiveSelectable())&&this.select(i)&&e.preventDefault()},_onTabKeyed:function(t,e){var i;(i=this.menu.getActiveSelectable())?this.select(i)&&e.preventDefault():(i=this.menu.getTopSelectable())&&this.autocomplete(i)&&e.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){\"rtl\"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){\"ltr\"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(t,e){this._minLengthMet(e)?this.menu.update(e):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(t,e){this.dir!==e&&(this.dir=e,this.menu.setLanguageDirection(e))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(t){return t=e.isString(t)?t:this.input.getQuery()||\"\",t.length>=this.minLength},_updateHint:function(){var t,i,n,o,s,a,c;t=this.menu.getTopSelectable(),i=this.menu.getSelectableData(t),n=this.input.getInputValue(),!i||e.isBlankString(n)||this.input.hasOverflow()?this.input.clearHint():(o=r.normalizeQuery(n),s=e.escapeRegExChars(o),a=new RegExp(\"^(?:\"+s+\")(.+$)\",\"i\"),(c=a.exec(i.val))&&this.input.setHint(n+c[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return!!this.isActive()||!(!this.isEnabled()||this.eventBus.before(\"active\"))&&(this.active=!0,this.eventBus.trigger(\"active\"),!0)},deactivate:function(){return!this.isActive()||!this.eventBus.before(\"idle\")&&(this.active=!1,this.close(),this.eventBus.trigger(\"idle\"),!0)},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before(\"open\")||(this.menu.open(),this._updateHint(),this.eventBus.trigger(\"open\")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before(\"close\")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger(\"close\")),!this.isOpen()},setVal:function(t){this.input.setQuery(e.toStr(t))},getVal:function(){return this.input.getQuery()},select:function(t){var e=this.menu.getSelectableData(t);return!(!e||this.eventBus.before(\"select\",e.obj))&&(this.input.setQuery(e.val,!0),this.eventBus.trigger(\"select\",e.obj),this.close(),!0)},autocomplete:function(t){var e,i;return e=this.input.getQuery(),i=this.menu.getSelectableData(t),!(!(i&&e!==i.val)||this.eventBus.before(\"autocomplete\",i.obj))&&(this.input.setQuery(i.val),this.eventBus.trigger(\"autocomplete\",i.obj),!0)},moveCursor:function(t){var e,i,n,o;return e=this.input.getQuery(),i=this.menu.selectableRelativeToCursor(t),n=this.menu.getSelectableData(i),o=n?n.obj:null,!(this._minLengthMet()&&this.menu.update(e))&&!this.eventBus.before(\"cursorchange\",o)&&(this.menu.setCursor(i),n?this.input.setInputValue(n.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger(\"cursorchange\",o),!0)},destroy:function(){this.input.destroy(),this.menu.destroy()}}),i}();!function(){\"use strict\";function o(e,i){e.each(function(){var e,n=t(this);(e=n.data(M.typeahead))&&i(e,n)})}function s(t,e){return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(p(t)).prop(\"readonly\",!0).removeAttr(\"id name placeholder required\").attr({autocomplete:\"off\",spellcheck:\"false\",tabindex:-1})}function a(t,e){t.data(M.attrs,{dir:t.attr(\"dir\"),autocomplete:t.attr(\"autocomplete\"),spellcheck:t.attr(\"spellcheck\"),style:t.attr(\"style\")}),t.addClass(e.classes.input).attr({autocomplete:\"off\",spellcheck:!1});try{!t.attr(\"dir\")&&t.attr(\"dir\",\"auto\")}catch(t){}return t}function p(t){return{backgroundAttachment:t.css(\"background-attachment\"),backgroundClip:t.css(\"background-clip\"),backgroundColor:t.css(\"background-color\"),backgroundImage:t.css(\"background-image\"),backgroundOrigin:t.css(\"background-origin\"),backgroundPosition:t.css(\"background-position\"),backgroundRepeat:t.css(\"background-repeat\"),backgroundSize:t.css(\"background-size\")}}function u(t){var i,n;i=t.data(M.www),n=t.parent().filter(i.selectors.wrapper),e.each(t.data(M.attrs),function(i,n){e.isUndefined(i)?t.removeAttr(n):t.attr(n,i)}),t.removeData(M.typeahead).removeData(M.www).removeData(M.attr).removeClass(i.classes.input),n.length&&(t.detach().insertAfter(n),n.remove())}function h(i){var n,o;return n=e.isJQuery(i)||e.isElement(i),o=n?t(i).first():[],o.length?o:null}var f,M,m;f=t.fn.typeahead,M={www:\"tt-www\",attrs:\"tt-attrs\",typeahead:\"tt-typeahead\"},m={initialize:function(o,p){function u(){var i,u,m,b,g,v,A,z,y,_,L;e.each(p,function(t){t.highlight=!!o.highlight}),i=t(this),u=t(f.html.wrapper),m=h(o.hint),b=h(o.menu),g=!1!==o.hint&&!m,v=!1!==o.menu&&!b,g&&(m=s(i,f)),v&&(b=t(f.html.menu).css(f.css.menu)),m&&m.val(\"\"),i=a(i,f),(g||v)&&(u.css(f.css.wrapper),i.css(g?f.css.input:f.css.inputWithNoHint),i.wrap(u).parent().prepend(g?m:null).append(v?b:null)),L=v?l:c,A=new n({el:i}),z=new r({hint:m,input:i},f),y=new L({node:b,datasets:p},f),_=new d({input:z,menu:y,eventBus:A,minLength:o.minLength},f),i.data(M.www,f),i.data(M.typeahead,_)}var f;return p=e.isArray(p)?p:[].slice.call(arguments,1),o=o||{},f=i(o.classNames),this.each(u)},isEnabled:function(){var t;return o(this.first(),function(e){t=e.isEnabled()}),t},enable:function(){return o(this,function(t){t.enable()}),this},disable:function(){return o(this,function(t){t.disable()}),this},isActive:function(){var t;return o(this.first(),function(e){t=e.isActive()}),t},activate:function(){return o(this,function(t){t.activate()}),this},deactivate:function(){return o(this,function(t){t.deactivate()}),this},isOpen:function(){var t;return o(this.first(),function(e){t=e.isOpen()}),t},open:function(){return o(this,function(t){t.open()}),this},close:function(){return o(this,function(t){t.close()}),this},select:function(e){var i=!1,n=t(e);return o(this.first(),function(t){i=t.select(n)}),i},autocomplete:function(e){var i=!1,n=t(e);return o(this.first(),function(t){i=t.autocomplete(n)}),i},moveCursor:function(t){var e=!1;return o(this.first(),function(i){e=i.moveCursor(t)}),e},val:function(t){var e;return arguments.length?(o(this,function(e){e.setVal(t)}),this):(o(this.first(),function(t){e=t.getVal()}),e)},destroy:function(){return o(this,function(t,e){u(e),t.destroy()}),this}},t.fn.typeahead=function(t){return m[t]?m[t].apply(this,[].slice.call(arguments,1)):m.initialize.apply(this,arguments)},t.fn.typeahead.noConflict=function(){return t.fn.typeahead=f,this}}()}),function(t){\"use strict\";function e(e,i){this.itemsArray=[],this.$element=t(e),this.$element.hide(),this.isSelect=\"SELECT\"===e.tagName,this.multiple=this.isSelect&&e.hasAttribute(\"multiple\"),this.objectItems=i&&i.itemValue,this.placeholderText=e.hasAttribute(\"placeholder\")?this.$element.attr(\"placeholder\"):\"\",this.inputSize=Math.max(1,this.placeholderText.length),this.$container=t('<div class=\"bootstrap-tagsinput\"></div>'),this.$input=t('<input type=\"text\" placeholder=\"'+this.placeholderText+'\"/>').appendTo(this.$container),this.$element.after(this.$container);var n=(this.inputSize<3?3:this.inputSize)+\"em\";this.$input.get(0).style.cssText=\"width: \"+n+\" !important; padding: 8px;\",this.build(i)}function i(t,e){if(\"function\"!=typeof t[e]){var i=t[e];t[e]=function(t){return t[i]}}}function n(t,e){if(\"function\"!=typeof t[e]){var i=t[e];t[e]=function(){return i}}}function o(t){return t?c.text(t).html():\"\"}function s(t){var e=0;if(document.selection){t.focus();var i=document.selection.createRange();i.moveStart(\"character\",-t.value.length),e=i.text.length}else(t.selectionStart||\"0\"==t.selectionStart)&&(e=t.selectionStart);return e}function r(e,i){var n=!1;return t.each(i,function(t,i){if(\"number\"==typeof i&&e.which===i)return n=!0,!1;if(e.which===i.which){var o=!i.hasOwnProperty(\"altKey\")||e.altKey===i.altKey,s=!i.hasOwnProperty(\"shiftKey\")||e.shiftKey===i.shiftKey,r=!i.hasOwnProperty(\"ctrlKey\")||e.ctrlKey===i.ctrlKey;if(o&&s&&r)return n=!0,!1}}),n}var a={tagClass:function(){return\"label label-info\"},itemValue:function(t){return t?t.toString():t},itemText:function(t){return this.itemValue(t)},freeInput:!0,addOnBlur:!0,maxTags:void 0,maxChars:void 0,confirmKeys:[13,44],onTagExists:function(t,e){e.hide().fadeIn()},trimValue:!1,allowDuplicates:!1};e.prototype={constructor:e,add:function(e,i){var n=this;if(!(n.options.maxTags&&n.itemsArray.length>=n.options.maxTags||!1!==e&&!e)){if(\"string\"==typeof e&&n.options.trimValue&&(e=t.trim(e)),\"object\"==typeof e&&!n.objectItems)throw\"Can't add objects when itemValue option is not set\";if(!e.toString().match(/^\\s*$/)){if(n.isSelect&&!n.multiple&&n.itemsArray.length>0&&n.remove(n.itemsArray[0]),\"string\"==typeof e&&\"INPUT\"===this.$element[0].tagName){var s=e.split(\",\");if(s.length>1){for(var r=0;r<s.length;r++)this.add(s[r],!0);return void(i||n.pushVal())}}var a=n.options.itemValue(e),c=n.options.itemText(e),l=n.options.tagClass(e),d=t.grep(n.itemsArray,function(t){return n.options.itemValue(t)===a})[0];if(!d||n.options.allowDuplicates){if(!(n.items().toString().length+e.length+1>n.options.maxInputLength)){var p=t.Event(\"beforeItemAdd\",{item:e,cancel:!1});if(n.$element.trigger(p),!p.cancel){n.itemsArray.push(e);var u=t('<span class=\"tag '+o(l)+'\">'+o(c)+'<span data-role=\"remove\"></span></span>');if(u.data(\"item\",e),n.findInputWrapper().before(u),u.after(\" \"),n.isSelect&&!t('option[value=\"'+encodeURIComponent(a)+'\"]',n.$element)[0]){var h=t(\"<option selected>\"+o(c)+\"</option>\");h.data(\"item\",e),h.attr(\"value\",a),n.$element.append(h)}i||n.pushVal(),(n.options.maxTags===n.itemsArray.length||n.items().toString().length===n.options.maxInputLength)&&n.$container.addClass(\"bootstrap-tagsinput-max\"),n.$element.trigger(t.Event(\"itemAdded\",{item:e}))}}}else if(n.options.onTagExists){var f=t(\".tag\",n.$container).filter(function(){return t(this).data(\"item\")===d});n.options.onTagExists(e,f)}}}},remove:function(e,i){var n=this;if(n.objectItems&&(e=\"object\"==typeof e?t.grep(n.itemsArray,function(t){return n.options.itemValue(t)==n.options.itemValue(e)}):t.grep(n.itemsArray,function(t){return n.options.itemValue(t)==e}),e=e[e.length-1]),e){var o=t.Event(\"beforeItemRemove\",{item:e,cancel:!1});if(n.$element.trigger(o),o.cancel)return;t(\".tag\",n.$container).filter(function(){return t(this).data(\"item\")===e}).remove(),t(\"option\",n.$element).filter(function(){return t(this).data(\"item\")===e}).remove(),-1!==t.inArray(e,n.itemsArray)&&n.itemsArray.splice(t.inArray(e,n.itemsArray),1)}i||n.pushVal(),n.options.maxTags>n.itemsArray.length&&n.$container.removeClass(\"bootstrap-tagsinput-max\"),n.$element.trigger(t.Event(\"itemRemoved\",{item:e}))},removeAll:function(){var e=this;for(t(\".tag\",e.$container).remove(),t(\"option\",e.$element).remove();e.itemsArray.length>0;)e.itemsArray.pop();e.pushVal()},refresh:function(){var e=this;t(\".tag\",e.$container).each(function(){var i=t(this),n=i.data(\"item\"),s=e.options.itemValue(n),r=e.options.itemText(n),a=e.options.tagClass(n);if(i.attr(\"class\",null),i.addClass(\"tag \"+o(a)),i.contents().filter(function(){return 3==this.nodeType})[0].nodeValue=o(r),e.isSelect){t(\"option\",e.$element).filter(function(){return t(this).data(\"item\")===n}).attr(\"value\",s)}})},items:function(){return this.itemsArray},pushVal:function(){var e=this,i=t.map(e.items(),function(t){return e.options.itemValue(t).toString()});e.$element.val(i,!0).trigger(\"change\")},build:function(e){var o=this;if(o.options=t.extend({},a,e),o.objectItems&&(o.options.freeInput=!1),i(o.options,\"itemValue\"),i(o.options,\"itemText\"),n(o.options,\"tagClass\"),o.options.typeahead){var c=o.options.typeahead||{};n(c,\"source\"),o.$input.typeahead(t.extend({},c,{source:function(e,i){function n(t){for(var e=[],n=0;n<t.length;n++){var r=o.options.itemText(t[n]);s[r]=t[n],e.push(r)}i(e)}this.map={};var s=this.map,r=c.source(e);t.isFunction(r.success)?r.success(n):t.isFunction(r.then)?r.then(n):t.when(r).then(n)},updater:function(t){o.add(this.map[t])},matcher:function(t){return-1!==t.toLowerCase().indexOf(this.query.trim().toLowerCase())},sorter:function(t){return t.sort()},highlighter:function(t){var e=new RegExp(\"(\"+this.query+\")\",\"gi\");return t.replace(e,\"<strong>$1</strong>\")}}))}if(o.options.typeaheadjs){var l=o.options.typeaheadjs||{};o.$input.typeahead(null,l).on(\"typeahead:selected\",t.proxy(function(t,e){o.add(l.valueKey?e[l.valueKey]:e),o.$input.typeahead(\"val\",\"\")},o))}o.$container.on(\"click\",t.proxy(function(){o.$element.attr(\"disabled\")||o.$input.removeAttr(\"disabled\"),o.$input.focus()},o)),o.options.addOnBlur&&o.options.freeInput&&o.$input.on(\"focusout\",t.proxy(function(){0===t(\".typeahead, .twitter-typeahead\",o.$container).length&&(o.add(o.$input.val()),o.$input.val(\"\"))},o)),o.$container.on(\"keydown\",\"input\",t.proxy(function(e){var i=t(e.target),n=o.findInputWrapper();if(o.$element.attr(\"disabled\"))return void o.$input.attr(\"disabled\",\"disabled\");switch(e.which){case 8:if(0===s(i[0])){var r=n.prev();r&&o.remove(r.data(\"item\"))}break;case 46:if(0===s(i[0])){var a=n.next();a&&o.remove(a.data(\"item\"))}break;case 37:var c=n.prev();0===i.val().length&&c[0]&&(c.before(n),i.focus());break;case 39:var l=n.next();0===i.val().length&&l[0]&&(l.after(n),i.focus())}var d=i.val().length;Math.ceil(d/5),i.attr(\"size\",Math.max(this.inputSize,i.val().length))},o)),o.$container.on(\"keypress\",\"input\",t.proxy(function(e){var i=t(e.target);if(o.$element.attr(\"disabled\"))return void o.$input.attr(\"disabled\",\"disabled\");var n=i.val(),s=o.options.maxChars&&n.length>=o.options.maxChars;o.options.freeInput&&(r(e,o.options.confirmKeys)||s)&&(o.add(s?n.substr(0,o.options.maxChars):n),i.val(\"\"),e.preventDefault());var a=i.val().length;Math.ceil(a/5),i.attr(\"size\",Math.max(this.inputSize,i.val().length))},o)),o.$container.on(\"click\",\"[data-role=remove]\",t.proxy(function(e){o.$element.attr(\"disabled\")||o.remove(t(e.target).closest(\".tag\").data(\"item\"))},o)),o.options.itemValue===a.itemValue&&(\"INPUT\"===o.$element[0].tagName?o.add(o.$element.val()):t(\"option\",o.$element).each(function(){o.add(t(this).attr(\"value\"),!0)}))},destroy:function(){var t=this;t.$container.off(\"keypress\",\"input\"),t.$container.off(\"click\",\"[role=remove]\"),t.$container.remove(),t.$element.removeData(\"tagsinput\"),t.$element.show()},focus:function(){this.$input.focus()},input:function(){return this.$input},findInputWrapper:function(){for(var e=this.$input[0],i=this.$container[0];e&&e.parentNode!==i;)e=e.parentNode;return t(e)}},t.fn.tagsinput=function(i,n){var o=[];return this.each(function(){var s=t(this).data(\"tagsinput\");if(s)if(i||n){if(void 0!==s[i]){var r=s[i](n);void 0!==r&&o.push(r)}}else o.push(s);else s=new e(this,i),t(this).data(\"tagsinput\",s),o.push(s),\"SELECT\"===this.tagName&&t(\"option\",t(this)).attr(\"selected\",\"selected\"),t(this).val(t(this).val())}),\"string\"==typeof i?o.length>1?o:o[0]:o},t.fn.tagsinput.Constructor=e;var c=t(\"<div />\");t(function(){t(\"input[data-role=tagsinput], select[multiple][data-role=tagsinput]\").tagsinput()})}(window.jQuery),function(t){\"use strict\";\"function\"==typeof define&&define.amd?define(t):\"undefined\"!=typeof module&&void 0!==module.exports?module.exports=t():window.Sortable=t()}(function(){\"use strict\";function t(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw\"Sortable: `el` must be HTMLElement, and not \"+{}.toString.call(t);this.el=t,this.options=e=v({},e),t[j]=this;var i={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(t.nodeName)?\"li\":\">*\",ghostClass:\"sortable-ghost\",chosenClass:\"sortable-chosen\",dragClass:\"sortable-drag\",ignore:\"a, img\",filter:null,preventOnFilter:!0,animation:0,setData:function(t,e){t.setData(\"Text\",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:\"data-id\",delay:0,forceFallback:!1,fallbackClass:\"sortable-fallback\",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0}};for(var n in i)!(n in e)&&(e[n]=i[n]);rt(e);for(var o in this)\"_\"===o.charAt(0)&&\"function\"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&J,s(t,\"mousedown\",this._onTapStart),s(t,\"touchstart\",this._onTapStart),s(t,\"pointerdown\",this._onTapStart),this.nativeDraggable&&(s(t,\"dragover\",this),s(t,\"dragenter\",this)),ot.push(this._onDragOver),e.store&&this.sort(e.store.get(this))}function e(t,e){\"clone\"!==t.lastPullMode&&(e=!0),O&&O.state!==e&&(c(O,\"display\",e?\"none\":\"\"),e||O.state&&(t.options.group.revertClone?(N.insertBefore(O,T),t._animate(y,O)):N.insertBefore(O,y)),O.state=e)}function i(t,e,i){if(t){i=i||Y;do{if(\">*\"===e&&t.parentNode===i||b(t,e))return t}while(t=n(t))}return null}function n(t){var e=t.host;return e&&e.nodeType?e:t.parentNode}function o(t){t.dataTransfer&&(t.dataTransfer.dropEffect=\"move\"),t.preventDefault()}function s(t,e,i){t.addEventListener(e,i,Q)}function r(t,e,i){t.removeEventListener(e,i,Q)}function a(t,e,i){if(t)if(t.classList)t.classList[i?\"add\":\"remove\"](e);else{var n=(\" \"+t.className+\" \").replace(F,\" \").replace(\" \"+e+\" \",\" \");t.className=(n+(i?\" \"+e:\"\")).replace(F,\" \")}}function c(t,e,i){var n=t&&t.style;if(n){if(void 0===i)return Y.defaultView&&Y.defaultView.getComputedStyle?i=Y.defaultView.getComputedStyle(t,\"\"):t.currentStyle&&(i=t.currentStyle),void 0===e?i:i[e];e in n||(e=\"-webkit-\"+e),n[e]=i+(\"string\"==typeof i?\"\":\"px\")}}function l(t,e,i){if(t){var n=t.getElementsByTagName(e),o=0,s=n.length;if(i)for(;o<s;o++)i(n[o],o);return n}return[]}function d(t,e,i,n,o,s,r){t=t||e[j];var a=Y.createEvent(\"Event\"),c=t.options,l=\"on\"+i.charAt(0).toUpperCase()+i.substr(1);a.initEvent(i,!0,!0),a.to=e,a.from=o||e,a.item=n||e,a.clone=O,a.oldIndex=s,a.newIndex=r,e.dispatchEvent(a),c[l]&&c[l].call(t,a)}function p(t,e,i,n,o,s,r,a){var c,l,d=t[j],p=d.options.onMove;return c=Y.createEvent(\"Event\"),c.initEvent(\"move\",!0,!0),c.to=e,c.from=t,c.dragged=i,c.draggedRect=n,c.related=o||e,c.relatedRect=s||e.getBoundingClientRect(),c.willInsertAfter=a,t.dispatchEvent(c),p&&(l=p.call(d,c,r)),l}function u(t){t.draggable=!1}function h(){tt=!1}function f(t,e){var i=t.lastElementChild,n=i.getBoundingClientRect();return e.clientY-(n.top+n.height)>5||e.clientX-(n.left+n.width)>5}function M(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,i=e.length,n=0;i--;)n+=e.charCodeAt(i);return n.toString(36)}function m(t,e){var i=0;if(!t||!t.parentNode)return-1;for(;t&&(t=t.previousElementSibling);)\"TEMPLATE\"===t.nodeName.toUpperCase()||\">*\"!==e&&!b(t,e)||i++;return i}function b(t,e){if(t){e=e.split(\".\");var i=e.shift().toUpperCase(),n=new RegExp(\"\\\\s(\"+e.join(\"|\")+\")(?=\\\\s)\",\"g\");return!(\"\"!==i&&t.nodeName.toUpperCase()!=i||e.length&&((\" \"+t.className+\" \").match(n)||[]).length!=e.length)}return!1}function g(t,e){var i,n;return function(){void 0===i&&(i=arguments,n=this,setTimeout(function(){1===i.length?t.call(n,i[0]):t.apply(n,i),i=void 0},e))}}function v(t,e){if(t&&e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function A(t){return V?V(t).clone(!0)[0]:G&&G.dom?G.dom(t).cloneNode(!0):t.cloneNode(!0)}function z(t){for(var e=t.getElementsByTagName(\"input\"),i=e.length;i--;){var n=e[i];n.checked&&nt.push(n)}}if(\"undefined\"==typeof window||!window.document)return function(){throw new Error(\"Sortable.js requires a window with a document\")};var y,_,L,O,N,T,q,C,W,w,B,E,S,k,x,R,X,D,$,I,P={},F=/\\s+/g,H=/left|right|inline/,j=\"Sortable\"+(new Date).getTime(),U=window,Y=U.document,K=U.parseInt,V=U.jQuery||U.Zepto,G=U.Polymer,Q=!1,J=!!(\"draggable\"in Y.createElement(\"div\")),Z=function(t){return!navigator.userAgent.match(/Trident.*rv[ :]?11\\./)&&(t=Y.createElement(\"x\"),t.style.cssText=\"pointer-events:auto\",\"auto\"===t.style.pointerEvents)}(),tt=!1,et=Math.abs,it=Math.min,nt=[],ot=[],st=g(function(t,e,i){if(i&&e.scroll){var n,o,s,r,a,c,l=i[j],d=e.scrollSensitivity,p=e.scrollSpeed,u=t.clientX,h=t.clientY,f=window.innerWidth,M=window.innerHeight;if(W!==i&&(C=e.scroll,W=i,w=e.scrollFn,!0===C)){C=i;do{if(C.offsetWidth<C.scrollWidth||C.offsetHeight<C.scrollHeight)break}while(C=C.parentNode)}C&&(n=C,o=C.getBoundingClientRect(),s=(et(o.right-u)<=d)-(et(o.left-u)<=d),r=(et(o.bottom-h)<=d)-(et(o.top-h)<=d)),s||r||(s=(f-u<=d)-(u<=d),r=(M-h<=d)-(h<=d),(s||r)&&(n=U)),P.vx===s&&P.vy===r&&P.el===n||(P.el=n,P.vx=s,P.vy=r,clearInterval(P.pid),n&&(P.pid=setInterval(function(){return c=r?r*p:0,a=s?s*p:0,\"function\"==typeof w?w.call(l,a,c,t):void(n===U?U.scrollTo(U.pageXOffset+a,U.pageYOffset+c):(n.scrollTop+=c,n.scrollLeft+=a))},24)))}},30),rt=function(t){function e(t,e){return void 0!==t&&!0!==t||(t=i.name),\"function\"==typeof t?t:function(i,n){var o=n.options.group.name;return e?t:t&&(t.join?t.indexOf(o)>-1:o==t)}}var i={},n=t.group;n&&\"object\"==typeof n||(n={name:n}),i.name=n.name,i.checkPull=e(n.pull,!0),i.checkPut=e(n.put),i.revertClone=n.revertClone,t.group=i};t.prototype={constructor:t,_onTapStart:function(t){var e,n=this,o=this.el,s=this.options,r=s.preventOnFilter,a=t.type,c=t.touches&&t.touches[0],l=(c||t).target,p=t.target.shadowRoot&&t.path[0]||l,u=s.filter;if(z(o),!y&&!(\"mousedown\"===a&&0!==t.button||s.disabled)&&(l=i(l,s.draggable,o))&&q!==l){if(e=m(l,s.draggable),\"function\"==typeof u){if(u.call(this,t,l,this))return d(n,p,\"filter\",l,o,e),void(r&&t.preventDefault())}else if(u&&(u=u.split(\",\").some(function(t){if(t=i(p,t.trim(),o))return d(n,t,\"filter\",l,o,e),!0})))return void(r&&t.preventDefault());s.handle&&!i(p,s.handle,o)||this._prepareDragStart(t,c,l,e)}},_prepareDragStart:function(t,e,i,n){var o,r=this,c=r.el,p=r.options,h=c.ownerDocument;i&&!y&&i.parentNode===c&&(D=t,N=c,y=i,_=y.parentNode,T=y.nextSibling,q=i,R=p.group,k=n,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,y.style[\"will-change\"]=\"transform\",o=function(){r._disableDelayedDrag(),y.draggable=r.nativeDraggable,a(y,p.chosenClass,!0),r._triggerDragStart(t,e),d(r,N,\"choose\",y,N,k)},p.ignore.split(\",\").forEach(function(t){l(y,t.trim(),u)}),s(h,\"mouseup\",r._onDrop),s(h,\"touchend\",r._onDrop),s(h,\"touchcancel\",r._onDrop),s(h,\"pointercancel\",r._onDrop),s(h,\"selectstart\",r),p.delay?(s(h,\"mouseup\",r._disableDelayedDrag),s(h,\"touchend\",r._disableDelayedDrag),s(h,\"touchcancel\",r._disableDelayedDrag),s(h,\"mousemove\",r._disableDelayedDrag),s(h,\"touchmove\",r._disableDelayedDrag),s(h,\"pointermove\",r._disableDelayedDrag),r._dragStartTimer=setTimeout(o,p.delay)):o())},_disableDelayedDrag:function(){var t=this.el.ownerDocument;clearTimeout(this._dragStartTimer),r(t,\"mouseup\",this._disableDelayedDrag),r(t,\"touchend\",this._disableDelayedDrag),r(t,\"touchcancel\",this._disableDelayedDrag),r(t,\"mousemove\",this._disableDelayedDrag),r(t,\"touchmove\",this._disableDelayedDrag),r(t,\"pointermove\",this._disableDelayedDrag)},_triggerDragStart:function(t,e){e=e||(\"touch\"==t.pointerType?t:null),e?(D={target:y,clientX:e.clientX,clientY:e.clientY},this._onDragStart(D,\"touch\")):this.nativeDraggable?(s(y,\"dragend\",this),s(N,\"dragstart\",this._onDragStart)):this._onDragStart(D,!0);try{Y.selection?setTimeout(function(){Y.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(){if(N&&y){var e=this.options;a(y,e.ghostClass,!0),a(y,e.dragClass,!1),t.active=this,d(this,N,\"start\",y,N,k)}else this._nulling()},_emulateDragOver:function(){if($){if(this._lastX===$.clientX&&this._lastY===$.clientY)return;this._lastX=$.clientX,this._lastY=$.clientY,Z||c(L,\"display\",\"none\");var t=Y.elementFromPoint($.clientX,$.clientY),e=t,i=ot.length;if(e)do{if(e[j]){for(;i--;)ot[i]({clientX:$.clientX,clientY:$.clientY,target:t,rootEl:e});break}t=e}while(e=e.parentNode);Z||c(L,\"display\",\"\")}},_onTouchMove:function(e){if(D){var i=this.options,n=i.fallbackTolerance,o=i.fallbackOffset,s=e.touches?e.touches[0]:e,r=s.clientX-D.clientX+o.x,a=s.clientY-D.clientY+o.y,l=e.touches?\"translate3d(\"+r+\"px,\"+a+\"px,0)\":\"translate(\"+r+\"px,\"+a+\"px)\";if(!t.active){if(n&&it(et(s.clientX-this._lastX),et(s.clientY-this._lastY))<n)return;this._dragStarted()}this._appendGhost(),I=!0,$=s,c(L,\"webkitTransform\",l),c(L,\"mozTransform\",l),c(L,\"msTransform\",l),c(L,\"transform\",l),e.preventDefault()}},_appendGhost:function(){if(!L){var t,e=y.getBoundingClientRect(),i=c(y),n=this.options;L=y.cloneNode(!0),a(L,n.ghostClass,!1),a(L,n.fallbackClass,!0),a(L,n.dragClass,!0),c(L,\"top\",e.top-K(i.marginTop,10)),c(L,\"left\",e.left-K(i.marginLeft,10)),c(L,\"width\",e.width),c(L,\"height\",e.height),c(L,\"opacity\",\"0.8\"),c(L,\"position\",\"fixed\"),c(L,\"zIndex\",\"100000\"),c(L,\"pointerEvents\",\"none\"),n.fallbackOnBody&&Y.body.appendChild(L)||N.appendChild(L),t=L.getBoundingClientRect(),c(L,\"width\",2*e.width-t.width),c(L,\"height\",2*e.height-t.height)}},_onDragStart:function(t,e){var i=t.dataTransfer,n=this.options;this._offUpEvents(),R.checkPull(this,this,y,t)&&(O=A(y),O.draggable=!1,O.style[\"will-change\"]=\"\",c(O,\"display\",\"none\"),a(O,this.options.chosenClass,!1),N.insertBefore(O,y),d(this,N,\"clone\",y)),a(y,n.dragClass,!0),e?(\"touch\"===e?(s(Y,\"touchmove\",this._onTouchMove),s(Y,\"touchend\",this._onDrop),s(Y,\"touchcancel\",this._onDrop),s(Y,\"pointermove\",this._onTouchMove),s(Y,\"pointerup\",this._onDrop)):(s(Y,\"mousemove\",this._onTouchMove),s(Y,\"mouseup\",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(i&&(i.effectAllowed=\"move\",n.setData&&n.setData.call(this,i,y)),s(Y,\"drop\",this),setTimeout(this._dragStarted,0))},_onDragOver:function(n){var o,s,r,a,l=this.el,d=this.options,u=d.group,M=t.active,m=R===u,b=!1,g=d.sort;if(void 0!==n.preventDefault&&(n.preventDefault(),!d.dragoverBubble&&n.stopPropagation()),!y.animated&&(I=!0,M&&!d.disabled&&(m?g||(a=!N.contains(y)):X===this||(M.lastPullMode=R.checkPull(this,M,y,n))&&u.checkPut(this,M,y,n))&&(void 0===n.rootEl||n.rootEl===this.el))){if(st(n,d,this.el),tt)return;if(o=i(n.target,d.draggable,l),s=y.getBoundingClientRect(),X!==this&&(X=this,b=!0),a)return e(M,!0),_=N,void(O||T?N.insertBefore(y,O||T):g||N.appendChild(y));if(0===l.children.length||l.children[0]===L||l===n.target&&f(l,n)){if(0!==l.children.length&&l.children[0]!==L&&l===n.target&&(o=l.lastElementChild),o){if(o.animated)return;r=o.getBoundingClientRect()}e(M,m),!1!==p(N,l,y,s,o,r,n)&&(y.contains(l)||(l.appendChild(y),_=l),this._animate(s,y),o&&this._animate(r,o))}else if(o&&!o.animated&&o!==y&&void 0!==o.parentNode[j]){B!==o&&(B=o,E=c(o),S=c(o.parentNode)),r=o.getBoundingClientRect();var v=r.right-r.left,A=r.bottom-r.top,z=H.test(E.cssFloat+E.display)||\"flex\"==S.display&&0===S[\"flex-direction\"].indexOf(\"row\"),q=o.offsetWidth>y.offsetWidth,C=o.offsetHeight>y.offsetHeight,W=(z?(n.clientX-r.left)/v:(n.clientY-r.top)/A)>.5,w=o.nextElementSibling,k=!1;if(z){var x=y.offsetTop,D=o.offsetTop;k=x===D?o.previousElementSibling===y&&!q||W&&q:o.previousElementSibling===y||y.previousElementSibling===o?(n.clientY-r.top)/A>.5:D>x}else b||(k=w!==y&&!C||W&&C);var $=p(N,l,y,s,o,r,n,k);!1!==$&&(1!==$&&-1!==$||(k=1===$),tt=!0,setTimeout(h,30),e(M,m),y.contains(l)||(k&&!w?l.appendChild(y):o.parentNode.insertBefore(y,k?w:o)),_=y.parentNode,this._animate(s,y),this._animate(r,o))}}},_animate:function(t,e){var i=this.options.animation;if(i){var n=e.getBoundingClientRect();1===t.nodeType&&(t=t.getBoundingClientRect()),c(e,\"transition\",\"none\"),c(e,\"transform\",\"translate3d(\"+(t.left-n.left)+\"px,\"+(t.top-n.top)+\"px,0)\"),e.offsetWidth,c(e,\"transition\",\"all \"+i+\"ms\"),c(e,\"transform\",\"translate3d(0,0,0)\"),clearTimeout(e.animated),e.animated=setTimeout(function(){c(e,\"transition\",\"\"),c(e,\"transform\",\"\"),e.animated=!1},i)}},_offUpEvents:function(){var t=this.el.ownerDocument;r(Y,\"touchmove\",this._onTouchMove),r(Y,\"pointermove\",this._onTouchMove),r(t,\"mouseup\",this._onDrop),r(t,\"touchend\",this._onDrop),r(t,\"pointerup\",this._onDrop),r(t,\"touchcancel\",this._onDrop),r(t,\"pointercancel\",this._onDrop),r(t,\"selectstart\",this)},_onDrop:function(e){var i=this.el,n=this.options;clearInterval(this._loopId),clearInterval(P.pid),clearTimeout(this._dragStartTimer),r(Y,\"mousemove\",this._onTouchMove),this.nativeDraggable&&(r(Y,\"drop\",this),r(i,\"dragstart\",this._onDragStart)),this._offUpEvents(),e&&(I&&(e.preventDefault(),!n.dropBubble&&e.stopPropagation()),L&&L.parentNode&&L.parentNode.removeChild(L),N!==_&&\"clone\"===t.active.lastPullMode||O&&O.parentNode&&O.parentNode.removeChild(O),y&&(this.nativeDraggable&&r(y,\"dragend\",this),u(y),y.style[\"will-change\"]=\"\",a(y,this.options.ghostClass,!1),a(y,this.options.chosenClass,!1),d(this,N,\"unchoose\",y,N,k),N!==_?(x=m(y,n.draggable))>=0&&(d(null,_,\"add\",y,N,k,x),d(this,N,\"remove\",y,N,k,x),d(null,_,\"sort\",y,N,k,x),d(this,N,\"sort\",y,N,k,x)):y.nextSibling!==T&&(x=m(y,n.draggable))>=0&&(d(this,N,\"update\",y,N,k,x),d(this,N,\"sort\",y,N,k,x)),t.active&&(null!=x&&-1!==x||(x=k),d(this,N,\"end\",y,N,k,x),this.save()))),this._nulling()},_nulling:function(){N=y=_=L=T=O=q=C=W=D=$=I=x=B=E=X=R=t.active=null,nt.forEach(function(t){t.checked=!0}),nt.length=0},handleEvent:function(t){switch(t.type){case\"drop\":case\"dragend\":this._onDrop(t);break;case\"dragover\":case\"dragenter\":y&&(this._onDragOver(t),o(t));break;case\"selectstart\":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,s=n.length,r=this.options;o<s;o++)t=n[o],i(t,r.draggable,this.el)&&e.push(t.getAttribute(r.dataIdAttr)||M(t));return e},sort:function(t){var e={},n=this.el;this.toArray().forEach(function(t,o){var s=n.children[o];i(s,this.options.draggable,n)&&(e[t]=s)},this),t.forEach(function(t){e[t]&&(n.removeChild(e[t]),n.appendChild(e[t]))})},save:function(){var t=this.options.store;t&&t.set(this)},closest:function(t,e){return i(t,e||this.options.draggable,this.el)},option:function(t,e){var i=this.options;return void 0===e?i[t]:(i[t]=e,void(\"group\"===t&&rt(i)))},destroy:function(){var t=this.el;t[j]=null,r(t,\"mousedown\",this._onTapStart),r(t,\"touchstart\",this._onTapStart),r(t,\"pointerdown\",this._onTapStart),this.nativeDraggable&&(r(t,\"dragover\",this),r(t,\"dragenter\",this)),Array.prototype.forEach.call(t.querySelectorAll(\"[draggable]\"),function(t){t.removeAttribute(\"draggable\")}),ot.splice(ot.indexOf(this._onDragOver),1),this._onDrop(),this.el=t=null}},s(Y,\"touchmove\",function(e){t.active&&e.preventDefault()});try{window.addEventListener(\"test\",null,Object.defineProperty({},\"passive\",{get:function(){Q={capture:!1,passive:!1}}}))}catch(t){}return t.utils={on:s,off:r,css:c,find:l,is:function(t,e){return!!i(t,e,t)},extend:v,throttle:g,closest:i,toggleClass:a,clone:A,index:m},t.create=function(e,i){return new t(e,i)},t.version=\"1.6.0\",t}),function(){var t,e,i,n,o,s,r,a,c=[].slice,l={}.hasOwnProperty,d=function(t,e){function i(){this.constructor=t}for(var n in e)l.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t};r=function(){},e=function(){function t(){}return t.prototype.addEventListener=t.prototype.on,t.prototype.on=function(t,e){return this._callbacks=this._callbacks||{},this._callbacks[t]||(this._callbacks[t]=[]),this._callbacks[t].push(e),this},t.prototype.emit=function(){var t,e,i,n,o,s;if(n=arguments[0],t=2<=arguments.length?c.call(arguments,1):[],this._callbacks=this._callbacks||{},i=this._callbacks[n])for(o=0,s=i.length;o<s;o++)e=i[o],e.apply(this,t);return this},t.prototype.removeListener=t.prototype.off,\nt.prototype.removeAllListeners=t.prototype.off,t.prototype.removeEventListener=t.prototype.off,t.prototype.off=function(t,e){var i,n,o,s;if(!this._callbacks||0===arguments.length)return this._callbacks={},this;if(!(i=this._callbacks[t]))return this;if(1===arguments.length)return delete this._callbacks[t],this;for(n=o=0,s=i.length;o<s;n=++o)if(i[n]===e){i.splice(n,1);break}return this},t}(),t=function(t){function i(t,e){var o,s,r;if(this.element=t,this.version=i.version,this.defaultOptions.previewTemplate=this.defaultOptions.previewTemplate.replace(/\\n*/g,\"\"),this.clickableElements=[],this.listeners=[],this.files=[],\"string\"==typeof this.element&&(this.element=document.querySelector(this.element)),!this.element||null==this.element.nodeType)throw new Error(\"Invalid dropzone element.\");if(this.element.dropzone)throw new Error(\"Dropzone already attached.\");if(i.instances.push(this),this.element.dropzone=this,o=null!=(r=i.optionsForElement(this.element))?r:{},this.options=n({},this.defaultOptions,o,null!=e?e:{}),this.options.forceFallback||!i.isBrowserSupported())return this.options.fallback.call(this);if(null==this.options.url&&(this.options.url=this.element.getAttribute(\"action\")),!this.options.url)throw new Error(\"No URL provided.\");if(this.options.acceptedFiles&&this.options.acceptedMimeTypes)throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");this.options.acceptedMimeTypes&&(this.options.acceptedFiles=this.options.acceptedMimeTypes,delete this.options.acceptedMimeTypes),this.options.method=this.options.method.toUpperCase(),(s=this.getExistingFallback())&&s.parentNode&&s.parentNode.removeChild(s),!1!==this.options.previewsContainer&&(this.options.previewsContainer?this.previewsContainer=i.getElement(this.options.previewsContainer,\"previewsContainer\"):this.previewsContainer=this.element),this.options.clickable&&(!0===this.options.clickable?this.clickableElements=[this.element]:this.clickableElements=i.getElements(this.options.clickable,\"clickable\")),this.init()}var n,o;return d(i,t),i.prototype.Emitter=e,i.prototype.events=[\"drop\",\"dragstart\",\"dragend\",\"dragenter\",\"dragover\",\"dragleave\",\"addedfile\",\"removedfile\",\"thumbnail\",\"error\",\"errormultiple\",\"processing\",\"processingmultiple\",\"uploadprogress\",\"totaluploadprogress\",\"sending\",\"sendingmultiple\",\"success\",\"successmultiple\",\"canceled\",\"canceledmultiple\",\"complete\",\"completemultiple\",\"reset\",\"maxfilesexceeded\",\"maxfilesreached\",\"queuecomplete\"],i.prototype.defaultOptions={url:null,method:\"post\",withCredentials:!1,parallelUploads:2,uploadMultiple:!1,maxFilesize:256,paramName:\"file\",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,filesizeBase:1e3,maxFiles:null,filesizeBase:1e3,params:{},clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,capture:null,dictDefaultMessage:\"Drop files here to upload\",dictFallbackMessage:\"Your browser does not support drag'n'drop file uploads.\",dictFallbackText:\"Please use the fallback form below to upload your files like in the olden days.\",dictFileTooBig:\"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",dictInvalidFileType:\"You can't upload files of this type.\",dictResponseError:\"Server responded with {{statusCode}} code.\",dictCancelUpload:\"Cancel upload\",dictCancelUploadConfirmation:\"Are you sure you want to cancel this upload?\",dictRemoveFile:\"Remove file\",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:\"You can not upload any more files.\",accept:function(t,e){return e()},init:function(){return r},forceFallback:!1,fallback:function(){var t,e,n,o,s,r;for(this.element.className=this.element.className+\" dz-browser-not-supported\",r=this.element.getElementsByTagName(\"div\"),o=0,s=r.length;o<s;o++)t=r[o],/(^| )dz-message($| )/.test(t.className)&&(e=t,t.className=\"dz-message\");return e||(e=i.createElement('<div class=\"dz-message\"><span></span></div>'),this.element.appendChild(e)),n=e.getElementsByTagName(\"span\")[0],n&&(n.textContent=this.options.dictFallbackMessage),this.element.appendChild(this.getFallbackForm())},resize:function(t){var e,i,n;return e={srcX:0,srcY:0,srcWidth:t.width,srcHeight:t.height},i=t.width/t.height,e.optWidth=this.options.thumbnailWidth,e.optHeight=this.options.thumbnailHeight,null==e.optWidth&&null==e.optHeight?(e.optWidth=e.srcWidth,e.optHeight=e.srcHeight):null==e.optWidth?e.optWidth=i*e.optHeight:null==e.optHeight&&(e.optHeight=1/i*e.optWidth),n=e.optWidth/e.optHeight,t.height<e.optHeight||t.width<e.optWidth?(e.trgHeight=e.srcHeight,e.trgWidth=e.srcWidth):i>n?(e.srcHeight=t.height,e.srcWidth=e.srcHeight*n):(e.srcWidth=t.width,e.srcHeight=e.srcWidth/n),e.srcX=(t.width-e.srcWidth)/2,e.srcY=(t.height-e.srcHeight)/2,e},drop:function(t){return this.element.classList.remove(\"dz-drag-hover\")},dragstart:r,dragend:function(t){return this.element.classList.remove(\"dz-drag-hover\")},dragenter:function(t){return this.element.classList.add(\"dz-drag-hover\")},dragover:function(t){return this.element.classList.add(\"dz-drag-hover\")},dragleave:function(t){return this.element.classList.remove(\"dz-drag-hover\")},paste:r,reset:function(){return this.element.classList.remove(\"dz-started\")},addedfile:function(t){var e,n,o,s,r,a,c,l,d,p,u,h,f;if(this.element===this.previewsContainer&&this.element.classList.add(\"dz-started\"),this.previewsContainer){for(t.previewElement=i.createElement(this.options.previewTemplate.trim()),t.previewTemplate=t.previewElement,this.previewsContainer.appendChild(t.previewElement),p=t.previewElement.querySelectorAll(\"[data-dz-name]\"),s=0,c=p.length;s<c;s++)e=p[s],e.textContent=t.name;for(u=t.previewElement.querySelectorAll(\"[data-dz-size]\"),r=0,l=u.length;r<l;r++)e=u[r],e.innerHTML=this.filesize(t.size);for(this.options.addRemoveLinks&&(t._removeLink=i.createElement('<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>'+this.options.dictRemoveFile+\"</a>\"),t.previewElement.appendChild(t._removeLink)),n=function(e){return function(n){return n.preventDefault(),n.stopPropagation(),t.status===i.UPLOADING?i.confirm(e.options.dictCancelUploadConfirmation,function(){return e.removeFile(t)}):e.options.dictRemoveFileConfirmation?i.confirm(e.options.dictRemoveFileConfirmation,function(){return e.removeFile(t)}):e.removeFile(t)}}(this),h=t.previewElement.querySelectorAll(\"[data-dz-remove]\"),f=[],a=0,d=h.length;a<d;a++)o=h[a],f.push(o.addEventListener(\"click\",n));return f}},removedfile:function(t){var e;return t.previewElement&&null!=(e=t.previewElement)&&e.parentNode.removeChild(t.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(t,e){var i,n,o,s;if(t.previewElement){for(t.previewElement.classList.remove(\"dz-file-preview\"),s=t.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"),n=0,o=s.length;n<o;n++)i=s[n],i.alt=t.name,i.src=e;return setTimeout(function(e){return function(){return t.previewElement.classList.add(\"dz-image-preview\")}}(),1)}},error:function(t,e){var i,n,o,s,r;if(t.previewElement){for(t.previewElement.classList.add(\"dz-error\"),\"String\"!=typeof e&&e.error&&(e=e.error),s=t.previewElement.querySelectorAll(\"[data-dz-errormessage]\"),r=[],n=0,o=s.length;n<o;n++)i=s[n],r.push(i.textContent=e);return r}},errormultiple:r,processing:function(t){if(t.previewElement&&(t.previewElement.classList.add(\"dz-processing\"),t._removeLink))return t._removeLink.textContent=this.options.dictCancelUpload},processingmultiple:r,uploadprogress:function(t,e,i){var n,o,s,r,a;if(t.previewElement){for(r=t.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"),a=[],o=0,s=r.length;o<s;o++)n=r[o],\"PROGRESS\"===n.nodeName?a.push(n.value=e):a.push(n.style.width=e+\"%\");return a}},totaluploadprogress:r,sending:r,sendingmultiple:r,success:function(t){if(t.previewElement)return t.previewElement.classList.add(\"dz-success\")},successmultiple:r,canceled:function(t){return this.emit(\"error\",t,\"Upload canceled.\")},canceledmultiple:r,complete:function(t){if(t._removeLink&&(t._removeLink.textContent=this.options.dictRemoveFile),t.previewElement)return t.previewElement.classList.add(\"dz-complete\")},completemultiple:r,maxfilesexceeded:r,maxfilesreached:r,queuecomplete:r,previewTemplate:'<div class=\"dz-preview dz-file-preview\">\\n  <div class=\"dz-image\"><img data-dz-thumbnail /></div>\\n  <div class=\"dz-details\">\\n    <div class=\"dz-size\"><span data-dz-size></span></div>\\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\\n  </div>\\n  <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\\n  <div class=\"dz-success-mark\">\\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\\n      <title>Check</title>\\n      <defs></defs>\\n      <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\\n        <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\" sketch:type=\"MSShapeGroup\"></path>\\n      </g>\\n    </svg>\\n  </div>\\n  <div class=\"dz-error-mark\">\\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\\n      <title>Error</title>\\n      <defs></defs>\\n      <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\\n        <g id=\"Check-+-Oval-2\" sketch:type=\"MSLayerGroup\" stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\\n          <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" sketch:type=\"MSShapeGroup\"></path>\\n        </g>\\n      </g>\\n    </svg>\\n  </div>\\n</div>'},n=function(){var t,e,i,n,o,s,r;for(n=arguments[0],i=2<=arguments.length?c.call(arguments,1):[],s=0,r=i.length;s<r;s++){e=i[s];for(t in e)o=e[t],n[t]=o}return n},i.prototype.getAcceptedFiles=function(){var t,e,i,n,o;for(n=this.files,o=[],e=0,i=n.length;e<i;e++)t=n[e],t.accepted&&o.push(t);return o},i.prototype.getRejectedFiles=function(){var t,e,i,n,o;for(n=this.files,o=[],e=0,i=n.length;e<i;e++)t=n[e],t.accepted||o.push(t);return o},i.prototype.getFilesWithStatus=function(t){var e,i,n,o,s;for(o=this.files,s=[],i=0,n=o.length;i<n;i++)e=o[i],e.status===t&&s.push(e);return s},i.prototype.getQueuedFiles=function(){return this.getFilesWithStatus(i.QUEUED)},i.prototype.getUploadingFiles=function(){return this.getFilesWithStatus(i.UPLOADING)},i.prototype.getActiveFiles=function(){var t,e,n,o,s;for(o=this.files,s=[],e=0,n=o.length;e<n;e++)t=o[e],t.status!==i.UPLOADING&&t.status!==i.QUEUED||s.push(t);return s},i.prototype.init=function(){var t,e,n,o,s,r,a;for(\"form\"===this.element.tagName&&this.element.setAttribute(\"enctype\",\"multipart/form-data\"),this.element.classList.contains(\"dropzone\")&&!this.element.querySelector(\".dz-message\")&&this.element.appendChild(i.createElement('<div class=\"dz-default dz-message\"><span>'+this.options.dictDefaultMessage+\"</span></div>\")),this.clickableElements.length&&(n=function(t){return function(){return t.hiddenFileInput&&document.body.removeChild(t.hiddenFileInput),t.hiddenFileInput=document.createElement(\"input\"),t.hiddenFileInput.setAttribute(\"type\",\"file\"),(null==t.options.maxFiles||t.options.maxFiles>1)&&t.hiddenFileInput.setAttribute(\"multiple\",\"multiple\"),t.hiddenFileInput.className=\"dz-hidden-input\",null!=t.options.acceptedFiles&&t.hiddenFileInput.setAttribute(\"accept\",t.options.acceptedFiles),null!=t.options.capture&&t.hiddenFileInput.setAttribute(\"capture\",t.options.capture),t.hiddenFileInput.style.visibility=\"hidden\",t.hiddenFileInput.style.position=\"absolute\",t.hiddenFileInput.style.top=\"0\",t.hiddenFileInput.style.left=\"0\",t.hiddenFileInput.style.height=\"0\",t.hiddenFileInput.style.width=\"0\",document.body.appendChild(t.hiddenFileInput),t.hiddenFileInput.addEventListener(\"change\",function(){var e,i,o,s;if(i=t.hiddenFileInput.files,i.length)for(o=0,s=i.length;o<s;o++)e=i[o],t.addFile(e);return n()})}}(this))(),this.URL=null!=(r=window.URL)?r:window.webkitURL,a=this.events,o=0,s=a.length;o<s;o++)t=a[o],this.on(t,this.options[t]);return this.on(\"uploadprogress\",function(t){return function(){return t.updateTotalUploadProgress()}}(this)),this.on(\"removedfile\",function(t){return function(){return t.updateTotalUploadProgress()}}(this)),this.on(\"canceled\",function(t){return function(e){return t.emit(\"complete\",e)}}(this)),this.on(\"complete\",function(t){return function(e){if(0===t.getUploadingFiles().length&&0===t.getQueuedFiles().length)return setTimeout(function(){return t.emit(\"queuecomplete\")},0)}}(this)),e=function(t){return t.stopPropagation(),t.preventDefault?t.preventDefault():t.returnValue=!1},this.listeners=[{element:this.element,events:{dragstart:function(t){return function(e){return t.emit(\"dragstart\",e)}}(this),dragenter:function(t){return function(i){return e(i),t.emit(\"dragenter\",i)}}(this),dragover:function(t){return function(i){var n;try{n=i.dataTransfer.effectAllowed}catch(t){}return i.dataTransfer.dropEffect=\"move\"===n||\"linkMove\"===n?\"move\":\"copy\",e(i),t.emit(\"dragover\",i)}}(this),dragleave:function(t){return function(e){return t.emit(\"dragleave\",e)}}(this),drop:function(t){return function(i){return e(i),t.drop(i)}}(this),dragend:function(t){return function(e){return t.emit(\"dragend\",e)}}(this)}}],this.clickableElements.forEach(function(t){return function(e){return t.listeners.push({element:e,events:{click:function(n){if(e!==t.element||n.target===t.element||i.elementInside(n.target,t.element.querySelector(\".dz-message\")))return t.hiddenFileInput.click()}}})}}(this)),this.enable(),this.options.init.call(this)},i.prototype.destroy=function(){var t;return this.disable(),this.removeAllFiles(!0),(null!=(t=this.hiddenFileInput)?t.parentNode:void 0)&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,i.instances.splice(i.instances.indexOf(this),1)},i.prototype.updateTotalUploadProgress=function(){var t,e,i,n,o,s,r,a;if(n=0,i=0,t=this.getActiveFiles(),t.length){for(a=this.getActiveFiles(),s=0,r=a.length;s<r;s++)e=a[s],n+=e.upload.bytesSent,i+=e.upload.total;o=100*n/i}else o=100;return this.emit(\"totaluploadprogress\",o,i,n)},i.prototype._getParamName=function(t){return\"function\"==typeof this.options.paramName?this.options.paramName(t):this.options.paramName+(this.options.uploadMultiple?\"[\"+t+\"]\":\"\")},i.prototype.getFallbackForm=function(){var t,e,n,o;return(t=this.getExistingFallback())?t:(n='<div class=\"dz-fallback\">',this.options.dictFallbackText&&(n+=\"<p>\"+this.options.dictFallbackText+\"</p>\"),n+='<input type=\"file\" name=\"'+this._getParamName(0)+'\" '+(this.options.uploadMultiple?'multiple=\"multiple\"':void 0)+' /><input type=\"submit\" value=\"Upload!\"></div>',e=i.createElement(n),\"FORM\"!==this.element.tagName?(o=i.createElement('<form action=\"'+this.options.url+'\" enctype=\"multipart/form-data\" method=\"'+this.options.method+'\"></form>'),o.appendChild(e)):(this.element.setAttribute(\"enctype\",\"multipart/form-data\"),this.element.setAttribute(\"method\",this.options.method)),null!=o?o:e)},i.prototype.getExistingFallback=function(){var t,e,i,n,o,s;for(e=function(t){var e,i,n;for(i=0,n=t.length;i<n;i++)if(e=t[i],/(^| )fallback($| )/.test(e.className))return e},s=[\"div\",\"form\"],n=0,o=s.length;n<o;n++)if(i=s[n],t=e(this.element.getElementsByTagName(i)))return t},i.prototype.setupEventListeners=function(){var t,e,i,n,o,s,r;for(s=this.listeners,r=[],n=0,o=s.length;n<o;n++)t=s[n],r.push(function(){var n,o;n=t.events,o=[];for(e in n)i=n[e],o.push(t.element.addEventListener(e,i,!1));return o}());return r},i.prototype.removeEventListeners=function(){var t,e,i,n,o,s,r;for(s=this.listeners,r=[],n=0,o=s.length;n<o;n++)t=s[n],r.push(function(){var n,o;n=t.events,o=[];for(e in n)i=n[e],o.push(t.element.removeEventListener(e,i,!1));return o}());return r},i.prototype.disable=function(){var t,e,i,n,o;for(this.clickableElements.forEach(function(t){return t.classList.remove(\"dz-clickable\")}),this.removeEventListeners(),n=this.files,o=[],e=0,i=n.length;e<i;e++)t=n[e],o.push(this.cancelUpload(t));return o},i.prototype.enable=function(){return this.clickableElements.forEach(function(t){return t.classList.add(\"dz-clickable\")}),this.setupEventListeners()},i.prototype.filesize=function(t){var e,i,n,o,s,r,a,c;for(r=[\"TB\",\"GB\",\"MB\",\"KB\",\"b\"],n=o=null,i=a=0,c=r.length;a<c;i=++a)if(s=r[i],e=Math.pow(this.options.filesizeBase,4-i)/10,t>=e){n=t/Math.pow(this.options.filesizeBase,4-i),o=s;break}return\"<strong>\"+(n=Math.round(10*n)/10)+\"</strong> \"+o},i.prototype._updateMaxFilesReachedClass=function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit(\"maxfilesreached\",this.files),this.element.classList.add(\"dz-max-files-reached\")):this.element.classList.remove(\"dz-max-files-reached\")},i.prototype.drop=function(t){var e,i;t.dataTransfer&&(this.emit(\"drop\",t),e=t.dataTransfer.files,e.length&&(i=t.dataTransfer.items,i&&i.length&&null!=i[0].webkitGetAsEntry?this._addFilesFromItems(i):this.handleFiles(e)))},i.prototype.paste=function(t){var e,i;if(null!=(null!=t&&null!=(i=t.clipboardData)?i.items:void 0))return this.emit(\"paste\",t),e=t.clipboardData.items,e.length?this._addFilesFromItems(e):void 0},i.prototype.handleFiles=function(t){var e,i,n,o;for(o=[],i=0,n=t.length;i<n;i++)e=t[i],o.push(this.addFile(e));return o},i.prototype._addFilesFromItems=function(t){var e,i,n,o,s;for(s=[],n=0,o=t.length;n<o;n++)i=t[n],null!=i.webkitGetAsEntry&&(e=i.webkitGetAsEntry())?e.isFile?s.push(this.addFile(i.getAsFile())):e.isDirectory?s.push(this._addFilesFromDirectory(e,e.name)):s.push(void 0):null!=i.getAsFile&&(null==i.kind||\"file\"===i.kind)?s.push(this.addFile(i.getAsFile())):s.push(void 0);return s},i.prototype._addFilesFromDirectory=function(t,e){var i,n;return i=t.createReader(),n=function(t){return function(i){var n,o,s;for(o=0,s=i.length;o<s;o++)n=i[o],n.isFile?n.file(function(i){if(!t.options.ignoreHiddenFiles||\".\"!==i.name.substring(0,1))return i.fullPath=e+\"/\"+i.name,t.addFile(i)}):n.isDirectory&&t._addFilesFromDirectory(n,e+\"/\"+n.name)}}(this),i.readEntries(n,function(t){return\"undefined\"!=typeof console&&null!==console&&\"function\"==typeof console.log?console.log(t):void 0})},i.prototype.accept=function(t,e){return t.size>1024*this.options.maxFilesize*1024?e(this.options.dictFileTooBig.replace(\"{{filesize}}\",Math.round(t.size/1024/10.24)/100).replace(\"{{maxFilesize}}\",this.options.maxFilesize)):i.isValidFile(t,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(e(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\",this.options.maxFiles)),this.emit(\"maxfilesexceeded\",t)):this.options.accept.call(this,t,e):e(this.options.dictInvalidFileType)},i.prototype.addFile=function(t){return t.upload={progress:0,total:t.size,bytesSent:0},this.files.push(t),t.status=i.ADDED,this.emit(\"addedfile\",t),this._enqueueThumbnail(t),this.accept(t,function(e){return function(i){return i?(t.accepted=!1,e._errorProcessing([t],i)):(t.accepted=!0,e.options.autoQueue&&e.enqueueFile(t)),e._updateMaxFilesReachedClass()}}(this))},i.prototype.enqueueFiles=function(t){var e,i,n;for(i=0,n=t.length;i<n;i++)e=t[i],this.enqueueFile(e);return null},i.prototype.enqueueFile=function(t){if(t.status!==i.ADDED||!0!==t.accepted)throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");if(t.status=i.QUEUED,this.options.autoProcessQueue)return setTimeout(function(t){return function(){return t.processQueue()}}(this),0)},i.prototype._thumbnailQueue=[],i.prototype._processingThumbnail=!1,i.prototype._enqueueThumbnail=function(t){if(this.options.createImageThumbnails&&t.type.match(/image.*/)&&t.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(t),setTimeout(function(t){return function(){return t._processThumbnailQueue()}}(this),0)},i.prototype._processThumbnailQueue=function(){if(!this._processingThumbnail&&0!==this._thumbnailQueue.length)return this._processingThumbnail=!0,this.createThumbnail(this._thumbnailQueue.shift(),function(t){return function(){return t._processingThumbnail=!1,t._processThumbnailQueue()}}(this))},i.prototype.removeFile=function(t){if(t.status===i.UPLOADING&&this.cancelUpload(t),this.files=a(this.files,t),this.emit(\"removedfile\",t),0===this.files.length)return this.emit(\"reset\")},i.prototype.removeAllFiles=function(t){var e,n,o,s;for(null==t&&(t=!1),s=this.files.slice(),n=0,o=s.length;n<o;n++)e=s[n],(e.status!==i.UPLOADING||t)&&this.removeFile(e);return null},i.prototype.createThumbnail=function(t,e){var i;return i=new FileReader,i.onload=function(n){return function(){return\"image/svg+xml\"===t.type?(n.emit(\"thumbnail\",t,i.result),void(null!=e&&e())):n.createThumbnailFromUrl(t,i.result,e)}}(this),i.readAsDataURL(t)},i.prototype.createThumbnailFromUrl=function(t,e,i){var n;return n=document.createElement(\"img\"),n.onload=function(e){return function(){var o,r,a,c,l,d,p,u;if(t.width=n.width,t.height=n.height,a=e.options.resize.call(e,t),null==a.trgWidth&&(a.trgWidth=a.optWidth),null==a.trgHeight&&(a.trgHeight=a.optHeight),o=document.createElement(\"canvas\"),r=o.getContext(\"2d\"),o.width=a.trgWidth,o.height=a.trgHeight,s(r,n,null!=(l=a.srcX)?l:0,null!=(d=a.srcY)?d:0,a.srcWidth,a.srcHeight,null!=(p=a.trgX)?p:0,null!=(u=a.trgY)?u:0,a.trgWidth,a.trgHeight),c=o.toDataURL(\"image/png\"),e.emit(\"thumbnail\",t,c),null!=i)return i()}}(this),null!=i&&(n.onerror=i),n.src=e},i.prototype.processQueue=function(){var t,e,i,n;if(e=this.options.parallelUploads,i=this.getUploadingFiles().length,t=i,!(i>=e)&&(n=this.getQueuedFiles(),n.length>0)){if(this.options.uploadMultiple)return this.processFiles(n.slice(0,e-i));for(;t<e;){if(!n.length)return;this.processFile(n.shift()),t++}}},i.prototype.processFile=function(t){return this.processFiles([t])},i.prototype.processFiles=function(t){var e,n,o;for(n=0,o=t.length;n<o;n++)e=t[n],e.processing=!0,e.status=i.UPLOADING,this.emit(\"processing\",e);return this.options.uploadMultiple&&this.emit(\"processingmultiple\",t),this.uploadFiles(t)},i.prototype._getFilesWithXhr=function(t){var e;return function(){var i,n,o,s;for(o=this.files,s=[],i=0,n=o.length;i<n;i++)e=o[i],e.xhr===t&&s.push(e);return s}.call(this)},i.prototype.cancelUpload=function(t){var e,n,o,s,r,a,c;if(t.status===i.UPLOADING){for(n=this._getFilesWithXhr(t.xhr),o=0,r=n.length;o<r;o++)e=n[o],e.status=i.CANCELED;for(t.xhr.abort(),s=0,a=n.length;s<a;s++)e=n[s],this.emit(\"canceled\",e);this.options.uploadMultiple&&this.emit(\"canceledmultiple\",n)}else(c=t.status)!==i.ADDED&&c!==i.QUEUED||(t.status=i.CANCELED,this.emit(\"canceled\",t),this.options.uploadMultiple&&this.emit(\"canceledmultiple\",[t]));if(this.options.autoProcessQueue)return this.processQueue()},o=function(){var t,e;return e=arguments[0],t=2<=arguments.length?c.call(arguments,1):[],\"function\"==typeof e?e.apply(this,t):e},i.prototype.uploadFile=function(t){return this.uploadFiles([t])},i.prototype.uploadFiles=function(t){var e,s,r,a,c,l,d,p,u,h,f,M,m,b,g,v,A,z,y,_,L,O,N,T,q,C,W,w,B,E,S,k,x,R;for(y=new XMLHttpRequest,_=0,T=t.length;_<T;_++)e=t[_],e.xhr=y;M=o(this.options.method,t),A=o(this.options.url,t),y.open(M,A,!0),y.withCredentials=!!this.options.withCredentials,g=null,r=function(i){return function(){var n,o,s;for(s=[],n=0,o=t.length;n<o;n++)e=t[n],s.push(i._errorProcessing(t,g||i.options.dictResponseError.replace(\"{{statusCode}}\",y.status),y));return s}}(this),v=function(i){return function(n){var o,s,r,a,c,l,d,p,u;if(null!=n)for(s=100*n.loaded/n.total,r=0,l=t.length;r<l;r++)e=t[r],e.upload={progress:s,total:n.total,bytesSent:n.loaded};else{for(o=!0,s=100,a=0,d=t.length;a<d;a++)e=t[a],100===e.upload.progress&&e.upload.bytesSent===e.upload.total||(o=!1),e.upload.progress=s,e.upload.bytesSent=e.upload.total;if(o)return}for(u=[],c=0,p=t.length;c<p;c++)e=t[c],u.push(i.emit(\"uploadprogress\",e,s,e.upload.bytesSent));return u}}(this),y.onload=function(e){return function(n){var o;if(t[0].status!==i.CANCELED&&4===y.readyState){if(g=y.responseText,y.getResponseHeader(\"content-type\")&&~y.getResponseHeader(\"content-type\").indexOf(\"application/json\"))try{g=JSON.parse(g)}catch(t){n=t,g=\"Invalid JSON response from server.\"}return v(),200<=(o=y.status)&&o<300?e._finished(t,g,n):r()}}}(this),y.onerror=function(e){return function(){if(t[0].status!==i.CANCELED)return r()}}(),b=null!=(B=y.upload)?B:y,b.onprogress=v,l={Accept:\"application/json\",\"Cache-Control\":\"no-cache\",\"X-Requested-With\":\"XMLHttpRequest\"},this.options.headers&&n(l,this.options.headers);for(a in l)c=l[a],y.setRequestHeader(a,c);if(s=new FormData,this.options.params){E=this.options.params;for(f in E)z=E[f],s.append(f,z)}for(L=0,q=t.length;L<q;L++)e=t[L],this.emit(\"sending\",e,y,s);if(this.options.uploadMultiple&&this.emit(\"sendingmultiple\",t,y,s),\"FORM\"===this.element.tagName)for(S=this.element.querySelectorAll(\"input, textarea, select, button\"),O=0,C=S.length;O<C;O++)if(p=S[O],u=p.getAttribute(\"name\"),h=p.getAttribute(\"type\"),\"SELECT\"===p.tagName&&p.hasAttribute(\"multiple\"))for(k=p.options,N=0,W=k.length;N<W;N++)m=k[N],m.selected&&s.append(u,m.value);else(!h||\"checkbox\"!==(x=h.toLowerCase())&&\"radio\"!==x||p.checked)&&s.append(u,p.value);for(d=w=0,R=t.length-1;0<=R?w<=R:w>=R;d=0<=R?++w:--w)s.append(this._getParamName(d),t[d],t[d].name);return y.send(s)},i.prototype._finished=function(t,e,n){var o,s,r;for(s=0,r=t.length;s<r;s++)o=t[s],o.status=i.SUCCESS,this.emit(\"success\",o,e,n),this.emit(\"complete\",o);if(this.options.uploadMultiple&&(this.emit(\"successmultiple\",t,e,n),this.emit(\"completemultiple\",t)),this.options.autoProcessQueue)return this.processQueue()},i.prototype._errorProcessing=function(t,e,n){var o,s,r;for(s=0,r=t.length;s<r;s++)o=t[s],o.status=i.ERROR,this.emit(\"error\",o,e,n),this.emit(\"complete\",o);if(this.options.uploadMultiple&&(this.emit(\"errormultiple\",t,e,n),this.emit(\"completemultiple\",t)),this.options.autoProcessQueue)return this.processQueue()},i}(e),t.version=\"4.0.1\",t.options={},t.optionsForElement=function(e){return e.getAttribute(\"id\")?t.options[i(e.getAttribute(\"id\"))]:void 0},t.instances=[],t.forElement=function(t){if(\"string\"==typeof t&&(t=document.querySelector(t)),null==(null!=t?t.dropzone:void 0))throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");return t.dropzone},t.autoDiscover=!0,t.discover=function(){var e,i,n,o,s,r;for(document.querySelectorAll?n=document.querySelectorAll(\".dropzone\"):(n=[],e=function(t){var e,i,o,s;for(s=[],i=0,o=t.length;i<o;i++)e=t[i],/(^| )dropzone($| )/.test(e.className)?s.push(n.push(e)):s.push(void 0);return s},e(document.getElementsByTagName(\"div\")),e(document.getElementsByTagName(\"form\"))),r=[],o=0,s=n.length;o<s;o++)i=n[o],!1!==t.optionsForElement(i)?r.push(new t(i)):r.push(void 0);return r},t.blacklistedBrowsers=[/opera.*Macintosh.*version\\/12/i],t.isBrowserSupported=function(){var e,i,n,o,s;if(e=!0,window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if(\"classList\"in document.createElement(\"a\"))for(s=t.blacklistedBrowsers,n=0,o=s.length;n<o;n++)i=s[n],i.test(navigator.userAgent)&&(e=!1);else e=!1;else e=!1;return e},a=function(t,e){var i,n,o,s;for(s=[],n=0,o=t.length;n<o;n++)(i=t[n])!==e&&s.push(i);return s},i=function(t){return t.replace(/[\\-_](\\w)/g,function(t){return t.charAt(1).toUpperCase()})},t.createElement=function(t){var e;return e=document.createElement(\"div\"),e.innerHTML=t,e.childNodes[0]},t.elementInside=function(t,e){if(t===e)return!0;for(;t=t.parentNode;)if(t===e)return!0;return!1},t.getElement=function(t,e){var i;if(\"string\"==typeof t?i=document.querySelector(t):null!=t.nodeType&&(i=t),null==i)throw new Error(\"Invalid `\"+e+\"` option provided. Please provide a CSS selector or a plain HTML element.\");return i},t.getElements=function(t,e){var i,n,o,s,r,a,c;if(t instanceof Array){n=[];try{for(o=0,r=t.length;o<r;o++)i=t[o],n.push(this.getElement(i,e))}catch(t){t,n=null}}else if(\"string\"==typeof t)for(n=[],c=document.querySelectorAll(t),s=0,a=c.length;s<a;s++)i=c[s],n.push(i);else null!=t.nodeType&&(n=[t]);if(null==n||!n.length)throw new Error(\"Invalid `\"+e+\"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");return n},t.confirm=function(t,e,i){return window.confirm(t)?e():null!=i?i():void 0},t.isValidFile=function(t,e){var i,n,o,s,r;if(!e)return!0;for(e=e.split(\",\"),n=t.type,i=n.replace(/\\/.*$/,\"\"),s=0,r=e.length;s<r;s++)if(o=e[s],o=o.trim(),\".\"===o.charAt(0)){if(-1!==t.name.toLowerCase().indexOf(o.toLowerCase(),t.name.length-o.length))return!0}else if(/\\/\\*$/.test(o)){if(i===o.replace(/\\/.*$/,\"\"))return!0}else if(n===o)return!0;return!1},\"undefined\"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new t(this,e)})}),\"undefined\"!=typeof module&&null!==module?module.exports=t:window.Dropzone=t,t.ADDED=\"added\",t.QUEUED=\"queued\",t.ACCEPTED=t.QUEUED,t.UPLOADING=\"uploading\",t.PROCESSING=t.UPLOADING,t.CANCELED=\"canceled\",t.ERROR=\"error\",t.SUCCESS=\"success\",o=function(t){var e,i,n,o,s,r,a,c,l;for(t.naturalWidth,r=t.naturalHeight,i=document.createElement(\"canvas\"),i.width=1,i.height=r,n=i.getContext(\"2d\"),n.drawImage(t,0,0),o=n.getImageData(0,0,1,r).data,l=0,s=r,a=r;a>l;)e=o[4*(a-1)+3],0===e?s=a:l=a,a=s+l>>1;return c=a/r,0===c?1:c},s=function(t,e,i,n,s,r,a,c,l,d){var p;return p=o(e),t.drawImage(e,i,n,s,r,a,c,l,d/p)},n=function(t,e){var i,n,o,s,r,a,c,l,d;if(o=!1,d=!0,n=t.document,l=n.documentElement,i=n.addEventListener?\"addEventListener\":\"attachEvent\",c=n.addEventListener?\"removeEventListener\":\"detachEvent\",a=n.addEventListener?\"\":\"on\",s=function(i){if(\"readystatechange\"!==i.type||\"complete\"===n.readyState)return(\"load\"===i.type?t:n)[c](a+i.type,s,!1),!o&&(o=!0)?e.call(t,i.type||i):void 0},r=function(){try{l.doScroll(\"left\")}catch(t){return t,void setTimeout(r,50)}return s(\"poll\")},\"complete\"!==n.readyState){if(n.createEventObject&&l.doScroll){try{d=!t.frameElement}catch(t){}d&&r()}return n[i](a+\"DOMContentLoaded\",s,!1),n[i](a+\"readystatechange\",s,!1),\nt[i](a+\"load\",s,!1)}},t._autoDiscoverFunction=function(){if(t.autoDiscover)return t.discover()},n(window,t._autoDiscoverFunction)}.call(this),function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.moment=e()}(this,function(){\"use strict\";function t(){return gn.apply(null,arguments)}function e(t){return t instanceof Array||\"[object Array]\"===Object.prototype.toString.call(t)}function i(t){return null!=t&&\"[object Object]\"===Object.prototype.toString.call(t)}function n(t){var e;for(e in t)return!1;return!0}function o(t){return void 0===t}function s(t){return\"number\"==typeof t||\"[object Number]\"===Object.prototype.toString.call(t)}function r(t){return t instanceof Date||\"[object Date]\"===Object.prototype.toString.call(t)}function a(t,e){var i,n=[];for(i=0;i<t.length;++i)n.push(e(t[i],i));return n}function c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function l(t,e){for(var i in e)c(e,i)&&(t[i]=e[i]);return c(e,\"toString\")&&(t.toString=e.toString),c(e,\"valueOf\")&&(t.valueOf=e.valueOf),t}function d(t,e,i,n){return be(t,e,i,n,!0).utc()}function p(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function u(t){return null==t._pf&&(t._pf=p()),t._pf}function h(t){if(null==t._isValid){var e=u(t),i=An.call(e.parsedDateParts,function(t){return null!=t}),n=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&i);if(t._strict&&(n=n&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return n;t._isValid=n}return t._isValid}function f(t){var e=d(NaN);return null!=t?l(u(e),t):u(e).userInvalidated=!0,e}function M(t,e){var i,n,s;if(o(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),o(e._i)||(t._i=e._i),o(e._f)||(t._f=e._f),o(e._l)||(t._l=e._l),o(e._strict)||(t._strict=e._strict),o(e._tzm)||(t._tzm=e._tzm),o(e._isUTC)||(t._isUTC=e._isUTC),o(e._offset)||(t._offset=e._offset),o(e._pf)||(t._pf=u(e)),o(e._locale)||(t._locale=e._locale),zn.length>0)for(i=0;i<zn.length;i++)n=zn[i],s=e[n],o(s)||(t[n]=s);return t}function m(e){M(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===yn&&(yn=!0,t.updateOffset(this),yn=!1)}function b(t){return t instanceof m||null!=t&&null!=t._isAMomentObject}function g(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function v(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=g(e)),i}function A(t,e,i){var n,o=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(n=0;n<o;n++)(i&&t[n]!==e[n]||!i&&v(t[n])!==v(e[n]))&&r++;return r+s}function z(e){!1===t.suppressDeprecationWarnings&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+e)}function y(e,i){var n=!0;return l(function(){if(null!=t.deprecationHandler&&t.deprecationHandler(null,e),n){for(var o,s=[],r=0;r<arguments.length;r++){if(o=\"\",\"object\"==typeof arguments[r]){o+=\"\\n[\"+r+\"] \";for(var a in arguments[0])o+=a+\": \"+arguments[0][a]+\", \";o=o.slice(0,-2)}else o=arguments[r];s.push(o)}z(e+\"\\nArguments: \"+Array.prototype.slice.call(s).join(\"\")+\"\\n\"+(new Error).stack),n=!1}return i.apply(this,arguments)},i)}function _(e,i){null!=t.deprecationHandler&&t.deprecationHandler(e,i),_n[e]||(z(i),_n[e]=!0)}function L(t){return t instanceof Function||\"[object Function]\"===Object.prototype.toString.call(t)}function O(t){var e,i;for(i in t)e=t[i],L(e)?this[i]=e:this[\"_\"+i]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)}function N(t,e){var n,o=l({},t);for(n in e)c(e,n)&&(i(t[n])&&i(e[n])?(o[n]={},l(o[n],t[n]),l(o[n],e[n])):null!=e[n]?o[n]=e[n]:delete o[n]);for(n in t)c(t,n)&&!c(e,n)&&i(t[n])&&(o[n]=l({},o[n]));return o}function T(t){null!=t&&this.set(t)}function q(t,e,i){var n=this._calendar[t]||this._calendar.sameElse;return L(n)?n.call(e,i):n}function C(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function W(){return this._invalidDate}function w(t){return this._ordinal.replace(\"%d\",t)}function B(t,e,i,n){var o=this._relativeTime[i];return L(o)?o(t,e,i,n):o.replace(/%d/i,t)}function E(t,e){var i=this._relativeTime[t>0?\"future\":\"past\"];return L(i)?i(e):i.replace(/%s/i,e)}function S(t,e){var i=t.toLowerCase();wn[i]=wn[i+\"s\"]=wn[e]=t}function k(t){return\"string\"==typeof t?wn[t]||wn[t.toLowerCase()]:void 0}function x(t){var e,i,n={};for(i in t)c(t,i)&&(e=k(i))&&(n[e]=t[i]);return n}function R(t,e){Bn[t]=e}function X(t){var e=[];for(var i in t)e.push({unit:i,priority:Bn[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function D(e,i){return function(n){return null!=n?(I(this,e,n),t.updateOffset(this,i),this):$(this,e)}}function $(t,e){return t.isValid()?t._d[\"get\"+(t._isUTC?\"UTC\":\"\")+e]():NaN}function I(t,e,i){t.isValid()&&t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+e](i)}function P(t){return t=k(t),L(this[t])?this[t]():this}function F(t,e){if(\"object\"==typeof t){t=x(t);for(var i=X(t),n=0;n<i.length;n++)this[i[n].unit](t[i[n].unit])}else if(t=k(t),L(this[t]))return this[t](e);return this}function H(t,e,i){var n=\"\"+Math.abs(t),o=e-n.length;return(t>=0?i?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,o)).toString().substr(1)+n}function j(t,e,i,n){var o=n;\"string\"==typeof n&&(o=function(){return this[n]()}),t&&(xn[t]=o),e&&(xn[e[0]]=function(){return H(o.apply(this,arguments),e[1],e[2])}),i&&(xn[i]=function(){return this.localeData().ordinal(o.apply(this,arguments),t)})}function U(t){return t.match(/\\[[\\s\\S]/)?t.replace(/^\\[|\\]$/g,\"\"):t.replace(/\\\\/g,\"\")}function Y(t){var e,i,n=t.match(En);for(e=0,i=n.length;e<i;e++)xn[n[e]]?n[e]=xn[n[e]]:n[e]=U(n[e]);return function(e){var o,s=\"\";for(o=0;o<i;o++)s+=L(n[o])?n[o].call(e,t):n[o];return s}}function K(t,e){return t.isValid()?(e=V(e,t.localeData()),kn[e]=kn[e]||Y(e),kn[e](t)):t.localeData().invalidDate()}function V(t,e){function i(t){return e.longDateFormat(t)||t}var n=5;for(Sn.lastIndex=0;n>=0&&Sn.test(t);)t=t.replace(Sn,i),Sn.lastIndex=0,n-=1;return t}function G(t,e,i){to[t]=L(e)?e:function(t,n){return t&&i?i:e}}function Q(t,e){return c(to,t)?to[t](e._strict,e._locale):new RegExp(J(t))}function J(t){return Z(t.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(t,e,i,n,o){return e||i||n||o}))}function Z(t){return t.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}function tt(t,e){var i,n=e;for(\"string\"==typeof t&&(t=[t]),s(e)&&(n=function(t,i){i[e]=v(t)}),i=0;i<t.length;i++)eo[t[i]]=n}function et(t,e){tt(t,function(t,i,n,o){n._w=n._w||{},e(t,n._w,n,o)})}function it(t,e,i){null!=e&&c(eo,t)&&eo[t](e,i._a,i,t)}function nt(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function ot(t,i){return t?e(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||ho).test(i)?\"format\":\"standalone\"][t.month()]:e(this._months)?this._months:this._months.standalone}function st(t,i){return t?e(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[ho.test(i)?\"format\":\"standalone\"][t.month()]:e(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function rt(t,e,i){var n,o,s,r=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)s=d([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(s,\"\").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(s,\"\").toLocaleLowerCase();return i?\"MMM\"===e?(o=uo.call(this._shortMonthsParse,r),-1!==o?o:null):(o=uo.call(this._longMonthsParse,r),-1!==o?o:null):\"MMM\"===e?(o=uo.call(this._shortMonthsParse,r),-1!==o?o:(o=uo.call(this._longMonthsParse,r),-1!==o?o:null)):(o=uo.call(this._longMonthsParse,r),-1!==o?o:(o=uo.call(this._shortMonthsParse,r),-1!==o?o:null))}function at(t,e,i){var n,o,s;if(this._monthsParseExact)return rt.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(o=d([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp(\"^\"+this.months(o,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[n]=new RegExp(\"^\"+this.monthsShort(o,\"\").replace(\".\",\"\")+\"$\",\"i\")),i||this._monthsParse[n]||(s=\"^\"+this.months(o,\"\")+\"|^\"+this.monthsShort(o,\"\"),this._monthsParse[n]=new RegExp(s.replace(\".\",\"\"),\"i\")),i&&\"MMMM\"===e&&this._longMonthsParse[n].test(t))return n;if(i&&\"MMM\"===e&&this._shortMonthsParse[n].test(t))return n;if(!i&&this._monthsParse[n].test(t))return n}}function ct(t,e){var i;if(!t.isValid())return t;if(\"string\"==typeof e)if(/^\\d+$/.test(e))e=v(e);else if(e=t.localeData().monthsParse(e),!s(e))return t;return i=Math.min(t.date(),nt(t.year(),e)),t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+\"Month\"](e,i),t}function lt(e){return null!=e?(ct(this,e),t.updateOffset(this,!0),this):$(this,\"Month\")}function dt(){return nt(this.year(),this.month())}function pt(t){return this._monthsParseExact?(c(this,\"_monthsRegex\")||ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,\"_monthsShortRegex\")||(this._monthsShortRegex=mo),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)}function ut(t){return this._monthsParseExact?(c(this,\"_monthsRegex\")||ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(c(this,\"_monthsRegex\")||(this._monthsRegex=bo),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)}function ht(){function t(t,e){return e.length-t.length}var e,i,n=[],o=[],s=[];for(e=0;e<12;e++)i=d([2e3,e]),n.push(this.monthsShort(i,\"\")),o.push(this.months(i,\"\")),s.push(this.months(i,\"\")),s.push(this.monthsShort(i,\"\"));for(n.sort(t),o.sort(t),s.sort(t),e=0;e<12;e++)n[e]=Z(n[e]),o[e]=Z(o[e]);for(e=0;e<24;e++)s[e]=Z(s[e]);this._monthsRegex=new RegExp(\"^(\"+s.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+o.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+n.join(\"|\")+\")\",\"i\")}function ft(t){return Mt(t)?366:365}function Mt(t){return t%4==0&&t%100!=0||t%400==0}function mt(){return Mt(this.year())}function bt(t,e,i,n,o,s,r){var a=new Date(t,e,i,n,o,s,r);return t<100&&t>=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function gt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function vt(t,e,i){var n=7+e-i;return-(7+gt(t,0,n).getUTCDay()-e)%7+n-1}function At(t,e,i,n,o){var s,r,a=(7+i-n)%7,c=vt(t,n,o),l=1+7*(e-1)+a+c;return l<=0?(s=t-1,r=ft(s)+l):l>ft(t)?(s=t+1,r=l-ft(t)):(s=t,r=l),{year:s,dayOfYear:r}}function zt(t,e,i){var n,o,s=vt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(o=t.year()-1,n=r+yt(o,e,i)):r>yt(t.year(),e,i)?(n=r-yt(t.year(),e,i),o=t.year()+1):(o=t.year(),n=r),{week:n,year:o}}function yt(t,e,i){var n=vt(t,e,i),o=vt(t+1,e,i);return(ft(t)-n+o)/7}function _t(t){return zt(t,this._week.dow,this._week.doy).week}function Lt(){return this._week.dow}function Ot(){return this._week.doy}function Nt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),\"d\")}function Tt(t){var e=zt(this,1,4).week;return null==t?e:this.add(7*(t-e),\"d\")}function qt(t,e){return\"string\"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),\"number\"==typeof t?t:null):parseInt(t,10)}function Ct(t,e){return\"string\"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Wt(t,i){return t?e(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(i)?\"format\":\"standalone\"][t.day()]:e(this._weekdays)?this._weekdays:this._weekdays.standalone}function wt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Bt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Et(t,e,i){var n,o,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)s=d([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(s,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(s,\"\").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(s,\"\").toLocaleLowerCase();return i?\"dddd\"===e?(o=uo.call(this._weekdaysParse,r),-1!==o?o:null):\"ddd\"===e?(o=uo.call(this._shortWeekdaysParse,r),-1!==o?o:null):(o=uo.call(this._minWeekdaysParse,r),-1!==o?o:null):\"dddd\"===e?(o=uo.call(this._weekdaysParse,r),-1!==o?o:(o=uo.call(this._shortWeekdaysParse,r),-1!==o?o:(o=uo.call(this._minWeekdaysParse,r),-1!==o?o:null))):\"ddd\"===e?(o=uo.call(this._shortWeekdaysParse,r),-1!==o?o:(o=uo.call(this._weekdaysParse,r),-1!==o?o:(o=uo.call(this._minWeekdaysParse,r),-1!==o?o:null))):(o=uo.call(this._minWeekdaysParse,r),-1!==o?o:(o=uo.call(this._weekdaysParse,r),-1!==o?o:(o=uo.call(this._shortWeekdaysParse,r),-1!==o?o:null)))}function St(t,e,i){var n,o,s;if(this._weekdaysParseExact)return Et.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(o=d([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp(\"^\"+this.weekdays(o,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._shortWeekdaysParse[n]=new RegExp(\"^\"+this.weekdaysShort(o,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._minWeekdaysParse[n]=new RegExp(\"^\"+this.weekdaysMin(o,\"\").replace(\".\",\".?\")+\"$\",\"i\")),this._weekdaysParse[n]||(s=\"^\"+this.weekdays(o,\"\")+\"|^\"+this.weekdaysShort(o,\"\")+\"|^\"+this.weekdaysMin(o,\"\"),this._weekdaysParse[n]=new RegExp(s.replace(\".\",\"\"),\"i\")),i&&\"dddd\"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&\"ddd\"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&\"dd\"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}}function kt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=qt(t,this.localeData()),this.add(t-e,\"d\")):e}function xt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,\"d\")}function Rt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Ct(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Xt(t){return this._weekdaysParseExact?(c(this,\"_weekdaysRegex\")||It.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,\"_weekdaysRegex\")||(this._weekdaysRegex=_o),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Dt(t){return this._weekdaysParseExact?(c(this,\"_weekdaysRegex\")||It.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=Lo),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function $t(t){return this._weekdaysParseExact?(c(this,\"_weekdaysRegex\")||It.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Oo),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function It(){function t(t,e){return e.length-t.length}var e,i,n,o,s,r=[],a=[],c=[],l=[];for(e=0;e<7;e++)i=d([2e3,1]).day(e),n=this.weekdaysMin(i,\"\"),o=this.weekdaysShort(i,\"\"),s=this.weekdays(i,\"\"),r.push(n),a.push(o),c.push(s),l.push(n),l.push(o),l.push(s);for(r.sort(t),a.sort(t),c.sort(t),l.sort(t),e=0;e<7;e++)a[e]=Z(a[e]),c[e]=Z(c[e]),l[e]=Z(l[e]);this._weekdaysRegex=new RegExp(\"^(\"+l.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+c.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+a.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+r.join(\"|\")+\")\",\"i\")}function Pt(){return this.hours()%12||12}function Ft(){return this.hours()||24}function Ht(t,e){j(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function jt(t,e){return e._meridiemParse}function Ut(t){return\"p\"===(t+\"\").toLowerCase().charAt(0)}function Yt(t,e,i){return t>11?i?\"pm\":\"PM\":i?\"am\":\"AM\"}function Kt(t){return t?t.toLowerCase().replace(\"_\",\"-\"):t}function Vt(t){for(var e,i,n,o,s=0;s<t.length;){for(o=Kt(t[s]).split(\"-\"),e=o.length,i=Kt(t[s+1]),i=i?i.split(\"-\"):null;e>0;){if(n=Gt(o.slice(0,e).join(\"-\")))return n;if(i&&i.length>=e&&A(o,i,!0)>=e-1)break;e--}s++}return null}function Gt(t){var e=null;if(!Wo[t]&&\"undefined\"!=typeof module&&module&&module.exports)try{e=No._abbr,require(\"./locale/\"+t),Qt(e)}catch(t){}return Wo[t]}function Qt(t,e){var i;return t&&(i=o(e)?te(t):Jt(t,e))&&(No=i),No._abbr}function Jt(t,e){if(null!==e){var i=Co;if(e.abbr=t,null!=Wo[t])_(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),i=Wo[t]._config;else if(null!=e.parentLocale){if(null==Wo[e.parentLocale])return wo[e.parentLocale]||(wo[e.parentLocale]=[]),wo[e.parentLocale].push({name:t,config:e}),null;i=Wo[e.parentLocale]._config}return Wo[t]=new T(N(i,e)),wo[t]&&wo[t].forEach(function(t){Jt(t.name,t.config)}),Qt(t),Wo[t]}return delete Wo[t],null}function Zt(t,e){if(null!=e){var i,n=Co;null!=Wo[t]&&(n=Wo[t]._config),e=N(n,e),i=new T(e),i.parentLocale=Wo[t],Wo[t]=i,Qt(t)}else null!=Wo[t]&&(null!=Wo[t].parentLocale?Wo[t]=Wo[t].parentLocale:null!=Wo[t]&&delete Wo[t]);return Wo[t]}function te(t){var i;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return No;if(!e(t)){if(i=Gt(t))return i;t=[t]}return Vt(t)}function ee(){return Nn(Wo)}function ie(t){var e,i=t._a;return i&&-2===u(t).overflow&&(e=i[no]<0||i[no]>11?no:i[oo]<1||i[oo]>nt(i[io],i[no])?oo:i[so]<0||i[so]>24||24===i[so]&&(0!==i[ro]||0!==i[ao]||0!==i[co])?so:i[ro]<0||i[ro]>59?ro:i[ao]<0||i[ao]>59?ao:i[co]<0||i[co]>999?co:-1,u(t)._overflowDayOfYear&&(e<io||e>oo)&&(e=oo),u(t)._overflowWeeks&&-1===e&&(e=lo),u(t)._overflowWeekday&&-1===e&&(e=po),u(t).overflow=e),t}function ne(t){var e,i,n,o,s,r,a=t._i,c=Bo.exec(a)||Eo.exec(a);if(c){for(u(t).iso=!0,e=0,i=ko.length;e<i;e++)if(ko[e][1].exec(c[1])){o=ko[e][0],n=!1!==ko[e][2];break}if(null==o)return void(t._isValid=!1);if(c[3]){for(e=0,i=xo.length;e<i;e++)if(xo[e][1].exec(c[3])){s=(c[2]||\" \")+xo[e][0];break}if(null==s)return void(t._isValid=!1)}if(!n&&null!=s)return void(t._isValid=!1);if(c[4]){if(!So.exec(c[4]))return void(t._isValid=!1);r=\"Z\"}t._f=o+(s||\"\")+(r||\"\"),de(t)}else t._isValid=!1}function oe(t){var e,i,n,o,s,r,a,c,l={\" GMT\":\" +0000\",\" EDT\":\" -0400\",\" EST\":\" -0500\",\" CDT\":\" -0500\",\" CST\":\" -0600\",\" MDT\":\" -0600\",\" MST\":\" -0700\",\" PDT\":\" -0700\",\" PST\":\" -0800\"};if(e=t._i.replace(/\\([^\\)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").replace(/^\\s|\\s$/g,\"\"),i=Xo.exec(e)){if(n=i[1]?\"ddd\"+(5===i[1].length?\", \":\" \"):\"\",o=\"D MMM \"+(i[2].length>10?\"YYYY \":\"YY \"),s=\"HH:mm\"+(i[4]?\":ss\":\"\"),i[1]){var d=new Date(i[2]),p=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"][d.getDay()];if(i[1].substr(0,3)!==p)return u(t).weekdayMismatch=!0,void(t._isValid=!1)}switch(i[5].length){case 2:0===c?a=\" +0000\":(c=\"YXWVUTSRQPONZABCDEFGHIKLM\".indexOf(i[5][1].toUpperCase())-12,a=(c<0?\" -\":\" +\")+(\"\"+c).replace(/^-?/,\"0\").match(/..$/)[0]+\"00\");break;case 4:a=l[i[5]];break;default:a=l[\" GMT\"]}i[5]=a,t._i=i.splice(1).join(\"\"),r=\" ZZ\",t._f=n+o+s+r,de(t),u(t).rfc2822=!0}else t._isValid=!1}function se(e){var i=Ro.exec(e._i);return null!==i?void(e._d=new Date(+i[1])):(ne(e),void(!1===e._isValid&&(delete e._isValid,oe(e),!1===e._isValid&&(delete e._isValid,t.createFromInputFallback(e)))))}function re(t,e,i){return null!=t?t:null!=e?e:i}function ae(e){var i=new Date(t.now());return e._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function ce(t){var e,i,n,o,s=[];if(!t._d){for(n=ae(t),t._w&&null==t._a[oo]&&null==t._a[no]&&le(t),null!=t._dayOfYear&&(o=re(t._a[io],n[io]),(t._dayOfYear>ft(o)||0===t._dayOfYear)&&(u(t)._overflowDayOfYear=!0),i=gt(o,0,t._dayOfYear),t._a[no]=i.getUTCMonth(),t._a[oo]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=n[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[so]&&0===t._a[ro]&&0===t._a[ao]&&0===t._a[co]&&(t._nextDay=!0,t._a[so]=0),t._d=(t._useUTC?gt:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[so]=24)}}function le(t){var e,i,n,o,s,r,a,c;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=re(e.GG,t._a[io],zt(ge(),1,4).year),n=re(e.W,1),((o=re(e.E,1))<1||o>7)&&(c=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var l=zt(ge(),s,r);i=re(e.gg,t._a[io],l.year),n=re(e.w,l.week),null!=e.d?((o=e.d)<0||o>6)&&(c=!0):null!=e.e?(o=e.e+s,(e.e<0||e.e>6)&&(c=!0)):o=s}n<1||n>yt(i,s,r)?u(t)._overflowWeeks=!0:null!=c?u(t)._overflowWeekday=!0:(a=At(i,n,o,s,r),t._a[io]=a.year,t._dayOfYear=a.dayOfYear)}function de(e){if(e._f===t.ISO_8601)return void ne(e);if(e._f===t.RFC_2822)return void oe(e);e._a=[],u(e).empty=!0;var i,n,o,s,r,a=\"\"+e._i,c=a.length,l=0;for(o=V(e._f,e._locale).match(En)||[],i=0;i<o.length;i++)s=o[i],n=(a.match(Q(s,e))||[])[0],n&&(r=a.substr(0,a.indexOf(n)),r.length>0&&u(e).unusedInput.push(r),a=a.slice(a.indexOf(n)+n.length),l+=n.length),xn[s]?(n?u(e).empty=!1:u(e).unusedTokens.push(s),it(s,n,e)):e._strict&&!n&&u(e).unusedTokens.push(s);u(e).charsLeftOver=c-l,a.length>0&&u(e).unusedInput.push(a),e._a[so]<=12&&!0===u(e).bigHour&&e._a[so]>0&&(u(e).bigHour=void 0),u(e).parsedDateParts=e._a.slice(0),u(e).meridiem=e._meridiem,e._a[so]=pe(e._locale,e._a[so],e._meridiem),ce(e),ie(e)}function pe(t,e,i){var n;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(n=t.isPM(i),n&&e<12&&(e+=12),n||12!==e||(e=0),e):e}function ue(t){var e,i,n,o,s;if(0===t._f.length)return u(t).invalidFormat=!0,void(t._d=new Date(NaN));for(o=0;o<t._f.length;o++)s=0,e=M({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[o],de(e),h(e)&&(s+=u(e).charsLeftOver,s+=10*u(e).unusedTokens.length,u(e).score=s,(null==n||s<n)&&(n=s,i=e));l(t,i||e)}function he(t){if(!t._d){var e=x(t._i);t._a=a([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),ce(t)}}function fe(t){var e=new m(ie(Me(t)));return e._nextDay&&(e.add(1,\"d\"),e._nextDay=void 0),e}function Me(t){var i=t._i,n=t._f;return t._locale=t._locale||te(t._l),null===i||void 0===n&&\"\"===i?f({nullInput:!0}):(\"string\"==typeof i&&(t._i=i=t._locale.preparse(i)),b(i)?new m(ie(i)):(r(i)?t._d=i:e(n)?ue(t):n?de(t):me(t),h(t)||(t._d=null),t))}function me(n){var c=n._i;o(c)?n._d=new Date(t.now()):r(c)?n._d=new Date(c.valueOf()):\"string\"==typeof c?se(n):e(c)?(n._a=a(c.slice(0),function(t){return parseInt(t,10)}),ce(n)):i(c)?he(n):s(c)?n._d=new Date(c):t.createFromInputFallback(n)}function be(t,o,s,r,a){var c={};return!0!==s&&!1!==s||(r=s,s=void 0),(i(t)&&n(t)||e(t)&&0===t.length)&&(t=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=a,c._l=s,c._i=t,c._f=o,c._strict=r,fe(c)}function ge(t,e,i,n){return be(t,e,i,n,!1)}function ve(t,i){var n,o;if(1===i.length&&e(i[0])&&(i=i[0]),!i.length)return ge();for(n=i[0],o=1;o<i.length;++o)i[o].isValid()&&!i[o][t](n)||(n=i[o]);return n}function Ae(){return ve(\"isBefore\",[].slice.call(arguments,0))}function ze(){return ve(\"isAfter\",[].slice.call(arguments,0))}function ye(t){for(var e in t)if(-1===Po.indexOf(e)||null!=t[e]&&isNaN(t[e]))return!1;for(var i=!1,n=0;n<Po.length;++n)if(t[Po[n]]){if(i)return!1;parseFloat(t[Po[n]])!==v(t[Po[n]])&&(i=!0)}return!0}function _e(){return this._isValid}function Le(){return Fe(NaN)}function Oe(t){var e=x(t),i=e.year||0,n=e.quarter||0,o=e.month||0,s=e.week||0,r=e.day||0,a=e.hour||0,c=e.minute||0,l=e.second||0,d=e.millisecond||0;this._isValid=ye(e),this._milliseconds=+d+1e3*l+6e4*c+1e3*a*60*60,this._days=+r+7*s,this._months=+o+3*n+12*i,this._data={},this._locale=te(),this._bubble()}function Ne(t){return t instanceof Oe}function Te(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function qe(t,e){j(t,0,0,function(){var t=this.utcOffset(),i=\"+\";return t<0&&(t=-t,i=\"-\"),i+H(~~(t/60),2)+e+H(~~t%60,2)})}function Ce(t,e){var i=(e||\"\").match(t);if(null===i)return null;var n=i[i.length-1]||[],o=(n+\"\").match(Fo)||[\"-\",0,0],s=60*o[1]+v(o[2]);return 0===s?0:\"+\"===o[0]?s:-s}function We(e,i){var n,o;return i._isUTC?(n=i.clone(),o=(b(e)||r(e)?e.valueOf():ge(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+o),t.updateOffset(n,!1),n):ge(e).local()}function we(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Be(e,i,n){var o,s=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if(\"string\"==typeof e){if(null===(e=Ce(Qn,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&i&&(o=we(this)),this._offset=e,this._isUTC=!0,null!=o&&this.add(o,\"m\"),s!==e&&(!i||this._changeInProgress?Ke(this,Fe(e-s,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?s:we(this)}function Ee(t,e){return null!=t?(\"string\"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Se(t){return this.utcOffset(0,t)}function ke(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(we(this),\"m\")),this}function xe(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var t=Ce(Gn,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this}function Re(t){return!!this.isValid()&&(t=t?ge(t).utcOffset():0,(this.utcOffset()-t)%60==0)}function Xe(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function De(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t={};if(M(t,this),t=Me(t),t._a){var e=t._isUTC?d(t._a):ge(t._a);this._isDSTShifted=this.isValid()&&A(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function $e(){return!!this.isValid()&&!this._isUTC}function Ie(){return!!this.isValid()&&this._isUTC}function Pe(){return!!this.isValid()&&this._isUTC&&0===this._offset}function Fe(t,e){var i,n,o,r=t,a=null;return Ne(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(r={},e?r[e]=t:r.milliseconds=t):(a=Ho.exec(t))?(i=\"-\"===a[1]?-1:1,r={y:0,d:v(a[oo])*i,h:v(a[so])*i,m:v(a[ro])*i,s:v(a[ao])*i,ms:v(Te(1e3*a[co]))*i}):(a=jo.exec(t))?(i=\"-\"===a[1]?-1:1,r={y:He(a[2],i),M:He(a[3],i),w:He(a[4],i),d:He(a[5],i),h:He(a[6],i),m:He(a[7],i),s:He(a[8],i)}):null==r?r={}:\"object\"==typeof r&&(\"from\"in r||\"to\"in r)&&(o=Ue(ge(r.from),ge(r.to)),r={},r.ms=o.milliseconds,r.M=o.months),n=new Oe(r),Ne(t)&&c(t,\"_locale\")&&(n._locale=t._locale),n}function He(t,e){var i=t&&parseFloat(t.replace(\",\",\".\"));return(isNaN(i)?0:i)*e}function je(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,\"M\").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,\"M\"),i}function Ue(t,e){var i;return t.isValid()&&e.isValid()?(e=We(e,t),t.isBefore(e)?i=je(t,e):(i=je(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ye(t,e){return function(i,n){var o,s;return null===n||isNaN(+n)||(_(e,\"moment().\"+e+\"(period, number) is deprecated. Please use moment().\"+e+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),s=i,i=n,n=s),i=\"string\"==typeof i?+i:i,o=Fe(i,n),Ke(this,o,t),this}}function Ke(e,i,n,o){var s=i._milliseconds,r=Te(i._days),a=Te(i._months);e.isValid()&&(o=null==o||o,s&&e._d.setTime(e._d.valueOf()+s*n),r&&I(e,\"Date\",$(e,\"Date\")+r*n),a&&ct(e,$(e,\"Month\")+a*n),o&&t.updateOffset(e,r||a))}function Ve(t,e){var i=t.diff(e,\"days\",!0);return i<-6?\"sameElse\":i<-1?\"lastWeek\":i<0?\"lastDay\":i<1?\"sameDay\":i<2?\"nextDay\":i<7?\"nextWeek\":\"sameElse\"}function Ge(e,i){var n=e||ge(),o=We(n,this).startOf(\"day\"),s=t.calendarFormat(this,o)||\"sameElse\",r=i&&(L(i[s])?i[s].call(this,n):i[s]);return this.format(r||this.localeData().calendar(s,this,ge(n)))}function Qe(){return new m(this)}function Je(t,e){var i=b(t)?t:ge(t);return!(!this.isValid()||!i.isValid())&&(e=k(o(e)?\"millisecond\":e),\"millisecond\"===e?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf())}function Ze(t,e){var i=b(t)?t:ge(t);return!(!this.isValid()||!i.isValid())&&(e=k(o(e)?\"millisecond\":e),\"millisecond\"===e?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf())}function ti(t,e,i,n){return n=n||\"()\",(\"(\"===n[0]?this.isAfter(t,i):!this.isBefore(t,i))&&(\")\"===n[1]?this.isBefore(e,i):!this.isAfter(e,i))}function ei(t,e){var i,n=b(t)?t:ge(t);return!(!this.isValid()||!n.isValid())&&(e=k(e||\"millisecond\"),\"millisecond\"===e?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf()))}function ii(t,e){return this.isSame(t,e)||this.isAfter(t,e)}function ni(t,e){return this.isSame(t,e)||this.isBefore(t,e)}function oi(t,e,i){var n,o,s,r;return this.isValid()?(n=We(t,this),n.isValid()?(o=6e4*(n.utcOffset()-this.utcOffset()),e=k(e),\"year\"===e||\"month\"===e||\"quarter\"===e?(r=si(this,n),\"quarter\"===e?r/=3:\"year\"===e&&(r/=12)):(s=this-n,r=\"second\"===e?s/1e3:\"minute\"===e?s/6e4:\"hour\"===e?s/36e5:\"day\"===e?(s-o)/864e5:\"week\"===e?(s-o)/6048e5:s),i?r:g(r)):NaN):NaN}function si(t,e){var i,n,o=12*(e.year()-t.year())+(e.month()-t.month()),s=t.clone().add(o,\"months\");return e-s<0?(i=t.clone().add(o-1,\"months\"),n=(e-s)/(s-i)):(i=t.clone().add(o+1,\"months\"),n=(e-s)/(i-s)),-(o+n)||0}function ri(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")}function ai(){if(!this.isValid())return null;var t=this.clone().utc();return t.year()<0||t.year()>9999?K(t,\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\"):L(Date.prototype.toISOString)?this.toDate().toISOString():K(t,\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}function ci(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var t=\"moment\",e=\"\";this.isLocal()||(t=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",e=\"Z\");var i=\"[\"+t+'(\"]',n=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",o=e+'[\")]';return this.format(i+n+\"-MM-DD[T]HH:mm:ss.SSS\"+o)}function li(e){e||(e=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var i=K(this,e);return this.localeData().postformat(i)}function di(t,e){return this.isValid()&&(b(t)&&t.isValid()||ge(t).isValid())?Fe({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function pi(t){return this.from(ge(),t)}function ui(t,e){return this.isValid()&&(b(t)&&t.isValid()||ge(t).isValid())?Fe({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function hi(t){return this.to(ge(),t)}function fi(t){var e;return void 0===t?this._locale._abbr:(e=te(t),null!=e&&(this._locale=e),this)}function Mi(){return this._locale}function mi(t){switch(t=k(t)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}return\"week\"===t&&this.weekday(0),\"isoWeek\"===t&&this.isoWeekday(1),\"quarter\"===t&&this.month(3*Math.floor(this.month()/3)),this}function bi(t){return t=k(t),void 0===t||\"millisecond\"===t?this:(\"date\"===t&&(t=\"day\"),this.startOf(t).add(1,\"isoWeek\"===t?\"week\":t).subtract(1,\"ms\"))}function gi(){return this._d.valueOf()-6e4*(this._offset||0)}function vi(){return Math.floor(this.valueOf()/1e3)}function Ai(){return new Date(this.valueOf())}function zi(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function yi(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function _i(){\nreturn this.isValid()?this.toISOString():null}function Li(){return h(this)}function Oi(){return l({},u(this))}function Ni(){return u(this).overflow}function Ti(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function qi(t,e){j(0,[t,t.length],0,e)}function Ci(t){return Ei.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Wi(t){return Ei.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function wi(){return yt(this.year(),1,4)}function Bi(){var t=this.localeData()._week;return yt(this.year(),t.dow,t.doy)}function Ei(t,e,i,n,o){var s;return null==t?zt(this,n,o).year:(s=yt(t,n,o),e>s&&(e=s),Si.call(this,t,e,i,n,o))}function Si(t,e,i,n,o){var s=At(t,e,i,n,o),r=gt(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function ki(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function xi(t){var e=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==t?e:this.add(t-e,\"d\")}function Ri(t,e){e[co]=v(1e3*(\"0.\"+t))}function Xi(){return this._isUTC?\"UTC\":\"\"}function Di(){return this._isUTC?\"Coordinated Universal Time\":\"\"}function $i(t){return ge(1e3*t)}function Ii(){return ge.apply(null,arguments).parseZone()}function Pi(t){return t}function Fi(t,e,i,n){var o=te(),s=d().set(n,e);return o[i](s,t)}function Hi(t,e,i){if(s(t)&&(e=t,t=void 0),t=t||\"\",null!=e)return Fi(t,e,i,\"month\");var n,o=[];for(n=0;n<12;n++)o[n]=Fi(t,n,i,\"month\");return o}function ji(t,e,i,n){\"boolean\"==typeof t?(s(e)&&(i=e,e=void 0),e=e||\"\"):(e=t,i=e,t=!1,s(e)&&(i=e,e=void 0),e=e||\"\");var o=te(),r=t?o._week.dow:0;if(null!=i)return Fi(e,(i+r)%7,n,\"day\");var a,c=[];for(a=0;a<7;a++)c[a]=Fi(e,(a+r)%7,n,\"day\");return c}function Ui(t,e){return Hi(t,e,\"months\")}function Yi(t,e){return Hi(t,e,\"monthsShort\")}function Ki(t,e,i){return ji(t,e,i,\"weekdays\")}function Vi(t,e,i){return ji(t,e,i,\"weekdaysShort\")}function Gi(t,e,i){return ji(t,e,i,\"weekdaysMin\")}function Qi(){var t=this._data;return this._milliseconds=is(this._milliseconds),this._days=is(this._days),this._months=is(this._months),t.milliseconds=is(t.milliseconds),t.seconds=is(t.seconds),t.minutes=is(t.minutes),t.hours=is(t.hours),t.months=is(t.months),t.years=is(t.years),this}function Ji(t,e,i,n){var o=Fe(e,i);return t._milliseconds+=n*o._milliseconds,t._days+=n*o._days,t._months+=n*o._months,t._bubble()}function Zi(t,e){return Ji(this,t,e,1)}function tn(t,e){return Ji(this,t,e,-1)}function en(t){return t<0?Math.floor(t):Math.ceil(t)}function nn(){var t,e,i,n,o,s=this._milliseconds,r=this._days,a=this._months,c=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*en(sn(a)+r),r=0,a=0),c.milliseconds=s%1e3,t=g(s/1e3),c.seconds=t%60,e=g(t/60),c.minutes=e%60,i=g(e/60),c.hours=i%24,r+=g(i/24),o=g(on(r)),a+=o,r-=en(sn(o)),n=g(a/12),a%=12,c.days=r,c.months=a,c.years=n,this}function on(t){return 4800*t/146097}function sn(t){return 146097*t/4800}function rn(t){if(!this.isValid())return NaN;var e,i,n=this._milliseconds;if(\"month\"===(t=k(t))||\"year\"===t)return e=this._days+n/864e5,i=this._months+on(e),\"month\"===t?i:i/12;switch(e=this._days+Math.round(sn(this._months)),t){case\"week\":return e/7+n/6048e5;case\"day\":return e+n/864e5;case\"hour\":return 24*e+n/36e5;case\"minute\":return 1440*e+n/6e4;case\"second\":return 86400*e+n/1e3;case\"millisecond\":return Math.floor(864e5*e)+n;default:throw new Error(\"Unknown unit \"+t)}}function an(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*v(this._months/12):NaN}function cn(t){return function(){return this.as(t)}}function ln(t){return t=k(t),this.isValid()?this[t+\"s\"]():NaN}function dn(t){return function(){return this.isValid()?this._data[t]:NaN}}function pn(){return g(this.days()/7)}function un(t,e,i,n,o){return o.relativeTime(e||1,!!i,t,n)}function hn(t,e,i){var n=Fe(t).abs(),o=gs(n.as(\"s\")),s=gs(n.as(\"m\")),r=gs(n.as(\"h\")),a=gs(n.as(\"d\")),c=gs(n.as(\"M\")),l=gs(n.as(\"y\")),d=o<=vs.ss&&[\"s\",o]||o<vs.s&&[\"ss\",o]||s<=1&&[\"m\"]||s<vs.m&&[\"mm\",s]||r<=1&&[\"h\"]||r<vs.h&&[\"hh\",r]||a<=1&&[\"d\"]||a<vs.d&&[\"dd\",a]||c<=1&&[\"M\"]||c<vs.M&&[\"MM\",c]||l<=1&&[\"y\"]||[\"yy\",l];return d[2]=e,d[3]=+t>0,d[4]=i,un.apply(null,d)}function fn(t){return void 0===t?gs:\"function\"==typeof t&&(gs=t,!0)}function Mn(t,e){return void 0!==vs[t]&&(void 0===e?vs[t]:(vs[t]=e,\"s\"===t&&(vs.ss=e-1),!0))}function mn(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),i=hn(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function bn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i,n=As(this._milliseconds)/1e3,o=As(this._days),s=As(this._months);t=g(n/60),e=g(t/60),n%=60,t%=60,i=g(s/12),s%=12;var r=i,a=s,c=o,l=e,d=t,p=n,u=this.asSeconds();return u?(u<0?\"-\":\"\")+\"P\"+(r?r+\"Y\":\"\")+(a?a+\"M\":\"\")+(c?c+\"D\":\"\")+(l||d||p?\"T\":\"\")+(l?l+\"H\":\"\")+(d?d+\"M\":\"\")+(p?p+\"S\":\"\"):\"P0D\"}var gn,vn;vn=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,n=0;n<i;n++)if(n in e&&t.call(this,e[n],n,e))return!0;return!1};var An=vn,zn=t.momentProperties=[],yn=!1,_n={};t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;var Ln;Ln=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)c(t,e)&&i.push(e);return i};var On,Nn=Ln,Tn={sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},qn={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},Cn=/\\d{1,2}/,Wn={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},wn={},Bn={},En=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Sn=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,kn={},xn={},Rn=/\\d/,Xn=/\\d\\d/,Dn=/\\d{3}/,$n=/\\d{4}/,In=/[+-]?\\d{6}/,Pn=/\\d\\d?/,Fn=/\\d\\d\\d\\d?/,Hn=/\\d\\d\\d\\d\\d\\d?/,jn=/\\d{1,3}/,Un=/\\d{1,4}/,Yn=/[+-]?\\d{1,6}/,Kn=/\\d+/,Vn=/[+-]?\\d+/,Gn=/Z|[+-]\\d\\d:?\\d\\d/gi,Qn=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,Jn=/[+-]?\\d+(\\.\\d{1,3})?/,Zn=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i,to={},eo={},io=0,no=1,oo=2,so=3,ro=4,ao=5,co=6,lo=7,po=8;On=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1};var uo=On;j(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),j(\"MMM\",0,0,function(t){return this.localeData().monthsShort(this,t)}),j(\"MMMM\",0,0,function(t){return this.localeData().months(this,t)}),S(\"month\",\"M\"),R(\"month\",8),G(\"M\",Pn),G(\"MM\",Pn,Xn),G(\"MMM\",function(t,e){return e.monthsShortRegex(t)}),G(\"MMMM\",function(t,e){return e.monthsRegex(t)}),tt([\"M\",\"MM\"],function(t,e){e[no]=v(t)-1}),tt([\"MMM\",\"MMMM\"],function(t,e,i,n){var o=i._locale.monthsParse(t,n,i._strict);null!=o?e[no]=o:u(i).invalidMonth=t});var ho=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,fo=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),Mo=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),mo=Zn,bo=Zn;j(\"Y\",0,0,function(){var t=this.year();return t<=9999?\"\"+t:\"+\"+t}),j(0,[\"YY\",2],0,function(){return this.year()%100}),j(0,[\"YYYY\",4],0,\"year\"),j(0,[\"YYYYY\",5],0,\"year\"),j(0,[\"YYYYYY\",6,!0],0,\"year\"),S(\"year\",\"y\"),R(\"year\",1),G(\"Y\",Vn),G(\"YY\",Pn,Xn),G(\"YYYY\",Un,$n),G(\"YYYYY\",Yn,In),G(\"YYYYYY\",Yn,In),tt([\"YYYYY\",\"YYYYYY\"],io),tt(\"YYYY\",function(e,i){i[io]=2===e.length?t.parseTwoDigitYear(e):v(e)}),tt(\"YY\",function(e,i){i[io]=t.parseTwoDigitYear(e)}),tt(\"Y\",function(t,e){e[io]=parseInt(t,10)}),t.parseTwoDigitYear=function(t){return v(t)+(v(t)>68?1900:2e3)};var go=D(\"FullYear\",!0);j(\"w\",[\"ww\",2],\"wo\",\"week\"),j(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),S(\"week\",\"w\"),S(\"isoWeek\",\"W\"),R(\"week\",5),R(\"isoWeek\",5),G(\"w\",Pn),G(\"ww\",Pn,Xn),G(\"W\",Pn),G(\"WW\",Pn,Xn),et([\"w\",\"ww\",\"W\",\"WW\"],function(t,e,i,n){e[n.substr(0,1)]=v(t)});var vo={dow:0,doy:6};j(\"d\",0,\"do\",\"day\"),j(\"dd\",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),j(\"ddd\",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),j(\"dddd\",0,0,function(t){return this.localeData().weekdays(this,t)}),j(\"e\",0,0,\"weekday\"),j(\"E\",0,0,\"isoWeekday\"),S(\"day\",\"d\"),S(\"weekday\",\"e\"),S(\"isoWeekday\",\"E\"),R(\"day\",11),R(\"weekday\",11),R(\"isoWeekday\",11),G(\"d\",Pn),G(\"e\",Pn),G(\"E\",Pn),G(\"dd\",function(t,e){return e.weekdaysMinRegex(t)}),G(\"ddd\",function(t,e){return e.weekdaysShortRegex(t)}),G(\"dddd\",function(t,e){return e.weekdaysRegex(t)}),et([\"dd\",\"ddd\",\"dddd\"],function(t,e,i,n){var o=i._locale.weekdaysParse(t,n,i._strict);null!=o?e.d=o:u(i).invalidWeekday=t}),et([\"d\",\"e\",\"E\"],function(t,e,i,n){e[n]=v(t)});var Ao=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),zo=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),yo=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),_o=Zn,Lo=Zn,Oo=Zn;j(\"H\",[\"HH\",2],0,\"hour\"),j(\"h\",[\"hh\",2],0,Pt),j(\"k\",[\"kk\",2],0,Ft),j(\"hmm\",0,0,function(){return\"\"+Pt.apply(this)+H(this.minutes(),2)}),j(\"hmmss\",0,0,function(){return\"\"+Pt.apply(this)+H(this.minutes(),2)+H(this.seconds(),2)}),j(\"Hmm\",0,0,function(){return\"\"+this.hours()+H(this.minutes(),2)}),j(\"Hmmss\",0,0,function(){return\"\"+this.hours()+H(this.minutes(),2)+H(this.seconds(),2)}),Ht(\"a\",!0),Ht(\"A\",!1),S(\"hour\",\"h\"),R(\"hour\",13),G(\"a\",jt),G(\"A\",jt),G(\"H\",Pn),G(\"h\",Pn),G(\"k\",Pn),G(\"HH\",Pn,Xn),G(\"hh\",Pn,Xn),G(\"kk\",Pn,Xn),G(\"hmm\",Fn),G(\"hmmss\",Hn),G(\"Hmm\",Fn),G(\"Hmmss\",Hn),tt([\"H\",\"HH\"],so),tt([\"k\",\"kk\"],function(t,e,i){var n=v(t);e[so]=24===n?0:n}),tt([\"a\",\"A\"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),tt([\"h\",\"hh\"],function(t,e,i){e[so]=v(t),u(i).bigHour=!0}),tt(\"hmm\",function(t,e,i){var n=t.length-2;e[so]=v(t.substr(0,n)),e[ro]=v(t.substr(n)),u(i).bigHour=!0}),tt(\"hmmss\",function(t,e,i){var n=t.length-4,o=t.length-2;e[so]=v(t.substr(0,n)),e[ro]=v(t.substr(n,2)),e[ao]=v(t.substr(o)),u(i).bigHour=!0}),tt(\"Hmm\",function(t,e,i){var n=t.length-2;e[so]=v(t.substr(0,n)),e[ro]=v(t.substr(n))}),tt(\"Hmmss\",function(t,e,i){var n=t.length-4,o=t.length-2;e[so]=v(t.substr(0,n)),e[ro]=v(t.substr(n,2)),e[ao]=v(t.substr(o))});var No,To=/[ap]\\.?m?\\.?/i,qo=D(\"Hours\",!0),Co={calendar:Tn,longDateFormat:qn,invalidDate:\"Invalid date\",ordinal:\"%d\",dayOfMonthOrdinalParse:Cn,relativeTime:Wn,months:fo,monthsShort:Mo,week:vo,weekdays:Ao,weekdaysMin:yo,weekdaysShort:zo,meridiemParse:To},Wo={},wo={},Bo=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,Eo=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,So=/Z|[+-]\\d\\d(?::?\\d\\d)?/,ko=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],xo=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],Ro=/^\\/?Date\\((\\-?\\d+)/i,Xo=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;t.createFromInputFallback=y(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(t){t._d=new Date(t._i+(t._useUTC?\" UTC\":\"\"))}),t.ISO_8601=function(){},t.RFC_2822=function(){};var Do=y(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var t=ge.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:f()}),$o=y(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var t=ge.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:f()}),Io=function(){return Date.now?Date.now():+new Date},Po=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];qe(\"Z\",\":\"),qe(\"ZZ\",\"\"),G(\"Z\",Qn),G(\"ZZ\",Qn),tt([\"Z\",\"ZZ\"],function(t,e,i){i._useUTC=!0,i._tzm=Ce(Qn,t)});var Fo=/([\\+\\-]|\\d\\d)/gi;t.updateOffset=function(){};var Ho=/^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,jo=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Fe.fn=Oe.prototype,Fe.invalid=Le;var Uo=Ye(1,\"add\"),Yo=Ye(-1,\"subtract\");t.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",t.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var Ko=y(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(t){return void 0===t?this.localeData():this.locale(t)});j(0,[\"gg\",2],0,function(){return this.weekYear()%100}),j(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),qi(\"gggg\",\"weekYear\"),qi(\"ggggg\",\"weekYear\"),qi(\"GGGG\",\"isoWeekYear\"),qi(\"GGGGG\",\"isoWeekYear\"),S(\"weekYear\",\"gg\"),S(\"isoWeekYear\",\"GG\"),R(\"weekYear\",1),R(\"isoWeekYear\",1),G(\"G\",Vn),G(\"g\",Vn),G(\"GG\",Pn,Xn),G(\"gg\",Pn,Xn),G(\"GGGG\",Un,$n),G(\"gggg\",Un,$n),G(\"GGGGG\",Yn,In),G(\"ggggg\",Yn,In),et([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(t,e,i,n){e[n.substr(0,2)]=v(t)}),et([\"gg\",\"GG\"],function(e,i,n,o){i[o]=t.parseTwoDigitYear(e)}),j(\"Q\",0,\"Qo\",\"quarter\"),S(\"quarter\",\"Q\"),R(\"quarter\",7),G(\"Q\",Rn),tt(\"Q\",function(t,e){e[no]=3*(v(t)-1)}),j(\"D\",[\"DD\",2],\"Do\",\"date\"),S(\"date\",\"D\"),R(\"date\",9),G(\"D\",Pn),G(\"DD\",Pn,Xn),G(\"Do\",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),tt([\"D\",\"DD\"],oo),tt(\"Do\",function(t,e){e[oo]=v(t.match(Pn)[0],10)});var Vo=D(\"Date\",!0);j(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),S(\"dayOfYear\",\"DDD\"),R(\"dayOfYear\",4),G(\"DDD\",jn),G(\"DDDD\",Dn),tt([\"DDD\",\"DDDD\"],function(t,e,i){i._dayOfYear=v(t)}),j(\"m\",[\"mm\",2],0,\"minute\"),S(\"minute\",\"m\"),R(\"minute\",14),G(\"m\",Pn),G(\"mm\",Pn,Xn),tt([\"m\",\"mm\"],ro);var Go=D(\"Minutes\",!1);j(\"s\",[\"ss\",2],0,\"second\"),S(\"second\",\"s\"),R(\"second\",15),G(\"s\",Pn),G(\"ss\",Pn,Xn),tt([\"s\",\"ss\"],ao);var Qo=D(\"Seconds\",!1);j(\"S\",0,0,function(){return~~(this.millisecond()/100)}),j(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),j(0,[\"SSS\",3],0,\"millisecond\"),j(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),j(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),j(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),j(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),j(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),j(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),S(\"millisecond\",\"ms\"),R(\"millisecond\",16),G(\"S\",jn,Rn),G(\"SS\",jn,Xn),G(\"SSS\",jn,Dn);var Jo;for(Jo=\"SSSS\";Jo.length<=9;Jo+=\"S\")G(Jo,Kn);for(Jo=\"S\";Jo.length<=9;Jo+=\"S\")tt(Jo,Ri);var Zo=D(\"Milliseconds\",!1);j(\"z\",0,0,\"zoneAbbr\"),j(\"zz\",0,0,\"zoneName\");var ts=m.prototype;ts.add=Uo,ts.calendar=Ge,ts.clone=Qe,ts.diff=oi,ts.endOf=bi,ts.format=li,ts.from=di,ts.fromNow=pi,ts.to=ui,ts.toNow=hi,ts.get=P,ts.invalidAt=Ni,ts.isAfter=Je,ts.isBefore=Ze,ts.isBetween=ti,ts.isSame=ei,ts.isSameOrAfter=ii,ts.isSameOrBefore=ni,ts.isValid=Li,ts.lang=Ko,ts.locale=fi,ts.localeData=Mi,ts.max=$o,ts.min=Do,ts.parsingFlags=Oi,ts.set=F,ts.startOf=mi,ts.subtract=Yo,ts.toArray=zi,ts.toObject=yi,ts.toDate=Ai,ts.toISOString=ai,ts.inspect=ci,ts.toJSON=_i,ts.toString=ri,ts.unix=vi,ts.valueOf=gi,ts.creationData=Ti,ts.year=go,ts.isLeapYear=mt,ts.weekYear=Ci,ts.isoWeekYear=Wi,ts.quarter=ts.quarters=ki,ts.month=lt,ts.daysInMonth=dt,ts.week=ts.weeks=Nt,ts.isoWeek=ts.isoWeeks=Tt,ts.weeksInYear=Bi,ts.isoWeeksInYear=wi,ts.date=Vo,ts.day=ts.days=kt,ts.weekday=xt,ts.isoWeekday=Rt,ts.dayOfYear=xi,ts.hour=ts.hours=qo,ts.minute=ts.minutes=Go,ts.second=ts.seconds=Qo,ts.millisecond=ts.milliseconds=Zo,ts.utcOffset=Be,ts.utc=Se,ts.local=ke,ts.parseZone=xe,ts.hasAlignedHourOffset=Re,ts.isDST=Xe,ts.isLocal=$e,ts.isUtcOffset=Ie,ts.isUtc=Pe,ts.isUTC=Pe,ts.zoneAbbr=Xi,ts.zoneName=Di,ts.dates=y(\"dates accessor is deprecated. Use date instead.\",Vo),ts.months=y(\"months accessor is deprecated. Use month instead\",lt),ts.years=y(\"years accessor is deprecated. Use year instead\",go),ts.zone=y(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",Ee),ts.isDSTShifted=y(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",De);var es=T.prototype;es.calendar=q,es.longDateFormat=C,es.invalidDate=W,es.ordinal=w,es.preparse=Pi,es.postformat=Pi,es.relativeTime=B,es.pastFuture=E,es.set=O,es.months=ot,es.monthsShort=st,es.monthsParse=at,es.monthsRegex=ut,es.monthsShortRegex=pt,es.week=_t,es.firstDayOfYear=Ot,es.firstDayOfWeek=Lt,es.weekdays=Wt,es.weekdaysMin=Bt,es.weekdaysShort=wt,es.weekdaysParse=St,es.weekdaysRegex=Xt,es.weekdaysShortRegex=Dt,es.weekdaysMinRegex=$t,es.isPM=Ut,es.meridiem=Yt,Qt(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===v(t%100/10)?\"th\":1===e?\"st\":2===e?\"nd\":3===e?\"rd\":\"th\")}}),t.lang=y(\"moment.lang is deprecated. Use moment.locale instead.\",Qt),t.langData=y(\"moment.langData is deprecated. Use moment.localeData instead.\",te);var is=Math.abs,ns=cn(\"ms\"),os=cn(\"s\"),ss=cn(\"m\"),rs=cn(\"h\"),as=cn(\"d\"),cs=cn(\"w\"),ls=cn(\"M\"),ds=cn(\"y\"),ps=dn(\"milliseconds\"),us=dn(\"seconds\"),hs=dn(\"minutes\"),fs=dn(\"hours\"),Ms=dn(\"days\"),ms=dn(\"months\"),bs=dn(\"years\"),gs=Math.round,vs={ss:44,s:45,m:45,h:22,d:26,M:11},As=Math.abs,zs=Oe.prototype;return zs.isValid=_e,zs.abs=Qi,zs.add=Zi,zs.subtract=tn,zs.as=rn,zs.asMilliseconds=ns,zs.asSeconds=os,zs.asMinutes=ss,zs.asHours=rs,zs.asDays=as,zs.asWeeks=cs,zs.asMonths=ls,zs.asYears=ds,zs.valueOf=an,zs._bubble=nn,zs.get=ln,zs.milliseconds=ps,zs.seconds=us,zs.minutes=hs,zs.hours=fs,zs.days=Ms,zs.weeks=pn,zs.months=ms,zs.years=bs,zs.humanize=mn,zs.toISOString=bn,zs.toString=bn,zs.toJSON=bn,zs.locale=fi,zs.localeData=Mi,zs.toIsoString=y(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",bn),zs.lang=Ko,j(\"X\",0,0,\"unix\"),j(\"x\",0,0,\"valueOf\"),G(\"x\",Vn),G(\"X\",Jn),tt(\"X\",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),tt(\"x\",function(t,e,i){i._d=new Date(v(t))}),t.version=\"2.18.1\",function(t){gn=t}(ge),t.fn=ts,t.min=Ae,t.max=ze,t.now=Io,t.utc=d,t.unix=$i,t.months=Ui,t.isDate=r,t.locale=Qt,t.invalid=f,t.duration=Fe,t.isMoment=b,t.weekdays=Ki,t.parseZone=Ii,t.localeData=te,t.isDuration=Ne,t.monthsShort=Yi,t.weekdaysMin=Gi,t.defineLocale=Jt,t.updateLocale=Zt,t.locales=ee,t.weekdaysShort=Vi,t.normalizeUnits=k,t.relativeTimeRounding=fn,t.relativeTimeThreshold=Mn,t.calendarFormat=Ve,t.prototype=ts,t}),function(t,e){\"use strict\";\"function\"==typeof define&&define.amd?define([\"moment\"],e):\"object\"==typeof module&&module.exports?module.exports=e(require(\"moment\")):e(t.moment)}(this,function(t){\"use strict\";function e(t){return t>96?t-87:t>64?t-29:t-48}function i(t){var i,n=0,o=t.split(\".\"),s=o[0],r=o[1]||\"\",a=1,c=0,l=1;for(45===t.charCodeAt(0)&&(n=1,l=-1),n;n<s.length;n++)i=e(s.charCodeAt(n)),c=60*c+i;for(n=0;n<r.length;n++)a/=60,i=e(r.charCodeAt(n)),c+=i*a;return c*l}function n(t){for(var e=0;e<t.length;e++)t[e]=i(t[e])}function o(t,e){for(var i=0;i<e;i++)t[i]=Math.round((t[i-1]||0)+6e4*t[i]);t[e-1]=1/0}function s(t,e){var i,n=[];for(i=0;i<e.length;i++)n[i]=t[e[i]];return n}function r(t){var e=t.split(\"|\"),i=e[2].split(\" \"),r=e[3].split(\"\"),a=e[4].split(\" \");return n(i),n(r),n(a),o(a,r.length),{name:e[0],abbrs:s(e[1].split(\" \"),r),offsets:s(i,r),untils:a,population:0|e[5]}}function a(t){t&&this._set(r(t))}function c(t){var e=t.toTimeString(),i=e.match(/\\([a-z ]+\\)/i);i&&i[0]?(i=i[0].match(/[A-Z]/g),i=i?i.join(\"\"):void 0):(i=e.match(/[A-Z]{3,5}/g),i=i?i[0]:void 0),\"GMT\"===i&&(i=void 0),this.at=+t,this.abbr=i,this.offset=t.getTimezoneOffset()}function l(t){this.zone=t,this.offsetScore=0,this.abbrScore=0}function d(t,e){for(var i,n;n=6e4*((e.at-t.at)/12e4|0);)i=new c(new Date(t.at+n)),i.offset===t.offset?t=i:e=i;return t}function p(){var t,e,i,n=(new Date).getFullYear()-2,o=new c(new Date(n,0,1)),s=[o];for(i=1;i<48;i++)e=new c(new Date(n,i,1)),e.offset!==o.offset&&(t=d(o,e),s.push(t),s.push(new c(new Date(t.at+6e4)))),o=e;for(i=0;i<4;i++)s.push(new c(new Date(n+i,0,1))),s.push(new c(new Date(n+i,6,1)));return s}function u(t,e){return t.offsetScore!==e.offsetScore?t.offsetScore-e.offsetScore:t.abbrScore!==e.abbrScore?t.abbrScore-e.abbrScore:e.zone.population-t.zone.population}function h(t,e){var i,o;for(n(e),i=0;i<e.length;i++)o=e[i],B[o]=B[o]||{},B[o][t]=!0}function f(t){var e,i,n,o=t.length,s={},r=[];for(e=0;e<o;e++){n=B[t[e].offset]||{};for(i in n)n.hasOwnProperty(i)&&(s[i]=!0)}for(e in s)s.hasOwnProperty(e)&&r.push(w[e]);return r}function M(){try{var t=Intl.DateTimeFormat().resolvedOptions().timeZone;if(t){var e=w[b(t)];if(e)return e;O(\"Moment Timezone found \"+t+\" from the Intl api, but did not have that data loaded.\")}}catch(t){}var i,n,o,s=p(),r=s.length,a=f(s),c=[];for(n=0;n<a.length;n++){for(i=new l(v(a[n]),r),o=0;o<r;o++)i.scoreOffsetAt(s[o]);c.push(i)}return c.sort(u),c.length>0?c[0].zone.name:void 0}function m(t){return q&&!t||(q=M()),q}function b(t){return(t||\"\").toLowerCase().replace(/\\//g,\"_\")}function g(t){var e,i,n,o;for(\"string\"==typeof t&&(t=[t]),e=0;e<t.length;e++)n=t[e].split(\"|\"),i=n[0],o=b(i),C[o]=t[e],w[o]=i,n[5]&&h(o,n[2].split(\" \"))}function v(t,e){t=b(t);var i,n=C[t];return n instanceof a?n:\"string\"==typeof n?(n=new a(n),C[t]=n,n):W[t]&&e!==v&&(i=v(W[t],v))?(n=C[t]=new a,n._set(i),n.name=w[t],n):null}function A(){var t,e=[];for(t in w)w.hasOwnProperty(t)&&(C[t]||C[W[t]])&&w[t]&&e.push(w[t]);return e.sort()}function z(t){var e,i,n,o;for(\"string\"==typeof t&&(t=[t]),e=0;e<t.length;e++)i=t[e].split(\"|\"),n=b(i[0]),o=b(i[1]),W[n]=o,w[n]=i[0],W[o]=n,w[o]=i[1]}function y(t){g(t.zones),z(t.links),N.dataVersion=t.version}function _(t){return _.didShowError||(_.didShowError=!0,O(\"moment.tz.zoneExists('\"+t+\"') has been deprecated in favor of !moment.tz.zone('\"+t+\"')\")),!!v(t)}function L(t){return!(!t._a||void 0!==t._tzm)}function O(t){\"undefined\"!=typeof console&&\"function\"==typeof console.error&&console.error(t)}function N(e){var i=Array.prototype.slice.call(arguments,0,-1),n=arguments[arguments.length-1],o=v(n),s=t.utc.apply(null,i);return o&&!t.isMoment(e)&&L(s)&&s.add(o.parse(s),\"minutes\"),s.tz(n),s}function T(t){return function(){return this._z?this._z.abbr(this):t.call(this)}}var q,C={},W={},w={},B={},E=t.version.split(\".\"),S=+E[0],k=+E[1];(S<2||2===S&&k<6)&&O(\"Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js \"+t.version+\". See momentjs.com\"),a.prototype={_set:function(t){this.name=t.name,this.abbrs=t.abbrs,this.untils=t.untils,this.offsets=t.offsets,this.population=t.population},_index:function(t){var e,i=+t,n=this.untils;for(e=0;e<n.length;e++)if(i<n[e])return e},parse:function(t){var e,i,n,o,s=+t,r=this.offsets,a=this.untils,c=a.length-1;for(o=0;o<c;o++)if(e=r[o],i=r[o+1],n=r[o?o-1:o],e<i&&N.moveAmbiguousForward?e=i:e>n&&N.moveInvalidForward&&(e=n),s<a[o]-6e4*e)return r[o];return r[c]},abbr:function(t){return this.abbrs[this._index(t)]},offset:function(t){return this.offsets[this._index(t)]}},l.prototype.scoreOffsetAt=function(t){this.offsetScore+=Math.abs(this.zone.offset(t.at)-t.offset),this.zone.abbr(t.at).replace(/[^A-Z]/g,\"\")!==t.abbr&&this.abbrScore++},N.version=\"0.5.13\",N.dataVersion=\"\",N._zones=C,N._links=W,N._names=w,N.add=g,N.link=z,N.load=y,N.zone=v,N.zoneExists=_,N.guess=m,N.names=A,N.Zone=a,N.unpack=r,N.unpackBase60=i,N.needsOffset=L,N.moveInvalidForward=!0,N.moveAmbiguousForward=!1;var x=t.fn;t.tz=N,t.defaultZone=null,t.updateOffset=function(e,i){var n,o=t.defaultZone;void 0===e._z&&(o&&L(e)&&!e._isUTC&&(e._d=t.utc(e._a)._d,e.utc().add(o.parse(e),\"minutes\")),e._z=o),e._z&&(n=e._z.offset(e),Math.abs(n)<16&&(n/=60),void 0!==e.utcOffset?e.utcOffset(-n,i):e.zone(n,i))},x.tz=function(e){return e?(this._z=v(e),this._z?t.updateOffset(this):O(\"Moment Timezone has no data for \"+e+\". See http://momentjs.com/timezone/docs/#/data-loading/.\"),this):this._z?this._z.name:void 0},x.zoneName=T(x.zoneName),x.zoneAbbr=T(x.zoneAbbr),x.utc=function(t){return function(){return this._z=null,t.apply(this,arguments)}}(x.utc),t.tz.setDefault=function(e){return(S<2||2===S&&k<9)&&O(\"Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js \"+t.version+\".\"),t.defaultZone=e?v(e):null,t};var R=t.momentProperties;return\"[object Array]\"===Object.prototype.toString.call(R)?(R.push(\"_z\"),R.push(\"_a\")):R&&(R._z=null),y({version:\"2017b\",\nzones:[\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\"Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\"Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldWV.E 2xonV.E|39e4\",\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\"Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5\",\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\"Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4\",\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|51e5\",\"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5\",\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\"Africa/Windhoek|+0130 SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|32e4\",\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0\",\"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0\",\"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0\",\"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0\",\"America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\"America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\"America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|77e4\",\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\"America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|54e4\",\"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\"America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5\",\"America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4\",\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\"America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/La_Paz|CMT BOST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\"America/Montevideo|MMT -0330 -03 -02 -0230|3I.I 3u 30 20 2u|012121212121212121212121213232323232324242423243232323232323232323232323232323232323232|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4\",\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0\",\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5\",\"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\"America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|20e6\",\"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|0121212|-2q00 1DjS0 T90 40P0 KL0 blz0|10\",\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\"Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5\",\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6\",\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\"Asia/Kolkata|HMT +0630 IST|-5R.k -6u -5u|01212|-18LFR.k 1unn.k HB0 7zX0|15e6\",\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3\",\"Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6\",\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4\",\"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5\",\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0\",\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|18e5\",\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|25e4\",\"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\"Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3\",\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4\",\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5\",\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5\",\"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5\",\"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4\",\"Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4\",\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\"Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|01231|-2um8n 97XR 1lTzu 2Onc0|29e5\",\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4\",\"Asia/Rangoon|RMT +0630 +09|-6o.E -6u -90|0121|-21Jio.E SmnS.E 7j9u|48e5\",\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJH0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0|38e6\",\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2xomp.U 1qOMp.U 7zX0 1djf0|50e4\",\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\"Atlantic/South_Georgia|-02|20|0||30\",\"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2\",\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"EST|EST|50|0|\",\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Etc/GMT+0|GMT|0|0|\",\"Etc/GMT+1|-01|10|0|\",\"Etc/GMT+10|-10|a0|0|\",\"Etc/GMT+11|-11|b0|0|\",\"Etc/GMT+12|-12|c0|0|\",\"Etc/GMT+3|-03|30|0|\",\"Etc/GMT+4|-04|40|0|\",\"Etc/GMT+5|-05|50|0|\",\"Etc/GMT+6|-06|60|0|\",\"Etc/GMT+7|-07|70|0|\",\"Etc/GMT+8|-08|80|0|\",\"Etc/GMT+9|-09|90|0|\",\"Etc/GMT-1|+01|-10|0|\",\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\"Pacific/Pohnpei|+11|-b0|0||34e3\",\"Pacific/Tarawa|+12|-c0|0||29e3\",\"Etc/GMT-13|+13|-d0|0|\",\"Etc/GMT-14|+14|-e0|0|\",\"Etc/GMT-2|+02|-20|0|\",\"Etc/GMT-3|+03|-30|0|\",\"Etc/GMT-4|+04|-40|0|\",\"Etc/GMT-5|+05|-50|0|\",\"Etc/GMT-6|+06|-60|0|\",\"Indian/Christmas|+07|-70|0||21e2\",\"Etc/GMT-8|+08|-80|0|\",\"Pacific/Palau|+09|-90|0||21e3\",\"Etc/UCT|UCT|0|0|\",\"Etc/UTC|UTC|0|0|\",\"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\"Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810\",\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\"HST|HST|a0|0|\",\"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\"Indian/Cocos|+0630|-6u|0||596\",\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\"Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3\",\"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4\",\"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4\",\"Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3\",\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"MST|MST|70|0|\",\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B8n0|1\",\"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483\",\"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|88e4\",\"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3\",\"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125\",\"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4\",\"Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4\",\"Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4\",\"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B8nk|51e2\",\"Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2\",\"Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3\",\"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2\",\"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2\",\"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3\",\"Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2\",\"Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4\",\"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56\",\"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4\",\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121212121212121212121212121212121212121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|75e3\",\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"],\nlinks:[\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Sao_Tome\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Cairo|Egypt\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Khartoum|Africa/Juba\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"Africa/Tripoli|Libya\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|US/Alaska\",\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\"America/Argentina/Catamarca|America/Catamarca\",\"America/Argentina/Cordoba|America/Cordoba\",\"America/Argentina/Cordoba|America/Rosario\",\"America/Argentina/Jujuy|America/Jujuy\",\"America/Argentina/Mendoza|America/Mendoza\",\"America/Atikokan|America/Coral_Harbour\",\"America/Chicago|US/Central\",\"America/Curacao|America/Aruba\",\"America/Curacao|America/Kralendijk\",\"America/Curacao|America/Lower_Princes\",\"America/Denver|America/Shiprock\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Detroit|US/Michigan\",\"America/Edmonton|Canada/Mountain\",\"America/Fort_Wayne|America/Indiana/Indianapolis\",\"America/Fort_Wayne|America/Indianapolis\",\"America/Fort_Wayne|US/East-Indiana\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Indiana/Knox|America/Knox_IN\",\"America/Indiana/Knox|US/Indiana-Starke\",\"America/Jamaica|Jamaica\",\"America/Kentucky/Louisville|America/Louisville\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Manaus|Brazil/West\",\"America/Mazatlan|Mexico/BajaSur\",\"America/Mexico_City|Mexico/General\",\"America/New_York|US/Eastern\",\"America/Noronha|Brazil/DeNoronha\",\"America/Panama|America/Cayman\",\"America/Phoenix|US/Arizona\",\"America/Port_of_Spain|America/Anguilla\",\"America/Port_of_Spain|America/Antigua\",\"America/Port_of_Spain|America/Dominica\",\"America/Port_of_Spain|America/Grenada\",\"America/Port_of_Spain|America/Guadeloupe\",\"America/Port_of_Spain|America/Marigot\",\"America/Port_of_Spain|America/Montserrat\",\"America/Port_of_Spain|America/St_Barthelemy\",\"America/Port_of_Spain|America/St_Kitts\",\"America/Port_of_Spain|America/St_Lucia\",\"America/Port_of_Spain|America/St_Thomas\",\"America/Port_of_Spain|America/St_Vincent\",\"America/Port_of_Spain|America/Tortola\",\"America/Port_of_Spain|America/Virgin\",\"America/Regina|Canada/East-Saskatchewan\",\"America/Regina|Canada/Saskatchewan\",\"America/Rio_Branco|America/Porto_Acre\",\"America/Rio_Branco|Brazil/Acre\",\"America/Santiago|Chile/Continental\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Tijuana|America/Ensenada\",\"America/Tijuana|America/Santa_Isabel\",\"America/Tijuana|Mexico/BajaNorte\",\"America/Toronto|America/Montreal\",\"America/Toronto|Canada/Eastern\",\"America/Vancouver|Canada/Pacific\",\"America/Whitehorse|Canada/Yukon\",\"America/Winnipeg|Canada/Central\",\"Asia/Ashgabat|Asia/Ashkhabad\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Ho_Chi_Minh|Asia/Saigon\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Macau|Asia/Macao\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Nicosia|Europe/Nicosia\",\"Asia/Qatar|Asia/Bahrain\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Riyadh|Asia/Aden\",\"Asia/Riyadh|Asia/Kuwait\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|PRC\",\"Asia/Taipei|ROC\",\"Asia/Tehran|Iran\",\"Asia/Thimphu|Asia/Thimbu\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Urumqi|Asia/Kashgar\",\"Atlantic/Faroe|Atlantic/Faeroe\",\"Atlantic/Reykjavik|Iceland\",\"Atlantic/South_Georgia|Etc/GMT+2\",\"Australia/Adelaide|Australia/South\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Broken_Hill|Australia/Yancowinna\",\"Australia/Darwin|Australia/North\",\"Australia/Hobart|Australia/Tasmania\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Melbourne|Australia/Victoria\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/NSW\",\"Etc/GMT+0|Etc/GMT\",\"Etc/GMT+0|Etc/GMT-0\",\"Etc/GMT+0|Etc/GMT0\",\"Etc/GMT+0|Etc/Greenwich\",\"Etc/GMT+0|GMT\",\"Etc/GMT+0|GMT+0\",\"Etc/GMT+0|GMT-0\",\"Etc/GMT+0|GMT0\",\"Etc/GMT+0|Greenwich\",\"Etc/UCT|UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Belgrade|Europe/Ljubljana\",\"Europe/Belgrade|Europe/Podgorica\",\"Europe/Belgrade|Europe/Sarajevo\",\"Europe/Belgrade|Europe/Skopje\",\"Europe/Belgrade|Europe/Zagreb\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Helsinki|Europe/Mariehamn\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Portugal\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|W-SU\",\"Europe/Oslo|Arctic/Longyearbyen\",\"Europe/Oslo|Atlantic/Jan_Mayen\",\"Europe/Prague|Europe/Bratislava\",\"Europe/Rome|Europe/San_Marino\",\"Europe/Rome|Europe/Vatican\",\"Europe/Warsaw|Poland\",\"Europe/Zurich|Europe/Busingen\",\"Europe/Zurich|Europe/Vaduz\",\"Indian/Christmas|Etc/GMT-7\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kwajalein|Kwajalein\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Palau|Etc/GMT-9\",\"Pacific/Pohnpei|Etc/GMT-11\",\"Pacific/Pohnpei|Pacific/Ponape\",\"Pacific/Port_Moresby|Etc/GMT-10\",\"Pacific/Port_Moresby|Pacific/Chuuk\",\"Pacific/Port_Moresby|Pacific/Truk\",\"Pacific/Port_Moresby|Pacific/Yap\",\"Pacific/Tarawa|Etc/GMT-12\",\"Pacific/Tarawa|Pacific/Funafuti\",\"Pacific/Tarawa|Pacific/Wake\",\"Pacific/Tarawa|Pacific/Wallis\"]}),t}),function(t){\"use strict\";if(\"function\"==typeof define&&define.amd)define([\"jquery\",\"moment\"],t);else if(\"object\"==typeof exports)module.exports=t(require(\"jquery\"),require(\"moment\"));else{if(\"undefined\"==typeof jQuery)throw\"bootstrap-datetimepicker requires jQuery to be loaded first\";if(\"undefined\"==typeof moment)throw\"bootstrap-datetimepicker requires Moment.js to be loaded first\";t(jQuery,moment)}}(function(t,e){\"use strict\";if(!e)throw new Error(\"bootstrap-datetimepicker requires Moment.js to be loaded first\");var i=function(i,n){var o,s,r,a,c,l,d,p={},u=!0,h=!1,f=!1,M=0,m=[{clsName:\"days\",navFnc:\"M\",navStep:1},{clsName:\"months\",navFnc:\"y\",navStep:1},{clsName:\"years\",navFnc:\"y\",navStep:10},{clsName:\"decades\",navFnc:\"y\",navStep:100}],b=[\"days\",\"months\",\"years\",\"decades\"],g=[\"top\",\"bottom\",\"auto\"],v=[\"left\",\"right\",\"auto\"],A=[\"default\",\"top\",\"bottom\"],z={up:38,38:\"up\",down:40,40:\"down\",left:37,37:\"left\",right:39,39:\"right\",tab:9,9:\"tab\",escape:27,27:\"escape\",enter:13,13:\"enter\",pageUp:33,33:\"pageUp\",pageDown:34,34:\"pageDown\",shift:16,16:\"shift\",control:17,17:\"control\",space:32,32:\"space\",t:84,84:\"t\",delete:46,46:\"delete\"},y={},_=function(){return void 0!==e.tz&&void 0!==n.timeZone&&null!==n.timeZone&&\"\"!==n.timeZone},L=function(t){var i;return i=void 0===t||null===t?e():e.isDate(t)||e.isMoment(t)?e(t):_()?e.tz(t,l,n.useStrict,n.timeZone):e(t,l,n.useStrict),_()&&i.tz(n.timeZone),i},O=function(t){if(\"string\"!=typeof t||t.length>1)throw new TypeError(\"isEnabled expects a single character string parameter\");switch(t){case\"y\":return-1!==c.indexOf(\"Y\");case\"M\":return-1!==c.indexOf(\"M\");case\"d\":return-1!==c.toLowerCase().indexOf(\"d\");case\"h\":case\"H\":return-1!==c.toLowerCase().indexOf(\"h\");case\"m\":return-1!==c.indexOf(\"m\");case\"s\":return-1!==c.indexOf(\"s\");default:return!1}},N=function(){return O(\"h\")||O(\"m\")||O(\"s\")},T=function(){return O(\"y\")||O(\"M\")||O(\"d\")},q=function(){var e=t(\"<thead>\").append(t(\"<tr>\").append(t(\"<th>\").addClass(\"prev\").attr(\"data-action\",\"previous\").append(t(\"<i>\").addClass(n.icons.previous))).append(t(\"<th>\").addClass(\"picker-switch\").attr(\"data-action\",\"pickerSwitch\").attr(\"colspan\",n.calendarWeeks?\"6\":\"5\")).append(t(\"<th>\").addClass(\"next\").attr(\"data-action\",\"next\").append(t(\"<i>\").addClass(n.icons.next)))),i=t(\"<tbody>\").append(t(\"<tr>\").append(t(\"<td>\").attr(\"colspan\",n.calendarWeeks?\"8\":\"7\")));return[t(\"<div>\").addClass(\"datepicker-days\").append(t(\"<table>\").addClass(\"table-condensed\").append(e).append(t(\"<tbody>\"))),t(\"<div>\").addClass(\"datepicker-months\").append(t(\"<table>\").addClass(\"table-condensed\").append(e.clone()).append(i.clone())),t(\"<div>\").addClass(\"datepicker-years\").append(t(\"<table>\").addClass(\"table-condensed\").append(e.clone()).append(i.clone())),t(\"<div>\").addClass(\"datepicker-decades\").append(t(\"<table>\").addClass(\"table-condensed\").append(e.clone()).append(i.clone()))]},C=function(){var e=t(\"<tr>\"),i=t(\"<tr>\"),o=t(\"<tr>\");return O(\"h\")&&(e.append(t(\"<td>\").append(t(\"<a>\").attr({href:\"#\",tabindex:\"-1\",title:n.tooltips.incrementHour}).addClass(\"btn\").attr(\"data-action\",\"incrementHours\").append(t(\"<i>\").addClass(n.icons.up)))),i.append(t(\"<td>\").append(t(\"<span>\").addClass(\"timepicker-hour\").attr({\"data-time-component\":\"hours\",title:n.tooltips.pickHour}).attr(\"data-action\",\"showHours\"))),o.append(t(\"<td>\").append(t(\"<a>\").attr({href:\"#\",tabindex:\"-1\",title:n.tooltips.decrementHour}).addClass(\"btn\").attr(\"data-action\",\"decrementHours\").append(t(\"<i>\").addClass(n.icons.down))))),O(\"m\")&&(O(\"h\")&&(e.append(t(\"<td>\").addClass(\"separator\")),i.append(t(\"<td>\").addClass(\"separator\").html(\":\")),o.append(t(\"<td>\").addClass(\"separator\"))),e.append(t(\"<td>\").append(t(\"<a>\").attr({href:\"#\",tabindex:\"-1\",title:n.tooltips.incrementMinute}).addClass(\"btn\").attr(\"data-action\",\"incrementMinutes\").append(t(\"<i>\").addClass(n.icons.up)))),i.append(t(\"<td>\").append(t(\"<span>\").addClass(\"timepicker-minute\").attr({\"data-time-component\":\"minutes\",title:n.tooltips.pickMinute}).attr(\"data-action\",\"showMinutes\"))),o.append(t(\"<td>\").append(t(\"<a>\").attr({href:\"#\",tabindex:\"-1\",title:n.tooltips.decrementMinute}).addClass(\"btn\").attr(\"data-action\",\"decrementMinutes\").append(t(\"<i>\").addClass(n.icons.down))))),O(\"s\")&&(O(\"m\")&&(e.append(t(\"<td>\").addClass(\"separator\")),i.append(t(\"<td>\").addClass(\"separator\").html(\":\")),o.append(t(\"<td>\").addClass(\"separator\"))),e.append(t(\"<td>\").append(t(\"<a>\").attr({href:\"#\",tabindex:\"-1\",title:n.tooltips.incrementSecond}).addClass(\"btn\").attr(\"data-action\",\"incrementSeconds\").append(t(\"<i>\").addClass(n.icons.up)))),i.append(t(\"<td>\").append(t(\"<span>\").addClass(\"timepicker-second\").attr({\"data-time-component\":\"seconds\",title:n.tooltips.pickSecond}).attr(\"data-action\",\"showSeconds\"))),o.append(t(\"<td>\").append(t(\"<a>\").attr({href:\"#\",tabindex:\"-1\",title:n.tooltips.decrementSecond}).addClass(\"btn\").attr(\"data-action\",\"decrementSeconds\").append(t(\"<i>\").addClass(n.icons.down))))),a||(e.append(t(\"<td>\").addClass(\"separator\")),i.append(t(\"<td>\").append(t(\"<button>\").addClass(\"btn btn-primary\").attr({\"data-action\":\"togglePeriod\",tabindex:\"-1\",title:n.tooltips.togglePeriod}))),o.append(t(\"<td>\").addClass(\"separator\"))),t(\"<div>\").addClass(\"timepicker-picker\").append(t(\"<table>\").addClass(\"table-condensed\").append([e,i,o]))},W=function(){var e=t(\"<div>\").addClass(\"timepicker-hours\").append(t(\"<table>\").addClass(\"table-condensed\")),i=t(\"<div>\").addClass(\"timepicker-minutes\").append(t(\"<table>\").addClass(\"table-condensed\")),n=t(\"<div>\").addClass(\"timepicker-seconds\").append(t(\"<table>\").addClass(\"table-condensed\")),o=[C()];return O(\"h\")&&o.push(e),O(\"m\")&&o.push(i),O(\"s\")&&o.push(n),o},w=function(){var e=[];return n.showTodayButton&&e.push(t(\"<td>\").append(t(\"<a>\").attr({\"data-action\":\"today\",title:n.tooltips.today}).append(t(\"<i>\").addClass(n.icons.today)))),!n.sideBySide&&T()&&N()&&e.push(t(\"<td>\").append(t(\"<a>\").attr({\"data-action\":\"togglePicker\",title:n.tooltips.selectTime}).append(t(\"<i>\").addClass(n.icons.time)))),n.showClear&&e.push(t(\"<td>\").append(t(\"<a>\").attr({\"data-action\":\"clear\",title:n.tooltips.clear}).append(t(\"<i>\").addClass(n.icons.clear)))),n.showClose&&e.push(t(\"<td>\").append(t(\"<a>\").attr({\"data-action\":\"close\",title:n.tooltips.close}).append(t(\"<i>\").addClass(n.icons.close)))),t(\"<table>\").addClass(\"table-condensed\").append(t(\"<tbody>\").append(t(\"<tr>\").append(e)))},B=function(){var e=t(\"<div>\").addClass(\"bootstrap-datetimepicker-widget dropdown-menu\"),i=t(\"<div>\").addClass(\"datepicker\").append(q()),o=t(\"<div>\").addClass(\"timepicker\").append(W()),s=t(\"<ul>\").addClass(\"list-unstyled\"),r=t(\"<li>\").addClass(\"picker-switch\"+(n.collapse?\" accordion-toggle\":\"\")).append(w());return n.inline&&e.removeClass(\"dropdown-menu\"),a&&e.addClass(\"usetwentyfour\"),O(\"s\")&&!a&&e.addClass(\"wider\"),n.sideBySide&&T()&&N()?(e.addClass(\"timepicker-sbs\"),\"top\"===n.toolbarPlacement&&e.append(r),e.append(t(\"<div>\").addClass(\"row\").append(i.addClass(\"col-md-6\")).append(o.addClass(\"col-md-6\"))),\"bottom\"===n.toolbarPlacement&&e.append(r),e):(\"top\"===n.toolbarPlacement&&s.append(r),T()&&s.append(t(\"<li>\").addClass(n.collapse&&N()?\"collapse show\":\"\").append(i)),\"default\"===n.toolbarPlacement&&s.append(r),N()&&s.append(t(\"<li>\").addClass(n.collapse&&T()?\"collapse\":\"\").append(o)),\"bottom\"===n.toolbarPlacement&&s.append(r),e.append(s))},E=function(){var e,o=(h||i).position(),s=(h||i).offset(),r=n.widgetPositioning.vertical,a=n.widgetPositioning.horizontal;if(n.widgetParent)e=n.widgetParent.append(f);else if(i.is(\"input\"))e=i.after(f).parent();else{if(n.inline)return void(e=i.append(f));e=i,i.children().first().after(f)}if(\"auto\"===r&&(r=s.top+1.5*f.height()>=t(window).height()+t(window).scrollTop()&&f.height()+i.outerHeight()<s.top?\"top\":\"bottom\"),\"auto\"===a&&(a=e.width()<s.left+f.outerWidth()/2&&s.left+f.outerWidth()>t(window).width()?\"right\":\"left\"),\"top\"===r?f.addClass(\"top\").removeClass(\"bottom\"):f.addClass(\"bottom\").removeClass(\"top\"),\"right\"===a?f.addClass(\"pull-right\"):f.removeClass(\"pull-right\"),\"static\"===e.css(\"position\")&&(e=e.parents().filter(function(){return\"static\"!==t(this).css(\"position\")}).first()),0===e.length)throw new Error(\"datetimepicker component should be placed within a non-static positioned container\");f.css({top:\"top\"===r?\"auto\":o.top+i.outerHeight(),bottom:\"top\"===r?e.outerHeight()-(e===i?0:o.top):\"auto\",left:\"left\"===a?e===i?0:o.left:\"auto\",right:\"left\"===a?\"auto\":e.outerWidth()-i.outerWidth()-(e===i?0:o.left)})},S=function(t){\"dp.change\"===t.type&&(t.date&&t.date.isSame(t.oldDate)||!t.date&&!t.oldDate)||i.trigger(t)},k=function(t){\"y\"===t&&(t=\"YYYY\"),S({type:\"dp.update\",change:t,viewDate:s.clone()})},x=function(t){f&&(t&&(d=Math.max(M,Math.min(3,d+t))),f.find(\".datepicker > div\").hide().filter(\".datepicker-\"+m[d].clsName).show())},R=function(){var e=t(\"<tr>\"),i=s.clone().startOf(\"w\").startOf(\"d\");for(!0===n.calendarWeeks&&e.append(t(\"<th>\").addClass(\"cw\").text(\"#\"));i.isBefore(s.clone().endOf(\"w\"));)e.append(t(\"<th>\").addClass(\"dow\").text(i.format(\"dd\"))),i.add(1,\"d\");f.find(\".datepicker-days thead\").append(e)},X=function(t){return!0===n.disabledDates[t.format(\"YYYY-MM-DD\")]},D=function(t){return!0===n.enabledDates[t.format(\"YYYY-MM-DD\")]},$=function(t){return!0===n.disabledHours[t.format(\"H\")]},I=function(t){return!0===n.enabledHours[t.format(\"H\")]},P=function(e,i){if(!e.isValid())return!1;if(n.disabledDates&&\"d\"===i&&X(e))return!1;if(n.enabledDates&&\"d\"===i&&!D(e))return!1;if(n.minDate&&e.isBefore(n.minDate,i))return!1;if(n.maxDate&&e.isAfter(n.maxDate,i))return!1;if(n.daysOfWeekDisabled&&\"d\"===i&&-1!==n.daysOfWeekDisabled.indexOf(e.day()))return!1;if(n.disabledHours&&(\"h\"===i||\"m\"===i||\"s\"===i)&&$(e))return!1;if(n.enabledHours&&(\"h\"===i||\"m\"===i||\"s\"===i)&&!I(e))return!1;if(n.disabledTimeIntervals&&(\"h\"===i||\"m\"===i||\"s\"===i)){var o=!1;if(t.each(n.disabledTimeIntervals,function(){if(e.isBetween(this[0],this[1]))return o=!0,!1}),o)return!1}return!0},F=function(){for(var e=[],i=s.clone().startOf(\"y\").startOf(\"d\");i.isSame(s,\"y\");)e.push(t(\"<span>\").attr(\"data-action\",\"selectMonth\").addClass(\"month\").text(i.format(\"MMM\"))),i.add(1,\"M\");f.find(\".datepicker-months td\").empty().append(e)},H=function(){var e=f.find(\".datepicker-months\"),i=e.find(\"th\"),r=e.find(\"tbody\").find(\"span\");i.eq(0).find(\"span\").attr(\"title\",n.tooltips.prevYear),i.eq(1).attr(\"title\",n.tooltips.selectYear),i.eq(2).find(\"span\").attr(\"title\",n.tooltips.nextYear),e.find(\".disabled\").removeClass(\"disabled\"),P(s.clone().subtract(1,\"y\"),\"y\")||i.eq(0).addClass(\"disabled\"),i.eq(1).text(s.year()),P(s.clone().add(1,\"y\"),\"y\")||i.eq(2).addClass(\"disabled\"),r.removeClass(\"active\"),o.isSame(s,\"y\")&&!u&&r.eq(o.month()).addClass(\"active\"),r.each(function(e){P(s.clone().month(e),\"M\")||t(this).addClass(\"disabled\")})},j=function(){var t=f.find(\".datepicker-years\"),e=t.find(\"th\"),i=s.clone().subtract(5,\"y\"),r=s.clone().add(6,\"y\"),a=\"\";for(e.eq(0).find(\"span\").attr(\"title\",n.tooltips.prevDecade),e.eq(1).attr(\"title\",n.tooltips.selectDecade),e.eq(2).find(\"span\").attr(\"title\",n.tooltips.nextDecade),t.find(\".disabled\").removeClass(\"disabled\"),n.minDate&&n.minDate.isAfter(i,\"y\")&&e.eq(0).addClass(\"disabled\"),e.eq(1).text(i.year()+\"-\"+r.year()),n.maxDate&&n.maxDate.isBefore(r,\"y\")&&e.eq(2).addClass(\"disabled\");!i.isAfter(r,\"y\");)a+='<span data-action=\"selectYear\" class=\"year'+(i.isSame(o,\"y\")&&!u?\" active\":\"\")+(P(i,\"y\")?\"\":\" disabled\")+'\">'+i.year()+\"</span>\",i.add(1,\"y\");t.find(\"td\").html(a)},U=function(){var t,i=f.find(\".datepicker-decades\"),r=i.find(\"th\"),a=e({y:s.year()-s.year()%100-1}),c=a.clone().add(100,\"y\"),l=a.clone(),d=!1,p=!1,u=\"\";for(r.eq(0).find(\"span\").attr(\"title\",n.tooltips.prevCentury),r.eq(2).find(\"span\").attr(\"title\",n.tooltips.nextCentury),i.find(\".disabled\").removeClass(\"disabled\"),(a.isSame(e({y:1900}))||n.minDate&&n.minDate.isAfter(a,\"y\"))&&r.eq(0).addClass(\"disabled\"),r.eq(1).text(a.year()+\"-\"+c.year()),(a.isSame(e({y:2e3}))||n.maxDate&&n.maxDate.isBefore(c,\"y\"))&&r.eq(2).addClass(\"disabled\");!a.isAfter(c,\"y\");)t=a.year()+12,d=n.minDate&&n.minDate.isAfter(a,\"y\")&&n.minDate.year()<=t,p=n.maxDate&&n.maxDate.isAfter(a,\"y\")&&n.maxDate.year()<=t,u+='<span data-action=\"selectDecade\" class=\"decade'+(o.isAfter(a)&&o.year()<=t?\" active\":\"\")+(P(a,\"y\")||d||p?\"\":\" disabled\")+'\" data-selection=\"'+(a.year()+6)+'\">'+(a.year()+1)+\" - \"+(a.year()+12)+\"</span>\",a.add(12,\"y\");u+=\"<span></span><span></span><span></span>\",i.find(\"td\").html(u),r.eq(1).text(l.year()+1+\"-\"+a.year())},Y=function(){var e,i,r,a=f.find(\".datepicker-days\"),c=a.find(\"th\"),l=[],d=[];if(T()){for(c.eq(0).find(\"span\").attr(\"title\",n.tooltips.prevMonth),c.eq(1).attr(\"title\",n.tooltips.selectMonth),c.eq(2).find(\"span\").attr(\"title\",n.tooltips.nextMonth),a.find(\".disabled\").removeClass(\"disabled\"),c.eq(1).text(s.format(n.dayViewHeaderFormat)),P(s.clone().subtract(1,\"M\"),\"M\")||c.eq(0).addClass(\"disabled\"),P(s.clone().add(1,\"M\"),\"M\")||c.eq(2).addClass(\"disabled\"),e=s.clone().startOf(\"M\").startOf(\"w\").startOf(\"d\"),r=0;r<42;r++)0===e.weekday()&&(i=t(\"<tr>\"),n.calendarWeeks&&i.append('<td class=\"cw\">'+e.week()+\"</td>\"),l.push(i)),d=[\"day\"],e.isBefore(s,\"M\")&&d.push(\"old\"),e.isAfter(s,\"M\")&&d.push(\"new\"),e.isSame(o,\"d\")&&!u&&d.push(\"active\"),P(e,\"d\")||d.push(\"disabled\"),e.isSame(L(),\"d\")&&d.push(\"today\"),0!==e.day()&&6!==e.day()||d.push(\"weekend\"),S({type:\"dp.classify\",date:e,classNames:d}),i.append('<td data-action=\"selectDay\" data-day=\"'+e.format(\"L\")+'\" class=\"'+d.join(\" \")+'\">'+e.date()+\"</td>\"),e.add(1,\"d\");a.find(\"tbody\").empty().append(l),H(),j(),U()}},K=function(){var e=f.find(\".timepicker-hours table\"),i=s.clone().startOf(\"d\"),n=[],o=t(\"<tr>\");for(s.hour()>11&&!a&&i.hour(12);i.isSame(s,\"d\")&&(a||s.hour()<12&&i.hour()<12||s.hour()>11);)i.hour()%4==0&&(o=t(\"<tr>\"),n.push(o)),o.append('<td data-action=\"selectHour\" class=\"hour'+(P(i,\"h\")?\"\":\" disabled\")+'\">'+i.format(a?\"HH\":\"hh\")+\"</td>\"),i.add(1,\"h\");e.empty().append(n)},V=function(){for(var e=f.find(\".timepicker-minutes table\"),i=s.clone().startOf(\"h\"),o=[],r=t(\"<tr>\"),a=1===n.stepping?5:n.stepping;s.isSame(i,\"h\");)i.minute()%(4*a)==0&&(r=t(\"<tr>\"),o.push(r)),r.append('<td data-action=\"selectMinute\" class=\"minute'+(P(i,\"m\")?\"\":\" disabled\")+'\">'+i.format(\"mm\")+\"</td>\"),i.add(a,\"m\");e.empty().append(o)},G=function(){for(var e=f.find(\".timepicker-seconds table\"),i=s.clone().startOf(\"m\"),n=[],o=t(\"<tr>\");s.isSame(i,\"m\");)i.second()%20==0&&(o=t(\"<tr>\"),n.push(o)),o.append('<td data-action=\"selectSecond\" class=\"second'+(P(i,\"s\")?\"\":\" disabled\")+'\">'+i.format(\"ss\")+\"</td>\"),i.add(5,\"s\");e.empty().append(n)},Q=function(){var t,e,i=f.find(\".timepicker span[data-time-component]\");a||(t=f.find(\".timepicker [data-action=togglePeriod]\"),e=o.clone().add(o.hours()>=12?-12:12,\"h\"),t.text(o.format(\"A\")),P(e,\"h\")?t.removeClass(\"disabled\"):t.addClass(\"disabled\")),i.filter(\"[data-time-component=hours]\").text(o.format(a?\"HH\":\"hh\")),i.filter(\"[data-time-component=minutes]\").text(o.format(\"mm\")),i.filter(\"[data-time-component=seconds]\").text(o.format(\"ss\")),K(),V(),G()},J=function(){f&&(Y(),Q())},Z=function(t){var e=u?null:o;if(!t)return u=!0,r.val(\"\"),i.data(\"date\",\"\"),S({type:\"dp.change\",date:!1,oldDate:e}),void J();if(t=t.clone().locale(n.locale),_()&&t.tz(n.timeZone),1!==n.stepping)for(t.minutes(Math.round(t.minutes()/n.stepping)*n.stepping).seconds(0);n.minDate&&t.isBefore(n.minDate);)t.add(n.stepping,\"minutes\");P(t)?(s=(o=t).clone(),r.val(o.format(c)),i.data(\"date\",o.format(c)),u=!1,J(),S({type:\"dp.change\",date:o.clone(),oldDate:e})):(n.keepInvalid?S({type:\"dp.change\",date:t,oldDate:e}):r.val(u?\"\":o.format(c)),S({type:\"dp.error\",date:t,oldDate:e}))},tt=function(){var e=!1;return f?(f.find(\".collapse\").each(function(){var i=t(this).data(\"collapse\");return!i||!i.transitioning||(e=!0,!1)}),e?p:(h&&h.hasClass(\"btn\")&&h.toggleClass(\"active\"),f.hide(),t(window).off(\"resize\",E),f.off(\"click\",\"[data-action]\"),f.off(\"mousedown\",!1),f.remove(),f=!1,S({type:\"dp.hide\",date:o.clone()}),r.blur(),s=o.clone(),p)):p},et=function(){Z(null)},it=function(t){return void 0===n.parseInputDate?(!e.isMoment(t)||t instanceof Date)&&(t=L(t)):t=n.parseInputDate(t),t},nt={next:function(){var t=m[d].navFnc;s.add(m[d].navStep,t),Y(),k(t)},previous:function(){var t=m[d].navFnc;s.subtract(m[d].navStep,t),Y(),k(t)},pickerSwitch:function(){x(1)},selectMonth:function(e){var i=t(e.target).closest(\"tbody\").find(\"span\").index(t(e.target));s.month(i),d===M?(Z(o.clone().year(s.year()).month(s.month())),n.inline||tt()):(x(-1),Y()),k(\"M\")},selectYear:function(e){var i=parseInt(t(e.target).text(),10)||0;s.year(i),d===M?(Z(o.clone().year(s.year())),n.inline||tt()):(x(-1),Y()),k(\"YYYY\")},selectDecade:function(e){var i=parseInt(t(e.target).data(\"selection\"),10)||0;s.year(i),d===M?(Z(o.clone().year(s.year())),n.inline||tt()):(x(-1),Y()),k(\"YYYY\")},selectDay:function(e){var i=s.clone();t(e.target).is(\".old\")&&i.subtract(1,\"M\"),t(e.target).is(\".new\")&&i.add(1,\"M\"),Z(i.date(parseInt(t(e.target).text(),10))),N()||n.keepOpen||n.inline||tt()},incrementHours:function(){var t=o.clone().add(1,\"h\");P(t,\"h\")&&Z(t)},incrementMinutes:function(){var t=o.clone().add(n.stepping,\"m\");P(t,\"m\")&&Z(t)},incrementSeconds:function(){var t=o.clone().add(1,\"s\");P(t,\"s\")&&Z(t)},decrementHours:function(){var t=o.clone().subtract(1,\"h\");P(t,\"h\")&&Z(t)},decrementMinutes:function(){var t=o.clone().subtract(n.stepping,\"m\");P(t,\"m\")&&Z(t)},decrementSeconds:function(){var t=o.clone().subtract(1,\"s\");P(t,\"s\")&&Z(t)},togglePeriod:function(){Z(o.clone().add(o.hours()>=12?-12:12,\"h\"))},togglePicker:function(e){var i,o=t(e.target),s=o.closest(\"ul\"),r=s.find(\".show\"),a=s.find(\".collapse:not(.show)\");if(r&&r.length){if((i=r.data(\"collapse\"))&&i.transitioning)return;r.collapse?(r.collapse(\"hide\"),a.collapse(\"show\")):(r.removeClass(\"show\"),a.addClass(\"show\")),o.is(\"i\")?o.toggleClass(n.icons.time+\" \"+n.icons.date):o.find(\"i\").toggleClass(n.icons.time+\" \"+n.icons.date)}},showPicker:function(){f.find(\".timepicker > div:not(.timepicker-picker)\").hide(),f.find(\".timepicker .timepicker-picker\").show()},showHours:function(){f.find(\".timepicker .timepicker-picker\").hide(),f.find(\".timepicker .timepicker-hours\").show()},showMinutes:function(){f.find(\".timepicker .timepicker-picker\").hide(),f.find(\".timepicker .timepicker-minutes\").show()},showSeconds:function(){f.find(\".timepicker .timepicker-picker\").hide(),f.find(\".timepicker .timepicker-seconds\").show()},selectHour:function(e){var i=parseInt(t(e.target).text(),10);a||(o.hours()>=12?12!==i&&(i+=12):12===i&&(i=0)),Z(o.clone().hours(i)),nt.showPicker.call(p)},selectMinute:function(e){Z(o.clone().minutes(parseInt(t(e.target).text(),10))),nt.showPicker.call(p)},selectSecond:function(e){Z(o.clone().seconds(parseInt(t(e.target).text(),10))),nt.showPicker.call(p)},clear:et,today:function(){var t=L();P(t,\"d\")&&Z(t)},close:tt},ot=function(e){return!t(e.currentTarget).is(\".disabled\")&&(nt[t(e.currentTarget).data(\"action\")].apply(p,arguments),!1)},st=function(){var e,i={year:function(t){return t.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(t){return t.date(1).hours(0).seconds(0).minutes(0)},day:function(t){return t.hours(0).seconds(0).minutes(0)},hour:function(t){return t.seconds(0).minutes(0)},minute:function(t){return t.seconds(0)}};return r.prop(\"disabled\")||!n.ignoreReadonly&&r.prop(\"readonly\")||f?p:(void 0!==r.val()&&0!==r.val().trim().length?Z(it(r.val().trim())):u&&n.useCurrent&&(n.inline||r.is(\"input\")&&0===r.val().trim().length)&&(e=L(),\"string\"==typeof n.useCurrent&&(e=i[n.useCurrent](e)),Z(e)),f=B(),R(),F(),f.find(\".timepicker-hours\").hide(),f.find(\".timepicker-minutes\").hide(),f.find(\".timepicker-seconds\").hide(),J(),x(),t(window).on(\"resize\",E),f.on(\"click\",\"[data-action]\",ot),f.on(\"mousedown\",!1),h&&h.hasClass(\"btn\")&&h.toggleClass(\"active\"),E(),f.show(),n.focusOnShow&&!r.is(\":focus\")&&r.focus(),S({type:\"dp.show\"}),p)},rt=function(){return f?tt():st()},at=function(t){var e,i,o,s,r=null,a=[],c={},l=t.which;y[l]=\"p\";for(e in y)y.hasOwnProperty(e)&&\"p\"===y[e]&&(a.push(e),parseInt(e,10)!==l&&(c[e]=!0));for(e in n.keyBinds)if(n.keyBinds.hasOwnProperty(e)&&\"function\"==typeof n.keyBinds[e]&&(o=e.split(\" \")).length===a.length&&z[l]===o[o.length-1]){for(s=!0,i=o.length-2;i>=0;i--)if(!(z[o[i]]in c)){s=!1;break}if(s){r=n.keyBinds[e];break}}r&&(r.call(p,f),t.stopPropagation(),t.preventDefault())},ct=function(t){y[t.which]=\"r\",t.stopPropagation(),t.preventDefault()},lt=function(e){var i=t(e.target).val().trim(),n=i?it(i):null;return Z(n),e.stopImmediatePropagation(),!1},dt=function(){r.off({change:lt,blur:blur,keydown:at,keyup:ct,focus:n.allowInputToggle?tt:\"\"}),i.is(\"input\")?r.off({focus:st}):h&&(h.off(\"click\",rt),h.off(\"mousedown\",!1))},pt=function(e){var i={};return t.each(e,function(){var t=it(this);t.isValid()&&(i[t.format(\"YYYY-MM-DD\")]=!0)}),!!Object.keys(i).length&&i},ut=function(e){var i={};return t.each(e,function(){i[this]=!0}),!!Object.keys(i).length&&i},ht=function(){var t=n.format||\"L LT\";c=t.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(t){return(o.localeData().longDateFormat(t)||t).replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(t){return o.localeData().longDateFormat(t)||t})}),(l=n.extraFormats?n.extraFormats.slice():[]).indexOf(t)<0&&l.indexOf(c)<0&&l.push(c),a=c.toLowerCase().indexOf(\"a\")<1&&c.replace(/\\[.*?\\]/g,\"\").indexOf(\"h\")<1,O(\"y\")&&(M=2),O(\"M\")&&(M=1),O(\"d\")&&(M=0),d=Math.max(M,d),u||Z(o)};if(p.destroy=function(){tt(),dt(),i.removeData(\"DateTimePicker\"),i.removeData(\"date\")},p.toggle=rt,p.show=st,p.hide=tt,p.disable=function(){return tt(),h&&h.hasClass(\"btn\")&&h.addClass(\"disabled\"),r.prop(\"disabled\",!0),p},p.enable=function(){return h&&h.hasClass(\"btn\")&&h.removeClass(\"disabled\"),r.prop(\"disabled\",!1),p},p.ignoreReadonly=function(t){if(0===arguments.length)return n.ignoreReadonly;if(\"boolean\"!=typeof t)throw new TypeError(\"ignoreReadonly () expects a boolean parameter\");return n.ignoreReadonly=t,p},p.options=function(e){if(0===arguments.length)return t.extend(!0,{},n);if(!(e instanceof Object))throw new TypeError(\"options() options parameter should be an object\");return t.extend(!0,n,e),t.each(n,function(t,e){if(void 0===p[t])throw new TypeError(\"option \"+t+\" is not recognized!\");p[t](e)}),p},p.date=function(t){if(0===arguments.length)return u?null:o.clone();if(!(null===t||\"string\"==typeof t||e.isMoment(t)||t instanceof Date))throw new TypeError(\"date() parameter must be one of [null, string, moment or Date]\");return Z(null===t?null:it(t)),p},p.format=function(t){if(0===arguments.length)return n.format;if(\"string\"!=typeof t&&(\"boolean\"!=typeof t||!1!==t))throw new TypeError(\"format() expects a string or boolean:false parameter \"+t);return n.format=t,c&&ht(),p},p.timeZone=function(t){if(0===arguments.length)return n.timeZone;if(\"string\"!=typeof t)throw new TypeError(\"newZone() expects a string parameter\");return n.timeZone=t,p},p.dayViewHeaderFormat=function(t){if(0===arguments.length)return n.dayViewHeaderFormat;if(\"string\"!=typeof t)throw new TypeError(\"dayViewHeaderFormat() expects a string parameter\");return n.dayViewHeaderFormat=t,p},p.extraFormats=function(t){if(0===arguments.length)return n.extraFormats;if(!1!==t&&!(t instanceof Array))throw new TypeError(\"extraFormats() expects an array or false parameter\");return n.extraFormats=t,l&&ht(),p},p.disabledDates=function(e){if(0===arguments.length)return n.disabledDates?t.extend({},n.disabledDates):n.disabledDates;if(!e)return n.disabledDates=!1,J(),p;if(!(e instanceof Array))throw new TypeError(\"disabledDates() expects an array parameter\");return n.disabledDates=pt(e),n.enabledDates=!1,J(),p},p.enabledDates=function(e){if(0===arguments.length)return n.enabledDates?t.extend({},n.enabledDates):n.enabledDates;if(!e)return n.enabledDates=!1,J(),p;if(!(e instanceof Array))throw new TypeError(\"enabledDates() expects an array parameter\");return n.enabledDates=pt(e),n.disabledDates=!1,J(),p},p.daysOfWeekDisabled=function(t){if(0===arguments.length)return n.daysOfWeekDisabled.splice(0);if(\"boolean\"==typeof t&&!t)return n.daysOfWeekDisabled=!1,J(),p;if(!(t instanceof Array))throw new TypeError(\"daysOfWeekDisabled() expects an array parameter\");if(n.daysOfWeekDisabled=t.reduce(function(t,e){return(e=parseInt(e,10))>6||e<0||isNaN(e)?t:(-1===t.indexOf(e)&&t.push(e),t)},[]).sort(),n.useCurrent&&!n.keepInvalid){for(var e=0;!P(o,\"d\");){if(o.add(1,\"d\"),31===e)throw\"Tried 31 times to find a valid date\";e++}Z(o)}return J(),p},p.maxDate=function(t){if(0===arguments.length)return n.maxDate?n.maxDate.clone():n.maxDate;if(\"boolean\"==typeof t&&!1===t)return n.maxDate=!1,J(),p;\"string\"==typeof t&&(\"now\"!==t&&\"moment\"!==t||(t=L()));var e=it(t);if(!e.isValid())throw new TypeError(\"maxDate() Could not parse date parameter: \"+t);if(n.minDate&&e.isBefore(n.minDate))throw new TypeError(\"maxDate() date parameter is before options.minDate: \"+e.format(c));return n.maxDate=e,n.useCurrent&&!n.keepInvalid&&o.isAfter(t)&&Z(n.maxDate),s.isAfter(e)&&(s=e.clone().subtract(n.stepping,\"m\")),J(),p},p.minDate=function(t){\nif(0===arguments.length)return n.minDate?n.minDate.clone():n.minDate;if(\"boolean\"==typeof t&&!1===t)return n.minDate=!1,J(),p;\"string\"==typeof t&&(\"now\"!==t&&\"moment\"!==t||(t=L()));var e=it(t);if(!e.isValid())throw new TypeError(\"minDate() Could not parse date parameter: \"+t);if(n.maxDate&&e.isAfter(n.maxDate))throw new TypeError(\"minDate() date parameter is after options.maxDate: \"+e.format(c));return n.minDate=e,n.useCurrent&&!n.keepInvalid&&o.isBefore(t)&&Z(n.minDate),s.isBefore(e)&&(s=e.clone().add(n.stepping,\"m\")),J(),p},p.defaultDate=function(t){if(0===arguments.length)return n.defaultDate?n.defaultDate.clone():n.defaultDate;if(!t)return n.defaultDate=!1,p;\"string\"==typeof t&&(t=\"now\"===t||\"moment\"===t?L():L(t));var e=it(t);if(!e.isValid())throw new TypeError(\"defaultDate() Could not parse date parameter: \"+t);if(!P(e))throw new TypeError(\"defaultDate() date passed is invalid according to component setup validations\");return n.defaultDate=e,(n.defaultDate&&n.inline||\"\"===r.val().trim())&&Z(n.defaultDate),p},p.locale=function(t){if(0===arguments.length)return n.locale;if(!e.localeData(t))throw new TypeError(\"locale() locale \"+t+\" is not loaded from moment locales!\");return n.locale=t,o.locale(n.locale),s.locale(n.locale),c&&ht(),f&&(tt(),st()),p},p.stepping=function(t){return 0===arguments.length?n.stepping:(t=parseInt(t,10),(isNaN(t)||t<1)&&(t=1),n.stepping=t,p)},p.useCurrent=function(t){var e=[\"year\",\"month\",\"day\",\"hour\",\"minute\"];if(0===arguments.length)return n.useCurrent;if(\"boolean\"!=typeof t&&\"string\"!=typeof t)throw new TypeError(\"useCurrent() expects a boolean or string parameter\");if(\"string\"==typeof t&&-1===e.indexOf(t.toLowerCase()))throw new TypeError(\"useCurrent() expects a string parameter of \"+e.join(\", \"));return n.useCurrent=t,p},p.collapse=function(t){if(0===arguments.length)return n.collapse;if(\"boolean\"!=typeof t)throw new TypeError(\"collapse() expects a boolean parameter\");return n.collapse===t?p:(n.collapse=t,f&&(tt(),st()),p)},p.icons=function(e){if(0===arguments.length)return t.extend({},n.icons);if(!(e instanceof Object))throw new TypeError(\"icons() expects parameter to be an Object\");return t.extend(n.icons,e),f&&(tt(),st()),p},p.tooltips=function(e){if(0===arguments.length)return t.extend({},n.tooltips);if(!(e instanceof Object))throw new TypeError(\"tooltips() expects parameter to be an Object\");return t.extend(n.tooltips,e),f&&(tt(),st()),p},p.useStrict=function(t){if(0===arguments.length)return n.useStrict;if(\"boolean\"!=typeof t)throw new TypeError(\"useStrict() expects a boolean parameter\");return n.useStrict=t,p},p.sideBySide=function(t){if(0===arguments.length)return n.sideBySide;if(\"boolean\"!=typeof t)throw new TypeError(\"sideBySide() expects a boolean parameter\");return n.sideBySide=t,f&&(tt(),st()),p},p.viewMode=function(t){if(0===arguments.length)return n.viewMode;if(\"string\"!=typeof t)throw new TypeError(\"viewMode() expects a string parameter\");if(-1===b.indexOf(t))throw new TypeError(\"viewMode() parameter must be one of (\"+b.join(\", \")+\") value\");return n.viewMode=t,d=Math.max(b.indexOf(t),M),x(),p},p.toolbarPlacement=function(t){if(0===arguments.length)return n.toolbarPlacement;if(\"string\"!=typeof t)throw new TypeError(\"toolbarPlacement() expects a string parameter\");if(-1===A.indexOf(t))throw new TypeError(\"toolbarPlacement() parameter must be one of (\"+A.join(\", \")+\") value\");return n.toolbarPlacement=t,f&&(tt(),st()),p},p.widgetPositioning=function(e){if(0===arguments.length)return t.extend({},n.widgetPositioning);if(\"[object Object]\"!=={}.toString.call(e))throw new TypeError(\"widgetPositioning() expects an object variable\");if(e.horizontal){if(\"string\"!=typeof e.horizontal)throw new TypeError(\"widgetPositioning() horizontal variable must be a string\");if(e.horizontal=e.horizontal.toLowerCase(),-1===v.indexOf(e.horizontal))throw new TypeError(\"widgetPositioning() expects horizontal parameter to be one of (\"+v.join(\", \")+\")\");n.widgetPositioning.horizontal=e.horizontal}if(e.vertical){if(\"string\"!=typeof e.vertical)throw new TypeError(\"widgetPositioning() vertical variable must be a string\");if(e.vertical=e.vertical.toLowerCase(),-1===g.indexOf(e.vertical))throw new TypeError(\"widgetPositioning() expects vertical parameter to be one of (\"+g.join(\", \")+\")\");n.widgetPositioning.vertical=e.vertical}return J(),p},p.calendarWeeks=function(t){if(0===arguments.length)return n.calendarWeeks;if(\"boolean\"!=typeof t)throw new TypeError(\"calendarWeeks() expects parameter to be a boolean value\");return n.calendarWeeks=t,J(),p},p.showTodayButton=function(t){if(0===arguments.length)return n.showTodayButton;if(\"boolean\"!=typeof t)throw new TypeError(\"showTodayButton() expects a boolean parameter\");return n.showTodayButton=t,f&&(tt(),st()),p},p.showClear=function(t){if(0===arguments.length)return n.showClear;if(\"boolean\"!=typeof t)throw new TypeError(\"showClear() expects a boolean parameter\");return n.showClear=t,f&&(tt(),st()),p},p.widgetParent=function(e){if(0===arguments.length)return n.widgetParent;if(\"string\"==typeof e&&(e=t(e)),null!==e&&\"string\"!=typeof e&&!(e instanceof t))throw new TypeError(\"widgetParent() expects a string or a jQuery object parameter\");return n.widgetParent=e,f&&(tt(),st()),p},p.keepOpen=function(t){if(0===arguments.length)return n.keepOpen;if(\"boolean\"!=typeof t)throw new TypeError(\"keepOpen() expects a boolean parameter\");return n.keepOpen=t,p},p.focusOnShow=function(t){if(0===arguments.length)return n.focusOnShow;if(\"boolean\"!=typeof t)throw new TypeError(\"focusOnShow() expects a boolean parameter\");return n.focusOnShow=t,p},p.inline=function(t){if(0===arguments.length)return n.inline;if(\"boolean\"!=typeof t)throw new TypeError(\"inline() expects a boolean parameter\");return n.inline=t,p},p.clear=function(){return et(),p},p.keyBinds=function(t){return 0===arguments.length?n.keyBinds:(n.keyBinds=t,p)},p.getMoment=function(t){return L(t)},p.debug=function(t){if(\"boolean\"!=typeof t)throw new TypeError(\"debug() expects a boolean parameter\");return n.debug=t,p},p.allowInputToggle=function(t){if(0===arguments.length)return n.allowInputToggle;if(\"boolean\"!=typeof t)throw new TypeError(\"allowInputToggle() expects a boolean parameter\");return n.allowInputToggle=t,p},p.showClose=function(t){if(0===arguments.length)return n.showClose;if(\"boolean\"!=typeof t)throw new TypeError(\"showClose() expects a boolean parameter\");return n.showClose=t,p},p.keepInvalid=function(t){if(0===arguments.length)return n.keepInvalid;if(\"boolean\"!=typeof t)throw new TypeError(\"keepInvalid() expects a boolean parameter\");return n.keepInvalid=t,p},p.datepickerInput=function(t){if(0===arguments.length)return n.datepickerInput;if(\"string\"!=typeof t)throw new TypeError(\"datepickerInput() expects a string parameter\");return n.datepickerInput=t,p},p.parseInputDate=function(t){if(0===arguments.length)return n.parseInputDate;if(\"function\"!=typeof t)throw new TypeError(\"parseInputDate() sholud be as function\");return n.parseInputDate=t,p},p.disabledTimeIntervals=function(e){if(0===arguments.length)return n.disabledTimeIntervals?t.extend({},n.disabledTimeIntervals):n.disabledTimeIntervals;if(!e)return n.disabledTimeIntervals=!1,J(),p;if(!(e instanceof Array))throw new TypeError(\"disabledTimeIntervals() expects an array parameter\");return n.disabledTimeIntervals=e,J(),p},p.disabledHours=function(e){if(0===arguments.length)return n.disabledHours?t.extend({},n.disabledHours):n.disabledHours;if(!e)return n.disabledHours=!1,J(),p;if(!(e instanceof Array))throw new TypeError(\"disabledHours() expects an array parameter\");if(n.disabledHours=ut(e),n.enabledHours=!1,n.useCurrent&&!n.keepInvalid){for(var i=0;!P(o,\"h\");){if(o.add(1,\"h\"),24===i)throw\"Tried 24 times to find a valid date\";i++}Z(o)}return J(),p},p.enabledHours=function(e){if(0===arguments.length)return n.enabledHours?t.extend({},n.enabledHours):n.enabledHours;if(!e)return n.enabledHours=!1,J(),p;if(!(e instanceof Array))throw new TypeError(\"enabledHours() expects an array parameter\");if(n.enabledHours=ut(e),n.disabledHours=!1,n.useCurrent&&!n.keepInvalid){for(var i=0;!P(o,\"h\");){if(o.add(1,\"h\"),24===i)throw\"Tried 24 times to find a valid date\";i++}Z(o)}return J(),p},p.viewDate=function(t){if(0===arguments.length)return s.clone();if(!t)return s=o.clone(),p;if(!(\"string\"==typeof t||e.isMoment(t)||t instanceof Date))throw new TypeError(\"viewDate() parameter must be one of [string, moment or Date]\");return s=it(t),k(),p},i.is(\"input\"))r=i;else if(0===(r=i.find(n.datepickerInput)).length)r=i.find(\"input\");else if(!r.is(\"input\"))throw new Error('CSS class \"'+n.datepickerInput+'\" cannot be applied to non input element');if(i.hasClass(\"input-group\")&&(h=0===i.find(\".datepickerbutton\").length?i.find(\".input-group-addon\"):i.find(\".datepickerbutton\")),!n.inline&&!r.is(\"input\"))throw new Error(\"Could not initialize DateTimePicker without an input element\");return o=L(),s=o.clone(),t.extend(!0,n,function(){var e,o={};return(e=i.is(\"input\")||n.inline?i.data():i.find(\"input\").data()).dateOptions&&e.dateOptions instanceof Object&&(o=t.extend(!0,o,e.dateOptions)),t.each(n,function(t){var i=\"date\"+t.charAt(0).toUpperCase()+t.slice(1);void 0!==e[i]&&(o[t]=e[i])}),o}()),p.options(n),ht(),r.on({change:lt,blur:n.debug?\"\":tt,keydown:at,keyup:ct,focus:n.allowInputToggle?st:\"\"}),i.is(\"input\")?r.on({focus:st}):h&&(h.on(\"click\",rt),h.on(\"mousedown\",!1)),r.prop(\"disabled\")&&p.disable(),r.is(\"input\")&&0!==r.val().trim().length?Z(it(r.val().trim())):n.defaultDate&&void 0===r.attr(\"placeholder\")&&Z(n.defaultDate),n.inline&&st(),p};return t.fn.datetimepicker=function(e){e=e||{};var n,o=Array.prototype.slice.call(arguments,1),s=!0,r=[\"destroy\",\"hide\",\"show\",\"toggle\"];if(\"object\"==typeof e)return this.each(function(){var n,o=t(this);o.data(\"DateTimePicker\")||(n=t.extend(!0,{},t.fn.datetimepicker.defaults,e),o.data(\"DateTimePicker\",i(o,n)))});if(\"string\"==typeof e)return this.each(function(){var i=t(this).data(\"DateTimePicker\");if(!i)throw new Error('bootstrap-datetimepicker(\"'+e+'\") method was called on an element that is not using DateTimePicker');n=i[e].apply(i,o),s=n===i}),s||t.inArray(e,r)>-1?this:n;throw new TypeError(\"Invalid arguments for DateTimePicker: \"+e)},t.fn.datetimepicker.defaults={timeZone:\"\",format:!1,dayViewHeaderFormat:\"MMMM YYYY\",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:e.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:\"fa fa-clock-o\",date:\"fa fa-calendar\",up:\"fa fa-chevron-up\",down:\"fa fa-chevron-down\",previous:\"fa fa-chevron-left\",next:\"fa fa-chevron-right\",today:\"fa fa-crosshairs\",clear:\"fa fa-trash-o\",close:\"fa fa-times\"},tooltips:{today:\"Go to today\",clear:\"Clear selection\",close:\"Close the picker\",selectMonth:\"Select Month\",prevMonth:\"Previous Month\",nextMonth:\"Next Month\",selectYear:\"Select Year\",prevYear:\"Previous Year\",nextYear:\"Next Year\",selectDecade:\"Select Decade\",prevDecade:\"Previous Decade\",nextDecade:\"Next Decade\",prevCentury:\"Previous Century\",nextCentury:\"Next Century\",pickHour:\"Pick Hour\",incrementHour:\"Increment Hour\",decrementHour:\"Decrement Hour\",pickMinute:\"Pick Minute\",incrementMinute:\"Increment Minute\",decrementMinute:\"Decrement Minute\",pickSecond:\"Pick Second\",incrementSecond:\"Increment Second\",decrementSecond:\"Decrement Second\",togglePeriod:\"Toggle Period\",selectTime:\"Select Time\"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:\"days\",toolbarPlacement:\"default\",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:\"auto\",vertical:\"auto\"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:\".datepickerinput\",keyBinds:{up:function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")?this.date(e.clone().subtract(7,\"d\")):this.date(e.clone().add(this.stepping(),\"m\"))}},down:function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")?this.date(e.clone().add(7,\"d\")):this.date(e.clone().subtract(this.stepping(),\"m\"))}else this.show()},\"control up\":function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")?this.date(e.clone().subtract(1,\"y\")):this.date(e.clone().add(1,\"h\"))}},\"control down\":function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")?this.date(e.clone().add(1,\"y\")):this.date(e.clone().subtract(1,\"h\"))}},left:function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")&&this.date(e.clone().subtract(1,\"d\"))}},right:function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")&&this.date(e.clone().add(1,\"d\"))}},pageUp:function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")&&this.date(e.clone().subtract(1,\"M\"))}},pageDown:function(t){if(t){var e=this.date()||this.getMoment();t.find(\".datepicker\").is(\":visible\")&&this.date(e.clone().add(1,\"M\"))}},enter:function(){this.hide()},escape:function(){this.hide()},\"control space\":function(t){t&&t.find(\".timepicker\").is(\":visible\")&&t.find('.btn[data-action=\"togglePeriod\"]').click()},t:function(){this.date(this.getMoment())},delete:function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},t.fn.datetimepicker}),function(){var Ajax={};Ajax.settings={},Ajax.post=function(t){return new AjaxRequest(\"post\",t)},Ajax.get=function(t){return new AjaxRequest(\"get\",t)};var AjaxRequest=function(t,e){var i={method:t,url:\"\",before:function(){},success:function(){},error:function(){},data:!1,async:!0,headers:{}};this.p=this.extend(i,e),this.p=this.extend(this.p,Ajax.settings),this.p.method=this.p.method.toUpperCase(),this.prepareData(),this.xhr=new XMLHttpRequest,this.xhr.open(this.p.method,this.p.url,this.p.async),this.setHeaders(),!1!==(\"function\"!=typeof this.p.before||this.p.before(this.xhr))&&this.send()};AjaxRequest.prototype={extend:function(t,e){if(e)for(var i in e)t[i]=e[i];return t},prepareData:function(){\"POST\"!==this.p.method||this.isFormData()||(this.p.headers[\"Content-Type\"]=\"application/x-www-form-urlencoded\"),\"object\"!=typeof this.p.data||this.isFormData()||(this.p.data=this.toParams(this.p.data)),\"GET\"===this.p.method&&(this.p.url=this.p.data?this.p.url+\"?\"+this.p.data:this.p.url)},setHeaders:function(){this.xhr.setRequestHeader(\"X-Requested-With\",this.p.headers[\"X-Requested-With\"]||\"XMLHttpRequest\");for(var t in this.p.headers)this.xhr.setRequestHeader(t,this.p.headers[t])},isFormData:function(){return void 0!==window.FormData&&this.p.data instanceof window.FormData},isComplete:function(){return!(this.xhr.status<200||this.xhr.status>=300&&304!==this.xhr.status)},send:function(){this.p.async?(this.xhr.onload=this.loaded.bind(this),this.xhr.send(this.p.data)):(this.xhr.send(this.p.data),this.loaded.call(this))},loaded:function(){if(this.isComplete()){var t=this.xhr.response,e=this.parseJson(t);t=e||t,\"function\"==typeof this.p.success&&this.p.success(t,this.xhr)}else\"function\"==typeof this.p.error&&this.p.error(this.xhr.statusText)},parseJson:function(t){try{var e=JSON.parse(t);if(e&&\"object\"==typeof e)return e}catch(t){}return!1},toParams:function(t){return Object.keys(t).map(function(e){return encodeURIComponent(e)+\"=\"+encodeURIComponent(t[e])}).join(\"&\")}};var DomCache=[0],DomExpando=\"data\"+new Date,DomDisplayCache={},Dom=function(t,e){return this.parse(t,e)};Dom.ready=function(t){\"loading\"!=document.readyState?t():document.addEventListener(\"DOMContentLoaded\",t)},Dom.prototype={get dom(){return!0},get length(){return this.nodes.length},parse:function(t,e){var i,n=/^\\s*<(\\w+|!)[^>]*>/;if(t){if(t.dom)return this.nodes=t.nodes,t;i=\"string\"!=typeof t?t.nodeType&&11===t.nodeType?t.childNodes:t.nodeType||t===window?[t]:t:n.test(t)?this.create(t):this._query(t,e)}else i=[];this.nodes=this._slice(i)},create:function(t){if(/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/.test(t))return[document.createElement(RegExp.$1)];var e=[],i=document.createElement(\"div\"),n=i.childNodes;i.innerHTML=t;for(var o=0,s=n.length;o<s;o++)e.push(n[o]);return e},add:function(t){this.nodes=this.nodes.concat(this._toArray(t))},get:function(t){return this.nodes[t||0]||!1},getAll:function(){return this.nodes},eq:function(t){return new Dom(this.nodes[t])},first:function(){return new Dom(this.nodes[0])},last:function(){return new Dom(this.nodes[this.nodes.length-1])},contents:function(){return this.get().childNodes},each:function(t){for(var e=this.nodes.length,i=0;i<e;i++)t.call(this,this.nodes[i].dom?this.nodes[i].get():this.nodes[i],i);return this},is:function(t){return this.filter(t).length>0},filter:function(t){var e;return void 0===t?this:(e=\"function\"==typeof t?t:function(e){return t instanceof Node?t===e:t&&t.dom?-1!==t.nodes.indexOf(e):(e.matches=e.matches||e.msMatchesSelector||e.webkitMatchesSelector,1===e.nodeType&&e.matches(t||\"*\"))},new Dom(this.nodes.filter(e)))},not:function(t){return this.filter(function(e){return!new Dom(e).is(t||!0)})},find:function(t){var e=[];return this.each(function(i){for(var n=this._query(t||\"*\",i),o=0;o<n.length;o++)e.push(n[o])}),new Dom(e)},children:function(t){var e=[];return this.each(function(t){if(t.children)for(var i=t.children,n=0;n<i.length;n++)e.push(i[n])}),new Dom(e).filter(t)},parent:function(t){var e=[];return this.each(function(t){t.parentNode&&e.push(t.parentNode)}),new Dom(e).filter(t)},parents:function(t,e){e=this._getContext(e);var i=[];return this.each(function(n){for(var o=n.parentNode;o&&o!==e;)t?new Dom(o).is(t)&&i.push(o):i.push(o),o=o.parentNode}),new Dom(i)},closest:function(t,e){e=this._getContext(e),t=t.dom?t.get():t;var i=[],n=t&&t.nodeType;return this.each(function(o){do{if(n&&o===t||new Dom(o).is(t))return i.push(o)}while((o=o.parentNode)&&o!==e)}),new Dom(i)},next:function(t){return this._getSibling(t,\"nextSibling\")},nextElement:function(t){return this._getSibling(t,\"nextElementSibling\")},prev:function(t){return this._getSibling(t,\"previousSibling\")},prevElement:function(t){return this._getSibling(t,\"previousElementSibling\")},css:function(t,e){if(void 0===e&&\"object\"!=typeof t){var i=this.get();return\"width\"===t||\"height\"===t?i.style?this._getHeightOrWidth(t,i,!1)+\"px\":void 0:i.style?getComputedStyle(i,null)[t]:void 0}return this.each(function(i){var n={};\"object\"==typeof t?n=t:n[t]=e;for(var o in n)i.style&&(i.style[o]=n[o])})},attr:function(t,e,i){if(i=i?\"data-\":\"\",void 0===e&&\"object\"!=typeof t){var n=this.get();return n&&3!==n.nodeType?\"checked\"===t?n.checked:this._getBooleanFromStr(n.getAttribute(i+t)):void 0}return this.each(function(n){var o={};\"object\"==typeof t?o=t:o[t]=e;for(var s in o)3!==n.nodeType&&(\"checked\"===s?n.checked=o[s]:n.setAttribute(i+s,o[s]))})},data:function(t,e){if(void 0===t){var i=/^data\\-(.+)$/,n=this.get().attributes,o={},s=function(t){return t[1].toUpperCase()};for(var r in n)if(i.test(n[r].nodeName)){var a=n[r].nodeName.match(i)[1],c=n[r].value;a=a.replace(/-([a-z])/g,s),c=this._isObjectString(c)?this._toObject(c):this._isNumber(c)?parseFloat(c):this._getBooleanFromStr(c),o[a]=c}return o}return this.attr(t,e,!0)},val:function(t){if(void 0===t){var e=this.get();return e.type&&\"checkbox\"===e.type?e.checked:e.value}return this.each(function(e){e.value=t})},removeAttr:function(t){return this.each(function(e){var i=function(t){3!==e.nodeType&&e.removeAttribute(t)};t.split(\" \").forEach(i)})},removeData:function(t){return this.each(function(e){var i=function(t){3!==e.nodeType&&e.removeAttribute(\"data-\"+t)};t.split(\" \").forEach(i)})},dataset:function(t,e){return this.each(function(i){DomCache[this.dataindex(i)][t]=e})},dataget:function(t){return DomCache[this.dataindex(this.get())][t]},dataindex:function(t){var e=t[DomExpando],i=DomCache.length;return e||(e=t[DomExpando]=i,DomCache[e]={}),e},addClass:function(t){return this._eachClass(t,\"add\")},removeClass:function(t){return this._eachClass(t,\"remove\")},toggleClass:function(t){return this._eachClass(t,\"toggle\")},hasClass:function(t){return this.nodes.some(function(e){return!!e.classList&&e.classList.contains(t)})},empty:function(){return this.each(function(t){t.innerHTML=\"\"})},html:function(t){return void 0===t?this.get().innerHTML||\"\":this.empty().append(t)},text:function(t){return void 0===t?this.get().textContent||\"\":this.each(function(e){e.textContent=t})},after:function(t){return this._inject(t,function(t,e){if(\"string\"==typeof t)e.insertAdjacentHTML(\"afterend\",t);else for(var i=t instanceof Node?[t]:this._toArray(t).reverse(),n=0;n<i.length;n++)e.parentNode.insertBefore(i[n],e.nextSibling);return e})},before:function(t){return this._inject(t,function(t,e){if(\"string\"==typeof t)e.insertAdjacentHTML(\"beforebegin\",t);else for(var i=t instanceof Node?[t]:this._toArray(t),n=0;n<i.length;n++)e.parentNode.insertBefore(i[n],e);return e})},append:function(t){return this._inject(t,function(t,e){if(\"string\"==typeof t||\"number\"==typeof t)e.insertAdjacentHTML(\"beforeend\",t);else for(var i=t instanceof Node?[t]:this._toArray(t),n=0;n<i.length;n++)e.appendChild(i[n]);return e})},prepend:function(t){return this._inject(t,function(t,e){if(\"string\"==typeof t||\"number\"==typeof t)e.insertAdjacentHTML(\"afterbegin\",t);else for(var i=t instanceof Node?[t]:this._toArray(t).reverse(),n=0;n<i.length;n++)e.insertBefore(i[n],e.firstChild);return e})},wrap:function(t){return this._inject(t,function(t,e){var i=\"string\"==typeof t||\"number\"==typeof t?this.create(t)[0]:t instanceof Node?t:this._toArray(t)[0];return e.parentNode&&e.parentNode.insertBefore(i,e),i.appendChild(e),new Dom(i)})},unwrap:function(){return this.each(function(t){var e=new Dom(t);return e.replaceWith(e.contents())})},replaceWith:function(t){return this._inject(t,function(t,e){for(var i=document.createDocumentFragment(),n=\"string\"==typeof t||\"number\"==typeof t?this.create(t):t instanceof Node?[t]:this._toArray(t),o=0;o<n.length;o++)i.appendChild(n[o]);var s=i.childNodes[0];return e.parentNode.replaceChild(i,e),s})},remove:function(){return this.each(function(t){t.parentNode&&t.parentNode.removeChild(t)})},clone:function(t){var e=[];return this.each(function(i){var n=this._clone(i);t&&(n=this._cloneEvents(i,n)),e.push(n)}),new Dom(e)},show:function(){return this.each(function(t){if(t.style){if(\"none\"!==this._getRealDisplay(t))return;var e=t.getAttribute(\"displayOld\");if(t.style.display=e||\"\",\"none\"===this._getRealDisplay(t)){var i,n=t.nodeName,o=document.body;if(DomDisplayCache[n])i=DomDisplayCache[n];else{var s=document.createElement(n);o.appendChild(s),i=this._getRealDisplay(s),\"none\"===i&&(i=\"block\"),o.removeChild(s),DomDisplayCache[n]=i}t.setAttribute(\"displayOld\",i),t.style.display=i}}}.bind(this))},hide:function(){return this.each(function(t){t.style&&(t.getAttribute(\"displayOld\")||\"\"===t.style.display||t.setAttribute(\"displayOld\",t.style.display),t.style.display=\"none\")})},scrollTop:function(t){var e=this.get(),i=e===window,n=9===e.nodeType,o=n?document.scrollingElement||document.body.parentNode||document.body||document.documentElement:e;return void 0!==t?void(i?window.scrollTo(0,t):o.scrollTop=t):n?void 0!==window.pageYOffset?window.pageYOffset:document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop?document.body.scrollTop:0:i?window.pageYOffset:o.scrollTop},offset:function(){return this._getDim(\"Offset\")},position:function(){return this._getDim(\"Position\")},width:function(t,e){return this._getSize(\"width\",\"Width\",t,e)},height:function(t,e){return this._getSize(\"height\",\"Height\",t,e)},outerWidth:function(){return this._getInnerOrOuter(\"width\",\"outer\")},outerHeight:function(){return this._getInnerOrOuter(\"height\",\"outer\")},innerWidth:function(){return this._getInnerOrOuter(\"width\",\"inner\")},innerHeight:function(){return this._getInnerOrOuter(\"height\",\"inner\")},click:function(){return this._triggerEvent(\"click\")},focus:function(){return this._triggerEvent(\"focus\")},trigger:function(t){return this.each(function(e){for(var i=t.split(\" \"),n=0;n<i.length;n++){var o,s={bubbles:!0,cancelable:!0};try{o=new window.CustomEvent(i[n],s)}catch(t){o=document.createEvent(\"CustomEvent\"),o.initCustomEvent(i[n],!0,!0)}e.dispatchEvent(o)}})},on:function(t,e,i){return this.each(function(n){for(var o=t.split(\" \"),s=0;s<o.length;s++){var r=this._getEventName(o[s]),a=this._getEventNamespace(o[s]);e=i?this._getOneHandler(e,t):e,n.addEventListener(r,e),n._e=n._e||{},n._e[a]=n._e[a]||{},n._e[a][r]=n._e[a][r]||[],n._e[a][r].push(e)}})},one:function(t,e){return this.on(t,e,!0)},off:function(t,e){var i=function(t,e,i){return t===i},n=function(t,e,i,n){return e===n},o=function(t,e,i,n){return t===i&&e===n},s=function(){return!0};return void 0===t?this.each(function(t){this._offEvent(t,!1,!1,e,s)}):this.each(function(s){for(var r=t.split(\" \"),a=0;a<r.length;a++){var c=this._getEventName(r[a]),l=this._getEventNamespace(r[a]);\"_events\"===l?this._offEvent(s,c,l,e,i):c||\"_events\"===l?this._offEvent(s,c,l,e,o):this._offEvent(s,c,l,e,n)}})},serialize:function(t){for(var e={},i=this.get().elements,n=0;n<i.length;n++){var o=i[n];if((!/(checkbox|radio)/.test(o.type)||o.checked)&&(o.name&&!o.disabled&&\"file\"!==o.type)){if(\"select-multiple\"===o.type)for(var s=0;s<o.options.length;s++){var r=o.options[s];r.selected&&(e[o.name]=r.value)}e[o.name]=o.value}}return t?e:this._toParams(e)},ajax:function(t,e){if(void 0!==AjaxRequest){var i=this.attr(\"method\")||\"post\",n={url:this.attr(\"action\"),data:this.serialize(),success:t,error:e};return new AjaxRequest(i,n)}},_queryContext:function(t,e){return e=this._getContext(e),3!==e.nodeType&&\"function\"==typeof e.querySelectorAll?e.querySelectorAll(t):[]},_query:function(t,e){if(e)return this._queryContext(t,e);if(/^[.#]?[\\w-]*$/.test(t)){if(\"#\"===t[0]){var i=document.getElementById(t.slice(1));return i?[i]:[]}return\".\"===t[0]?document.getElementsByClassName(t.slice(1)):document.getElementsByTagName(t)}return document.querySelectorAll(t)},_getContext:function(t){return t=\"string\"==typeof t?document.querySelector(t):t,t&&t.dom?t.get():t||document},_inject:function(t,e){for(var i=this.nodes.length,n=[];i--;){var o=\"function\"==typeof t?t.call(this,this.nodes[i]):t,s=0===i?o:this._clone(o),r=e.call(this,s,this.nodes[i]);r&&(r.dom?n.push(r.get()):n.push(r))}return new Dom(n)},_cloneEvents:function(t,e){var i=t._e;if(i){e._e=i;for(var n in i._events)for(var o=0;o<i._events[n].length;o++)e.addEventListener(n,i._events[n][o])}return e},_clone:function(t){if(void 0!==t)return\"string\"==typeof t?t:t instanceof Node?t.cloneNode(!0):\"length\"in t?[].map.call(this._toArray(t),function(t){return t.cloneNode(!0)}):t},_slice:function(t){return t&&0!==t.length?t.length?[].slice.call(t.nodes||t):[t]:[]},_eachClass:function(t,e){return this.each(function(i){if(t){var n=function(t){i.classList&&i.classList[e](t)};t.split(\" \").forEach(n)}})},_triggerEvent:function(t){var e=this.get();return e&&3!==e.nodeType&&e[t](),this},_getOneHandler:function(t,e){var i=this;return function(){t.apply(this,arguments),i.off(e)}},_getEventNamespace:function(t){var e=t.split(\".\"),i=e[1]?e[1]:\"_events\";return e[2]?i+e[2]:i},_getEventName:function(t){return t.split(\".\")[0]},_offEvent:function(t,e,i,n,o){for(var s in t._e)for(var r in t._e[s])if(o(r,s,e,i))for(var a=t._e[s][r],c=0;c<a.length;c++)void 0!==n&&a[c].toString()!==n.toString()||(t.removeEventListener(r,a[c]),t._e[s][r].splice(c,1),0===t._e[s][r].length&&delete t._e[s][r],0===Object.keys(t._e[s]).length&&delete t._e[s])},_getInnerOrOuter:function(t,e){return this[t](void 0,e)},_getDocSize:function(t,e){var i=t.body,n=t.documentElement;return Math.max(i[\"scroll\"+e],i[\"offset\"+e],n[\"client\"+e],n[\"scroll\"+e],n[\"offset\"+e])},_getSize:function(t,e,i,n){if(void 0===i){var o=this.get();return i=3===o.nodeType?0:9===o.nodeType?this._getDocSize(o,e):o===window?window[\"inner\"+e]:this._getHeightOrWidth(t,o,n||\"normal\"),Math.round(i)}return this.each(function(e){i=parseFloat(i),i+=this._adjustResultHeightOrWidth(t,e,n||\"normal\"),new Dom(e).css(t,i+\"px\")}.bind(this))},_getHeightOrWidth:function(t,e,i){var n=t.charAt(0).toUpperCase()+t.slice(1),o=getComputedStyle(e,null),s=new Dom(e),r=0,a=s.parents().filter(function(t){return\"none\"===getComputedStyle(t,null).display&&t});if(\"none\"===o.display&&a.add(e),0!==a.length){var c=\"visibility: hidden !important; display: block !important;\",l=[];a.each(function(t){var e=new Dom(t),i=e.attr(\"style\");null!==i&&l.push(i),e.attr(\"style\",null!==i?i+\";\"+c:c)}),r=s.get()[\"offset\"+n]-this._adjustResultHeightOrWidth(t,e,i),a.each(function(t,e){var i=new Dom(t);void 0===l[e]?i.removeAttr(\"style\"):i.attr(\"style\",l[e])})}else r=e[\"offset\"+n]-this._adjustResultHeightOrWidth(t,e,i);return r},_adjustResultHeightOrWidth:function(t,e,i){if(!e||!1===i)return 0;var n=0,o=getComputedStyle(e,null),s=\"border-box\"===o.boxSizing;return\"height\"===t?((\"inner\"===i||\"normal\"===i&&s)&&(n+=(parseFloat(o.borderTopWidth)||0)+(parseFloat(o.borderBottomWidth)||0)),\"outer\"===i&&(n-=(parseFloat(o.marginTop)||0)+(parseFloat(o.marginBottom)||0))):((\"inner\"===i||\"normal\"===i&&s)&&(n+=(parseFloat(o.borderLeftWidth)||0)+(parseFloat(o.borderRightWidth)||0)),\"outer\"===i&&(n-=(parseFloat(o.marginLeft)||0)+(parseFloat(o.marginRight)||0))),n},_getDim:function(t){var e=this.get();return 3===e.nodeType?{top:0,left:0}:this[\"_get\"+t](e)},_getPosition:function(t){return{top:t.offsetTop,left:t.offsetLeft}},_getOffset:function(t){var e=t.getBoundingClientRect(),i=t.ownerDocument,n=i.documentElement,o=i.defaultView;return{top:e.top+o.pageYOffset-n.clientTop,left:e.left+o.pageXOffset-n.clientLeft}},_getSibling:function(t,e){t=t&&t.dom?t.get():t;var i,n=t&&t.nodeType;return this.each(function(o){for(;o=o[e];)if(n&&o===t||new Dom(o).is(t))return void(i=o)}),new Dom(i)},_toArray:function(t){if(t instanceof NodeList){for(var e=[],i=0;i<t.length;i++)e[i]=t[i];return e}return void 0===t?[]:t.dom?t.nodes:t},_toParams:function(t){var e=\"\";for(var i in t)e+=\"&\"+this._encodeUri(i)+\"=\"+this._encodeUri(t[i]);return e.replace(/^&/,\"\")},_toObject:function(t){return new Function(\"return \"+t)()},_encodeUri:function(t){return encodeURIComponent(t).replace(/!/g,\"%21\").replace(/'/g,\"%27\").replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\").replace(/\\*/g,\"%2A\").replace(/%20/g,\"+\")},_isNumber:function(t){return!isNaN(t)&&!isNaN(parseFloat(t))},_isObjectString:function(t){return-1!==t.search(/^{/)},_getBooleanFromStr:function(t){return\"true\"===t||\"false\"!==t&&t},_getRealDisplay:function(t){if(t.currentStyle)return t.currentStyle.display;if(window.getComputedStyle){return window.getComputedStyle(t,null).getPropertyValue(\"display\")}}};var uuid=0,$R=function(t,e){return RedactorApp(t,e,[].slice.call(arguments,2))};$R.version=\"3.1.1\",$R.options={},$R.modules={},$R.services={},$R.classes={},$R.plugins={},$R.mixins={},$R.modals={},$R.lang={},$R.dom=function(t,e){return new Dom(t,e)},$R.ajax=Ajax,$R.Dom=Dom,$R.keycodes={BACKSPACE:8,DELETE:46,UP:38,DOWN:40,ENTER:13,SPACE:32,ESC:27,TAB:9,CTRL:17,META:91,SHIFT:16,ALT:18,RIGHT:39,LEFT:37},$R.env={plugin:\"plugins\",module:\"modules\",service:\"services\",class:\"classes\",mixin:\"mixins\"},\"undefined\"!=typeof jQuery&&function(t){t.fn.redactor=function(t){return RedactorApp(this.toArray(),t,[].slice.call(arguments,1))}}(jQuery);var RedactorApp=function(t,e,i){for(var n,o=Array.isArray(t)?t:t&&t.nodeType?[t]:document.querySelectorAll(t),s=\"string\"==typeof e||\"function\"==typeof e,r=[],a=0;a<o.length;a++){var c=o[a],l=$R.dom(c);if(n=l.dataget(\"redactor\"),n||s||(l.dataset(\"redactor\",n=new App(c,e,uuid)),uuid++),n&&s){var d=\"destroy\"===e;e=d?\"stop\":e;var p;\"function\"==typeof e?p=e.apply(n,i):(i.unshift(e),p=n.api.apply(n,i)),void 0!==p&&r.push(p),d&&l.dataset(\"redactor\",!1)}}return 0===r.length||1===r.length?0===r.length?n:r[0]:r};$R.add=function(t,e,i){if(void 0!==$R.env[t])if(i.translations&&($R.lang=$R.extend(!0,{},$R.lang,i.translations)),i.modals&&($R.modals=$R.extend(!0,{},$R.modals,i.modals)),\"mixin\"===t)$R[$R.env[t]][e]=i;else{var n=function(){};if(n.prototype=i,i.mixins)for(var o=0;o<i.mixins.length;o++)$R.inherit(n,$R.mixins[i.mixins[o]])\n;$R[$R.env[t]][e]=n}},$R.addLang=function(t,e){void 0===$R.lang[t]&&($R.lang[t]={}),$R.lang[t]=$R.extend($R.lang[t],e)},$R.create=function(t){var e=t.split(\".\"),i=[].slice.call(arguments,1),n=\"classes\";void 0!==$R.env[e[0]]&&(n=$R.env[e[0]],t=e.slice(1).join(\".\"));var o=new $R[n][t];if(o.init){var s=o.init.apply(o,i);return s||o}return o},$R.inherit=function(t,e){var i=function(){};i.prototype=e;var n=new i;for(var o in t.prototype)t.prototype.__lookupGetter__(o)?n.__defineGetter__(o,t.prototype.__lookupGetter__(o)):n[o]=t.prototype[o];return t.prototype=n,t.prototype.super=e,t},$R.error=function(t){throw t},$R.extend=function(){var t={},e=!1,i=0,n=arguments.length;\"[object Boolean]\"===Object.prototype.toString.call(arguments[0])&&(e=arguments[0],i++);for(;i<n;i++){var o=arguments[i];!function(i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e&&\"[object Object]\"===Object.prototype.toString.call(i[n])?t[n]=$R.extend(!0,t[n],i[n]):t[n]=i[n])}(o)}return t},$R.opts={animation:!0,lang:\"en\",direction:\"ltr\",spellcheck:!0,structure:!1,scrollTarget:!1,styles:!0,stylesClass:\"redactor-styles\",placeholder:!1,source:!0,showSource:!1,inline:!1,breakline:!1,markup:\"p\",enterKey:!0,clickToEdit:!1,clickToSave:!1,clickToCancel:!1,focus:!1,focusEnd:!1,minHeight:!1,maxHeight:!1,maxWidth:!1,plugins:[],callbacks:{},preClass:!1,preSpaces:4,tabindex:!1,tabAsSpaces:!1,tabKey:!0,autosave:!1,autosaveName:!1,autosaveData:!1,toolbar:!0,toolbarFixed:!0,toolbarFixedTarget:document,toolbarFixedTopOffset:0,toolbarExternal:!1,toolbarContext:!0,air:!1,formatting:[\"p\",\"blockquote\",\"pre\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],formattingAdd:!1,formattingHide:!1,buttons:[\"html\",\"format\",\"bold\",\"italic\",\"deleted\",\"lists\",\"image\",\"file\",\"link\"],buttonsTextLabeled:!1,buttonsAdd:[],buttonsAddFirst:[],buttonsAddAfter:!1,buttonsAddBefore:!1,buttonsHide:[],buttonsHideOnMobile:[],imageUpload:!1,imageUploadParam:\"file\",imageData:!1,imageEditable:!0,imageCaption:!0,imagePosition:!1,imageResizable:!1,imageFloatMargin:\"10px\",imageFigure:!0,fileUpload:!1,fileUploadParam:\"file\",fileData:!1,fileAttachment:!1,uploadData:!1,dragUpload:!0,multipleUpload:!0,clipboardUpload:!0,uploadBase64:!1,linkTarget:!1,linkTitle:!1,linkNewTab:!1,linkNofollow:!1,linkSize:30,linkValidation:!0,cleanOnEnter:!0,cleanInlineOnEnter:!1,paragraphize:!0,removeScript:!0,removeNewLines:!1,removeComments:!0,replaceTags:{b:\"strong\",i:\"em\",strike:\"del\"},pastePlainText:!1,pasteLinkTarget:!1,pasteImages:!0,pasteLinks:!0,pasteClean:!0,pasteKeepStyle:[],pasteKeepClass:[],pasteKeepAttrs:[\"td\",\"th\"],pasteBlockTags:[\"pre\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"table\",\"tbody\",\"thead\",\"tfoot\",\"th\",\"tr\",\"td\",\"ul\",\"ol\",\"li\",\"blockquote\",\"p\",\"figure\",\"figcaption\"],pasteInlineTags:[\"a\",\"img\",\"br\",\"strong\",\"ins\",\"code\",\"del\",\"span\",\"samp\",\"kbd\",\"sup\",\"sub\",\"mark\",\"var\",\"cite\",\"small\",\"b\",\"u\",\"em\",\"i\",\"abbr\"],activeButtons:{b:\"bold\",strong:\"bold\",i:\"italic\",em:\"italic\",del:\"deleted\",strike:\"deleted\",u:\"underline\"},activeButtonsAdd:{},activeButtonsObservers:{},autoparse:!0,autoparseStart:!0,autoparsePaste:!0,autoparseLinks:!0,autoparseImages:!0,autoparseVideo:!0,shortcodes:{\"p.\":{format:\"p\"},\"quote.\":{format:\"blockquote\"},\"pre.\":{format:\"pre\"},\"h1.\":{format:\"h1\"},\"h2.\":{format:\"h2\"},\"h3.\":{format:\"h3\"},\"h4.\":{format:\"h4\"},\"h5.\":{format:\"h5\"},\"h6.\":{format:\"h6\"},\"1.\":{format:\"ol\"},\"*.\":{format:\"ul\"}},shortcodesAdd:!1,shortcuts:{\"ctrl+shift+m, meta+shift+m\":{api:\"module.inline.clearformat\"},\"ctrl+b, meta+b\":{api:\"module.inline.format\",args:\"b\"},\"ctrl+i, meta+i\":{api:\"module.inline.format\",args:\"i\"},\"ctrl+u, meta+u\":{api:\"module.inline.format\",args:\"u\"},\"ctrl+h, meta+h\":{api:\"module.inline.format\",args:\"sup\"},\"ctrl+l, meta+l\":{api:\"module.inline.format\",args:\"sub\"},\"ctrl+k, meta+k\":{api:\"module.link.open\"},\"ctrl+alt+0, meta+alt+0\":{api:\"module.block.format\",args:\"p\"},\"ctrl+alt+1, meta+alt+1\":{api:\"module.block.format\",args:\"h1\"},\"ctrl+alt+2, meta+alt+2\":{api:\"module.block.format\",args:\"h2\"},\"ctrl+alt+3, meta+alt+3\":{api:\"module.block.format\",args:\"h3\"},\"ctrl+alt+4, meta+alt+4\":{api:\"module.block.format\",args:\"h4\"},\"ctrl+alt+5, meta+alt+5\":{api:\"module.block.format\",args:\"h5\"},\"ctrl+alt+6, meta+alt+6\":{api:\"module.block.format\",args:\"h6\"},\"ctrl+shift+7, meta+shift+7\":{api:\"module.list.toggle\",args:\"ol\"},\"ctrl+shift+8, meta+shift+8\":{api:\"module.list.toggle\",args:\"ul\"}},shortcutsAdd:!1,grammarly:!0,bufferLimit:100,emptyHtml:\"<p></p>\",markerChar:\"\\ufeff\",imageTypes:[\"image/png\",\"image/jpeg\",\"image/gif\"],inlineTags:[\"a\",\"span\",\"strong\",\"strike\",\"b\",\"u\",\"em\",\"i\",\"code\",\"del\",\"ins\",\"samp\",\"kbd\",\"sup\",\"sub\",\"mark\",\"var\",\"cite\",\"small\",\"abbr\"],blockTags:[\"pre\",\"ul\",\"ol\",\"li\",\"p\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"dl\",\"dt\",\"dd\",\"div\",\"table\",\"tbody\",\"thead\",\"tfoot\",\"tr\",\"th\",\"td\",\"blockquote\",\"output\",\"figcaption\",\"figure\",\"address\",\"section\",\"header\",\"footer\",\"aside\",\"article\",\"iframe\"],regex:{youtube:/https?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:youtu\\.be\\/|youtube\\.com\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w.-]*(?:['\"][^<>]*>|<\\/a>))[?=&+%\\w.-]*/gi,vimeo:/(http|https)?:\\/\\/(?:www.|player.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_-]+)?/gi,imageurl:/((https?|www)[^\\s]+\\.)(jpe?g|png|gif)(\\?[^\\s-]+)?/gi,url:/(https?:\\/\\/(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})/gi},input:!0,zindex:!1,modes:{inline:{pastePlainText:!0,pasteImages:!1,enterKey:!1,toolbar:!1,autoparse:!1,source:!1,showSource:!1,styles:!1,air:!1},original:{styles:!1}}},$R.lang.en={format:\"Format\",image:\"Image\",file:\"File\",link:\"Link\",bold:\"Bold\",italic:\"Italic\",deleted:\"Strikethrough\",underline:\"Underline\",superscript:\"Superscript\",subscript:\"Subscript\",\"bold-abbr\":\"B\",\"italic-abbr\":\"I\",\"deleted-abbr\":\"S\",\"underline-abbr\":\"U\",\"superscript-abbr\":\"Sup\",\"subscript-abbr\":\"Sub\",lists:\"Lists\",\"link-insert\":\"Insert Link\",\"link-edit\":\"Edit Link\",\"link-in-new-tab\":\"Open link in new tab\",unlink:\"Unlink\",cancel:\"Cancel\",close:\"Close\",insert:\"Insert\",save:\"Save\",delete:\"Delete\",text:\"Text\",edit:\"Edit\",title:\"Title\",paragraph:\"Normal text\",quote:\"Quote\",code:\"Code\",heading1:\"Heading 1\",heading2:\"Heading 2\",heading3:\"Heading 3\",heading4:\"Heading 4\",heading5:\"Heading 5\",heading6:\"Heading 6\",filename:\"Name\",optional:\"optional\",unorderedlist:\"Unordered List\",orderedlist:\"Ordered List\",outdent:\"Outdent\",indent:\"Indent\",horizontalrule:\"Line\",upload:\"Upload\",\"upload-label\":\"Drop files here or click to upload\",\"accessibility-help-label\":\"Rich text editor\",caption:\"Caption\",bulletslist:\"Bullets\",numberslist:\"Numbers\",\"image-position\":\"Position\",none:\"None\",left:\"Left\",right:\"Right\",center:\"Center\",undo:\"Undo\",redo:\"Redo\"},$R.buttons={html:{title:\"HTML\",icon:!0,api:\"module.source.toggle\"},undo:{title:\"## undo ##\",icon:!0,api:\"module.buffer.undo\"},redo:{title:\"## redo ##\",icon:!0,api:\"module.buffer.redo\"},format:{title:\"## format ##\",icon:!0,dropdown:{p:{title:\"## paragraph ##\",api:\"module.block.format\",args:{tag:\"p\"}},blockquote:{title:\"## quote ##\",api:\"module.block.format\",args:{tag:\"blockquote\"}},pre:{title:\"## code ##\",api:\"module.block.format\",args:{tag:\"pre\"}},h1:{title:\"## heading1 ##\",api:\"module.block.format\",args:{tag:\"h1\"}},h2:{title:\"## heading2 ##\",api:\"module.block.format\",args:{tag:\"h2\"}},h3:{title:\"## heading3 ##\",api:\"module.block.format\",args:{tag:\"h3\"}},h4:{title:\"## heading4 ##\",api:\"module.block.format\",args:{tag:\"h4\"}},h5:{title:\"## heading5 ##\",api:\"module.block.format\",args:{tag:\"h5\"}},h6:{title:\"## heading6 ##\",api:\"module.block.format\",args:{tag:\"h6\"}}}},bold:{title:\"## bold-abbr ##\",icon:!0,tooltip:\"## bold ##\",api:\"module.inline.format\",args:{tag:\"b\"}},italic:{title:\"## italic-abbr ##\",icon:!0,tooltip:\"## italic ##\",api:\"module.inline.format\",args:{tag:\"i\"}},deleted:{title:\"## deleted-abbr ##\",icon:!0,tooltip:\"## deleted ##\",api:\"module.inline.format\",args:{tag:\"del\"}},underline:{title:\"## underline-abbr ##\",icon:!0,tooltip:\"## underline ##\",api:\"module.inline.format\",args:{tag:\"u\"}},sup:{title:\"## superscript-abbr ##\",icon:!0,tooltip:\"## superscript ##\",api:\"module.inline.format\",args:{tag:\"sup\"}},sub:{title:\"## subscript-abbr ##\",icon:!0,tooltip:\"## subscript ##\",api:\"module.inline.format\",args:{tag:\"sub\"}},lists:{title:\"## lists ##\",icon:!0,observe:\"list\",dropdown:{observe:\"list\",unorderedlist:{title:\"&bull; ## unorderedlist ##\",api:\"module.list.toggle\",args:\"ul\"},orderedlist:{title:\"1. ## orderedlist ##\",api:\"module.list.toggle\",args:\"ol\"},outdent:{title:\"< ## outdent ##\",api:\"module.list.outdent\"},indent:{title:\"> ## indent ##\",api:\"module.list.indent\"}}},ul:{title:\"&bull; ## bulletslist ##\",icon:!0,api:\"module.list.toggle\",observe:\"list\",args:\"ul\"},ol:{title:\"1. ## numberslist ##\",icon:!0,api:\"module.list.toggle\",observe:\"list\",args:\"ol\"},outdent:{title:\"## outdent ##\",icon:!0,api:\"module.list.outdent\",observe:\"list\"},indent:{title:\"## indent ##\",icon:!0,api:\"module.list.indent\",observe:\"list\"},image:{title:\"## image ##\",icon:!0,api:\"module.image.open\"},file:{title:\"## file ##\",icon:!0,api:\"module.file.open\"},link:{title:\"## link ##\",icon:!0,observe:\"link\",dropdown:{observe:\"link\",link:{title:\"## link-insert ##\",api:\"module.link.open\"},unlink:{title:\"## unlink ##\",api:\"module.link.unlink\"}}},line:{title:\"## horizontalrule ##\",icon:!0,api:\"module.line.insert\"}};var App=function(t,e,i){this.module={},this.plugin={},this.instances={},this.started=!1,this.stopped=!1,this.uuid=i,this.rootElement=t,this.rootOpts=e,this.dragInside=!1,this.dragComponentInside=!1,this.keycodes=$R.keycodes,this.namespace=\"redactor\",this.$win=$R.dom(window),this.$doc=$R.dom(document),this.$body=$R.dom(\"body\"),this.editorReadOnly=!1,this.opts=$R.create(\"service.options\",e,t),this.lang=$R.create(\"service.lang\",this),this.buildServices(),this.buildModules(),this.buildPlugins(),this.start()};App.prototype={start:function(){this.stopped=!1,this.broadcast(\"start\"),this.broadcast(\"startcode\"),this.opts.clickToEdit?this.broadcast(\"startclicktoedit\"):(this.broadcast(\"enable\"),this.opts.showSource&&this.broadcast(\"startcodeshow\"),this.broadcast(\"enablefocus\")),this.broadcast(\"started\"),this.started=!0},stop:function(){this.started=!1,this.stopped=!0,this.broadcast(\"stop\"),this.broadcast(\"disable\"),this.broadcast(\"stopped\")},isStarted:function(){return this.started},isStopped:function(){return this.stopped},buildServices:function(){var t=[\"options\",\"lang\"],e=[\"uuid\",\"keycodes\",\"opts\",\"lang\",\"$win\",\"$doc\",\"$body\"],i=[];for(var n in $R.services)-1===t.indexOf(n)&&(this[n]=$R.create(\"service.\"+n,this),i.push(n),e.push(n));for(var o=0;o<i.length;o++)for(var s=i[o],r=0;r<e.length;r++){var a=e[r];s!==a&&(this[s][a]=this[a])}},buildModules:function(){for(var t in $R.modules)this.module[t]=$R.create(\"module.\"+t,this),this.instances[t]=this.module[t]},buildPlugins:function(){for(var t=this.opts.plugins,e=0;e<t.length;e++){var i=t[e];void 0!==$R.plugins[i]&&(this.plugin[i]=$R.create(\"plugin.\"+i,this),this.instances[i]=this.plugin[i])}},isDragInside:function(){return this.dragInside},setDragInside:function(t){this.dragInside=t},isDragComponentInside:function(){return this.dragComponentInside},setDragComponentInside:function(t){this.dragComponentInside=t},getDragComponentInside:function(){return this.dragComponentInside},isReadOnly:function(){return this.editorReadOnly},enableReadOnly:function(){this.editorReadOnly=!0,this.broadcast(\"enablereadonly\"),this.component.clearActive(),this.toolbar.disableButtons()},disableReadOnly:function(){this.editorReadOnly=!1,this.broadcast(\"disablereadonly\"),this.toolbar.enableButtons()},callMessageHandler:function(t,e,i){var n=e.split(\".\");if(1===n.length)\"function\"==typeof t[\"on\"+e]&&t[\"on\"+e].apply(t,i);else{n[0]=\"on\"+n[0];var o=this.utils.checkProperty(t,n);\"function\"==typeof o&&o.apply(t,i)}},broadcast:function(t){var e=[].slice.call(arguments,1);for(var i in this.instances)this.callMessageHandler(this.instances[i],t,e);return this.callback.trigger(t,e)},on:function(t,e){this.callback.add(t,e)},off:function(t,e){this.callback.remove(t,e)},api:function(t){if((this.isStarted()||\"start\"===t)&&(!this.isReadOnly()||\"disableReadOnly\"===t)){this.broadcast(\"state\");var e=[].slice.call(arguments,1),i=t.split(\".\"),n=1===i.length,o=\"on\"===i[0]||\"off\"===i[0],s=!o&&2===i.length,r=\"plugin\"===i[0],a=\"module\"===i[0];if(n){if(\"function\"==typeof this[i[0]])return this.callInstanceMethod(this,i[0],e)}else{if(o)return\"on\"===i[0]?this.on(i[1],e[0]):this.off(i[1],e[0]||void 0);if(s){if(this.isInstanceExists(this,i[0]))return this.callInstanceMethod(this[i[0]],i[1],e);$R.error(new Error('Service \"'+i[0]+'\" not found'))}else if(r){if(this.isInstanceExists(this.plugin,i[1]))return this.callInstanceMethod(this.plugin[i[1]],i[2],e);$R.error(new Error('Plugin \"'+i[1]+'\" not found'))}else if(a){if(this.isInstanceExists(this.module,i[1]))return this.callInstanceMethod(this.module[i[1]],i[2],e);$R.error(new Error('Module \"'+i[1]+'\" not found'))}}}},isInstanceExists:function(t,e){return void 0!==t[e]},callInstanceMethod:function(t,e,i){if(\"function\"==typeof t[e])return t[e].apply(t,i)}},$R.add(\"mixin\",\"formatter\",{buildArgs:function(t){this.args={class:t.class||!1,style:t.style||!1,attr:t.attr||!1},this.args.class||this.args.style||this.args.attr||(this.args=!1)},applyArgs:function(t,e){return t=this.args?this[this.type](this.args,!1,t,e):this._clearAll(t,e)},clearClass:function(t,e){this.selection.save();var i=e?$R.dom(e):this.getElements(t,!0);return i.removeAttr(\"class\"),e=this._unwrapSpanWithoutAttr(i.getAll()),this.selection.restore(),e},clearStyle:function(t,e){this.selection.save();var i=e?$R.dom(e):this.getElements(t,!0);return i.removeAttr(\"style\"),e=this._unwrapSpanWithoutAttr(i.getAll()),this.selection.restore(),e},clearAttr:function(t,e){this.selection.save();var i=e?$R.dom(e):this.getElements(t,!0);return this._removeAllAttr(i),e=this._unwrapSpanWithoutAttr(i.getAll()),this.selection.restore(),e},set:function(t,e,i,n){!1!==n&&this.selection.save();var o=i?$R.dom(i):this.getElements(e);return t.class&&(o.removeAttr(\"class\"),o.addClass(t.class)),t.style&&(o.removeAttr(\"style\"),o.css(t.style),o.each(function(t){var e=$R.dom(t);e.attr(\"data-redactor-style-cache\",e.attr(\"style\"))})),t.attr&&(this._removeAllAttr(o),o.attr(t.attr)),!1!==n&&this.selection.restore(),o.getAll()},toggle:function(t,e,i,n){!1!==n&&this.selection.save();var o=i?$R.dom(i):this.getElements(e);t.class&&(o.toggleClass(t.class),o.each(function(t){\"\"===t.className&&t.removeAttribute(\"class\")}));var s;return t.style&&(s=t.style,o.each(function(t){var e=$R.dom(t);for(var i in s){var n=s[i],o=e.css(i);o=this.utils.isRgb(o)?this.utils.rgb2hex(o):o.replace(/\"/g,\"\"),n=this.utils.isRgb(n)?this.utils.rgb2hex(n):n.replace(/\"/g,\"\"),o=this.utils.hex2long(o),n=this.utils.hex2long(n);(\"string\"==typeof n?n.toLowerCase():n)===(\"string\"==typeof o?o.toLowerCase():o)?e.css(i,\"\"):e.css(i,n)}this._convertStyleQuotes(e),this.utils.removeEmptyAttr(t,\"style\")?e.removeAttr(\"data-redactor-style-cache\"):e.attr(\"data-redactor-style-cache\",e.attr(\"style\"))}.bind(this))),t.attr&&(s=t.attr,o.each(function(t){var e=$R.dom(t);for(var i in s)e.attr(i)?e.removeAttr(i):e.attr(i,s[i])})),!1!==n&&this.selection.restore(),o.getAll()},add:function(t,e,i,n){!1!==n&&this.selection.save();var o=i?$R.dom(i):this.getElements(e);if(t.class&&o.addClass(t.class),t.style){var s=t.style;o.each(function(t){var e=$R.dom(t);e.css(s),e.attr(\"data-redactor-style-cache\",e.attr(\"style\")),this._convertStyleQuotes(e)}.bind(this))}return t.attr&&o.attr(t.attr),!1!==n&&this.selection.restore(),o.getAll()},remove:function(t,e,i,n){!1!==n&&this.selection.save();var o=i?$R.dom(i):this.getElements(e);if(t.class&&(o.removeClass(t.class),o.each(function(t){\"\"===t.className&&t.removeAttribute(\"class\")})),t.style){var s=t.style;o.each(function(t){var e=$R.dom(t);e.css(s,\"\"),this.utils.removeEmptyAttr(t,\"style\")?e.removeAttr(\"data-redactor-style-cache\"):e.attr(\"data-redactor-style-cache\",e.attr(\"style\"))}.bind(this))}return t.attr&&o.removeAttr(t.attr),i=this._unwrapSpanWithoutAttr(o.getAll()),!1!==n&&this.selection.restore(),i},_removeAllAttr:function(t){t.each(function(t){for(var e=t.attributes.length;e-- >0;){var i=t.attributes[e],n=i.name;\"style\"!==n&&\"class\"!==n&&t.removeAttributeNode(i)}})},_convertStyleQuotes:function(t){var e=t.attr(\"style\");e&&t.attr(\"style\",e.replace(/\"/g,\"'\"))},_clearAll:function(t,e){!1!==e&&this.selection.save();for(var i=0;i<t.length;i++)for(var n=t[i];n.attributes.length>0;)n.removeAttribute(n.attributes[0].name);return t=this._unwrapSpanWithoutAttr(t),!1!==e&&this.selection.restore(),t},_unwrapSpanWithoutAttr:function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n.attributes.length<=0&&3!==n.nodeType&&\"SPAN\"===n.tagName?$R.dom(n).unwrap():e.push(n)}return e}}),$R.add(\"mixin\",\"dom\",$R.Dom.prototype),$R.add(\"mixin\",\"component\",{get cmnt(){return!0}}),$R.add(\"service\",\"options\",{init:function(t,e){var i=$R.dom(e),n=$R.extend({},$R.opts,e?i.data():{},$R.options);return n=$R.extend(!0,n,t)}}),$R.add(\"service\",\"lang\",{init:function(t){this.app=t,this.opts=t.opts,this.vars=this._build(this.opts.lang)},rebuild:function(t){this.opts.lang=t,this.vars=this._build(t)},extend:function(t){this.vars=$R.extend(this.vars,t)},parse:function(t){if(void 0===t)return\"\";var e=t.match(/## (.*?) ##/g);if(e)for(var i=0;i<e.length;i++){var n=e[i].replace(/^##\\s/g,\"\").replace(/\\s##$/g,\"\");t=t.replace(e[i],this.get(n))}return t},get:function(t){var e=\"\";return void 0!==this.vars[t]?e=this.vars[t]:\"en\"!==this.opts.lang&&void 0!==$R.lang.en[t]&&(e=$R.lang.en[t]),e},_build:function(t){var e=$R.lang.en;return\"en\"!==t&&(e=void 0!==$R.lang[t]?$R.lang[t]:e),e}}),$R.add(\"service\",\"callback\",{init:function(t){this.app=t,this.opts=t.opts,this.callbacks={},this.opts.callbacks&&this._set(this.opts.callbacks,\"\")},stop:function(){this.callbacks={}},add:function(t,e){this.callbacks[t]||(this.callbacks[t]=[]),this.callbacks[t].push(e)},remove:function(t,e){if(void 0===e)delete this.callbacks[t];else{for(var i=0;i<this.callbacks[t].length;i++)this.callbacks[t].splice(i,1);0===Object.keys(this.callbacks[t]).length&&delete this.callbacks[t]}},trigger:function(t,e){var i=this._loop(t,e,this.callbacks);return void 0===i&&e&&!1!==e[0]?e[0]:i},_set:function(t,e){for(var i in t){var n=\"\"===e?i:e+\".\"+i;\"object\"==typeof t[i]?this._set(t[i],n):(this.callbacks[n]=[],this.callbacks[n].push(t[i]))}},_loop:function(t,e,i){var n;for(var o in i)if(t===o)for(var s=0;s<i[o].length;s++)n=i[o][s].apply(this.app,e);return n}}),$R.add(\"service\",\"animate\",{init:function(t){this.animationOpt=t.opts.animation},start:function(t,e,i,n){var o={duration:!1,iterate:!1,delay:!1,timing:!1,prefix:\"redactor-\"};return o=\"function\"==typeof i?o:$R.extend(o,i),n=\"function\"==typeof i?i:n,new $R.AnimatePlay(t,e,o,n,this.animationOpt)},stop:function(t){this.$el=$R.dom(t),this.$el.removeClass(\"redactor-animated\");var e=this.$el.attr(\"redactor-animate-effect\");this.$el.removeClass(e),this.$el.removeAttr(\"redactor-animate-effect\");var i=this.$el.attr(\"redactor-animate-hide\");i&&this.$el.addClass(i).removeAttr(\"redactor-animate-hide\"),this.$el.off(\"animationend webkitAnimationEnd\")}}),$R.AnimatePlay=function(t,e,i,n,o){return this.hidableEffects=[\"fadeOut\",\"flipOut\",\"slideUp\",\"zoomOut\",\"slideOutUp\",\"slideOutRight\",\"slideOutLeft\"],this.prefixes=[\"\",\"-webkit-\"],this.$el=$R.dom(t),this.$body=$R.dom(\"body\"),this.callback=n,this.animation=o?e:this.buildAnimationOff(e),this.defaults=i,\"slideUp\"===this.animation&&this.$el.height(this.$el.height()),this.isInanimate()?this.inanimate():this.animate()},$R.AnimatePlay.prototype={buildAnimationOff:function(t){return this.isHidable(t)?\"hide\":\"show\"},buildHideClass:function(){return\"redactor-animate-hide\"},isInanimate:function(){return\"show\"===this.animation||\"hide\"===this.animation},isAnimated:function(){return this.$el.hasClass(\"redactor-animated\")},isHidable:function(t){return-1!==this.hidableEffects.indexOf(t)},inanimate:function(){this.defaults.timing=\"linear\";var t;return\"show\"===this.animation?(t=this.buildHideClass(),this.$el.attr(\"redactor-animate-hide\",t),this.$el.removeClass(t)):(t=this.$el.attr(\"redactor-animate-hide\"),this.$el.addClass(t).removeAttr(\"redactor-animate-hide\")),\"function\"==typeof this.callback&&this.callback(this),this},animate:function(){var t=this.defaults.delay?this.defaults.delay:0;return setTimeout(function(){if(this.$body.addClass(\"no-scroll-x\"),this.$el.addClass(\"redactor-animated\"),!this.$el.attr(\"redactor-animate-hide\")){var t=this.buildHideClass();this.$el.attr(\"redactor-animate-hide\",t),this.$el.removeClass(t)}this.$el.addClass(this.defaults.prefix+this.animation),this.$el.attr(\"redactor-animate-effect\",this.defaults.prefix+this.animation),this.set(this.defaults.duration+\"s\",this.defaults.iterate,this.defaults.timing),this.complete()}.bind(this),1e3*t),this},set:function(t,e,i){for(var n=this.prefixes.length;n--;)!1===t&&\"\"!==t||this.$el.css(this.prefixes[n]+\"animation-duration\",t),!1===e&&\"\"!==e||this.$el.css(this.prefixes[n]+\"animation-iteration-count\",e),!1===i&&\"\"!==i||this.$el.css(this.prefixes[n]+\"animation-timing-function\",i)},clean:function(){this.$body.removeClass(\"no-scroll-x\"),this.$el.removeClass(\"redactor-animated\"),this.$el.removeClass(this.defaults.prefix+this.animation),this.$el.removeAttr(\"redactor-animate-effect\"),this.set(\"\",\"\",\"\")},complete:function(){this.$el.one(\"animationend webkitAnimationEnd\",function(){if(this.$el.hasClass(this.defaults.prefix+this.animation)&&this.clean(),this.isHidable(this.animation)){var t=this.$el.attr(\"redactor-animate-hide\");this.$el.addClass(t).removeAttr(\"redactor-animate-hide\")}\"slideUp\"===this.animation&&this.$el.height(\"\"),\"function\"==typeof this.callback&&this.callback(this.$el)}.bind(this))}},$R.add(\"service\",\"caret\",{init:function(t){this.app=t},setStart:function(t){this._setCaret(\"Start\",t)},setEnd:function(t){this._setCaret(\"End\",t)},setBefore:function(t){this._setCaret(\"Before\",t)},setAfter:function(t){this._setCaret(\"After\",t)},isStart:function(t){return this._isStartOrEnd(t,\"First\")},isEnd:function(t){return this._isStartOrEnd(t,\"Last\")},setAtEnd:function(t){var e=this.inspector.parse(t),i=e.getTag(),n=document.createRange();if(this._isInPage(t)){if(\"a\"===i){var o=this.utils.createInvisibleChar();t.appendChild(o),n.setStartBefore(o),n.collapse(!0)}else n.selectNodeContents(t),n.collapse(!1);this.selection.setRange(n)}},setAtStart:function(t){var e=document.createRange(),i=this.inspector.parse(t);if(this._isInPage(t)){if(e.setStart(t,0),e.collapse(!0),i.isInline()||this.utils.isEmpty(t)){var n=this.utils.createInvisibleChar();e.insertNode(n),e.selectNodeContents(n),e.collapse(!1)}this.selection.setRange(e)}},setAtBefore:function(t){var e=this.inspector.parse(t),i=document.createRange();if(this._isInPage(t)){if(i.setStartBefore(t),i.collapse(!0),e.isInline()){var n=this.utils.createInvisibleChar();t.parentNode.insertBefore(n,t),i.selectNodeContents(n),i.collapse(!1)}this.selection.setRange(i)}},setAtAfter:function(t){var e=document.createRange();if(this._isInPage(t)){e.setStartAfter(t),e.collapse(!0);var i=this.utils.createInvisibleChar();e.insertNode(i),e.selectNodeContents(i),e.collapse(!1),this.selection.setRange(e)}},setAtPrev:function(t){var e=t.previousSibling;e&&(e=3===e.nodeType&&this._isEmptyTextNode(e)?e.previousElementSibling:e)&&this.setEnd(e)},setAtNext:function(t){var e=t.nextSibling;e&&(e=3===e.nodeType&&this._isEmptyTextNode(e)?e.nextElementSibling:e)&&this.setStart(e)},_setCaret:function(t,e){var i=this.inspector.parse(e),n=i.getNode();n&&(this.component.clearActive(),this[\"_set\"+t](n,i,i.getTag()))},_setStart:function(t,e,i){if(e.isText())return this.editor.focus(),this.setAtStart(t);if(\"ul\"===i||\"ol\"===i){t=e.findFirstNode(\"li\");var n=this.utils.getFirstElement(t),o=this.inspector.parse(n);if(n&&o.isComponent())return this.setStart(o.getComponent())}else if(\"dl\"===i)t=e.findFirstNode(\"dt\");else{if(\"br\"===i||\"hr\"===i)return this.setBefore(t);if(\"td\"===i||\"th\"===i){var s=e.getFirstElement(t);if(s)return this.setStart(s)}else{if(\"table\"===i||\"tr\"===i)return this.setStart(e.findFirstNode(\"th, td\"));if(e.isComponentType(\"code\")&&!e.isFigcaption()){var r=e.findLastNode(\"pre, code\");return this.editor.focus(),this.setAtStart(r)}if(\"figure\"===i&&e.isComponentType(\"table\")){var a=e.getTable(),c=this.inspector.parse(a);return this.setStart(c.findFirstNode(\"th, td\"))}if(!e.isComponentType(\"table\")&&e.isComponent()&&!e.isFigcaption())return this.component.setActive(t)}}this.editor.focus(),this._setInline(t,\"Start\")||this.setAtStart(t)},_setEnd:function(t,e,i){if(e.isText())return this.editor.focus(),this.setAtEnd(t);if(\"ul\"===i||\"ol\"===i){t=e.findLastNode(\"li\");var n=this.utils.getLastElement(t),o=this.inspector.parse(n);if(n&&o.isComponent())return this.setEnd(o.getComponent())}else if(\"dl\"===i)t=e.findLastNode(\"dd\");else{if(\"br\"===i||\"hr\"===i)return this.setAfter(t);if(\"td\"===i||\"th\"===i){var s=e.getLastElement();if(s)return this.setEnd(s)}else{if(\"table\"===i||\"tr\"===i)return this.setEnd(e.findLastNode(\"th, td\"));if(e.isComponentType(\"code\")&&!e.isFigcaption()){var r=e.findLastNode(\"pre, code\");return this.editor.focus(),this.setAtEnd(r)}if(\"figure\"===i&&e.isComponentType(\"table\")){var a=e.getTable(),c=this.inspector.parse(a);return this.setEnd(c.findLastNode(\"th, td\"))}if(!e.isComponentType(\"table\")&&e.isComponent()&&!e.isFigcaption())return this.component.setActive(t)}}if(this.editor.focus(),!this._setInline(t,\"End\")){if(this.utils.isEmpty(t))return this.setStart(t);this.setAtEnd(t)}},_setBefore:function(t,e,i){return 3===t.nodeType?this.setAtBefore(t):e.isInline()?this.setAtBefore(t):e.isFirstTableCell()?this.setAtPrev(e.getComponent()):\"td\"===i||\"th\"===i?this.setAtPrev(t):e.isFirstListItem()?this.setAtPrev(e.getList()):e.isFigcaption()?this.setStart(e.getComponent()):!e.isComponentType(\"table\")&&e.isComponent()?this.setAtPrev(e.getComponent()):e.isBlock()?this.setAtPrev(t):(this.editor.focus(),void this.setAtBefore(t))},_setAfter:function(t,e,i){return 3===t.nodeType?this.setAtAfter(t):e.isInline()?this.setAtAfter(t):e.isLastTableCell()?this.setAtNext(e.getComponent()):\"td\"===i||\"th\"===i?this.setAtNext(t):e.isFirstListItem()?this.setAtNext(e.getList()):!e.isComponentType(\"table\")&&e.isComponent()?this.setAtNext(e.getComponent()):e.isBlock()?this.setAtNext(t):(this.editor.focus(),void this.setAtAfter(t))},_setInline:function(t,e){var i=this._hasInlineChild(t,\"Start\"===e?\"first\":\"last\");if(i)return\"Start\"===e?this.setStart(i):this.setEnd(i),!0},_isStartOrEnd:function(t,e){var i=this.utils.getNode(t);if(!i)return!1;var n=this.inspector.parse(i);if((i=this._getStartEndNode(i,n,e))&&3!==i.nodeType&&\"LI\"!==i.tagName){var o=3===i.nodeType?i.textContent:i.innerHTML;if(\"\"===(o=this.utils.trimSpaces(o)))return!0}if(!n.isFigcaption()&&n.isComponent()&&!n.isComponentEditable())return!0;var s=this.offset.get(i,!0);return!!s&&(\"First\"===e?0===s.start:s.end===this.offset.size(i,!0))},_isInPage:function(t){return!(!t||!t.nodeType)&&(t!==document.body&&document.body.contains(t))},_hasInlineChild:function(t,e){var i=this.inspector.parse(t),n=\"first\"===e?i.getFirstNode():i.getLastNode(),o=$R.dom(n);if(n&&3!==n.nodeType&&this.inspector.isInlineTag(n.tagName)&&!o.hasClass(\"redactor-component\")&&!o.hasClass(\"non-editable\"))return n},_isEmptyTextNode:function(t){var e=t.textContent.trim().replace(/\\n/,\"\");return\"\"===(e=this.utils.removeInvisibleChars(e))},_getStartEndNode:function(t,e,i){return e.isFigcaption()?t=e.getFigcaption():e.isTable()?t=e[\"find\"+i+\"Node\"](\"th, td\"):e.isList()?t=e[\"find\"+i+\"Node\"](\"li\"):e.isComponentType(\"code\")&&(t=e.findLastNode(\"pre, code\")),t}}),$R.add(\"service\",\"selection\",{init:function(t){this.app=t},is:function(){var t=this.get();if(t){var e=t.anchorNode,i=this.inspector.parse(e);return i.isInEditor()||i.isEditor()}return!1},isCollapsed:function(){var t=this.get(),e=this.getRange();return!(!t||!t.isCollapsed)||!(!e||0!==e.toString().length)},isBackwards:function(){var t=!1,e=this.get();if(e&&!e.isCollapsed){var i=document.createRange();i.setStart(e.anchorNode,e.anchorOffset),i.setEnd(e.focusNode,e.focusOffset),t=i.collapsed,i.detach()}return t},isIn:function(t){var e=$R.dom(t).get(),i=this.getCurrent();return!(!i||!e)&&e.contains(i)},isText:function(){var t=this.get();if(t){var e=t.anchorNode,i=this.getBlock(e),n=this.getBlocks();if(i&&this.inspector.isTableCellTag(i.tagName)||!1===i&&0===n.length)return!0}return!1},isAll:function(t){var e=this.utils.getNode(t);if(!e)return!1;var i=this.editor.isEditor(e),n=this.inspector.parse(e);if(!n.isFigcaption()&&this.component.isNonEditable(e)&&this.component.isActive(e))return!0;if(i){var o=this.editor.getElement(),s=o.html().replace(/<p><\\/p>$/i,\"\");if(this.getHtml(!1).length!==s.length)return!1}if(i&&this.editor.isEmpty()||this.isCollapsed())return!1;var r=this.offset.get(e,!0),a=this.offset.size(e,!0);return!i&&n.isComponentType(\"code\")&&(a=this.getText().trim().length),!(!r||0!==r.start||r.end!==a)},hasNonEditable:function(){var t=this.getHtml(),e=$R.dom(\"<div>\").html(t);return!this.isCollapsed()&&0!==e.find(\".non-editable\").length},setRange:function(t){var e=window.getSelection();e.removeAllRanges(),e.addRange(t)},setAll:function(t){var e=this.utils.getNode(t);if(e){var i=this.inspector.parse(e);if(this.component.clearActive(),this.editor.focus(),this.editor.saveScroll(),this.editor.disableNonEditables(),e&&\"TABLE\"===e.tagName){var n=i.findFirstNode(\"td, th\"),o=i.findLastNode(\"td, th\");$R.dom(n).prepend(this.marker.build(\"start\")),$R.dom(o).append(this.marker.build(\"end\")),this.restoreMarkers()}else if(!i.isFigcaption()&&this.component.isNonEditable(e))this.component.setActive(e);else{i.isComponentType(\"code\")&&(e=i.getComponentCodeElement(),e.focus());var s=document.createRange();s.selectNodeContents(e),this.setRange(s)}this.editor.enableNonEditables(),this.editor.restoreScroll()}},get:function(){var t=window.getSelection();return t.rangeCount>0?t:null},getRange:function(){var t=this.get();return t&&t.getRangeAt(0)?t.getRangeAt(0):null},getTextBeforeCaret:function(t){t=void 0===t?1:t;var e=this.editor.getElement().get(),i=this.getRange(),n=!1;return i&&(i=i.cloneRange(),i.collapse(!0),i.setStart(e,0),n=i.toString().slice(-t)),n},getTextAfterCaret:function(t){t=void 0===t?1:t;var e=this.editor.getElement().get(),i=this.getRange(),n=!1;if(i){var o=i.cloneRange();o.selectNodeContents(e),o.setStart(i.endContainer,i.endOffset),n=o.toString().slice(0,t)}return n},getPosition:function(){var t=this.getRange(),e={top:0,left:0,width:0,height:0};if(window.getSelection&&t.getBoundingClientRect){t=t.cloneRange();var i=t.startOffset-1;t.setStart(t.startContainer,i<0?0:i);var n=t.getBoundingClientRect();e={top:n.top,left:n.left,width:n.right-n.left,height:n.bottom-n.top}}return e},getCurrent:function(){var t=!1,e=this.get(),i=this.component.getActive();if(i)t=i;else if(e&&this.is()){var n=this.inspector.parse(e.anchorNode);t=!n.isEditor()&&e.anchorNode}return t},getParent:function(){var t=!1,e=this.getCurrent();if(e){var i=e.parentNode;t=!this.inspector.parse(i).isEditor()&&i}return t},getElement:function(t){for(var e=t||this.getCurrent();e;){var i=this.inspector.parse(e);if(i.isElement()&&i.isInEditor())return e;e=e.parentNode}return!1},getInline:function(t){for(var e=t||this.getCurrent(),i=!1;e;)this._isInlineNode(e)&&(i=e),e=e.parentNode;return i},getInlineFirst:function(t){for(var e=t||this.getCurrent();e;){if(this._isInlineNode(e))return e;e=e.parentNode}return!1},getInlineAll:function(t){for(var e=t||this.getCurrent(),i=[];e;)this._isInlineNode(e)&&i.push(e),e=e.parentNode;return i},getBlock:function(t){for(var e=t||this.getCurrent();e;){var i=this.inspector.parse(e);if(this.inspector.isBlockTag(e.tagName)&&i.isInEditor(e))return e;e=e.parentNode}return!1},getInlinesAllSelected:function(t){if(this.isAll())return[];var e=this.getInlines({all:!0}),i=this.getNodes({textnodes:!0,inline:!1}),n=this.getText().replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),o=[];if(0!==i.length)return o\n;if(\"\"===n)o=e;else if(e.length>1)for(var s=0;s<e.length;s++)this._isTextSelected(e[s],n)&&o.push(e[s]);else 1===e.length&&this._isTextSelected(e[0],n)&&(o=e);return o=t&&t.tags?this._filterNodesByTags(o,t.tags):o},getInlines:function(t){for(var e=this.getNodes(),i=[],n=0;n<e.length;n++){var o;if(t&&t.all)for(o=e[n];o;)this._isInlineNode(o)&&!this._isInNodesArray(i,o)&&i.push(o),o=o.parentNode;else(o=this.getInline(e[n]))&&!this._isInNodesArray(i,o)&&i.push(o)}return i=t&&t.tags?this._filterNodesByTags(i,t.tags):i,i=t&&t.inside?this._filterInlinesInside(i,t):i},getBlocks:function(t){var e=this.getNodes(),i=this.getBlock();e=0===e.length&&i?[i]:e;for(var n=[],o=0;o<e.length;o++){var s=this.getBlock(e[o]);s&&!this._isInNodesArray(n,s)&&n.push(s)}return n=t&&t.tags?this._filterNodesByTags(n,t.tags):n,n=t&&t.first?this._filterBlocksFirst(n,t):n},getElements:function(t){var e=this.getNodes({textnodes:!1}),i=this.getBlock();e=0===e.length&&i?[i]:e;for(var n=[],o=0;o<e.length;o++)this._isInNodesArray(n,e[o])||n.push(e[o]);return n=t&&t.tags?this._filterNodesByTags(n,t.tags):n},getNodes:function(t){var e=[],i=this.component.getActive();if(i)e=this._getNodesComponent(i);else if(this.isCollapsed()){var n=this.getCurrent();e=n?[n]:[]}else this.is()&&!i&&(e=this._getRangeSelectedNodes());return e=this._filterServicesNodes(e),e=this._filterEditor(e),e=t&&t.tags?this._filterNodesByTags(e,t.tags):e,e=t&&t.textnodes?this._filterNodesTexts(e,t):e,e=t&&!t.textnodes?this._filterNodesElements(e):e},getText:function(){var t=this.get();return t?this.utils.removeInvisibleChars(t.toString()):\"\"},getHtml:function(t){var e=\"\",i=this.get();if(i){for(var n=document.createElement(\"div\"),o=i.rangeCount,s=0;s<o;++s)n.appendChild(i.getRangeAt(s).cloneContents());e=n.innerHTML,e=!1!==t?this.cleaner.output(e):e,e=e.replace(/<p><\\/p>$/i,\"\")}return e},clear:function(){this.component.clearActive(),this.get().removeAllRanges()},collapseToStart:function(){var t=this.get();t&&!t.isCollapsed&&t.collapseToStart()},collapseToEnd:function(){var t=this.get();t&&!t.isCollapsed&&t.collapseToEnd()},saveActiveComponent:function(){var t=this.component.getActive();return!!t&&(this.savedComponent=t,!0)},restoreActiveComponent:function(){return!!this.savedComponent&&(this.component.setActive(this.savedComponent),!0)},save:function(){this._clearSaved();var t=this.getElement();!t||\"TD\"!==t.tagName&&\"TH\"!==t.tagName||\"\"!==t.innerHTML?this.saveActiveComponent()||(this.saved=this.offset.get()):this.savedElement=t},restore:function(){(this.saved||this.savedComponent||this.savedElement)&&(this.editor.saveScroll(),this.savedElement?this.caret.setStart(this.savedElement):this.restoreActiveComponent()||this.offset.set(this.saved),this._clearSaved(),this.editor.restoreScroll())},saveMarkers:function(){this._clearSaved(),this.saveActiveComponent()||this.marker.insert()},restoreMarkers:function(){this.editor.saveScroll(),this.restoreActiveComponent()||this.marker.restore(),this._clearSaved(),this.editor.restoreScroll()},_getNextNode:function(t){if(t.hasChildNodes())return t.firstChild;for(;t&&!t.nextSibling;)t=t.parentNode;return t?t.nextSibling:null},_getNodesComponent:function(t){var e=this.getCurrent(),i=this.inspector.parse(e);return i.isFigcaption()?[i.getFigcaption()]:[t]},_getRangeSelectedNodes:function(){var t=[],e=this.getRange(),i=e.startContainer,n=e.startContainer,o=e.endContainer,s=this.editor.getElement();if(n===s.get()&&this.isAll())t=this.utils.getChildNodes(s);else if(i==o)t=[i];else{for(;i&&i!=o;)t.push(i=this._getNextNode(i));for(i=e.startContainer;i&&i!=e.commonAncestorContainer;)t.unshift(i),i=i.parentNode}return t},_isInNodesArray:function(t,e){return-1!==t.indexOf(e)},_filterEditor:function(t){for(var e=[],i=0;i<t.length;i++){this.inspector.parse(t[i]).isInEditor()&&e.push(t[i])}return e},_filterServicesNodes:function(t){for(var e=[],i=0;i<t.length;i++){var n=$R.dom(t[i]),o=!1;t[i]&&3===t[i].nodeType&&this.utils.isEmpty(t[i])&&(o=!0),(n.hasClass(\"redactor-script-tag\")||n.hasClass(\"redactor-component-caret\")||n.hasClass(\"redactor-selection-marker\")||n.hasClass(\"non-editable\"))&&(o=!0),o||e.push(t[i])}return e},_filterNodesTexts:function(t,e){for(var i=[],n=0;n<t.length;n++)if(3===t[n].nodeType||e.keepbr&&\"BR\"===t[n].tagName){var o=this.getInline(t[n]),s=o&&e&&!1===e.inline;s||i.push(t[n])}return i},_filterNodesElements:function(t){for(var e=[],i=0;i<t.length;i++)3!==t[i].nodeType&&e.push(t[i]);return e},_filterNodesByTags:function(t,e,i){for(var n=[],o=0;o<t.length;o++)if(i&&3===t[o].nodeType)n.push(t[o]);else if(3!==t[o].nodeType){var s=t[o].tagName.toLowerCase();-1!==e.indexOf(s.toLowerCase())&&n.push(t[o])}return n},_filterBlocksFirst:function(t){for(var e=[],i=0;i<t.length;i++){var n=$R.dom(t[i]),o=n.parent().get(),s=n.parent().hasClass(\"redactor-in\"),r=o&&(\"TD\"===o.tagName||\"TH\"===o.tagName);(s||r)&&e.push(t[i])}return e},_filterInlinesInside:function(t){for(var e=[],i=0;i<t.length;i++)window.getSelection().containsNode(t[i],!0)&&e.push(t[i]);return e},_isTextSelected:function(t,e){var i=this.utils.removeInvisibleChars(t.textContent);return e===i||-1!==i.search(e)||-1!==e.search(new RegExp(\"^\"+i))||-1!==e.search(new RegExp(i+\"$\"))},_isInlineNode:function(t){var e=this.inspector.parse(t);return this.inspector.isInlineTag(t.tagName)&&e.isInEditor()},_clearSaved:function(){this.saved=!1,this.savedComponent=!1,this.savedElement=!1}}),$R.add(\"service\",\"element\",{init:function(t){this.app=t,this.rootElement=t.rootElement,this.$element={},this.type=\"inline\"},start:function(){this._build(),this._buildType()},isType:function(t){return t===this.type},getType:function(){return this.type},getElement:function(){return this.$element},_build:function(){this.$element=$R.dom(this.rootElement)},_buildType:function(){var t=this.$element.get().tagName;this.type=\"TEXTAREA\"===t?\"textarea\":this.type,this.type=\"DIV\"===t?\"div\":this.type,this.type=this.opts.inline?\"inline\":this.type}}),$R.add(\"service\",\"editor\",{init:function(t){this.app=t,this.scrolltop=!1,this.pasting=!1},start:function(){this._build()},focus:function(){this.isFocus()||this._isContenteditableFocus()||(this.saveScroll(),this.$editor.focus(),this.restoreScroll())},startFocus:function(){this.caret.setStart(this.getFirstNode())},endFocus:function(){this.caret.setEnd(this.getLastNode())},isPasting:function(){return this.pasting},enablePasting:function(){this.pasting=!0},disablePasting:function(){this.pasting=!1},saveScroll:function(){this.scrolltop=this._getScrollTarget().scrollTop()},restoreScroll:function(){!1!==this.scrolltop&&(this._getScrollTarget().scrollTop(this.scrolltop),this.scrolltop=!1)},disableNonEditables:function(){this.$noneditables=this.$editor.find(\"[contenteditable=false]\"),this.$noneditables.attr(\"contenteditable\",!0)},enableNonEditables:function(){this.$noneditables&&setTimeout(function(){this.$noneditables.attr(\"contenteditable\",!1)}.bind(this),1)},getFirstNode:function(){return this.$editor.contents()[0]},getLastNode:function(){var t=this.$editor.contents();return t[t.length-1]},isSourceMode:function(){return this.source.getElement().hasClass(\"redactor-source-open\")},isEditor:function(t){return $R.dom(t).get()===this.$editor.get()},isEmpty:function(t){return this.utils.isEmptyHtml(this.$editor.html(),!1,t)},isFocus:function(){var t=$R.dom(document.activeElement);return 0!==this.$editor.find(\".redactor-component-active\").length||0!==t.closest(\".redactor-in-\"+this.uuid).length},setEmpty:function(){this.$editor.html(this.opts.emptyHtml)},getElement:function(){return this.$editor},_build:function(){var t=this.element.getElement(),e=this.element.isType(\"textarea\")?\"<div>\":t.get();this.$editor=$R.dom(e)},_getScrollTarget:function(){return this.opts.scrollTarget?$R.dom(this.opts.scrollTarget):this.$doc},_isContenteditableFocus:function(){var t=this.selection.getBlock();return 0!==(t?$R.dom(t).closest(\"[contenteditable=true]\").not(\".redactor-in\"):[]).length}}),$R.add(\"service\",\"container\",{init:function(t){this.app=t},start:function(){this._build()},getElement:function(){return this.$container},_build:function(){var t=this.element.isType(\"inline\")?\"<span>\":\"<div>\";this.$container=$R.dom(t)}}),$R.add(\"service\",\"source\",{init:function(t){this.app=t,this.$source={},this.content=\"\"},start:function(){this._build(),this._buildName(),this._buildStartedContent()},getElement:function(){return this.$source},getCode:function(){return this.$source.val()},getName:function(){return this.$source.attr(\"name\")},getStartedContent:function(){return this.content},setCode:function(t){return this.insertion.set(t,!0,!1)},isNameGenerated:function(){return this.name},_build:function(){var t=this.element.getElement(),e=this.element.isType(\"textarea\"),i=e?t.get():\"<textarea>\";this.$source=$R.dom(i)},_buildName:function(){var t=this.element.getElement();this.name=t.attr(\"name\"),this.$source.attr(\"name\",this.name?this.name:\"content-\"+this.uuid)},_buildStartedContent:function(){var t=this.element.getElement(),e=this.element.isType(\"textarea\")?t.val():t.html();this.content=e.trim()}}),$R.add(\"service\",\"statusbar\",{init:function(t){this.app=t,this.$statusbar={},this.items=[]},start:function(){this.$statusbar=$R.dom(\"<ul>\"),this.$statusbar.attr(\"dir\",this.opts.direction)},add:function(t,e){return this.update(t,e)},update:function(t,e){var i;return void 0!==this.items[t]?i=this.items[t]:(i=$R.dom(\"<li>\"),this.$statusbar.append(i),this.items[t]=i),i.html(e)},get:function(t){return!!this.items[t]&&this.items[t]},remove:function(t){this.items[t]&&(this.items[t].remove(),delete this.items[t])},getItems:function(){return this.items},removeItems:function(){this.items={},this.$statusbar.html(\"\")},getElement:function(){return this.$statusbar}}),$R.add(\"service\",\"toolbar\",{init:function(t){this.app=t,this.buttons=[],this.dropdownOpened=!1,this.buttonsObservers={}},start:function(){this.is()&&(this.opts.activeButtons=this.opts.activeButtonsAdd?this._extendActiveButtons():this.opts.activeButtons,this.create())},stopObservers:function(){this.buttonsObservers={}},create:function(){this.$wrapper=$R.dom(\"<div>\"),this.$toolbar=$R.dom(\"<div>\")},observe:function(){if(this.is()){this.setButtonsInactive();var t,e;for(var i in this.buttonsObservers)e=this.buttonsObservers[i],t=this.getButton(i),this.app.broadcast(\"button.\"+e+\".observe\",t);var n=this.opts.activeButtons,o=this.selection.getInlinesAllSelected(),s=this.selection.getInline();this.selection.isCollapsed()&&s&&o.push(s);var r=this._inlinesToTags(o);for(var a in n)-1!==r.indexOf(a)&&(t=this.getButton(n[a]),t.setActive())}},is:function(){return!(!this.opts.toolbar||this.detector.isMobile()&&this.opts.air)},isAir:function(){return!!this.is()&&this.$toolbar.hasClass(\"redactor-air\")},isFixed:function(){return!!this.is()&&this.$toolbar.hasClass(\"redactor-toolbar-fixed\")},isContextBar:function(){return this.$body.find(\"#redactor-context-toolbar-\"+this.uuid).hasClass(\"open\")},isTarget:function(){return this.opts.toolbarFixedTarget!==document},getElement:function(){return this.$toolbar},getWrapper:function(){return this.$wrapper},getDropdown:function(){return this.dropdownOpened},getTargetElement:function(){return $R.dom(this.opts.toolbarFixedTarget)},getButton:function(t){var e=this._findButton(\".re-\"+t);return 0!==e.length&&e.dataget(\"data-button-instance\")},getButtonByIndex:function(t){var e=this.$toolbar.find(\".re-button\").eq(t);return 0!==e.length&&e.dataget(\"data-button-instance\")},getButtons:function(){var t=[];return this._findButtons().each(function(e){var i=$R.dom(e);t.push(i.dataget(\"data-button-instance\"))}),t},getButtonsKeys:function(){var t=[];return this._findButtons().each(function(e){var i=$R.dom(e);t.push(i.attr(\"data-re-name\"))}),t},addButton:function(t,e,i,n,o){i=i||\"end\";var s=this._getButtonIndex(t),r=$R.create(\"toolbar.button\",this.app,t,e);if(e.observe&&(this.opts.activeButtonsObservers[t]={observe:e.observe,button:r}),!0!==o)if(0===s)i=\"first\";else if(-1!==s){var a=this.getButtonByIndex(s-1);a&&(i=\"after\",n=a)}return this.is()&&(\"first\"===i?this.$toolbar.prepend(r):\"after\"===i?n.after(r):\"before\"===i?n.before(r):this.$toolbar.append(r)),r},addButtonFirst:function(t,e){return this.addButton(t,e,\"first\")},addButtonAfter:function(t,e,i){var n=this.getButton(t);return n?this.addButton(e,i,\"after\",n):this.addButton(e,i)},addButtonBefore:function(t,e,i){var n=this.getButton(t);return n?this.addButton(e,i,\"before\",n):this.addButton(e,i)},addButtonObserver:function(t,e){this.buttonsObservers[t]=e},setButtons:function(t){this.buttons=t},setDropdown:function(t){this.dropdownOpened=t},setButtonsInactive:function(){for(var t=this.getButtons(),e=0;e<t.length;e++)t[e].setInactive()},setButtonsActive:function(){for(var t=this.getButtons(),e=0;e<t.length;e++)t[e].setActive()},disableButtons:function(){for(var t=this.getButtons(),e=0;e<t.length;e++)t[e].disable()},enableButtons:function(){for(var t=this.getButtons(),e=0;e<t.length;e++)t[e].enable()},_getButtonIndex:function(t){var e=this.buttons.indexOf(t);return-1!==e&&e},_findButton:function(t){return this.is()?this.$toolbar.find(t):$R.dom()},_findButtons:function(){return this.is()?this.$toolbar.find(\".re-button\"):$R.dom()},_extendActiveButtons:function(){return $R.extend({},this.opts.activeButtons,this.opts.activeButtonsAdd)},_inlinesToTags:function(t){for(var e=[],i=0;i<t.length;i++)e.push(t[i].tagName.toLowerCase());return e}}),$R.add(\"class\",\"toolbar.button\",{mixins:[\"dom\"],init:function(t,e,i){this.app=t,this.opts=t.opts,this.lang=t.lang,this.$body=t.$body,this.toolbar=t.toolbar,this.detector=t.detector,this.obj=i,this.name=e,this.dropdown=!1,this.tooltip=!1,this._init()},isActive:function(){return this.hasClass(\"redactor-button-active\")},isDisabled:function(){return this.hasClass(\"redactor-button-disabled\")},hasIcon:function(){return this.obj.icon&&!this.opts.buttonsTextLabeled},setDropdown:function(t){this.obj.dropdown=t,this.obj.message=!1,this.dropdown=$R.create(\"toolbar.dropdown\",this.app,this.name,this.obj.dropdown),this.attr(\"data-dropdown\",!0)},setMessage:function(t,e){this.obj.message=t,this.obj.args=e,this.obj.dropdown=!1},setApi:function(t,e){this.obj.api=t,this.obj.args=e,this.obj.dropdown=!1},setTitle:function(t){this.obj.title=this.lang.parse(t),this.obj.tooltip=this.obj.title,this.attr({alt:this.obj.tooltip,\"aria-label\":this.obj.tooltip}),this.attr(\"data-re-icon\")||this.html(this.obj.title)},setTooltip:function(t){this.obj.tooltip=this.lang.parse(t),this.attr({alt:this.obj.tooltip,\"aria-label\":this.obj.tooltip})},setIcon:function(t){this.opts.buttonsTextLabeled||(this.obj.icon=!0,this.$icon=$R.dom(t),this.html(\"\"),this.append(this.$icon),this.attr(\"data-re-icon\",!0),this.addClass(\"re-button-icon\"),this.setTooltip(this.obj.title),this._buildTooltip())},setActive:function(){this.addClass(\"redactor-button-active\")},setInactive:function(){this.removeClass(\"redactor-button-active\")},hideTooltip:function(){this.$body.find(\".re-button-tooltip\").remove()},getDropdown:function(){return this.dropdown},disable:function(){this.addClass(\"redactor-button-disabled\")},enable:function(){this.removeClass(\"redactor-button-disabled\")},toggle:function(t){t&&t.preventDefault(),this.isDisabled()||(this.obj.dropdown?this.dropdown.toggle(t):this.obj.api?this.app.api(this.obj.api,this.obj.args,this.name):this.obj.message&&this.app.broadcast(this.obj.message,this.obj.args,this.name),this.hideTooltip())},_init:function(){this._parseTitle(),this._parseTooltip(),this._build(),this._buildCallback(),this._buildAttributes(),this._buildObserver(),this.hasIcon()?(this._buildIcon(),this._buildTooltip()):this.html(this.obj.title)},_parseTooltip:function(){this.obj.tooltip=this.obj.tooltip?this.lang.parse(this.obj.tooltip):this.obj.title},_parseTitle:function(){this.obj.title=this.lang.parse(this.obj.title)},_build:function(){this.parse(\"<a>\"),this.addClass(\"re-button re-\"+this.name),this.attr(\"data-re-name\",this.name),this.dataset(\"data-button-instance\",this),this.obj.dropdown&&this.setDropdown(this.obj.dropdown)},_buildCallback:function(){this.on(\"click\",this.toggle.bind(this))},_buildAttributes:function(){var t={href:\"#\",alt:this.obj.tooltip,rel:this.name,role:\"button\",\"aria-label\":this.obj.tooltip,tabindex:\"-1\"};this.attr(t)},_buildObserver:function(){void 0!==this.obj.observe&&this.toolbar.addButtonObserver(this.name,this.obj.observe)},_buildIcon:function(){var t=this.obj.icon,e=/(<([^>]+)>)/gi.test(t);this.$icon=e?$R.dom(t):$R.dom(\"<i>\"),e||this.$icon.addClass(\"re-icon-\"+this.name),this.append(this.$icon),this.attr(\"data-re-icon\",!0),this.addClass(\"re-button-icon\")},_buildTooltip:function(){this.detector.isDesktop()&&(this.tooltip=$R.create(\"toolbar.button.tooltip\",this.app,this))}}),$R.add(\"class\",\"toolbar.button.tooltip\",{mixins:[\"dom\"],init:function(t,e){this.app=t,this.opts=t.opts,this.$body=t.$body,this.toolbar=t.toolbar,this.$button=e,this.created=!1,this._init()},open:function(){if(!this.$button.hasClass(\"redactor-button-disabled\")&&!this.$button.hasClass(\"redactor-button-active\")){this.created=!0,this.parse(\"<span>\"),this.addClass(\"re-button-tooltip\"),this.$body.append(this),this.html(this.$button.attr(\"alt\"));var t=this.$button.offset(),e=this.$button.height(),i=this.$button.width();this.css({top:t.top+e+4+\"px\",left:t.left+i/2-this.width()/2+\"px\",position:\"absolute\"}),this.show()}},close:function(){this.created&&!this.$button.hasClass(\"redactor-button-disabled\")&&(this.remove(),this.created=!1)},_init:function(){this.$button.on(\"mouseover\",this.open.bind(this)),this.$button.on(\"mouseout\",this.close.bind(this))}}),$R.add(\"class\",\"toolbar.dropdown\",{mixins:[\"dom\"],init:function(t,e,i){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.$win=t.$win,this.$doc=t.$doc,this.$body=t.$body,this.animate=t.animate,this.toolbar=t.toolbar,this.name=e,this.started=!1,this.items=i,this.$items=[]},toggle:function(t){this.started||this._build(),this.isOpened()&&this.isActive()?this.close(!1):this.open(t)},isOpened:function(){var t=this.$body.find(\".redactor-dropdown-\"+this.uuid+\".open\");return 0!==t.length&&t.attr(\"data-re-name\")===this.name},isActive:function(){return 0!==this.$body.find(\"#redactor-dropdown-\"+this.uuid+\"-\"+this.name+\".open\").length},getName:function(){return this.attr(\"data-re-name\")},getItem:function(t){return this.$items[t]},getItemsByClass:function(t){var e=[];for(var i in this.$items)\"object\"==typeof this.$items[i]&&this.$items[i].hasClass(t)&&e.push(this.$items[i]);return e},open:function(t){this._closeAll(),this.$btn=this.toolbar.getButton(this.name),this.app.broadcast(\"dropdown.open\",t,this,this.$btn),this.toolbar.setDropdown(this),this.show(),this.removeClass(\"redactor-animate-hide\"),this.addClass(\"open\"),this._observe(),this.$btn.hideTooltip(),this.$btn.setActive(),this.$doc.on(\"keyup.redactor.dropdown-\"+this.uuid,this._handleKeyboard.bind(this)),this.$doc.on(\"click.redactor.dropdown-\"+this.uuid+\" touchstart.redactor.dropdown-\"+this.uuid,this.close.bind(this)),this.updatePosition(),this.app.broadcast(\"dropdown.opened\",t,this,this.$btn)},close:function(t,e){if(t){var i=$R.dom(t.target);if(this._isButton(t)||i.hasClass(\"redactor-dropdown-not-close\")||i.hasClass(\"redactor-dropdown-item-disabled\"))return void t.preventDefault()}this.app.broadcast(\"dropdown.close\",this,this.$btn),this.toolbar.setDropdown(!1),this.$btn.setInactive(),!1===e?this._close():this.animate.start(this,\"fadeOut\",this._close.bind(this))},updatePosition:function(){var t=this.toolbar.isFixed(),e=this.$btn.offset();e.top=t?this.$btn.position().top:e.top;var i=this.$btn.height(),n=this.$btn.width(),o=t?\"fixed\":\"absolute\",s=e.left+0,r=parseFloat(this.css(\"width\")),a=this.$win.width()<s+r?r-n:0;this.css({position:o,top:e.top+i+2+\"px\",left:s-a+\"px\"})},_build:function(){this.parse(\"<div>\"),this.attr(\"dir\",this.opts.direction),this.attr(\"id\",\"redactor-dropdown-\"+this.uuid+\"-\"+this.name),this.attr(\"data-re-name\",this.name),this.addClass(\"redactor-dropdown redactor-dropdown-\"+this.uuid+\" redactor-dropdown-\"+this.name),this.dataset(\"data-dropdown-instance\",this),this.items.dom||\"string\"==typeof this.items?this._buildDom():this._buildItems(),this.$body.append(this),this.started=!0},_buildDom:function(){this.html(\"\").append($R.dom(this.items))},_buildItems:function(){this.items=\"format\"===this.name?this._buildFormattingItems():this.items;for(var t in this.items){var e=this.items[t];if(\"observe\"===t)this.attr(\"data-observe\",this.items[t]);else{var i=$R.create(\"toolbar.dropdown.item\",this.app,t,e,this);this.$items[t]=i,this.append(i)}}},_buildFormattingItems:function(){for(var t in this.items)-1===this.opts.formatting.indexOf(t)&&delete this.items[t];if(this.opts.formattingHide)for(var t in this.items)-1!==this.opts.formattingHide.indexOf(t)&&delete this.items[t];if(this.opts.formattingAdd)for(var t in this.opts.formattingAdd)this.items[t]=this.opts.formattingAdd[t];return this.items},_handleKeyboard:function(t){27===t.which&&this.close()},_isButton:function(t){return $R.dom(t.target).closest(\".re-button\").get()===this.$btn.get()},_close:function(){this.$btn.setInactive(),this.$doc.off(\".redactor.dropdown-\"+this.uuid),this.removeClass(\"open\"),this.addClass(\"redactor-animate-hide\"),this.app.broadcast(\"dropdown.closed\",this,this.$btn)},_closeAll:function(){this.$body.find(\".redactor-dropdown-\"+this.uuid+\".open\").each(function(t){$R.dom(t).dataget(\"data-dropdown-instance\")._close()})},_observe:function(){var t=this.attr(\"data-observe\");t&&this.app.broadcast(\"dropdown.\"+t+\".observe\",this)}}),$R.add(\"class\",\"toolbar.dropdown.item\",{mixins:[\"dom\"],init:function(t,e,i,n){this.app=t,this.lang=t.lang,this.dropdown=n,this.name=e,this.obj=i,this._init()},setTitle:function(t){this.$span.html(t)},getTitle:function(){return this.$span.html()},enable:function(){this.removeClass(\"redactor-dropdown-item-disabled\")},disable:function(){this.addClass(\"redactor-dropdown-item-disabled\")},toggle:function(t){t&&t.preventDefault(),this.hasClass(\"redactor-dropdown-item-disabled\")||(this.obj.message?this.app.broadcast(this.obj.message,this.obj.args,this.name):this.obj.api&&this.app.api(this.obj.api,this.obj.args,this.name))},_init:function(){this.parse(\"<a>\"),this.attr(\"href\",\"#\"),this.addClass(\"redactor-dropdown-item-\"+this.name),this.obj.classname&&this.addClass(this.obj.classname),this.attr(\"data-re-name\",this.name),this.on(\"click\",this.toggle.bind(this)),this.$span=$R.dom(\"<span>\"),this.append(this.$span),this.setTitle(this.lang.parse(this.obj.title))}}),$R.add(\"service\",\"cleaner\",{init:function(t){this.app=t,this.opts=t.opts,this.storedComponents=[],this.storedImages=[],this.storedLinks=[],this.deniedTags=[\"font\",\"html\",\"head\",\"link\",\"title\",\"body\",\"meta\",\"applet\"],this.convertRules={},this.unconvertRules={},this.reComments=/<!--[\\s\\S]*?-->/g,this.reSpacedEmpty=/^(||\\s||<br\\s?\\/?>||&nbsp;)$/i,this.reScriptTag=/<script(.*?[^>]?)>([\\w\\W]*?)<\\/script>/gi},addConvertRules:function(t,e){this.convertRules[t]=e},addUnconvertRules:function(t,e){this.unconvertRules[t]=e},input:function(t,e,i){return t=this.encodePreCode(t),t=t.replace(/\\$/g,\"&#36;\"),t=t.replace(/&amp;/g,\"&\"),t=$R.create(\"cleaner.figure\",this.app).convert(t,this.convertRules),t=this.storeComponents(t),t=this.replaceTags(t,this.opts.replaceTags),t=this._setSpanAttr(t),t=this._setStyleCache(t),t=this.removeTags(t,this.deniedTags),t=this.opts.removeScript?this._removeScriptTag(t):this._replaceScriptTag(t),t=this.opts.removeComments?this.removeComments(t):t,t=this._isSpacedEmpty(t)?this.opts.emptyHtml:t,t=this.restoreComponents(t),t=this._cleanWrapped(t),t=e?this.paragraphize(t):t},output:function(t,e){return t=this.removeInvisibleSpaces(t),this._isSpacedEmpty(t)?\"\":this._isParagraphEmpty(t)?\"\":(t=this.removeServiceTagsAndAttrs(t,e),t=this.storeComponents(t),t=this.removeSpanWithoutAttributes(t),t=this.removeFirstBlockBreaklineInHtml(t),t=this.opts.removeScript?t:this._unreplaceScriptTag(t),t=this.opts.preClass?this._setPreClass(t):t,t=this.opts.linkNofollow?this._setLinkNofollow(t):t,t=this.opts.removeNewLines?this.cleanNewLines(t):t,t=this.restoreComponents(t),t=$R.create(\"cleaner.figure\",this.app).unconvert(t,this.unconvertRules),t=this.removeEmptyAttributes(t,[\"style\",\"class\",\"rel\",\"alt\",\"title\"]),t=this.cleanSpacesInPre(t),t=this.tidy(t),t=t.replace(/&amp;/g,\"&\"),t=\"\"===t.replace(/\\n/g,\"\")?\"\":t)},paste:function(t){t=this.storeComponents(t);var e=this.deniedTags.concat([\"iframe\"]);t=this.removeTags(t,e),t=t.replace(new RegExp(\"<!doctype([\\\\s\\\\S]+?)>\",\"gi\"),\"\"),t=t.replace(new RegExp(\"<style([\\\\s\\\\S]+?)</style>\",\"gi\"),\"\"),t=t.replace(new RegExp(\"</p><br /><p\",\"gi\"),\"</p><p\");var i=this._isHtmlMsWord(t);if(t=this._cleanGDocs(t),t=i?this._cleanMsWord(t):t,!this.opts.pasteClean)return t=this.restoreComponents(t);if(this.opts.pastePlainText)return t=this.restoreComponents(t),this.pastePlainText(t);var n=this.opts.pasteBlockTags.concat(this.opts.pasteInlineTags);t=this.removeTagsExcept(t,n),t=this.opts.pasteLinks?t:this.removeTags(t,[\"a\"]),t=this.opts.pasteImages?t:this.removeTags(t,[\"img\"]);var o=this.utils.buildWrapper(t),s=o.find(\"*\"),r=0!==this.opts.pasteKeepStyle.length?\",\"+this.opts.pasteKeepStyle.join(\",\"):\"\";s.not(\"[data-redactor-style-cache]\"+r).removeAttr(\"style\");var a=0!==this.opts.pasteKeepClass.length?\",\"+this.opts.pasteKeepClass.join(\",\"):\"\";s.not(\"[data-redactor-style-cache]\"+a).removeAttr(\"class\");var c=0!==this.opts.pasteKeepAttrs.length?\",\"+this.opts.pasteKeepAttrs.join(\",\"):\"\";return s.not(\"img, a, [data-redactor-style-cache]\"+c).each(function(t){for(;t.attributes.length>0;)t.removeAttribute(t.attributes[0].name)}),this.opts.pasteLinks&&!1!==this.opts.pasteLinkTarget&&o.find(\"a\").attr(\"target\",this.opts.pasteLinkTarget),o.find(\"[data-redactor-style-cache]\").each(function(t){var e=t.getAttribute(\"data-redactor-style-cache\");t.setAttribute(\"style\",e)}),o.find(\"span\").each(function(t){0===t.attributes.length&&$R.dom(t).unwrap()}),o.find(this.opts.inlineTags.join(\",\")).each(function(t){0===t.attributes.length&&this.utils.isEmptyHtml(t.innerHTML)&&$R.dom(t).unwrap()}.bind(this)),o.find(\"ul, ol\").each(function(t){var e=t.previousSibling;if(e&&\"LI\"===e.tagName){var i=$R.dom(e);i.find(\"p\").unwrap(),i.append(t)}}),t=this.utils.getWrapperHtml(o),t=t.replace(/<li><p>/gi,\"<li>\"),t=t.replace(/<\\/p><\\/li>/gi,\"</li>\"),t=t.replace(/<p>&nbsp;<\\/p>/gi,\"<p></p>\"),t=t.replace(/<p><br\\s?\\/?><\\/p>/gi,\"<p></p>\"),i&&(t=t.replace(/<p><\\/p>/gi,\"\"),t=t.replace(/<p>\\s<\\/p>/gi,\"\")),t=this.restoreComponents(t)},pastePlainText:function(t){return t=this.opts.pasteLinks?this.storeLinks(t):t,t=this.opts.pasteImages?this.storeImages(t):t,t=this.getPlainText(t),t=this._replaceNlToBr(t),t=this.opts.pasteLinks?this.restoreLinks(t):t,t=this.opts.pasteImages?this.restoreImages(t):t},tidy:function(t){return t},paragraphize:function(t){return $R.create(\"cleaner.paragraphize\",this.app).convert(t)},getFlatText:function(t){var e=$R.dom(\"<div>\");return t.nodeType||t.dom?e.append(t):(t=t.toString(),t=t.trim(),e.html(t)),t=e.get().textContent||e.get().innerText||\"\",void 0===t?\"\":t},getPlainText:function(t){t=t.replace(/<!--[\\s\\S]*?-->/gi,\"\"),t=t.replace(/<style[\\s\\S]*?style>/gi,\"\"),t=t.replace(/<p><\\/p>/g,\"\"),t=t.replace(/<\\/div>|<\\/li>|<\\/td>/gi,\"\\n\"),t=t.replace(/<\\/p>/gi,\"\\n\\n\"),t=t.replace(/<\\/H[1-6]>/gi,\"\\n\\n\");var e=document.createElement(\"div\");return e.innerHTML=t,t=e.textContent||e.innerText,t.trim()},replaceTags:function(t,e){if(e){var i=this,n=Object.keys(e),o=this.utils.buildWrapper(t);o.find(n.join(\",\")).each(function(t){i.utils.replaceToTag(t,e[t.tagName.toLowerCase()])}),t=this.utils.getWrapperHtml(o)}return t},replaceNbspToSpaces:function(t){return t.replace(\"&nbsp;\",\" \")},replaceBlocksToBr:function(t){return t=t.replace(/<\\/div>|<\\/li>|<\\/td>|<\\/p>|<\\/H[1-6]>/gi,\"<br>\")},cleanNewLines:function(t){return t.replace(/\\r?\\n/g,\"\")},cleanSpacesInPre:function(t){return t.replace(\"&nbsp;&nbsp;&nbsp;&nbsp;\",\"    \")},removeInvisibleSpaces:function(t){return t=this.utils.removeInvisibleChars(t),t=t.replace(/&#65279;/gi,\"\")},removeNl:function(t){return t=t.replace(/\\n/g,\" \"),t=t.replace(/\\s+/g,\"s\")},removeBrAtEnd:function(t){return t=t.replace(/<br\\s?\\/?>$/gi,\" \"),t=t.replace(/<br\\s?\\/?><li/gi,\"<li\")},removeTags:function(t,e){var i=e?/<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi:/(<([^>]+)>)/gi,n=e?function(t,i){return-1===e.indexOf(i.toLowerCase())?t:\"\"}:\"\";return t.replace(i,n)},removeTagsExcept:function(t,e){if(void 0===e)return t.replace(/(<([^>]+)>)/gi,\"\");var i=/<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi;return t.replace(i,function(t,i){return-1===e.indexOf(i.toLowerCase())?\"\":t})},removeComments:function(t){return t.replace(this.reComments,\"\")},removeServiceTagsAndAttrs:function(t,e){var i=this.utils.buildWrapper(t),n=this;return!1!==e&&i.find(\".redactor-selection-marker\").each(function(t){var e=$R.dom(t);return\"\"===n.utils.removeInvisibleChars(e.text())?e.remove():e.unwrap()}),i.find(\"[data-redactor-style-cache]\").removeAttr(\"data-redactor-style-cache\"),this.utils.getWrapperHtml(i)},removeSpanWithoutAttributes:function(t){var e=this.utils.buildWrapper(t);return e.find(\"span\").removeAttr(\"data-redactor-span data-redactor-style-cache\").each(function(t){0===t.attributes.length&&$R.dom(t).unwrap()}),this.utils.getWrapperHtml(e)},removeFirstBlockBreaklineInHtml:function(t){return t.replace(new RegExp(\"</li><br\\\\s?/?>\",\"gi\"),\"</li>\")},removeEmptyAttributes:function(t,e){for(var i=this.utils.buildWrapper(t),n=0;n<e.length;n++)i.find(\"[\"+e[n]+'=\"\"]').removeAttr(e[n]);return this.utils.getWrapperHtml(i)},encodeHtml:function(t){return t=t.replace(/<br\\s?\\/?>/g,\"\\n\"),t=t.replace(/&nbsp;/g,\" \"),t=t.replace(/”/g,'\"'),t=t.replace(/“/g,'\"'),t=t.replace(/‘/g,\"'\"),t=t.replace(/’/g,\"'\"),t=this.encodeEntities(t),t=t.replace(/\\$/g,\"&#36;\"),this.opts.preSpaces&&(t=t.replace(/\\t/g,new Array(this.opts.preSpaces+1).join(\" \"))),t},encodePreCode:function(t){var e=t.match(new RegExp(\"<code(.*?)>(.*?)<pre(.*?)>(.*?)</pre>(.*?)</code>\",\"gi\"));if(null!==e)for(var i=0;i<e.length;i++){var n=e[i].match(new RegExp(\"<pre(.*?)>([\\\\w\\\\W]*?)</pre>\",\"i\"));t=t.replace(n[0],this.encodeEntities(n[0]))}var o=this.utils.buildWrapper(t);return o.find(\"code code\").replaceWith(this._encodeOuter.bind(this)),o.find(\"code pre\").replaceWith(this._encodeOuter.bind(this)),o.find(\"pre pre\").replaceWith(this._encodeOuter.bind(this)),o.find(\"code, pre\").each(this._encodePreCodeLine.bind(this)),t=this.utils.getWrapperHtml(o),t=this._decodeMarkers(t)},encodeEntities:function(t){return t=this.decodeEntities(t),t=t.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\")},encodePhpCode:function(t){return t=t.replace(\"<?php\",\"&lt;?php\"),t=t.replace(\"<?\",\"&lt;?\"),t=t.replace(\"?>\",\"?&gt;\")},decodeEntities:function(t){return String(t).replace(/&lt;/g,\"<\").replace(/&gt;/g,\">\").replace(/&quot;/g,'\"').replace(/&amp;/g,\"&\")},storeComponents:function(t){var e=this.utils.getElementsFromHtml(t,\"figure\",\"table\");return this._storeMatched(t,e,\"Components\",\"figure\")},restoreComponents:function(t){return this._restoreMatched(t,\"Components\",\"figure\")},storeLinks:function(t){var e=this.utils.getElementsFromHtml(t,\"a\");return this._storeMatched(t,e,\"Links\",\"a\")},storeImages:function(t){var e=this.utils.getElementsFromHtml(t,\"img\");return this._storeMatched(t,e,\"Images\",\"img\")},restoreLinks:function(t){return this._restoreMatched(t,\"Links\",\"a\")},restoreImages:function(t){return this._restoreMatched(t,\"Images\",\"img\")},_cleanWrapped:function(t){return t=t.replace(new RegExp(\"<p><figure([\\\\w\\\\W]*?)</figure></p>\",\"gi\"),\"<figure$1</figure>\")},_cleanGDocs:function(t){return t=t.replace(/<b\\sid=\"internal-source-marker(.*?)\">([\\w\\W]*?)<\\/b>/gi,\"$2\"),t=t.replace(/<b(.*?)id=\"docs-internal-guid(.*?)\">([\\w\\W]*?)<\\/b>/gi,\"$3\"),t=t.replace(/<span[^>]*(font-style: italic; font-weight: bold|font-weight: bold; font-style: italic)[^>]*>([\\w\\W]*?)<\\/span>/gi,\"<b><i>$2</i></b>\"),t=t.replace(/<span[^>]*(font-style: italic; font-weight: 700|font-weight: 700; font-style: italic)[^>]*>([\\w\\W]*?)<\\/span>/gi,\"<b><i>$2</i></b>\"),t=t.replace(/<span[^>]*font-style: italic[^>]*>([\\w\\W]*?)<\\/span>/gi,\"<i>$1</i>\"),\nt=t.replace(/<span[^>]*font-weight: bold[^>]*>([\\w\\W]*?)<\\/span>/gi,\"<b>$1</b>\"),t=t.replace(/<span[^>]*font-weight: 700[^>]*>([\\w\\W]*?)<\\/span>/gi,\"<b>$1</b>\")},_cleanMsWord:function(t){t=t.replace(/<!--[\\s\\S]+?-->/gi,\"\"),t=t.replace(/<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi,\"\"),t=t.replace(/<(\\/?)s>/gi,\"<$1strike>\"),t=t.replace(/&nbsp;/gi,\" \"),t=t.replace(/<span\\s+style\\s*=\\s*\"\\s*mso-spacerun\\s*:\\s*yes\\s*;?\\s*\"\\s*>([\\s\\u00a0]*)<\\/span>/gi,function(t,e){return e.length>0?e.replace(/./,\" \").slice(Math.floor(e.length/2)).split(\"\").join(\" \"):\"\"});var e=this.utils.buildWrapper(t);e.find(\"p\").each(function(t){var e=$R.dom(t),i=e.attr(\"style\"),n=/mso-list:\\w+ \\w+([0-9]+)/.exec(i);n&&e.data(\"_listLevel\",parseInt(n[1],10))}),this._parseWordLists(e),e.find(\"[style]\").removeAttr(\"style\"),e.find(\"[align]\").removeAttr(\"align\"),e.find(\"[name]\").removeAttr(\"name\"),e.find(\"span\").unwrap(),e.find(\"[class^='Mso']\").removeAttr(\"class\"),e.find(\"a\").filter(function(t){return!t.hasAttribute(\"href\")}).unwrap(),t=this.utils.getWrapperHtml(e),t=t.replace(/<p[^>]*><\\/p>/gi,\"\"),t=t.replace(/<li>·/gi,\"<li>\"),t=t.trim(),t=t.replace(/\\/(p|ul|ol|h1|h2|h3|h4|h5|h6|blockquote)>\\s+<(p|ul|ol|h1|h2|h3|h4|h5|h6|blockquote)/gi,\"/$1>\\n<$2\");for(var i=\"\",n=t.split(/\\n/),o=0;o<n.length;o++){var s=\"\"!==n[o]&&-1===n[o].search(/>$/)?\" \":\"\\n\";i+=n[o]+s}return i},_parseWordLists:function(t){var e=0,i=null;t.find(\"p\").each(function(t){var n=$R.dom(t),o=n.data(\"_listLevel\");if(null!==o){var s=n.text(),r=\"<ul></ul>\";if(/^\\s*\\w+\\./.test(s)){var a=/([0-9])\\./.exec(s);if(a){var c=parseInt(a[1],10);r=c>1?'<ol start=\"'+c+'\"></ol>':\"<ol></ol>\"}else r=\"<ol></ol>\"}if(o>e)if(0===e)n.before(r),i=n.prev();else{var l=$R.dom(r);i.append(l)}if(o<e)for(var d=0;d<e-o;d++)i=i.parent();n.find(\"span\").first().unwrap(),i.append(\"<li>\"+n.html()+\"</li>\"),n.remove(),e=o}else e=0})},_isSpacedEmpty:function(t){return-1!==t.search(this.reSpacedEmpty)},_isParagraphEmpty:function(t){return-1!==t.search(/^<p><\\/p>$/i)},_isHtmlMsWord:function(t){return t.match(/class=\"?Mso|style=\"[^\"]*\\bmso-|style='[^'']*\\bmso-|w:WordDocument/i)},_setSpanAttr:function(t){var e=this.utils.buildWrapper(t);return e.find(\"span\").attr(\"data-redactor-span\",!0),this.utils.getWrapperHtml(e)},_setStyleCache:function(t){var e=this.utils.buildWrapper(t);return e.find(\"[style]\").each(function(t){var e=$R.dom(t);e.attr(\"data-redactor-style-cache\",e.attr(\"style\"))}),this.utils.getWrapperHtml(e)},_setPreClass:function(t){var e=this.utils.buildWrapper(t);return e.find(\"pre\").addClass(this.opts.preClass),this.utils.getWrapperHtml(e)},_setLinkNofollow:function(t){var e=this.utils.buildWrapper(t);return e.find(\"a\").attr(\"rel\",\"nofollow\"),this.utils.getWrapperHtml(e)},_replaceScriptTag:function(t){return t.replace(this.reScriptTag,'<pre class=\"redactor-script-tag\" $1>$2</pre>')},_unreplaceScriptTag:function(t){return t.replace(/<pre class=\"redactor-script-tag\"(.*?[^>]?)>([\\w\\W]*?)<\\/pre>/gi,\"<script$1>$2<\\/script>\")},_replaceNlToBr:function(t){return t.replace(/\\n/g,\"<br />\")},_removeScriptTag:function(t){return t.replace(this.reScriptTag,\"\")},_storeMatched:function(t,e,i,n){if(this[\"stored\"+i]=[],e)for(var o=0;o<e.length;o++)this[\"stored\"+i][o]=e[o],t=t.replace(e[o],\"####\"+n+o+\"####\");return t},_restoreMatched:function(t,e,i){if(this[\"stored\"+e])for(var n=0;n<this[\"stored\"+e].length;n++)t=t.replace(\"####\"+i+n+\"####\",this[\"stored\"+e][n]);return t},_decodeMarkers:function(t){return t.replace(/&lt;span\\sid=\"selection-marker-(start|end)\"\\sclass=\"redactor-selection-marker\"&gt;(.*?[^>]?)&lt;\\/span&gt;/g,'<span id=\"selection-marker-$1\" class=\"redactor-selection-marker\">​</span>')},_encodeOuter:function(t){return this.encodeEntities(t.outerHTML)},_encodePreCodeLine:function(t){var e=t.firstChild;if(\"PRE\"!=t.tagName||!e||\"CODE\"!==e.tagName){var i=this.decodeEntities(t.innerHTML);i=i.replace(/&nbsp;/g,\" \").replace(/<br\\s?\\/?>/g,\"\\n\"),i=this.opts.preSpaces?i.replace(/\\t/g,new Array(this.opts.preSpaces+1).join(\" \")):i,t.textContent=i}}}),$R.add(\"class\",\"cleaner.figure\",{init:function(t){this.app=t,this.opts=t.opts,this.utils=t.utils},convert:function(t,e){var i=this.utils.buildWrapper(t);return i.find(\"img\").each(this._convertImage.bind(this)),i.find(\"hr\").each(this._convertLine.bind(this)),i.find(\"iframe\").each(this._convertIframe.bind(this)),i.find(\"table\").each(this._convertTable.bind(this)),i.find(\"form\").each(this._convertForm.bind(this)),i.find(\"figure pre\").each(this._convertCode.bind(this)),i.find(\"[data-redactor-type=variable]\").addClass(\"redactor-component\"),i.find(\"figure\").not(\".redactor-component, .redactor-figure-code\").each(this._convertWidget.bind(this)),i.find(\"figure pre\").each(this._setContenteditableCode.bind(this)),i.find(\".redactor-component, .non-editable\").attr(\"contenteditable\",!1),i.find(\"figcaption, td, th\").attr(\"contenteditable\",!0),i.find(\".redactor-component, figcaption\").attr(\"tabindex\",\"-1\"),this._acceptExtraRules(i,e),this.utils.getWrapperHtml(i)},unconvert:function(t,e){var i=this.utils.buildWrapper(t);return i.find(\"th, td, figcaption, figure, pre, code, .redactor-component\").removeAttr(\"contenteditable tabindex\"),i.find(\"figure\").removeClass(\"redactor-component redactor-component-active redactor-uploaded-figure\"),i.find(\"[data-redactor-type=variable]\").removeClass(\"redactor-component\"),i.find(\"figure[data-redactor-type=line]\").unwrap(),i.find(\"figure[data-redactor-type=widget]\").each(this._unconvertWidget.bind(this)),i.find(\"figure[data-redactor-type=form]\").each(this._unconvertForm.bind(this)),i.find(\"figure[data-redactor-type=table]\").each(this._unconvertTable.bind(this)),i.find(\"figure[data-redactor-type=image]\").removeAttr(\"rel\").each(this._unconvertImages.bind(this)),i.find(\"img\").removeAttr(\"data-redactor-type\").removeClass(\"redactor-component\"),i.find(\".non-editable\").removeAttr(\"contenteditable\"),i.find(\"figure\").each(this._removeTypes.bind(this)),i.find(\"span.redactor-component-caret\").remove(),this.opts.breakline&&i.find('[data-redactor-tag=\"br\"]').each(function(t){t.lastChild&&\"BR\"!==t.lastChild.tagName&&t.appendChild(document.createElement(\"br\"))}).unwrap(),this._acceptExtraRules(i,e),t=this.utils.getWrapperHtml(i),t=t.replace(/<br\\s?\\/?>$/,\"\")},_convertImage:function(t){var e=$R.dom(t);if(!this._isNonEditable(e)){e.attr(\"data-image\")||e.attr(\"data-image\",this.utils.getRandomId());var i=e.closest(\"a\"),n=e.closest(\"figure\");0===n.children().not(\"a, img, br, figcaption\").length&&(0===n.length?n=0!==i.length?i.wrap(\"<figure>\"):e.wrap(\"<figure>\"):n.hasClass(\"redactor-uploaded-figure\")?n.removeClass(\"redactor-uploaded-figure\"):n.addClass(\"redactor-keep-figure\"),this._setFigure(n,\"image\"))}},_convertTable:function(t){if(!this._isNonEditable(t)){var e=this._wrapFigure(t);this._setFigure(e,\"table\")}},_convertLine:function(t){if(!this._isNonEditable(t)){var e=this._wrapFigure(t);this._setFigure(e,\"line\")}},_convertForm:function(t){if(!this._isNonEditable(t)){var e=this.utils.replaceToTag(t,\"figure\");this._setFigure(e,\"form\")}},_convertIframe:function(t){if(!this._isNonEditable(t)){var e=t.getAttribute(\"src\"),i=e&&(e.match(this.opts.regex.youtube)||e.match(this.opts.regex.vimeo)),n=this._wrapFigure(t);i&&this._setFigure(n,\"video\")}},_convertCode:function(t){if(!this._isNonEditable(t)){var e=this._wrapFigure(t);this._setFigure(e,\"code\")}},_convertWidget:function(t){if(!this._isNonEditable(t)){var e=$R.dom(t);e.addClass(\"redactor-component\"),e.attr(\"data-redactor-type\",\"widget\"),e.attr(\"data-widget-code\",encodeURI(t.innerHTML.trim()))}},_unconvertForm:function(t){this.utils.replaceToTag(t,\"form\")},_unconvertTable:function(t){$R.dom(t).unwrap()},_unconvertWidget:function(t){var e=$R.dom(t);e.html(decodeURI(e.attr(\"data-widget-code\"))),e.removeAttr(\"data-widget-code\")},_unconvertImages:function(t){var e=$R.dom(t);e.removeClass(\"redactor-component\");var i=0!==e.closest(\"li\").length,n=0!==e.closest(\"table\").length,o=0!==e.find(\"figcaption\").length,s=e.attr(\"style\"),r=!(null===s||\"\"===s),a=\"\"!==e.attr(\"class\");(i||n&&!o&&!r&&!a)&&e.unwrap()},_removeTypes:function(t){var e=$R.dom(t),i=e.attr(\"data-redactor-type\"),n=[\"image\",\"widget\",\"line\",\"video\",\"code\",\"form\",\"table\"];if(i&&-1!==n.indexOf(i)&&e.removeAttr(\"data-redactor-type\"),e.hasClass(\"redactor-keep-figure\"))e.removeClass(\"redactor-keep-figure\");else if(!1===this.opts.imageFigure){var o=0!==e.find(\"figcaption\").length;o||e.unwrap()}},_wrapFigure:function(t){var e=$R.dom(t),i=e.closest(\"figure\");return 0===i.length?e.wrap(\"<figure>\"):i},_setFigure:function(t,e){t.addClass(\"redactor-component\"),t.attr(\"data-redactor-type\",e)},_setContenteditableCode:function(t){if(!this._isNonEditable(t)){var e=$R.dom(t),i=e.children(\"code\").first();(0!==i.length?i:e).attr(\"contenteditable\",!0).attr(\"tabindex\",\"-1\")}},_acceptExtraRules:function(t,e){for(var i in e)\"function\"==typeof e[i]&&e[i](t)},_isNonEditable:function(t){return 0!==$R.dom(t).closest(\".non-editable\").length}}),$R.add(\"class\",\"cleaner.paragraphize\",{init:function(t){this.app=t,this.opts=t.opts,this.utils=t.utils,this.element=t.element,this.stored=[],this.remStart=\"#####replace\",this.remEnd=\"#####\",this.paragraphizeTags=[\"table\",\"div\",\"pre\",\"form\",\"ul\",\"ol\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"dl\",\"blockquote\",\"figcaption\",\"address\",\"section\",\"header\",\"footer\",\"aside\",\"article\",\"object\",\"style\",\"script\",\"iframe\",\"select\",\"input\",\"textarea\",\"button\",\"option\",\"map\",\"area\",\"math\",\"hr\",\"fieldset\",\"legend\",\"hgroup\",\"nav\",\"figure\",\"details\",\"menu\",\"summary\",\"p\"]},convert:function(t){var e=this._isConverted(t);return!0===e?this._convert(t):e},_convert:function(t){var e=this.opts.breakline?\"sdivtag\":this.opts.markup;return t=this._storeTags(t),t=t.trim(),this.opts.breakline?(t=t.replace(new RegExp(\"\\\\n#####\",\"gi\"),\"xnonbreakmarkerz#####\"),t=t.replace(new RegExp(\"#####\\\\n\\\\n\",\"gi\"),\"#####\\nxnonbreakmarkerz\"),t=t.replace(new RegExp(\"#####\\\\n\",\"gi\"),\"#####xnonbreakmarkerz\"),t=t.replace(/<br\\s?\\/?>\\n/gi,\"<br>\"),t=t.replace(/\\n/g,\"<br>\"),t=t.replace(/xnonbreakmarkerz/gi,\"\\n\")):t=t.replace(/[\\n]+/g,\"\\n\"),t=this._trimEmptyLines(t),t=this.opts.breakline?t:t.replace(/<br\\s?\\/?>\\n/gi,\"xbreakmarkerz\\n\"),t=t.replace(/(?:\\r\\n|\\r|\\n)/g,\"xparagraphmarkerz\"),t=t.replace(/xparagraphmarkerz/gi,\"</\"+e+\">\\n<\"+e+\">\"),t=this.opts.breakline?t:t.replace(/xbreakmarkerz/gi,\"<br>\"),t=\"<\"+e+\">\"+t+\"</\"+e+\">\",t=t.replace(new RegExp(\"<\"+e+\">#####\",\"gi\"),\"#####\"),t=t.replace(new RegExp(\"#####</\"+e+\">\",\"gi\"),\"#####\"),t=this._restoreTags(t),t=this.opts.breakline?t:t.replace(new RegExp(\"<\"+e+\"><br\\\\s?/?></\"+e+\">\",\"gi\"),\"<\"+e+\"></\"+e+\">\"),t=t.replace(new RegExp(\"<sdivtag>\",\"gi\"),'<div data-redactor-tag=\"br\">'),t=t.replace(new RegExp(\"sdivtag\",\"gi\"),\"div\")},_storeTags:function(t){var e=this,i=this.utils.buildWrapper(t);return this.opts.breakline&&i.find(\"p\").each(function(t){var e=$R.dom(t);0===e.closest(\"figure[data-redactor-type=widget],figure[data-redactor-type=form],.non-editable\").length&&(e.append(\"<br><br>\"),e.unwrap())}),i.find(this.paragraphizeTags.join(\", \")).each(function(t,i){var n=document.createTextNode(\"\\n\"+e.remStart+i+e.remEnd+\"\\n\");e.stored.push(t.outerHTML),t.parentNode.replaceChild(n,t)}),this.utils.getWrapperHtml(i)},_restoreTags:function(t){for(var e=0;e<this.stored.length;e++)this.stored[e]=this.stored[e].replace(/\\$/g,\"&#36;\"),t=t.replace(this.remStart+e+this.remEnd,this.stored[e]);return t},_trimEmptyLines:function(t){for(var e=\"\",i=t.split(\"\\n\"),n=0;n<i.length;n++)\"\"!==i[n].trim()&&(e+=i[n]+\"\\n\");return e.replace(/\\n$/,\"\")},_isConverted:function(t){return this._isDisabled(t)?t:!this._isEmptyHtml(t)||this.opts.emptyHtml},_isDisabled:function(){return!1===this.opts.paragraphize||this.element.isType(\"inline\")},_isEmptyHtml:function(t){return\"\"===t||\"<p></p>\"===t||\"<div></div>\"===t}}),$R.add(\"service\",\"detector\",{init:function(t){this.app=t,this.userAgent=navigator.userAgent.toLowerCase()},isWebkit:function(){return/webkit/.test(this.userAgent)},isFirefox:function(){return this.userAgent.indexOf(\"firefox\")>-1},isIe:function(t){if(document.documentMode||/Edge/.test(navigator.userAgent))return\"edge\";var e;return e=RegExp(\"msie\"+(isNaN(t)?\"\":\"\\\\s\"+t),\"i\").test(navigator.userAgent),e||(e=!!navigator.userAgent.match(/Trident.*rv[ :]*11\\./)),e},isMobile:function(){return/(iPhone|iPod|Android)/.test(navigator.userAgent)},isDesktop:function(){return!/(iPhone|iPod|iPad|Android)/.test(navigator.userAgent)},isIpad:function(){return/iPad/.test(navigator.userAgent)}}),$R.add(\"service\",\"offset\",{init:function(t){this.app=t},get:function(t,e){var i={start:0,end:0,newline:!1},n=this.utils.getNode(t);if(!n)return!1;var o=this.editor.isEditor(n),s=!!o||this.selection.isIn(n),r=this.selection.getRange();if(o||s){if(this.selection.is()&&s){var a=$R.dom(r.startContainer),c=a.hasClass(\"redactor-component\")?r.startOffset:0,l=r.cloneRange();l.selectNodeContents(n),l.setEnd(r.startContainer,r.startOffset);var d=this._getString(r,e);i.newline=-1!==d.search(/^\\n/)&&\"\"===d.trim(),i.start=this._getString(l,e).length-c,i.end=i.start+d.length+c}}else i=!1;return i},set:function(t,e){if(!this._setComponentOffset(e)){this.component.clearActive();var i=this.utils.getNode(e);if(i){var n=this.size(i),o=0,s=document.createRange();t.newline=void 0!==t.newline&&t.newline,t.end=t.end>n?n:t.end,s.setStart(i,0),s.collapse(!0);for(var r=[i],a=!1,c=!1;!c&&(i=r.pop());)if(3==i.nodeType){var l=o+i.length,d=-1!==i.nodeValue.search(/^\\n/)&&\"\"===i.nodeValue.trim();!a&&!this._isFigcaptionNext(i)&&!1===t.newline&&!d&&t.start>=o&&t.start<=l&&(s.setStart(i,t.start-o),a=!0),a&&t.end>=o&&t.end<=l&&(s.setEnd(i,t.end-o),c=!0),o=l}else for(var p=i.childNodes.length;p--;)r.push(i.childNodes[p]);this.selection.setRange(s)}}},size:function(t,e){var i=this.utils.getNode(t);if(i){var n=document.createRange(),o=n.cloneRange();return o.selectNodeContents(i),this._getString(o,e).length}return 0},_getString:function(t,e){var i=t.toString();return i=this.editor.isEmpty()?i.replace(/\\uFEFF/g,\"\"):i,i=e?i.trim():i},_setComponentOffset:function(t){return!!this.component.isNonEditable(t)&&this.component.setActive(t)},_isFigcaptionNext:function(t){var e=t.nextSibling;return\"\"===t.nodeValue.trim()&&e&&\"FIGCAPTION\"===e.tagName}}),$R.add(\"service\",\"inspector\",{init:function(t){this.app=t},parse:function(t){return $R.create(\"inspector.parser\",this.app,this,t)},isText:function(t){if(\"string\"==typeof t&&!/^\\s*<(\\w+|!)[^>]*>/.test(t))return!0;var e=$R.dom(t).get();return e&&3===e.nodeType},isInlineTag:function(t,e){var i=this._extendTags(this.opts.inlineTags,e);return this._isTag(t)&&-1!==i.indexOf(t.toLowerCase())},isBlockTag:function(t,e){var i=this._extendTags(this.opts.blockTags,e);return this._isTag(t)&&-1!==i.indexOf(t.toLowerCase())},isTableCellTag:function(t){return-1!==[\"td\",\"th\"].indexOf(t.toLowerCase())},isHeadingTag:function(t){return-1!==[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(t.toLowerCase())},_isTag:function(t){return void 0!==t&&t},_extendTags:function(t,e){if(t=t.concat(t),e)for(var i=0;i<e.length;i++)t.push(e[i]);return t}}),$R.add(\"class\",\"inspector.parser\",{init:function(t,e,i){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.utils=t.utils,this.editor=t.editor,this.selection=t.selection,this.inspector=e,this.el=i,this.$el=$R.dom(this.el),this.node=this.$el.get(),this.$component=this.$el.closest(\".redactor-component\",\".redactor-in\")},isEditor:function(){return this.node===this.editor.getElement().get()},isInEditor:function(){return 0!==this.$el.parents(\".redactor-in-\"+this.uuid).length},isComponent:function(){return 0!==this.$component.length},isComponentType:function(t){return this.getComponentType()===t},isComponentActive:function(){return this.isComponent()&&this.$component.hasClass(\"redactor-component-active\")},isComponentEditable:function(){var t=[\"code\",\"table\"],e=this.getComponentType();return this.isComponent()&&-1!==t.indexOf(e)},isFigcaption:function(){return this.getFigcaption()},isPre:function(){return this.getPre()},isCode:function(){var t=this.$el.closest(\"code\"),e=t.parent(\"pre\");return 0!==t.length&&0===e.length},isList:function(){return this.getList()},isFirstListItem:function(){return this._getLastOrFirstListItem(\"first\")},isLastListItem:function(){return this._getLastOrFirstListItem(\"last\")},isFirstTableCell:function(){return this._getLastOrFirstTableCell(\"first\")},isLastTableCell:function(){return this._getLastOrFirstTableCell(\"last\")},isTable:function(){return this.isComponentType(\"table\")||this.getTable()},isHeading:function(){return this.getHeading()},isBlockquote:function(){return this.getBlockquote()},isDl:function(){return this.getDl()},isParagraph:function(){return this.getParagraph()},isLink:function(){return this.getLink()},isFile:function(){return this.getFile()},isText:function(){return this.inspector.isText(this.el)},isInline:function(){var t=this.opts.inlineTags;return!!this.isElement()&&-1!==t.indexOf(this.node.tagName.toLowerCase())},isBlock:function(){var t=this.opts.blockTags;return!!this.isElement()&&-1!==t.indexOf(this.node.tagName.toLowerCase())},isElement:function(){return this.node&&this.node.nodeType&&3!==this.node.nodeType},hasParent:function(t){return 0!==this.$el.closest(t.join(\",\")).length},getNode:function(){return this.node},getTag:function(){return!!this.isElement()&&this.node.tagName.toLowerCase()},getComponent:function(){return!!this.isComponent()&&this.$component.get()},getComponentType:function(){return!!this.isComponent()&&this.$component.attr(\"data-redactor-type\")},getFirstNode:function(){return this.utils.getFirstNode(this.node)},getLastNode:function(){return this.utils.getLastNode(this.node)},getFirstElement:function(){return this.utils.getFirstElement(this.node)},getLastElement:function(){return this.utils.getLastElement(this.node)},getFigcaption:function(){return this._getClosestNode(\"figcaption\")},getPre:function(){return this._getClosestNode(\"pre\")},getCode:function(){return this._getClosestNode(\"code\")},getList:function(){return this._getClosestNode(\"ul, ol\")},getParentList:function(){return this._getClosestUpNode(\"ul, ol\")},getListItem:function(){return this._getClosestNode(\"li\")},getTable:function(){return this.getComponentType(\"table\")?this.$component.find(\"table\").get():this._getClosestNode(\"table\")},getTableCell:function(){var t=this.$el.closest(\"td, th\");return 0!==t.length&&t.get()},getComponentCodeElement:function(){return!!this.isComponentType(\"code\")&&this.$component.find(\"pre code, pre\").last().get()},getImageElement:function(){return!!this.isComponentType(\"image\")&&this.$component.find(\"img\").get()},getParagraph:function(){return this._getClosestNode(\"p\")},getHeading:function(){return this._getClosestNode(\"h1, h2, h3, h4, h5, h6\")},getDl:function(){return this._getClosestNode(\"dl\")},getBlockquote:function(){return this._getClosestNode(\"blockquote\")},getLink:function(){var t=this.isComponent()&&!this.isFigcaption();if(this.isComponentType(\"table\")||!t){var e=this._getClosestElement(\"a\");return!(!e||e.attr(\"data-file\"))&&e.get()}return!1},getFile:function(){var t=this.isComponent();if(this.isComponentType(\"table\")||!t){var e=this._getClosestElement(\"a\");return!(!e||!e.attr(\"data-file\"))&&e.get()}return!1},findFirstNode:function(t){return this.$el.find(t).first().get()},findLastNode:function(t){return this.$el.find(t).last().get()},_getLastOrFirstListItem:function(t){var e=this.getList(),i=this.getTag();if(e&&\"li\"===i){var n=$R.dom(e).find(\"li\")[t]().get();if(n&&this.node===n)return!0}return!1},_getLastOrFirstTableCell:function(t){var e=this.getTable(),i=this.getTag();if(e&&(\"td\"===i||\"th\"===i)){var n=$R.dom(e).find(\"td, th\")[t]().get();if(n&&this.node===n)return!0}return!1},_getClosestUpNode:function(t){var e=this.$el.parents(t,\".redactor-in\").last();return 0!==e.length&&e.get()},_getClosestNode:function(t){var e=this.$el.closest(t,\".redactor-in\");return 0!==e.length&&e.get()},_getClosestElement:function(t){var e=this.$el.closest(t,\".redactor-in\");return 0!==e.length&&e}}),$R.add(\"service\",\"marker\",{init:function(t){this.app=t},build:function(t,e){var i=document.createElement(\"span\");return i.id=\"selection-marker-\"+this._getPos(t),i.className=\"redactor-selection-marker\",i.innerHTML=this.opts.markerChar,e?i.outerHTML:i},buildHtml:function(t){return this.build(t,!0)},insert:function(t){this.remove();var e=\"both\"!==t&&(\"start\"===t||this.selection.isCollapsed());this.selection.is()||this.editor.focus();var i=this.selection.getRange();if(i){var n=this.build(\"start\"),o=this.build(\"end\"),s=i.cloneRange();return e||(s.collapse(!1),s.insertNode(o)),s.setStart(i.startContainer,i.startOffset),s.collapse(!0),s.insertNode(n),i.setStartAfter(n),e||i.setEndBefore(o),this.selection.setRange(i),n}},find:function(t,e){var i=this.editor.getElement(),n=(e||i).find(\"span#selection-marker-\"+this._getPos(t));return 0!==n.length&&n.get()},restore:function(){var t=this.find(\"start\"),e=this.find(\"end\"),i=this.selection.getRange();if(i&&this.selection.is()||(this.editor.focus(),i=document.createRange()),t){var n=!!e&&e.previousSibling,o=t.nextSibling;o=(!o||3!==o.nodeType||\"\"!==o.textContent.replace(/[\\n\\t]/g,\"\"))&&o,e?o&&\"selection-marker-end\"===o.id?this._restoreInject(i,t):n&&o?(i.selectNodeContents(n),i.collapse(!1),i.setStart(o,0)):n&&!o?(i.selectNodeContents(n),i.collapse(!1),i.setStartAfter(t)):(i.setStartAfter(t),i.setEndBefore(e)):o?(i.selectNodeContents(o),i.collapse(!0)):this._restoreInject(i,t),this.selection.setRange(i),t&&t.parentNode.removeChild(t),e&&e.parentNode.removeChild(e)}},remove:function(){var t=this.find(\"start\"),e=this.find(\"end\");t&&t.parentNode.removeChild(t),e&&e.parentNode.removeChild(e)},_getPos:function(t){return void 0===t?\"start\":t},_restoreInject:function(t,e){var i=this.utils.createInvisibleChar();$R.dom(e).after(i),t.selectNodeContents(i),t.collapse(!1)}}),$R.add(\"service\",\"component\",{init:function(t){this.app=t,this.activeClass=\"redactor-component-active\"},create:function(t,e){return $R.create(t+\".component\",this.app,e)},build:function(t){var e,i=$R.dom(t),n=i.attr(\"data-redactor-type\");return n&&(e=this.create(n,t)),e||t},remove:function(t,e){var i=$R.dom(t).closest(\".redactor-component\"),n=i.attr(\"data-redactor-type\"),o=i.parent(),s=this.inspector.parse(o),r=this.utils.findSiblings(i,\"prev\"),a=this.utils.findSiblings(i,\"next\");if(!1!==this.app.broadcast(n+\".delete\",i)){if(i.remove(),this.app.broadcast(n+\".deleted\",i),this.app.broadcast(\"contextbar.close\"),this.app.broadcast(\"imageresizer.stop\"),!1!==e){var c=s.getTableCell();c&&this.utils.isEmptyHtml(c.innerHTML)?this.caret.setStart(c):a?this.caret.setStart(a):r?this.caret.setEnd(r):this.editor.startFocus()}this.editor.isEmpty()&&(this.editor.setEmpty(),this.editor.startFocus(),this.app.broadcast(\"empty\"))}},isNonEditable:function(t){var e=this.inspector.parse(t);return e.isComponent()&&!e.isComponentEditable()},isActive:function(t){var e;if(t){var i=this.inspector.parse(t);return e=$R.dom(i.getComponent()),e.hasClass(this.activeClass)}return e=this._find(),0!==e.length},getActive:function(t){var e=this._find();return 0!==e.length&&(t?e:e.get())},setActive:function(t){this.clearActive(),this.editor.focus();var e=this.inspector.parse(t),i=e.getComponent(),n=$R.dom(i);if(!e.isFigcaption()){var o=n.find(\".redactor-component-caret\");0===o.length&&(o=this._buildCaret(),n.prepend(o)),this.caret.setAtStart(o.get())}n.addClass(this.activeClass)},clearActive:function(){var t=this._find();t.removeClass(this.activeClass),t.find(\".redactor-component-caret\").remove(),this.app.broadcast(\"imageresizer.stop\")},setOnEvent:function(t,e){this.clearActive();var i=this.inspector.parse(t.target);i.isFigcaption()||i.isComponentEditable()||i.isComponent()&&(this.setActive(t.target),!0!==e&&t.preventDefault())},executeScripts:function(){for(var $editor=this.editor.getElement(),scripts=$editor.find(\"[data-redactor-type]\").find(\"script\").getAll(),i=0;i<scripts.length;i++)if(\"\"!==scripts[i].src){var src=scripts[i].src;this.$doc.find('head script[src=\"'+src+'\"]').remove();var $script=$R.dom(\"<script>\");$script.attr(\"src\",src),$script.attr(\"async defer\"),-1!==src.search(\"instagram\")&&$script.attr(\"onload\",\"window.instgrm.Embeds.process()\");var head=document.getElementsByTagName(\"head\")[0];head&&head.appendChild($script.get())}else eval(scripts[i].innerHTML)},_find:function(){return this.editor.getElement().find(\".\"+this.activeClass)},_buildCaret:function(){var t=$R.dom(\"<span>\");return t.addClass(\"redactor-component-caret\"),t.attr(\"contenteditable\",!0),t}}),$R.add(\"service\",\"insertion\",{init:function(t){this.app=t},set:function(t,e,i){return t=!1!==e?this.cleaner.input(t):t,t=!1!==e?this.cleaner.paragraphize(t):t,this.editor.getElement().html(t),!1!==i&&this.editor.endFocus(),t},insertNode:function(t,e){this.editor.focus();var i=this.utils.isFragment(t)?t:this.utils.createFragment(t);return this._collapseSelection(),this._insertFragment(i),this._setCaret(e,i),this._sendNodes(i.nodes)},insertBreakLine:function(){return this.insertNode(document.createElement(\"br\"),\"after\")},insertNewline:function(){return this.insertNode(document.createTextNode(\"\\n\"),\"after\")},insertText:function(t){return this.insertHtml(this.cleaner.getFlatText(t))},insertChar:function(t){return this.insertNode(t,\"after\")},insertRaw:function(t){return this.insertHtml(t,!1)},insertToEnd:function(t,e){if(t){3===t.nodeType&&-1!==t.nodeValue.search(/^\\n/)&&(t=t.previousElementSibling);var i=$R.dom(t);if(i.attr(\"data-redactor-type\")===e){var n=this.opts.breakline?\"<br>\":\"<p>\",o=$R.dom(n);i.after(o),this.caret.setStart(o)}}},insertPoint:function(t){var e,i,n=this.marker.build(\"start\"),o=!1,s=t.clientX,r=t.clientY;if(document.caretPositionFromPoint){var a=document.caretPositionFromPoint(s,r),c=document.getSelection();i=this.inspector.parse(a.offsetNode),i.isInEditor()&&(e=c.getRangeAt(0),e.setStart(a.offsetNode,a.offset),e.collapse(!0),e.insertNode(n),o=!0)}else document.caretRangeFromPoint&&(e=document.caretRangeFromPoint(s,r),i=this.inspector.parse(e.startContainer),i.isInEditor()&&(e.insertNode(n),o=!0));return o},insertToPoint:function(t,e,i){if(!0!==i&&!this.insertPoint(t)){var n=this.editor.getLastNode();$R.dom(n).after(this.marker.build(\"start\"))}return this.component.clearActive(),this.selection.restoreMarkers(),this.insertHtml(e)},insertToOffset:function(t,e){return this.offset.set({start:t,end:t}),this.insertHtml(e)},insertHtml:function(t,e){if(this.opts.input){var i=this.utils.parseHtml(t);if(this.selection.isAll())return this._insertToAllSelected(i);if(!this.selection.is()){var n=$R.dom(\"<p>\");this.editor.getElement().append(n),this.caret.setStart(n)}var o=this.selection.isCollapsed(),s=this.selection.isText(),r=this.selection.getCurrent(),a=this.inspector.parse(r);this._collapseSelection(),i=this._getCleanedInput(i,a,e);var c,l,d=this._isFigure(i.html),p=this._isComponentSpan(i.html),u=this.inspector.isText(i.html);if(this.editor.isEmpty())return this._insertToEmptyEditor(i.html);if(a.isComponent()&&!a.isComponentEditable())return this._insertToWidget(r,a,i.html);if(p)return this.insertNode(i.nodes,\"end\");if(d&&!s&&!a.isList())return a.isInline()?this._insertToInline(r,i):(c=this.utils.createFragment(i.html),this.utils.splitNode(r,c),this.caret.setEnd(c.last),this._sendNodes(c.nodes));if(a.isCode())return this._insertToCode(i,r,e);if(a.isPre())return this._insertToPre(i,e);if(a.isHeading()||a.isFigcaption())return i.html=!1!==e?this.cleaner.removeTagsExcept(i.html,[\"a\"]):i.html,i.html=!1!==e?this.cleaner.replaceNbspToSpaces(i.html):i.html,c=this.utils.createFragment(i.html),this.insertNode(c,\"end\");if(u)return!s&&\"br\"!==this.opts.markup&&this._hasBlocksAndImages(i.nodes)?(i.html=!1!==e?this.cleaner.paragraphize(i.html):i.html,c=this.utils.createFragment(i.html),this.utils.splitNode(r,c),this.caret.setEnd(c.last),this._sendNodes(c.nodes)):(i.html=!1!==e?i.html.replace(/\\n/g,\"<br>\"):i.html,c=this.utils.createFragment(i.html),this.insertNode(c.nodes,\"end\"));if(!o&&!d)return i.html=!1!==e?this.cleaner.paragraphize(i.html):i.html,c=this.utils.createFragment(i.html),this.insertNode(c,\"end\");if(a.isInline()&&!this._isPlainHtml(i.html))return this._insertToInline(r,i);if(a.isBlockquote()||a.isDl())return l=this.opts.inlineTags,l.concat([\"br\"]),i.html=!1!==e?this.cleaner.replaceBlocksToBr(i.html):i.html,i.html=!1!==e?this.cleaner.removeTagsExcept(i.html,l):i.html,c=this.utils.createFragment(i.html),this.insertNode(c,\"end\");if(a.isParagraph())return this._isPlainHtml(i.html)?this.insertNode(i.nodes,\"end\"):(i.html=!1!==e?this.cleaner.paragraphize(i.html):i.html,c=this.utils.createFragment(i.html),this.utils.splitNode(r,c),this.caret.setEnd(c.last),this._sendNodes(c.nodes));if(a.isList()&&(l=this.opts.inlineTags,l=l.concat([\"br\",\"li\",\"ul\",\"ol\",\"img\"]),i.html=!1!==e?this.cleaner.replaceBlocksToBr(i.html):i.html,i.html=!1!==e?this.cleaner.removeTagsExcept(i.html,l):i.html,i.html=!1!==e?this.cleaner.removeBrAtEnd(i.html):i.html,c=this.utils.createFragment(i.html),i.nodes=c.nodes,this._containsTags(i.html,[\"ul\",\"ol\",\"li\"]))){var h=this.selection.getElement(r);if(h&&\"LI\"===h.tagName&&this.caret.isStart(h)){i.nodes=$R.dom(c.nodes).unwrap(\"ul, ol\").getAll(),$R.dom(h).before(i.nodes);var f=i.nodes[i.nodes.length-1];return this.caret.setEnd(f),this._sendNodes(i.nodes)}return this._isPlainHtml(i.html)?this.insertNode(c,\"end\"):(c=this._buildList(i,h,c),this.utils.splitNode(r,c,!0),this.caret.setEnd(c.last),this._sendNodes(c.nodes))}return this.insertNode(i.nodes,\"end\")}},_insertToAllSelected:function(t){var e=this.set(t.html),i=this.utils.parseHtml(e);return this._sendNodes(i.nodes)},_insertToEmptyEditor:function(t){t=this.cleaner.paragraphize(t);var e=this.utils.createFragment(t),i=this.editor.getElement();return i.html(\"\"),i.append(e.frag),this.caret.setEnd(i),this._sendNodes(e.nodes)},_insertToInline:function(t,e){var i=this.utils.createFragment(e.html);return this.utils.splitNode(t,i,!1,!0),this.caret.setEnd(i.last),this._sendNodes(i.nodes)},_insertToCode:function(t,e,i){t.html=!1!==i?this.cleaner.encodeHtml(t.html):t.html,t.html=!1!==i?this.cleaner.removeNl(t.html):t.html;var n=this.utils.createFragment(t.html),o=this.insertNode(n,\"end\");return this.utils.normalizeTextNodes(e),o},_insertToPre:function(t,e){t.html=!1!==e?this.cleaner.encodeHtml(t.html):t.html;var i=this.utils.createFragment(t.html);return this.insertNode(i,\"end\")},_insertToWidget:function(t,e,i){i=this._isComponentSpan(i)?i:this.cleaner.paragraphize(i);var n=this.utils.createFragment(i),o=e.getComponent(),s=$R.dom(o);return s.after(n.frag),s.remove(),this.caret.setEnd(n.last),this._sendNodes(n.nodes)},_insertFragment:function(t){var e=this.selection.getRange();if(e){if(this.selection.isCollapsed()){var i=e.startContainer;3!==i.nodeType&&\"BR\"===i.tagName&&(this.caret.setAfter(i),i.parentNode.removeChild(i))}else e.deleteContents();e.insertNode(t.frag)}},_sendNodes:function(t){for(var e=0;e<t.length;e++){var i=t[e],n=3!==i.nodeType&&\"function\"==typeof i.getAttribute&&i.getAttribute(\"data-redactor-type\");n&&this.app.broadcast(n+\".inserted\",this.component.build(i))}return this.app.broadcast(\"inserted\",t),this.component.executeScripts(),t},_setCaret:function(t,e){var i=this._isLastInline(e);t?(t=i&&\"end\"===t?\"after\":t,this.caret[\"set\"+this.utils.ucfirst(t)](e.last)):!1!==t&&i&&this.caret.setAfter(e.last)},_isLastInline:function(t){if(t.last){return this.inspector.parse(t.last).isInline()}return!1},_getCleanedInput:function(t,e,i){var n=e.isCode()||e.isPre();return t.html=n||!1===i?t.html:this.cleaner.input(t.html),t=n||!1===i?t:this.utils.parseHtml(t.html)},_getContainer:function(t){return $R.dom(this.utils.createTmpContainer(t))},_buildList:function(t,e,i){var n=t.nodes,o=n[0];if(o&&3!==o.nodeType&&\"li\"===o.tagName){var s=$R.dom(e),r=s.get().tagName.toLowerCase(),a=$R.dom(\"<\"+r+\" />\");return a.append(i.nodes),this.utils.createFragment(a.get().outerHTML)}return i},_containsTags:function(t,e){return 0!==this._getContainer(t).find(e.join(\",\")).length},_collapseSelection:function(){},_hasFigureOrTable:function(t){return 0!==this._getContainer(t).find(\"figure, table\").length\n},_hasBlocks:function(t){return 0!==this._getContainer(t).find(this.opts.blockTags.join(\",\")).length},_hasBlocksAndImages:function(t){return 0!==this._getContainer(t).find(this.opts.blockTags.join(\",\")+\",img\").length},_isPlainHtml:function(t){return 0===this._getContainer(t).find(this.opts.blockTags.join(\",\")+\", img\").length},_isFigure:function(t){if(this._isHtmlString(t))return 0!==$R.dom(t).closest(\"figure\").length},_isComponentSpan:function(t){if(this._isHtmlString(t))return 0!==$R.dom(t).closest(\"span.redactor-component\").length},_isHtmlString:function(t){return!(\"string\"==typeof t&&!/^\\s*<(\\w+|!)[^>]*>/.test(t))}}),$R.add(\"service\",\"block\",{mixins:[\"formatter\"],init:function(t){this.app=t},format:function(t){return this.type=t.type?t.type:\"set\",this.tag=\"string\"==typeof t?t:t.tag,this.tag=this._prepareTag(this.tag),this.tag=this.tag.toLowerCase(),\"string\"==typeof t?this.args=!1:this.buildArgs(t),this._format()},getBlocks:function(t){return this.selection.getBlocks({tags:t||this._getTags(),first:!0})},getElements:function(t){var e=this.selection.getBlock();return this.selection.isCollapsed()||!e||\"TD\"!==e.tagName&&\"TH\"!==e.tagName?$R.dom(this.getBlocks(t)):this._wrapInsideTable(\"div\")},clearFormat:function(t){this.selection.save();var e=this.getElements(t||this._getTags());return e.each(function(t){for(;t.attributes.length>0;)t.removeAttribute(t.attributes[0].name)}),this.selection.restore(),e.getAll()},_format:function(){this.selection.save();var t,e,i,n,o=this.getBlocks(),s=this.selection.getBlock(),r=[];if(1===o.length&&\"DIV\"===o[0].tagName){if(!(t=this._getTextNodesData())||0===t.nodes.length)return r=this._replaceBlocks(o),r=this._sendNodes(r),setTimeout(function(){this.selection.restore()}.bind(this),0),r;e=this._getReplacedTag(\"set\"),i=$R.dom(\"<\"+e+\">\"),n=t.last.nextSibling,n&&\"BR\"===n.tagName&&$R.dom(n).remove();for(var a=0;a<t.nodes.length;a++)i.append(t.nodes[a]);return this.utils.splitNode(o[0],[i.get()]),r=this._sendNodes([i.get()]),this.utils.isEmptyHtml(i.html())?this.caret.setStart(i):setTimeout(function(){this.selection.restore()}.bind(this),0),r}if(o.length>0)return r=this._replaceBlocks(o),r=this._sendNodes(r),setTimeout(function(){this.selection.restore()}.bind(this),0),r;if(!this.selection.isCollapsed()&&s&&(\"TD\"===s.tagName||\"TH\"===s.tagName))return e=this._getReplacedTag(\"set\"),i=this._wrapInsideTable(e),this.selection.setAll(i),this._sendNodes([i.get()]);if(this.selection.isCollapsed()&&s&&(\"TD\"===s.tagName||\"TH\"===s.tagName)){var c=this._getChildTextNodes(s);e=this._getReplacedTag(\"set\");var i=$R.dom(\"<\"+e+\">\");$R.dom(c.first).before(i);for(var a=0;a<c.nodes.length;a++)i.append(c.nodes[a]);var n=i.get().nextSibling;return n&&\"BR\"===n.tagName&&$R.dom(n).remove(),this._sendNodes([i.get()])}return r},_wrapInsideTable:function(t){var e=this._getTextNodesData(),i=$R.dom(\"<\"+t+\">\");$R.dom(e.first).before(i);for(var n=0;n<e.nodes.length;n++)i.append(e.nodes[n]);var o=i.get().nextSibling;return o&&\"BR\"===o.tagName&&$R.dom(o).remove(),i},_prepareTag:function(t){return void 0===t?this.opts.markup:t},_sendNodes:function(t){return t.length>0&&(t=this.applyArgs(t,!1),t=this._combinePre(t),t=this._cleanBlocks(t)),t},_getTags:function(){return[\"div\",\"p\",\"blockquote\",\"pre\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"]},_replaceBlocks:function(t){for(var e=[],i=this._isToggleFormatType(t)?\"toggle\":\"set\",n=this._getReplacedTag(i),o=0;o<t.length;o++){var s=this.utils.replaceToTag(t[o],n);e.push(s.get())}return e},_getReplacedTag:function(t){var e=\"toggle\"===t?this.opts.markup:this.tag;return this.opts.breakline&&\"p\"===e?\"div\":e},_getChildTextNodes:function(t){for(var e=t.childNodes,i=e[0],n=[],o=0;o<=e.length;o++){var s=e[o];if(s&&3!==s.nodeType&&this.inspector.isBlockTag(s.tagName))break;n.push(s)}return{nodes:n,first:i}},_getTextNodesData:function(){var t=this.selection.getNodes({textnodes:!0,keepbr:!0});if(0===t.length)return!1;for(var e=t[0],i=t[t.length-1],n=i,o=!1;!o;){var s=this.selection.getInline(n);n=s?s.nextSibling:n.nextSibling,n&&(3===n.nodeType||\"BR\"!==n.tagName&&!this.inspector.isBlockTag(n.tagName))?t.push(n):o=!0}return{nodes:t,first:e,last:i}},_isToggleFormatType:function(t){for(var e=0,i=t.length,n=0;n<i;n++)t[n]&&this.tag===t[n].tagName.toLowerCase()&&e++;return e===i},_combinePre:function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i].nextElementSibling;if(n&&\"PRE\"===t[i].tagName&&\"PRE\"===n.tagName){var o=$R.dom(t[i]),s=$R.dom(n),r=document.createTextNode(\"\\n\");o.append(r),o.append(s),s.unwrap(\"pre\")}e.push(t[i])}return e},_cleanBlocks:function(t){for(var e=[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],i=this.opts.inlineTags,n=0;n<t.length;n++){var o=t[n].tagName.toLowerCase(),s=$R.dom(t[n]);-1!==e.indexOf(o)?s.find(\"span\").not(\".redactor-component, .non-editable, .redactor-selection-marker\").unwrap():\"pre\"===o&&s.find(i.join(\",\")).not(\".redactor-selection-marker\").unwrap(),this.opts.breakline&&\"div\"===o?s.attr(\"data-redactor-tag\",\"br\"):s.removeAttr(\"data-redactor-tag\"),this.utils.normalizeTextNodes(t[n])}return t}}),$R.add(\"service\",\"inline\",{mixins:[\"formatter\"],init:function(t){this.app=t},format:function(t){return this._isFormat()?(this.type=t.type?t.type:\"set\",this.tag=\"string\"==typeof t?t:t.tag,this.tag=this.tag.toLowerCase(),this.tag=this.arrangeTag(this.tag),\"string\"==typeof t?this.args=!1:this.buildArgs(t),this.selection.isCollapsed()?this.formatCollapsed():this.formatUncollapsed()):[]},_isFormat:function(){var t=this.selection.getCurrent(),e=this.inspector.parse(t),i=e.isComponent()&&!e.isComponentType(\"table\")&&!e.isFigcaption();return!(!t||e.isPre()||e.isCode()||i)},arrangeTag:function(t){var e=this.opts.replaceTags;for(var i in e)t===i&&(t=e[i]);return t},formatCollapsed:function(){var t,e,i,n,o=[],s=this.selection.getInlineFirst(),r=this.selection.getInlines({all:!0}),a=$R.dom(s);if(s){var c=this.inspector.parse(s);if(this.utils.isEmptyHtml(s.innerHTML))if(s.tagName.toLowerCase()===this.tag)if(this.hasSameArgs(s)){this.caret.setAfter(s),a.remove();var l=this.selection.getElement();this.utils.normalizeTextNodes(l)}else\"span\"===this.tag?(o=this.applyArgs([s],!1),this.caret.setStart(s)):o=this.insertInline(o);else c.hasParent([this.tag])?(t=a.closest(this.tag),e=t.get(),this.hasSameArgs(e)?(t.unwrap(),this.caret.setStart(s)):o=this.insertInline(o)):o=this.insertInline(o);else if(s.tagName.toLowerCase()===this.tag)this.hasSameArgs(s)?(n=this.utils.extractHtmlFromCaret(s),i=$R.dom(\"<\"+this.tag+\" />\"),i=this.utils.cloneAttributes(s,i),a.after(i.append(n)),this.caret.setAfter(s)):o=this.insertInline(o);else if(c.hasParent([this.tag]))if(t=a.closest(this.tag),e=t.get(),this.hasSameArgs(e)){n=this.utils.extractHtmlFromCaret(e,e),i=$R.dom(\"<\"+this.tag+\" />\"),i=this.utils.cloneAttributes(e,i);var d,p,u=0;r=r.reverse();for(var h=0;h<r.length;h++)r[h]!==e&&(p=$R.dom(\"<\"+r[h].tagName.toLowerCase()+\">\"),0===u?d=p:d.append(p),u++);t.after(i.append(n)),t.after(d),this.caret.setStart(p)}else o=this.insertInline(o);else o=this.insertInline(o)}else o=this.insertInline(o);return o},insertInline:function(t){var e=document.createElement(this.tag);return t=this.insertion.insertNode(e,\"start\"),this.applyArgs(t,!1)},hasSameArgs:function(t){if(0===t.attributes.length&&!1===this.args)return!0;var e=!0;if(this.args){var i=0;for(var n in this.args){var o=$R.dom(t),s=this.args[n],r=this.utils.toParams(s),a=o.attr(n);if(s)if(\"style\"===n){r=r.trim().replace(/;$/,\"\");for(var c=this.utils.styleToObj(o.attr(\"style\")),l=r.split(\";\"),d=0,p=0;p<l.length;p++){var u=l[p].split(\":\"),h=u[0].trim(),f=u[1].trim();if(-1!==h.search(/color/)){var M=o.css(h);!M||M!==f&&this.utils.rgb2hex(M)!==f||d++}else o.css(h)===f&&d++}d===l.length&&Object.keys(c).length===l.length&&i++}else a===r&&i++;else a&&\"\"!==a||i++}e=i===Object.keys(this.args).length}return e},formatUncollapsed:function(){var t=this.selection.getInlines({all:!0,inside:!0});this.selection.save(),this._convertTags(\"u\"),this._convertTags(\"del\"),this._convertToStrike(t),this.selection.restore(),document.execCommand(\"strikethrough\"),this._clearDecoration(),this.selection.save();var e=this._revertToInlines();e=this.applyArgs(e,!1);for(var i=0;i<e.length;i++){var n=e[i],o=n.tagName.toLowerCase(),s=n.attributes.length;o===this.tag&&0===s&&this.args&&($R.dom(n).unwrap(),e.splice(i,1))}return this.selection.restore(),this._clearEmptyStyle(),e=this._normalizeBlocks(e)},_convertTags:function(t){if(this.tag!==t){this.editor.getElement().find(t).each(function(e){this.utils.replaceToTag(e,\"span\").addClass(\"redactor-convertable-\"+t)}.bind(this))}},_revertTags:function(t){this.editor.getElement().find(\"span.redactor-convertable-\"+t).each(function(e){var i=this.utils.replaceToTag(e,t);i.removeClass(\"redactor-convertable-\"+t),this.utils.removeEmptyAttr(i,\"class\")&&i.removeAttr(\"class\")}.bind(this))},_convertToStrike:function(t){for(var e=this.selection.getText().replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),i=0;i<t.length;i++){var n=this.arrangeTag(t[i].tagName.toLowerCase()),o=t[i],s=$R.dom(o),r=this.hasSameArgs(o);n===this.tag&&(\"span\"===this.tag&&this._isTextSelected(o,e)?s.addClass(\"redactor-convertable-apply\"):r?this._replaceToStrike(s):\"span\"===this.tag?s.addClass(\"redactor-unconvertable-apply\"):r||s.addClass(\"redactor-convertable-apply\"))}},_replaceToStrike:function(t){t.replaceWith(function(){return $R.dom(\"<strike>\").append(t.contents())})},_revertToInlines:function(){var t=[],e=this.editor.getElement();return\"u\"!==this.tag&&e.find(\"u\").unwrap(),e.find(\".redactor-convertable-apply\").each(function(e){var i=$R.dom(e);i.find(\"strike\").unwrap(),this._forceRemoveClass(i,\"redactor-convertable-apply\"),t.push(e)}.bind(this)),e.find(\"span.redactor-unconvertable-apply\").each(function(t){var e=$R.dom(t);this._forceRemoveClass(e,\"redactor-unconvertable-apply\")}.bind(this)),e.find(\"strike\").each(function(e){var i=this.utils.replaceToTag(e,this.tag);t.push(i.get())}.bind(this)),this._revertTags(\"u\"),this._revertTags(\"del\"),t},_normalizeBlocks:function(t){var e=this.opts.inlineTags,i=this.selection.getBlocks();if(i)for(var n=0;n<i.length;n++)if(\"PRE\"===i[n].tagName){var o=$R.dom(i[n]);o.find(e.join(\",\")).not(\".redactor-selection-marker\").each(function(e){-1!==t.indexOf(e)&&(t=this.utils.removeFromArrayByValue(t,e)),$R.dom(e).unwrap()}.bind(this))}return t},_clearDecoration:function(){this.editor.getElement().find(this.opts.inlineTags.join(\",\")).each(function(t){if(\"line-through\"===t.style.textDecoration||\"line-through\"===t.style.textDecorationLine){var e=$R.dom(t);e.css(\"textDecorationLine\",\"\"),e.css(\"textDecoration\",\"\"),e.wrap(\"<strike>\")}})},_clearEmptyStyle:function(){for(var t=this.getInlines(),e=0;e<t.length;e++){this._clearEmptyStyleAttr(t[e]);var i=t[e].childNodes;if(i)for(var n=0;n<i.length;n++)this._clearEmptyStyleAttr(i[n])}},_clearEmptyStyleAttr:function(t){3!==t.nodeType&&this.utils.removeEmptyAttr(t,\"style\")&&(t.removeAttribute(\"style\"),t.removeAttribute(\"data-redactor-style-cache\"))},_forceRemoveClass:function(t,e){t.removeClass(e),this.utils.removeEmptyAttr(t,\"class\")&&t.removeAttr(\"class\")},_isTextSelected:function(t,e){var i=this.utils.removeInvisibleChars(t.textContent);return e===i||-1!==e.search(new RegExp(\"^\"+this.utils.escapeRegExp(i)+\"$\"))},getInlines:function(t){return t?this.selection.getInlines({tags:t,all:!0}):this.selection.getInlines({all:!0})},getElements:function(t){return $R.dom(this.getInlines(t))},clearFormat:function(){this.selection.save();for(var t=this.selection.getInlines({all:!0}),e=0;e<t.length;e++){var i=$R.dom(t[e]);this.selection.getInline(t[e])&&i.unwrap()}this.selection.restore()}}),$R.add(\"service\",\"autoparser\",{init:function(t){this.app=t},observe:function(){var t=this.editor.getElement(),e=t.find(\".redactor-autoparser-object\").each(function(t){var e=$R.dom(t);e.removeClass(\"redactor-autoparser-object\"),\"\"===e.attr(\"class\")&&e.removeAttr(\"class\")});e.length>0&&e.each(function(t){var e,i=!1,n=t.tagName;\"A\"===n?e=\"link\":\"IMG\"===n?e=\"image\":\"IFRAME\"===n&&(e=\"video\"),e&&(i=$R.create(e+\".component\",this.app,t),this.app.broadcast(e+\".inserted\",i),this.app.broadcast(\"autoparse\",e,i))}.bind(this))},format:function(t,e){this._isKey(e)&&this._format(e===this.keycodes.ENTER)},parse:function(t){var e=[\"figure\",\"pre\",\"iframe\",\"code\",\"a\",\"img\"],i=[],n=0;t=this.cleaner.encodePreCode(t);for(var o=0;o<e.length;o++){var s=\"img\"===e[o]?\"<\"+e[o]+\"[^>]*>\":\"<\"+e[o]+\"([\\\\w\\\\W]*?)</\"+e[o]+\">\",r=t.match(new RegExp(s,\"gi\"));if(null!==r)for(var a=0;a<r.length;a++)t=t.replace(r[a],\"#####replaceparse\"+n+\"#####\"),i.push(r[a]),n++}if(this.opts.autoparseImages&&t.match(this.opts.regex.imageurl))for(var c=t.match(this.opts.regex.imageurl),o=0;o<c.length;o++)t=t.replace(c[o],'<img class=\"redactor-autoparser-object\" src=\"'+c[o]+'\">');if(this.opts.autoparseVideo&&(t.match(this.opts.regex.youtube)||t.match(this.opts.regex.vimeo))){var l,d;t.match(this.opts.regex.youtube)?(l=\"//www.youtube.com/embed/$1\",d=this.opts.regex.youtube):t.match(this.opts.regex.vimeo)&&(l=\"//player.vimeo.com/video/$2\",d=this.opts.regex.vimeo);var p=this.component.create(\"video\",'<iframe width=\"500\" height=\"281\" src=\"'+l+'\" frameborder=\"0\" allowfullscreen></iframe>');t=t.replace(d,p.get().outerHTML)}return this.opts.autoparseLinks&&t.match(this.opts.regex.url)&&(t=this._formatLinks(t)),t=this._restoreReplaced(i,t),t=this._restoreReplaced(i,t)},_isKey:function(t){return t===this.keycodes.ENTER||t===this.keycodes.SPACE},_format:function(t){var e=this.selection.getParent(),i=$R.dom(e);if((!e||0===i.closest(\"figure, pre, code, img, a, iframe\").length)&&this.selection.isCollapsed()){var n=this.utils.createInvisibleChar();this.selection.getRange().insertNode(n);var o=this.selection.getCurrent(),s=this.inspector.parse(o),r=$R.dom(o);if(n.parentNode.removeChild(n),o&&3===o.nodeType){var a,c=o.textContent;if(this.opts.autoparseImages&&c.match(this._convertToRegExp(this.opts.regex.imageurl))){var l=s.isList(),d=c.match(this.opts.regex.imageurl),p=l?void 0:\"<figure><img></figure>\",u=this.component.create(\"image\",p);u.setSrc(d[0]),u.addClass(\"redactor-autoparser-object\"),c=c.replace(d[0],u.get().outerHTML),a=\"image\"}else if(this.opts.autoparseVideo&&(c.match(this._convertToRegExp(this.opts.regex.youtube))||c.match(this._convertToRegExp(this.opts.regex.vimeo)))){var h,f;c.match(this.opts.regex.youtube)?(h=\"//www.youtube.com/embed/$1\",f=this.opts.regex.youtube):c.match(this.opts.regex.vimeo)&&(h=\"//player.vimeo.com/video/$2\",f=this.opts.regex.vimeo);var M=this.component.create(\"video\",'<iframe width=\"500\" height=\"281\" src=\"'+h+'\" frameborder=\"0\" allowfullscreen></iframe>');M.addClass(\"redactor-autoparser-object\"),c=c.replace(f,M.get().outerHTML),a=\"video\"}else this.opts.autoparseLinks&&c.match(this._convertToRegExp(this.opts.regex.url))&&(c=this._formatLinks(c,t),a=\"link\");if(a){t?(this.selection.save(),r.replaceWith(c),this.selection.restore()):r.replaceWith(c);var m=this.editor.getElement(),b=m.find(\".redactor-autoparser-object\").removeClass(\"redactor-autoparser-object\");if(b=\"link\"===a?$R.create(\"link.component\",this.app,b):b,\"link\"===a)t||this.caret.setAfter(b),this.app.broadcast(\"link.inserted\",b);else{this.caret.setAfter(b);var g=b.clone();b.remove(),b=this.insertion.insertHtml(g),b=this.component.build(b)}this.app.broadcast(\"autoparse\",a,b)}}}},_formatLinks:function(t,e){for(var i=t.match(this.opts.regex.url),n={},o=0;o<i.length;o++){e&&-1!==i[o].search(/\\.$/)&&(i[o]=i[o].replace(/\\.$/,\"\"));var s=i[o],r=s,a=null!==s.match(/(https?|ftp):\\/\\//i)?\"\":\"http://\",c=-1!==[\"/\",\"&\",\"=\"].indexOf(s.slice(-1))?\"\":\"\\\\b\",l=!1!==this.opts.pasteLinkTarget?' target=\"'+this.opts.pasteLinkTarget+'\"':\"\";r=r.length>this.opts.linkSize?r.substring(0,this.opts.linkSize)+\"...\":r,r=-1===r.search(\"%\")?decodeURIComponent(r):r;n[\"(\"+s.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")+c+\")\"]='<a href=\"'+a+s.trim()+'\"'+l+' class=\"redactor-autoparser-object\">'+r.trim()+\"</a>\"}for(var d in n)t=t.replace(new RegExp(d,\"g\"),n[d]);return t},_restoreReplaced:function(t,e){for(var i=0;i<t.length;i++)e=e.replace(\"#####replaceparse\"+i+\"#####\",t[i]);return e},_convertToRegExp:function(t){return new RegExp(String(t).replace(/^\\//,\"\").replace(/\\/ig$/,\"\").replace(/\\/gi$/,\"\")+\"$\",\"gi\")}}),$R.add(\"service\",\"storage\",{init:function(t){this.app=t,this.data=[]},observeImages:function(){this.editor.getElement().find(\"[data-image]\").each(this._addImage.bind(this))},observeFiles:function(){this.editor.getElement().find(\"[data-file]\").each(this._addFile.bind(this))},setStatus:function(t,e){this.data[t].status=e},getChanges:function(){var t=this.editor.getElement();for(var e in this.data){var i=this.data[e],n=t.find(\"[data-\"+i.type+'=\"'+i.id+'\"]');this.setStatus(i.id,0!==n.length)}return this.data},add:function(t,e){var i=$R.dom(e),n=i.attr(\"data-\"+t);this.data[n]={type:t,status:!0,node:i.get(),id:i.attr(\"data-\"+t)}},_addImage:function(t){this.add(\"image\",t)},_addFile:function(t){this.add(\"file\",t)}}),$R.add(\"service\",\"utils\",{init:function(t){this.app=t},isEmpty:function(t){var e=!1;return t=$R.dom(t).get(),t&&(e=3===t.nodeType?\"\"===t.textContent.trim().replace(/\\n/,\"\"):\"\"===t.innerHTML),e},isEmptyHtml:function(t,e,i){return t=this.removeInvisibleChars(t),t=t.replace(/&nbsp;/gi,\"\"),t=t.replace(/<\\/?br\\s?\\/?>/g,e?\"br\":\"\"),t=t.replace(/\\s/g,\"\"),t=t.replace(/^<p>[^\\W\\w\\D\\d]*?<\\/p>$/i,\"\"),t=t.replace(/^<div>[^\\W\\w\\D\\d]*?<\\/div>$/i,\"\"),i&&(t=t.replace(/<ul(.*?[^>])>$/i,\"ul\"),t=t.replace(/<ol(.*?[^>])>$/i,\"ol\")),t=t.replace(/<hr(.*?[^>])>$/i,\"hr\"),t=t.replace(/<iframe(.*?[^>])>$/i,\"iframe\"),t=t.replace(/<source(.*?[^>])>$/i,\"source\"),t=t.replace(/<[^\\/>][^>]*><\\/[^>]+>/gi,\"\"),t=t.replace(/<[^\\/>][^>]*><\\/[^>]+>/gi,\"\"),\"\"===(t=t.trim())},trimSpaces:function(t){return t=this.removeInvisibleChars(t.trim())},createInvisibleChar:function(){return document.createTextNode(this.opts.markerChar)},searchInvisibleChars:function(t){return t.search(/^\\uFEFF$/g)},removeInvisibleChars:function(t){return t.replace(/\\uFEFF/g,\"\")},trimInvisibleChars:function(t){if(this.selection.isCollapsed()){var e=this.selection.getCurrent(),i=\"left\"===t?this.selection.getTextBeforeCaret():this.selection.getTextAfterCaret();if(e&&3===e.nodeType&&0===this.searchInvisibleChars(i))if(\"left\"===t)$R.dom(e).replaceWith(e.textContent.trim());else{var n=this.offset.get();this.offset.set({start:n.start+1,end:n.end+1})}}},buildWrapper:function(t){return $R.dom(\"<div>\").html(t)},getWrapperHtml:function(t){var e=t.html();return t.remove(),e},createTmpContainer:function(t){var e=$R.dom(\"<div>\");return\"string\"==typeof t?e.html(t):e.append($R.dom(t).clone(!0)),e.get()},createFragment:function(t){for(var e,i,n,o=this.createTmpContainer(t),s=document.createDocumentFragment(),r=[],a=0;e=o.firstChild;){a++;var c=s.appendChild(e);1===a&&(i=c),r.push(c),n=c}return{frag:s,first:i,last:n,nodes:r}},isFragment:function(t){return\"object\"==typeof t&&t.frag},parseHtml:function(t){var e=this.createTmpContainer(t);return{html:e.innerHTML,nodes:e.childNodes}},splitNode:function(t,e,i,n){e=this.isFragment(e)?e.frag:e;var o;o=n?this.inspector.isInlineTag(t.tagName)?t:this.selection.getInline(t):this.inspector.isBlockTag(t.tagName)?t:this.selection.getBlock(t);var s=$R.dom(o);if(!n&&this.isEmptyHtml(o.innerHTML,!0))return s.after(e),s.remove(),e;var r=s.get().tagName.toLowerCase(),a=this.caret.isEnd(o),c=this.caret.isStart(o);if(!a&&!c){var l=this.extractHtmlFromCaret(n),d=$R.dom(\"<\"+r+\" />\");d=this.cloneAttributes(o,d),s.after(d.append(l))}if(c)return s.before(e);if(i)return s.append(e);e=s.after(e);var p=s.html();return p=this.removeInvisibleChars(p),p=p.replace(/&nbsp;/gi,\"\"),\"\"===p&&s.remove(),e},extractHtmlFromCaret:function(t,e){var i=this.selection.getRange();if(i&&(e=e||(t?this.selection.getInline():this.selection.getBlock()))){var n=i.cloneRange();return n.selectNodeContents(e),n.setStart(i.endContainer,i.endOffset),n.extractContents()}},createMarkup:function(t){var e=document.createElement(this.opts.markup);this.opts.breakline&&e.setAttribute(\"data-redactor-tag\",\"br\"),$R.dom(t).after(e),this.caret.setStart(e)},getNode:function(t){var e=$R.dom(t).get(),i=this.editor.getElement().get();return void 0===t?i:e||!1},findSiblings:function(t,e){for(t=$R.dom(t).get(),e=\"next\"===e?\"nextSibling\":\"previousSibling\";t=t[e];)if((3!==t.nodeType||\"\"!==t.textContent.trim())&&\"BR\"!==t.tagName)return t;return!1},getElementsFromHtml:function(t,e,i){var n=document.createElement(\"div\");n.innerHTML=t;var o=n.querySelectorAll(e);return function(t,e){if(\"number\"==typeof this.length&&\"function\"==typeof t){var i=[];if(\"object\"==typeof this)for(var n=0;n<this.length;n++){if(!(n in this))return;i[n]=t.call(e||this,this[n],n,this)}return i}}.call(o,function(t){var e=t.getAttribute(\"data-redactor-type\");if(!i||!e||e!==i)return t.outerHTML})},getChildNodes:function(t,e,i){t=t&&t.nodeType&&11===t.nodeType?t:$R.dom(t).get();var n=t.childNodes,o=[];if(n)for(var s=0;s<n.length;s++)if(!(!0===i&&3===n[s].nodeType||3===n[s].nodeType&&this.isEmpty(n[s])||(o.push(n[s]),!1===e))){var r=this.getChildNodes(n[s],i);r.length>0&&(o=o.concat(r))}return o},getChildElements:function(t){return this.getChildNodes(t,!0,!0)},getFirstNode:function(t){return this._getFirst(this.getChildNodes(t,!1))},getLastNode:function(t){return this._getLast(this.getChildNodes(t,!1))},getFirstElement:function(t){return this._getFirst(this.getChildNodes(t,!1,!0))},getLastElement:function(t){return this._getLast(this.getChildNodes(t,!1,!0))},replaceToTag:function(t,e){return $R.dom(t).replaceWith(function(t){var i=$R.dom(\"<\"+e+\">\").append($R.dom(t).contents());if(t.attributes)for(var n=t.attributes,o=0;o<n.length;o++)i.attr(n[o].nodeName,n[o].value);return i})},ucfirst:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},removeFromArrayByValue:function(t,e){for(var i,n=arguments,o=n.length;o>1&&t.length;)for(e=n[--o];-1!==(i=t.indexOf(e));)t.splice(i,1);return t},removeEmptyAttr:function(t,e){var i=$R.dom(t);return void 0===i.attr(e)||null===i.attr(e)||\"\"===i.attr(e)&&(i.removeAttr(e),!0)},cloneAttributes:function(t,e){t=$R.dom(t).get(),e=$R.dom(e);for(var i=t.attributes,n=i.length;n--;){var o=i[n];e.attr(o.name,o.value)}return e},toParams:function(t){if(\"object\"!=typeof t)return t;var e=Object.keys(t);if(!e.length)return\"\";for(var i=\"\",n=0;n<e.length;n++){var o=e[n];i+=o+\":\"+t[o]+\";\"}return i},styleToObj:function(t){var e={};if(t)for(var i=t.replace(/;$/,\"\").split(\";\"),n=0;n<i.length;n++){var o=i[n].split(\":\");e[o[0].trim()]=o[1].trim()}return e},checkProperty:function(t){for(var e=arguments[1]&&Array.isArray(arguments[1])?arguments[1]:[].slice.call(arguments,1),i=0;i<e.length;i++){if(!t||void 0===t[e[i]])return!1;t=t[e[i]]}return t},extendData:function(t,e){for(var i in e)if(\"elements\"===i){var n=$R.dom(e[i]);n.each(function(e){var i=$R.dom(e);if(\"FORM\"===e.tagName){var n=i.serialize(!0);for(var o in n)t=this._setData(t,o,n[o])}else{var s=i.attr(\"name\")?i.attr(\"name\"):i.attr(\"id\");t=this._setData(t,s,i.val())}}.bind(this))}else t=this._setData(t,i,e[i]);return t},_setData:function(t,e,i){return t instanceof FormData?t.append(e,i):t[e]=i,t},normalizeTextNodes:function(t){(t=$R.dom(t).get())&&t.normalize()},isRgb:function(t){return 0===t.search(/^rgb/i)},rgb2hex:function(t){return t=t.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i),t&&4===t.length?\"#\"+(\"0\"+parseInt(t[1],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[2],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[3],10).toString(16)).slice(-2):\"\"},hex2long:function(t){return-1!==t.search(/^#/)&&4===t.length&&(t=\"#\"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]),t},escapeRegExp:function(t){return t.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")},getRandomId:function(){for(var t=\"\",e=\"abcdefghijklmnopqrstuvwxyz0123456789\",i=0;i<12;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},_getFirst:function(t){return 0!==t.length&&t[0]},_getLast:function(t){return 0!==t.length&&t[t.length-1]}}),$R.add(\"service\",\"progress\",{init:function(t){this.app=t,this.$box=null,this.$bar=null},show:function(){this._is()||this._build(),this.$box.show()},hide:function(){this._is()&&this.animate.start(this.$box,\"fadeOut\",this._destroy.bind(this))},update:function(t){this.show(),this.$bar.css(\"width\",t+\"%\")},_is:function(){return null!==this.$box},_build:function(){this.$bar=$R.dom(\"<span />\"),this.$box=$R.dom('<div id=\"redactor-progress\" />'),this.$box.append(this.$bar),this.$body.append(this.$box)},_destroy:function(){this._is()&&this.$box.remove(),this.$box=null,this.$bar=null}}),$R.add(\"module\",\"starter\",{init:function(t){this.app=t,this.opts=t.opts,this.plugin=t.plugin,this.module=t.module},onstart:function(){var t=[\"element\",\"container\",\"source\",\"editor\",\"statusbar\",\"toolbar\"],e=[\"element\",\"container\",\"source\",\"editor\",\"statusbar\",\"contextbar\",\"input\"];this._startStop(\"start\",this.app,t),this._startStop(\"start\",this.module,e)},onstop:function(){var t=[\"observer\",\"element\",\"container\",\"source\",\"editor\",\"contextbar\"];this._startStop(\"stop\",this.module,t)},onenable:function(){var t=[\"observer\",\"toolbar\"],e=this.opts.plugins;this._startStop(\"start\",this.module,t),this._startStop(\"start\",this.plugin,e)},ondisable:function(){var t=[\"observer\",\"toolbar\"],e=this.opts.plugins;this._startStop(\"stop\",this.module,t),this._startStop(\"stop\",this.plugin,e)},_startStop:function(t,e,i){for(var n=0;n<i.length;n++)void 0!==e[i[n]]&&this.app.callInstanceMethod(e[i[n]],t)}}),$R.add(\"module\",\"element\",{init:function(t){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.namespace=t.namespace,this.element=t.element,this.rootOpts=$R.extend({},!0,$R.options,t.rootOpts)},start:function(){this._build(),this._buildModes(),this._buildMarkup()},stop:function(){this.element.getElement().removeData(this.namespace+\"-uuid\")},_build:function(){this.element.getElement().data(this.namespace+\"-uuid\",this.uuid)},_buildModes:function(){var t=this.element.getType();\"inline\"===t&&this._redefineOptions(this.opts.modes.inline),\"div\"===t&&this._redefineOptions(this.opts.modes.original),\"inline\"!==t&&(this._isRootOption(\"styles\")&&this.rootOpts.styles&&(this.opts.styles=!0),this._isRootOption(\"source\")&&!this.rootOpts.source&&(this.opts.showSource=!1))},_buildMarkup:function(){\"inline\"===this.element.getType()?this.opts.emptyHtml=\"\":this.opts.breakline?(this.opts.markup=\"div\",this.opts.emptyHtml='<div data-redactor-tag=\"br\">'+this.opts.markerChar+\"</div>\"):this.opts.emptyHtml=\"<\"+this.opts.markup+\"></\"+this.opts.markup+\">\"},_redefineOptions:function(t){for(var e in t)this.opts[e]=t[e]},_isRootOption:function(){return void 0!==this.rootOpts.styles}}),$R.add(\"module\",\"editor\",{init:function(t){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.editor=t.editor,this.source=t.source,this.element=t.element,this.component=t.component,this.container=t.container,this.inspector=t.inspector,this.autoparser=t.autoparser,this.placeholder=!1,this.events=!1},onenable:function(){this.enable()},ondisable:function(){this.disable()},onenablefocus:function(){this._enableFocus()},oncontextmenu:function(t){this.component.setOnEvent(t,!0)},onclick:function(t){this.component.setOnEvent(t)},onkeyup:function(t){this.inspector.parse(t.target).isComponent()||this.component.clearActive()},onenablereadonly:function(){this._enableReadOnly()},ondisablereadonly:function(){this._disableReadOnly()},onautoparseobserve:function(){this.autoparser.observe()},onplaceholder:{build:function(){this._buildPlaceholder()},toggle:function(){this._togglePlacehodler()}},start:function(){this._build(),this._buildEvents(),this._buildOptions(),this._buildAccesibility()},stop:function(){var t=this.editor.getElement(),e=this.container.getElement(),i=[\"redactor-in\",\"redactor-in-\"+this.uuid,\"redactor-structure\",\"redactor-placeholder\",this.opts.stylesClass],n=[\"redactor-focus\",\"redactor-blur\",\"redactor-over\",\"redactor-styles-on\",\"redactor-styles-off\",\"redactor-toolbar-on\",\"redactor-text-labeled-on\",\"redactor-source-view\"];t.removeAttr(\"spellcheck\"),t.removeAttr(\"dir\"),t.removeAttr(\"contenteditable\"),t.removeAttr(\"placeholder\"),t.removeAttr(\"data-gramm_editor\"),t.removeClass(i.join(\" \")),e.removeClass(n.join(\" \")),this._destroyEvents(),0===t.get().classList.length&&t.removeAttr(\"class\")},enable:function(){var t=this.editor.getElement(),e=this.container.getElement();t.addClass(\"redactor-in redactor-in-\"+this.uuid),t.attr({contenteditable:!0}),this.opts.structure&&t.addClass(\"redactor-structure\"),!this.opts.toolbar||this.opts.air||this.opts.toolbarExternal||e.addClass(\"redactor-toolbar-on\"),this._disableBrowsersEditing()},disable:function(){var t=this.editor.getElement(),e=this.container.getElement();t.removeClass(\"redactor-in redactor-in-\"+this.uuid),t.removeClass(\"redactor-structure\"),t.removeAttr(\"contenteditable\"),e.addClass(\"redactor-toolbar-on\")},_build:function(){var t=this.editor.getElement(),e=this.element.getElement(),i=this.container.getElement();i.addClass(\"redactor-blur\"),this.opts.grammarly||t.attr(\"data-gramm_editor\",!1),this.opts.styles?(t.addClass(this.opts.stylesClass),i.addClass(\"redactor-styles-on\")):i.addClass(\"redactor-styles-off\"),this.opts.buttonsTextLabeled&&i.addClass(\"redactor-text-labeled-on\"),this.element.isType(\"textarea\")&&e.before(t)},_buildEvents:function(){this.events=$R.create(\"editor.events\",this.app)},_buildOptions:function(){var t=this.editor.getElement();t.attr(\"dir\",this.opts.direction),this.opts.tabindex&&t.attr(\"tabindex\",this.opts.tabindex),this.opts.minHeight&&t.css(\"min-height\",this.opts.minHeight),this.opts.maxHeight&&t.css(\"max-height\",this.opts.maxHeight),this.opts.maxWidth&&t.css({\"max-width\":this.opts.maxWidth,margin:\"auto\"})},_buildAccesibility:function(){this.editor.getElement().attr({\"aria-labelledby\":\"redactor-voice-\"+this.uuid,role:\"presentation\"})},_buildPlaceholder:function(){this.placeholder=$R.create(\"editor.placeholder\",this.app)},_enableFocus:function(){this.opts.showSource?this._enableFocusSource():this._enableFocusEditor()},_enableFocusSource:function(){var t=this.source.getElement();this.opts.focus?(t.focus(),t.get().setSelectionRange(0,0)):this.opts.focusEnd&&t.focus()},_enableFocusEditor:function(){this.opts.focus?setTimeout(this.editor.startFocus.bind(this.editor),100):this.opts.focusEnd&&setTimeout(this.editor.endFocus.bind(this.editor),100)},_togglePlacehodler:function(){this.placeholder&&this.placeholder.toggle()},_disableBrowsersEditing:function(){try{document.execCommand(\"enableObjectResizing\",!1,!1),document.execCommand(\"enableInlineTableEditing\",!1,!1),document.execCommand(\"AutoUrlDetect\",!1,!1);var t=this.editor.getElement(),e=t.get();e.addEventListener?e.addEventListener(\"mscontrolselect\",function(t){t.preventDefault()}):e.attachEvent(\"oncontrolselect\",function(t){t.returnValue=!1})}catch(t){}},_destroyEvents:function(){this.events&&this.events.destroy()},_enableReadOnly:function(){var t=this.editor.getElement();this._getEditables(t).removeAttr(\"contenteditable\"),t.removeAttr(\"contenteditable\"),t.addClass(\"redactor-read-only\"),this.events&&this.events.destroy()},_disableReadOnly:function(){var t=this.editor.getElement();this._getEditables(t).attr({contenteditable:!0}),t.removeClass(\"redactor-read-only\"),t.attr({contenteditable:!0}),this._buildEvents()},_getEditables:function(t){return t.find(\"figcaption, td, th\")}}),$R.add(\"class\",\"editor.placeholder\",{init:function(t){this.app=t,this.opts=t.opts,this.editor=t.editor,this.element=t.element,this.build()},build:function(){var t=this.element.getElement(),e=this.editor.getElement();if(!1!==this.opts.placeholder||t.attr(\"placeholder\")){var i=!1!==this.opts.placeholder?this.opts.placeholder:t.attr(\"placeholder\");e.attr(\"placeholder\",i),this.toggle()}},toggle:function(){return this.editor.isEmpty(!0)?this.show():this.hide()},show:function(){this.editor.getElement().addClass(\"redactor-placeholder\")},hide:function(){this.editor.getElement().removeClass(\"redactor-placeholder\")}}),$R.add(\"class\",\"editor.events\",{init:function(t){this.app=t,this.opts=t.opts,this.$doc=t.$doc,this.uuid=t.uuid,this.source=t.source,this.editor=t.editor,this.cleaner=t.cleaner,this.container=t.container,this.insertion=t.insertion,\nthis.inspector=t.inspector,this.selection=t.selection,this.component=t.component,this.blurNamespace=\".redactor-blur.\"+this.uuid,this.eventsList=[\"paste\",\"click\",\"contextmenu\",\"keydown\",\"keyup\",\"mouseup\",\"touchstart\",\"cut\",\"copy\",\"dragenter\",\"dragstart\",\"drop\",\"dragover\",\"dragleave\"],this._init()},destroy:function(){this.editor.getElement().off(\".redactor-focus\"),this.$doc.off(\"keyup\"+this.blurNamespace+\" mousedown\"+this.blurNamespace),this._loop(\"off\")},focus:function(t){var e=this.container.getElement();this.editor.isPasting()||e.hasClass(\"redactor-focus\")||(e.addClass(\"redactor-focus\"),e.removeClass(\"redactor-blur\"),this.app.broadcast(\"observe\",t),this.app.broadcast(\"focus\",t),this.isFocused=!0,this.isBlured=!1)},blur:function(t){var e=this.container.getElement(),i=$R.dom(t.target),n=[\".redactor-in-\"+this.uuid,\".redactor-toolbar\",\".redactor-dropdown\",\".redactor-context-toolbar\",\"#redactor-modal\",\"#redactor-image-resizer\"];this.app.broadcast(\"originalblur\",t),this.app.stopBlur||this.app.isStarted()&&!this.editor.isPasting()&&0===i.closest(n.join(\",\")).length&&(this.isBlured||e.hasClass(\"redactor-blur\")||(e.removeClass(\"redactor-focus\"),e.addClass(\"redactor-blur\"),this.app.broadcast(\"blur\",t),this.isFocused=!1,this.isBlured=!0))},cut:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e);this.app.broadcast(\"state\",t),this.component.isNonEditable(e)&&(this._passSelectionToClipboard(t,i,!0),t.preventDefault())},copy:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e);this.app.broadcast(\"state\",t),this.component.isNonEditable(e)&&(this._passSelectionToClipboard(t,i,!1),t.preventDefault())},drop:function(t){if(t=t.originalEvent||t,t.stopPropagation(),this._removeOverClass(),!1===this.opts.dragUpload)return void t.preventDefault();if(this.app.isDragComponentInside()){var e=$R.dom(this.app.getDragComponentInside()),i=e.clone(!0);return this.insertion.insertToPoint(t,i),e.remove(),this.app.setDragComponentInside(!1),this.app.broadcast(\"state\",t),this.app.broadcast(\"drop\",t),this.app.broadcast(\"image.observe\",t),void t.preventDefault()}if(this.app.isDragInside()&&this.opts.input){this.insertion.insertPoint(t);var n=t.dataTransfer,o=n.getData(\"text/html\"),s=this.selection.getRange();if(s){var r=this.selection.getBlocks();s.deleteContents();for(var a=0;a<r.length;a++)\"\"===r[a].innerHTML&&$R.dom(r[a]).remove()}return $R.create(\"input.paste\",this.app,t,!0,o,!0),this.app.broadcast(\"state\",t),this.app.broadcast(\"drop\",t),this.app.setDragInside(!1),void t.preventDefault()}this.app.broadcast(\"state\",t),this.app.broadcast(\"paste\",t,t.dataTransfer),this.app.broadcast(\"drop\",t)},dragenter:function(t){t.preventDefault()},dragstart:function(t){this.app.setDragComponentInside(!1),this.app.setDragInside(!1);var e=this.inspector.parse(t.target);!e.isComponent()||e.isComponentEditable()||e.isFigcaption()?this.selection.is()&&!this.selection.isCollapsed()&&(this.app.setDragInside(!0),this._setDragData(t)):this.app.setDragComponentInside(e.getComponent()),this.app.broadcast(\"dragstart\",t)},dragover:function(t){this.app.broadcast(\"dragover\",t)},dragleave:function(t){this.app.broadcast(\"dragleave\",t)},paste:function(t){this.app.broadcast(\"paste\",t)},contextmenu:function(t){this.editor.disableNonEditables(),setTimeout(function(){this.editor.enableNonEditables(),this.app.broadcast(\"contextmenu\",t)}.bind(this),0)},click:function(t){if(3===t.detail){t.preventDefault();var e=this.selection.getBlock(),i=document.createRange();i.selectNodeContents(e),this.selection.setRange(i)}var n=$R.dom(t.target);if(n.hasClass(\"redactor-in\")){var o=n.offset().top,s=parseFloat(n.css(\"padding-bottom\"));o+n.height()-2*s<t.pageY&&this.app.broadcast(\"bottomclick\",t)}this.app.broadcast(\"state\",t),this.app.broadcast(\"click\",t)},keydown:function(t){if(this.app.broadcast(\"state\",t),!1===this.app.broadcast(\"keydown\",t))return t.preventDefault()},keyup:function(t){this.app.broadcast(\"keyup\",t)},mouseup:function(t){this.app.broadcast(\"observe\",t),this.app.broadcast(\"state\",t)},touchstart:function(t){this.app.broadcast(\"observe\",t),this.app.broadcast(\"state\",t)},_init:function(){this.editor.getElement().on(\"focus.redactor-focus click.redactor-focus\",this.focus.bind(this)),this.$doc.on(\"keyup\"+this.blurNamespace+\" mousedown\"+this.blurNamespace,this.blur.bind(this)),this._loop(\"on\")},_removeOverClass:function(){this.editor.getElement().removeClass(\"over\")},_loop:function(t){for(var e=this.editor.getElement(),i=0;i<this.eventsList.length;i++){var n=this.eventsList[i]+\".redactor-events\",o=this.eventsList[i];e[t](n,this[o].bind(this))}},_passAllToClipboard:function(t){var e=t.clipboardData,i=this.source.getCode();e.setData(\"text/html\",i),e.setData(\"text/plain\",i.toString().replace(/\\n$/,\"\"))},_passSelectionToClipboard:function(t,e,i){var n=t.clipboardData,o=e.getComponent(),s=$R.dom(o),r=s.clone();r.find(\".redactor-component-caret\").remove(),r.removeClass(\"redactor-component-active\"),r.removeAttr(\"contenteditable\"),r.removeAttr(\"tabindex\");var a=r.get().outerHTML;i&&this.component.remove(o),n.setData(\"text/html\",a),n.setData(\"text/plain\",a.toString().replace(/\\n$/,\"\"))},_setDragData:function(t){t=t.originalEvent||t;var e=t.dataTransfer;e.effectAllowed=\"move\",e.setData(\"text/Html\",this.selection.getHtml())}}),$R.add(\"module\",\"container\",{init:function(t){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.lang=t.lang,this.element=t.element,this.container=t.container},start:function(){this._build(),this._buildAccesibility()},stop:function(){var t=this.element.getElement(),e=this.container.getElement();e.after(t),e.remove(),t.show()},_build:function(){var t=this.element.getElement(),e=this.container.getElement();e.addClass(\"redactor-box\"),e.attr(\"dir\",this.opts.direction),this.element.isType(\"inline\")&&e.addClass(\"redactor-inline\"),t.after(e),e.append(t)},_buildAccesibility:function(){var t=this.container.getElement(),e=$R.dom(\"<span />\");e.addClass(\"redactor-voice-label\"),e.attr({id:\"redactor-voice-\"+this.uuid,\"aria-hidden\":!1}),e.html(this.lang.get(\"accessibility-help-label\")),t.prepend(e)}}),$R.add(\"module\",\"source\",{init:function(t){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.utils=t.utils,this.element=t.element,this.source=t.source,this.editor=t.editor,this.toolbar=t.toolbar,this.cleaner=t.cleaner,this.component=t.component,this.container=t.container,this.autoparser=t.autoparser,this.selection=t.selection,this.syncedHtml=\"\"},onstartcode:function(){var t=this.source.getStartedContent(),e=this.editor.getElement(),i=this.source.getElement();this.opts.autoparse&&this.opts.autoparseStart&&(t=this.autoparser.parse(t));var n=this.cleaner.input(t,!0,!0),o=this.cleaner.output(n);e.html(n),i.val(o),this.syncedHtml=o,this.app.broadcast(\"placeholder.build\"),this.app.broadcast(\"autoparseobserve\"),this.component.executeScripts()},onstartcodeshow:function(){this.show()},ontrytosync:function(){this.sync()},start:function(){this._build(),this._buildClasses()},stop:function(){var t=this.element.getElement(),e=this.source.getElement();t.removeClass(\"redactor-source redactor-source-open\"),e.off(\"input.redactor-source\"),e.removeAttr(\"data-gramm_editor\"),0===e.get().classList.length&&e.removeAttr(\"class\"),this.source.isNameGenerated()||t.removeAttr(\"name\"),this.element.isType(\"textarea\")||e.remove()},getCode:function(){return this.source.getCode()},toggle:function(){if(this.opts.source){return this.source.getElement().hasClass(\"redactor-source-open\")?this.hide():this.show()}},show:function(){if(this.opts.source){var t=this.editor.getElement(),e=this.source.getElement(),i=this.container.getElement(),n=e.val();this.app.isStarted()&&(n=this.app.broadcast(\"source.open\",n));var o=$R.create(\"source.selection\",this.app),s=o.insertMarkersToEditor();s=this.cleaner.output(s,!1),s=s.trim();var r=t.height();t.hide(),e.height(r),e.val(n.trim()),e.show(),e.addClass(\"redactor-source-open\"),e.on(\"input.redactor-source-events\",this._onChangedSource.bind(this)),e.on(\"keydown.redactor-source-events\",this._onTabKey.bind(this)),e.on(\"focus.redactor-source-events\",this._onFocus.bind(this)),i.addClass(\"redactor-source-view\"),o.setSelectionOffsetSource(s),setTimeout(function(){this._disableButtons(),this._setActiveSourceButton()}.bind(this),100),this.app.isStarted()&&this.app.broadcast(\"source.opened\")}},hide:function(){if(this.opts.source){var t=this.editor.getElement(),e=this.source.getElement(),i=this.container.getElement(),n=e.val(),o=$R.create(\"source.selection\",this.app);n=o.insertMarkersToSource(n),n=this.cleaner.input(n,!0),n=this.utils.isEmptyHtml(n)?this.opts.emptyHtml:n,n=this.app.broadcast(\"source.close\",n),this._enableButtons(),this._setInactiveSourceButton(),e.hide(),e.removeClass(\"redactor-source-open\"),e.off(\".redactor-source-events\"),t.show(),t.html(n),i.removeClass(\"redactor-source-view\"),setTimeout(function(){o.isOffset()?this.selection.restoreMarkers():o.isOffsetEnd()?this.editor.endFocus():this.editor.startFocus(),this.component.executeScripts()}.bind(this),0),this.app.broadcast(\"source.closed\")}},sync:function(){var t=this,e=this.editor.getElement(),i=e.html();i=this.app.broadcast(\"syncBefore\",i),i=this.cleaner.output(i),this._isSync(i)&&(this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(function(){t._syncing(i)},200))},_build:function(){var t=this.source.getElement(),e=this.element.getElement();t.hide(),this.opts.grammarly||t.attr(\"data-gramm_editor\",!1),this.element.isType(\"textarea\")||e.after(t)},_buildClasses:function(){this.source.getElement().addClass(\"redactor-source\")},_syncing:function(t){t=this.app.broadcast(\"syncing\",t),this.source.getElement().val(t),this.app.broadcast(\"synced\",t),this.app.broadcast(\"changed\",t)},_isSync:function(t){return this.syncedHtml!==t&&(this.syncedHtml=t,!0)},_onChangedSource:function(){var t=this.source.getElement(),e=t.val();this.app.broadcast(\"changed\",e),this.app.broadcast(\"source.changed\",e)},_onTabKey:function(t){if(9!==t.keyCode)return!0;t.preventDefault();var e=this.source.getElement(),i=e.get(),n=i.selectionStart;e.val(e.val().substring(0,n)+\"    \"+e.val().substring(i.selectionEnd)),i.selectionStart=i.selectionEnd=n+4},_onFocus:function(){this.app.broadcast(\"sourcefocus\")},_disableButtons:function(){this.toolbar.disableButtons()},_enableButtons:function(){this.toolbar.enableButtons()},_setActiveSourceButton:function(){var t=this.toolbar.getButton(\"html\");t.enable(),t.setActive()},_setInactiveSourceButton:function(){this.toolbar.getButton(\"html\").setInactive()}}),$R.add(\"class\",\"source.selection\",{init:function(t){this.app=t,this.utils=t.utils,this.source=t.source,this.editor=t.editor,this.marker=t.marker,this.component=t.component,this.selection=t.selection,this.markersOffset=!1,this.markersOffsetEnd=!1},insertMarkersToEditor:function(){var t=this.editor.getElement(),e=this.marker.build(\"start\"),i=this.marker.build(\"end\"),n=this.component.getActive();if(n){this.marker.remove();var o=$R.dom(n);o.after(i),o.after(e)}else window.getSelection&&this.selection.is()&&this.marker.insert(\"both\");return this._getHtmlAndRemoveMarkers(t)},setSelectionOffsetSource:function(t){var e=0,i=0,n=this.source.getElement();if(\"\"!==t){var o=this.utils.removeInvisibleChars(this.marker.buildHtml(\"start\")),s=this.utils.removeInvisibleChars(this.marker.buildHtml(\"end\"));e=this._strpos(t,o),i=this._strpos(t,s)-s.toString().length-2,!1===e&&(e=0,i=0)}n.get().setSelectionRange(e,i),n.get().scrollTop=0,setTimeout(function(){n.focus()}.bind(this),0)},isOffset:function(){return this.markersOffset},isOffsetEnd:function(){return this.markersOffsetEnd},insertMarkersToSource:function(t){var e=this.source.getElement(),i=this.marker.buildHtml(\"start\"),n=this.marker.buildHtml(\"end\"),o=i.toString().length,s=this._enlargeOffset(t,e.get().selectionStart),r=this._enlargeOffset(t,e.get().selectionEnd);return s===t.length?this.markersOffsetEnd=!0:0!==s&&0!==r?(this.markersOffset=!0,t=t.substr(0,s)+i+t.substr(s),t=t.substr(0,r+o)+n+t.substr(r+o)):this.markersOffset=!1,t},_getHtmlAndRemoveMarkers:function(t){var e=t.html();return t.find(\".redactor-selection-marker\").remove(),e},_strpos:function(t,e,i){var n=t.indexOf(e,i);return n>=0&&n},_enlargeOffset:function(t,e){var i=t.length,n=0;if(\">\"===t[e])n++;else for(var o=e;o<=i&&(n++,\">\"!==t[o]);o++)if(\"<\"===t[o]||o===i){n=0;break}return e+n}}),$R.add(\"module\",\"observer\",{init:function(t){this.app=t,this.editor=t.editor,this.observerUnit=!1},start:function(){if(window.MutationObserver){var t=this.editor.getElement(),e=t.get();this.observerUnit=this._build(e),this.observerUnit.observe(e,{attributes:!0,subtree:!0,childList:!0,characterData:!0,characterDataOldValue:!0})}},stop:function(){this.observerUnit&&this.observerUnit.disconnect()},_build:function(t){var e=this;return new MutationObserver(function(i){e._observe(i[i.length-1],t)})},_observe:function(t,e){this.app.isReadOnly()||\"attributes\"===t.type&&t.target===e||(this.app.broadcast(\"observe\"),this.app.broadcast(\"trytosync\"),this.app.broadcast(\"placeholder.toggle\"))}}),$R.add(\"module\",\"clicktoedit\",{init:function(t){this.app=t,this.opts=t.opts,this.source=t.source,this.editor=t.editor,this.container=t.container,this.selection=t.selection},onstartclicktoedit:function(){this.start()},onenablereadonly:function(){this._isEnabled()||this.stop()},ondisablereadonly:function(){this._isEnabled()||this.start()},onstop:function(){this.stop()},start:function(){this._build()},stop:function(){this.buttonSave&&this.buttonSave.stop(),this.buttonCancel&&this.buttonCancel.stop(),this._destroy(),this.app.broadcast(\"disable\")},enable:function(){this.app.broadcast(\"clickStart\");var t=this.editor.isEmpty();t||this.selection.saveMarkers(),this._setFocus(),this._destroy(),this.app.broadcast(\"enable\"),this.buttonSave.enable(),this.buttonCancel.enable(),t||this.selection.restoreMarkers(),t&&this.editor.focus(),this.container.getElement().addClass(\"redactor-clicktoedit-enabled\")},save:function(t){t&&t.preventDefault();var e=this.source.getCode();this.app.broadcast(\"disable\"),this.app.broadcast(\"clickSave\",e),this.app.broadcast(\"clickStop\"),this._build()},cancel:function(t){t&&t.preventDefault();var e=this.saved;this.editor.getElement().html(e),this.saved=\"\",this.app.broadcast(\"disable\"),this.app.broadcast(\"clickCancel\",e),this.app.broadcast(\"clickStop\"),this._build()},_build:function(){this.buttonSave=$R.create(\"clicktoedit.button\",\"save\",this.app,this),this.buttonCancel=$R.create(\"clicktoedit.button\",\"cancel\",this.app,this),this.buttonSave.stop(),this.buttonCancel.stop();var t=this.editor.getElement(),e=this.container.getElement();t.on(\"click.redactor-click-to-edit mouseup.redactor-click-to-edit\",this.enable.bind(this)),e.addClass(\"redactor-over\"),e.removeClass(\"redactor-clicktoedit-enabled\")},_isEnabled:function(){return this.container.getElement().hasClass(\"redactor-clicktoedit-enabled\")},_destroy:function(){var t=this.editor.getElement(),e=this.container.getElement();t.off(\".redactor-click-to-edit\"),e.removeClass(\"redactor-over redactor-clicktoedit-enabled\")},_setFocus:function(){this.saved=this.source.getCode(),this.buttonSave.start(),this.buttonCancel.start()}}),$R.add(\"class\",\"clicktoedit.button\",{init:function(t,e,i){this.app=e,this.opts=e.opts,this.toolbar=e.toolbar,this.context=i,this.type=t,this.name=\"save\"===t?\"clickToSave\":\"clickToCancel\",this.objected=!1,this.enabled=!1,this.namespace=\".redactor-click-to-edit\",this._build()},enable:function(){if(this.objected){var t=this.opts[this.name];t.api=\"module.clicktoedit.\"+this.type,this.toolbar.addButton(this.type,t),this.enabled=!0}},start:function(){this.objected||(this.$button.off(this.namespace),this.$button.show(),this.$button.on(\"click\"+this.namespace,this.context[this.type].bind(this.context)))},stop:function(){!this.objected&&this.enabled&&this.$button.hide()},_build:function(){this.objected=\"object\"==typeof this.opts[this.name],this.objected||(this.$button=$R.dom(this.opts[this.name]),this.enabled=!0)}}),$R.add(\"module\",\"statusbar\",{init:function(t){this.app=t,this.opts=t.opts,this.element=t.element,this.statusbar=t.statusbar,this.container=t.container},start:function(){if(!this.element.isType(\"inline\")){var t=this.statusbar.getElement(),e=this.container.getElement();t.addClass(\"redactor-statusbar\"),e.append(t)}}}),$R.add(\"module\",\"contextbar\",{init:function(t){this.app=t,this.opts=t.opts,this.uuid=t.uuid,this.$win=t.$win,this.$doc=t.$doc,this.$body=t.$body,this.editor=t.editor,this.toolbar=t.toolbar,this.detector=t.detector,this.$target=this.toolbar.isTarget()?this.toolbar.getTargetElement():this.$body},onenablereadonly:function(){this.stop()},ondisablereadonly:function(){this.start()},oncontextbar:{close:function(){this.close()}},start:function(){if(this.opts.toolbarContext){var t=this.editor.getElement();this._build(),t.on(\"click.redactor-context mouseup.redactor-context\",this.open.bind(this)),this.opts.scrollTarget&&$R.dom(this.opts.scrollTarget).on(\"scroll.redactor-context\",this.close.bind(this))}},stop:function(){this.editor.getElement().off(\".redactor-context\"),this.$doc.off(\".redactor-context\"),this.$win.off(\".redactor-context\"),this.$contextbar&&this.$contextbar.remove(),this.opts.scrollTarget&&$R.dom(this.opts.scrollTarget).off(\".redactor-context\")},is:function(){return this.$contextbar&&this.$contextbar.hasClass(\"open\")},set:function(t,e,i,n){this.$contextbar.html(\"\"),this.$el=$R.dom(e);for(var o in i){var s=$R.create(\"contextbar.button\",this.app,i[o]);\"\"!==s.html()&&this.$contextbar.append(s)}var r=this._buildPosition(t,this.$el,n);this.$contextbar.css(r),this.$contextbar.show(),this.$contextbar.addClass(\"open\"),this.$doc.on(\"click.redactor-context mouseup.redactor-context\",this.close.bind(this)),this.$win.on(\"resize.redactor-context\",this.close.bind(this))},open:function(t){setTimeout(function(){this.app.broadcast(\"contextbar\",t,this)}.bind(this),0)},close:function(t){if(this.$contextbar){if(t){var e=$R.dom(t.target);if(this.$el&&0!==e.closest(this.$el).length)return}this.$contextbar.hide(),this.$contextbar.removeClass(\"open\"),this.$doc.off(\".redactor.context\")}},_build:function(){this.$contextbar=$R.dom(\"<div>\"),this.$contextbar.attr(\"id\",\"redactor-context-toolbar-\"+this.uuid),this.$contextbar.attr(\"dir\",this.opts.direction),this.$contextbar.addClass(\"redactor-context-toolbar\"),this.$contextbar.hide(),this.$target.append(this.$contextbar)},_buildPosition:function(t,e,i){var n,o,s=this.toolbar.isTarget(),r=s?e.position():e.offset(),a=e.width(),c=e.height(),l=this.$contextbar.width(),d=this.$contextbar.height(),p=s?this.$target.scrollTop()+this.$doc.scrollTop():this.$doc.scrollTop(),u=this.$target.offset(),h=s?u.left:0,f=s?u.top:0;return i?\"top\"===i?(n=r.top-d,o=r.left+a/2-l/2):\"bottom\"===i&&(n=r.top+c,o=r.left+a/2-l/2):(n=t.clientY+p-d,o=t.clientX-l/2),o<0&&(o=0),{top:n-f+\"px\",left:o-h+\"px\"}}}),$R.add(\"class\",\"contextbar.button\",{mixins:[\"dom\"],init:function(t,e){this.app=t,this.obj=e,this._init()},_init:function(){this.parse(\"<a>\"),this.attr(\"href\",\"#\"),this._buildTitle(),this._buildMessage()},_buildTitle:function(){this.html(this.obj.title)},_buildMessage:function(){void 0===this.obj.message&&void 0===this.obj.api||this.on(\"click\",this._toggle.bind(this))},_toggle:function(t){t.preventDefault(),this.obj.message?this.app.broadcast(this.obj.message,this.obj.args):this.obj.api&&this.app.api(this.obj.api,this.obj.args)}}),$R.add(\"module\",\"toolbar\",{init:function(t){this.app=t,this.opts=t.opts,this.utils=t.utils,this.toolbar=t.toolbar,this.buttons=[],this.toolbarModule=!1},onsource:{open:function(){!this.toolbar.isAir()&&this.toolbar.isFixed()&&this.toolbarModule.resetPosition()},opened:function(){this.toolbar.isAir()&&this.toolbarModule&&this.toolbarModule.createSourceHelper()},close:function(){this.toolbar.isAir()&&this.toolbarModule&&this.toolbarModule.destroySourceHelper()},closed:function(){this.toolbar.is()&&this.opts.air&&this.toolbarModule.openSelected()}},onobserve:function(){this.toolbar.is()&&this.toolbar.observe()},onfocus:function(){this._setExternalOnFocus()},onsourcefocus:function(){this._setExternalOnFocus()},onempty:function(){this.toolbar.isFixed()&&this.toolbarModule.resetPosition()},onenablereadonly:function(){this.toolbar.isAir()&&this.toolbarModule.close()},start:function(){this.toolbar.is()&&(this._buildButtons(),this._initToolbar(),this._initButtons())},stop:function(){this.toolbarModule&&this.toolbarModule.stop()},_buildButtons:function(){this.buttons=this.opts.buttons.concat(),this._buildImageButton(),this._buildFileButton(),this._buildSourceButton(),this._buildAdditionalButtons(),this._buildHiddenButtons()},_buildImageButton:function(){this.opts.imageUpload||this.utils.removeFromArrayByValue(this.buttons,\"image\")},_buildFileButton:function(){this.opts.fileUpload||this.utils.removeFromArrayByValue(this.buttons,\"file\")},_buildSourceButton:function(){this.opts.source||this.utils.removeFromArrayByValue(this.buttons,\"html\")},_buildAdditionalButtons:function(){0!==this.opts.buttonsAdd.length&&(this.opts.buttonsAdd=this._removeExistButtons(this.opts.buttonsAdd),this.buttons=this.buttons.concat(this.opts.buttonsAdd)),0!==this.opts.buttonsAddFirst.length&&(this.opts.buttonsAddFirst=this._removeExistButtons(this.opts.buttonsAddFirst),this.buttons.unshift(this.opts.buttonsAddFirst));var t,e;if(!1!==this.opts.buttonsAddAfter){t=this.buttons.indexOf(this.opts.buttonsAddAfter.after)+1,e=this.opts.buttonsAddAfter.buttons;for(var i=0;i<e.length;i++)this.buttons.splice(t+i,0,e[i])}if(!1!==this.opts.buttonsAddBefore){t=this.buttons.indexOf(this.opts.buttonsAddBefore.before)+1,e=this.opts.buttonsAddBefore.buttons;for(var i=0;i<e.length;i++)this.buttons.splice(t-(1-i),0,e[i])}},_buildHiddenButtons:function(){if(0!==this.opts.buttonsHide.length)for(var t=this.opts.buttonsHide,e=0;e<t.length;e++)this.utils.removeFromArrayByValue(this.buttons,t[e])},_removeExistButtons:function(t){for(var e=0;e<t.length;e++)-1!==this.opts.buttons.indexOf(t[e])&&this.utils.removeFromArrayByValue(t,t[e]);return t},_setExternalOnFocus:function(){!this.opts.air&&this.opts.toolbarExternal&&this.toolbarModule.setExternal()},_initToolbar:function(){this.toolbarModule=this.opts.air?$R.create(\"toolbar.air\",this.app):$R.create(\"toolbar.standard\",this.app)},_initButtons:function(){this.toolbar.setButtons(this.buttons);for(var t=0;t<this.buttons.length;t++){var e=this.buttons[t];$R.buttons[e]&&this.toolbar.addButton(e,$R.buttons[e],!1,!1,!0)}}}),$R.add(\"class\",\"toolbar.air\",{init:function(t){this.app=t,this.uuid=t.uuid,this.$doc=t.$doc,this.$win=t.$win,this.utils=t.utils,this.editor=t.editor,this.animate=t.animate,this.toolbar=t.toolbar,this.container=t.container,this.inspector=t.inspector,this.selection=t.selection,this.clicks=0,this._init()},stop:function(){this.toolbar.getWrapper().remove(),this.editor.getElement().off(\".redactor-air-trigger-\"+this.uuid),this.$doc.off(\".redactor-air-\"+this.uuid),this.$doc.off(\".redactor-air-trigger-\"+this.uuid),this.toolbar.stopObservers()},createSourceHelper:function(){this.$airHelper=$R.dom(\"<span>\"),this.$airHelper.addClass(\"redactor-air-helper\"),this.$airHelper.html('<i class=\"re-icon-html\"></i>'),this.$airHelper.on(\"click\",function(t){t.preventDefault(),this.app.api(\"module.source.hide\")}.bind(this)),this.container.getElement().append(this.$airHelper)},destroySourceHelper:function(){this.$airHelper&&this.$airHelper.remove()},openSelected:function(){setTimeout(function(){this._isSelection()&&this._open(!1)}.bind(this),0)},close:function(){this.$doc.off(\".redactor-air-\"+this.uuid);var t=this.toolbar.getElement();t.removeClass(\"open\"),t.hide()},_init:function(){this.toolbar.create();var t=this.toolbar.getWrapper(),e=this.toolbar.getElement(),i=this.editor.getElement(),n=this.container.getElement();t.addClass(\"redactor-toolbar-wrapper-air\"),e.addClass(\"redactor-air\"),e.hide(),t.append(e),n.prepend(t),this.openSelected(),this.$doc.on(\"mouseup.redactor-air-trigger-\"+this.uuid,this._open.bind(this)),i.on(\"keyup.redactor-air-trigger-\"+this.uuid,this._openCmd.bind(this))},_isSelection:function(){return this.selection.is()&&!this.selection.isCollapsed()},_isOpened:function(){return this.toolbar.getElement().hasClass(\"open\")},_open:function(t){var e=!!t&&t.target,i=!!t&&$R.dom(t.target),n=this.inspector.parse(e),o=n.isComponent()&&!n.isComponentType(\"table\"),s=n.isFigcaption(),r=i&&0!==i.closest(\".redactor-modal\").length,a=t&&0!==i.closest(\".re-button\").length;if(!(t&&0!==i.closest(\".redactor-dropdown\").length||a||r||s||o||this.toolbar.isContextBar())&&this._isSelection()){var c=this.selection.getPosition();setTimeout(function(){this.app.isReadOnly()||this._isSelection()&&this._doOpen(c)}.bind(this),1)}},_openCmd:function(){if(this.selection.isAll()){var t=this.toolbar.getElement(),e=this.selection.getPosition();e.top=e.top<20?0:e.top-t.height(),e.height=0,this._doOpen(e)}},_doOpen:function(t){var e=this.toolbar.getWrapper(),i=this.toolbar.getElement(),n=this.container.getElement(),o=n.offset(),s=0,r=this.$win.width(),a=i.width();if(r<t.left+a){s=a-this.selection.getPosition().width}e.css({left:t.left-o.left-s+\"px\",top:t.top-o.top+t.height+this.$doc.scrollTop()+\"px\"}),this.app.broadcast(\"airOpen\"),i.addClass(\"open\"),i.show(),this.$doc.on(\"click.redactor-air-\"+this.uuid,this._close.bind(this)),this.$doc.on(\"keydown.redactor-air-\"+this.uuid,this._close.bind(this)),this.app.broadcast(\"airOpened\")},_close:function(t){var e=!!t&&$R.dom(t.target),i=t&&0!==e.closest(\"[data-dropdown], .redactor-dropdown-not-close\").length;(!i&&t&&0!==e.closest(\".re-button\").length||!i&&this._isOpened())&&(this.app.broadcast(\"airClose\"),this.close(),this.app.broadcast(\"airClosed\"))}}),$R.add(\"class\",\"toolbar.fixed\",{init:function(t){this.app=t,this.uuid=t.uuid,this.opts=t.opts,this.$doc=t.$doc,this.$win=t.$win,this.editor=t.editor,this.toolbar=t.toolbar,this.detector=t.detector,this.container=t.container,this._init()},stop:function(){this.$fixedTarget.off(\".redactor-toolbar-\"+this.uuid),this.$win.off(\".redactor-toolbar-\"+this.uuid)},reset:function(){var t=this.toolbar.getElement();this.toolbar.getWrapper().css(\"height\",\"\"),t.removeClass(\"redactor-toolbar-fixed\"),t.css({position:\"\",top:\"\",left:\"\",width:\"\"});var e=this.toolbar.getDropdown();e&&e.updatePosition()},_init:function(){this.$fixedTarget=this.toolbar.isTarget()?this.toolbar.getTargetElement():this.$win,this._doFixed(),this.toolbar.isTarget()&&(this.$win.on(\"scroll.redactor-toolbar-\"+this.uuid,this._doFixed.bind(this)),this.$win.on(\"resize.redactor-toolbar-\"+this.uuid,this._doFixed.bind(this))),this.$fixedTarget.on(\"scroll.redactor-toolbar-\"+this.uuid,this._doFixed.bind(this)),this.$fixedTarget.on(\"resize.redactor-toolbar-\"+this.uuid,this._doFixed.bind(this))},_doFixed:function(){var t=this.editor.getElement(),e=this.container.getElement(),i=this.toolbar.getElement(),n=this.toolbar.getWrapper();if(0===e.parents().filter(function(t){return\"none\"===getComputedStyle(t,null).display&&t}).length){var o=t.height()<100,s=this.editor.isEmpty();if(!(o||s||this.editor.isSourceMode())){var r=i.height(),a=e.offset(),c=a.top,l=c+e.height()-60,d=this.$fixedTarget.scrollTop()+this.opts.toolbarFixedTopOffset,p=this.toolbar.isTarget()?this.$fixedTarget.offset().top-this.$win.scrollTop():0;if(d>c&&d<l){var u=this.detector.isDesktop()?\"fixed\":\"absolute\";p=this.detector.isDesktop()?p:d-c+this.opts.toolbarFixedTopOffset,this.detector.isMobile()&&(this.fixedScrollTimeout&&clearTimeout(this.fixedScrollTimeout),i.hide(),this.fixedScrollTimeout=setTimeout(function(){i.show()},250)),n.height(r),i.addClass(\"redactor-toolbar-fixed\"),i.css({position:u,top:p+this.opts.toolbarFixedTopOffset+\"px\",width:e.width()+\"px\"});var h=this.toolbar.getDropdown();h&&h.updatePosition(),this.app.broadcast(\"toolbar.fixed\")}else this.reset(),this.app.broadcast(\"toolbar.unfixed\")}}}}),$R.add(\"class\",\"toolbar.standard\",{init:function(t){this.app=t,this.opts=t.opts,this.uuid=t.uuid,this.toolbar=t.toolbar,this.container=t.container,this.isExternalMultiple=!1,this.toolbarFixed=!1,this._init()},stop:function(){this.toolbar.getWrapper().remove(),this.toolbarFixed&&this.toolbarFixed.stop(),this.opts.toolbarExternal&&this._findToolbars(),this.toolbar.stopObservers()},setExternal:function(){if(this._findToolbars(),this.isExternalMultiple){this.$toolbars.hide();this.$external.find(\".redactor-toolbar-external-\"+this.uuid).show()}},resetPosition:function(){this.toolbarFixed&&this.toolbarFixed.reset()},_init:function(){if(this._build(),this.opts.toolbarExternal)this._buildExternal();else{this._buildFixed();this.toolbar.getElement().show()}},_build:function(){this.toolbar.create();var t=this.toolbar.getWrapper(),e=this.toolbar.getElement();if(t.addClass(\"redactor-toolbar-wrapper\"),e.addClass(\"redactor-toolbar\"),e.hide(),t.append(e),!this.opts.toolbarExternal){this.container.getElement().prepend(t)}},_buildExternal:function(){if(this._initExternal(),this._findToolbars(),this.isExternalMultiple)this._hideToolbarsExceptFirst();else{this.toolbar.getElement().show()}},_buildFixed:function(){this.opts.toolbarFixed&&(this.toolbarFixed=$R.create(\"toolbar.fixed\",this.app))},_initExternal:function(){var t=this.toolbar.getElement(),e=this.toolbar.getElement();t.addClass(\"redactor-toolbar-external redactor-toolbar-external-\"+this.uuid),this.$external=$R.dom(this.opts.toolbarExternal),this.$external.append(e)},_findToolbars:function(){this.$toolbars=this.$external.find(\".redactor-toolbar-external\"),this.isExternalMultiple=this.$toolbars.length>1},_hideToolbarsExceptFirst:function(){this.$toolbars.hide(),this.$toolbars.first().show()}}),$R.add(\"module\",\"line\",{init:function(t){this.app=t,this.lang=t.lang,this.component=t.component,this.inspector=t.inspector,this.insertion=t.insertion},oncontextbar:function(t,e){var i=this.inspector.parse(t.target);if(i.isComponentType(\"line\")){var n=i.getComponent(),o={remove:{title:this.lang.get(\"delete\"),api:\"module.line.remove\",args:n}};e.set(t,n,o,\"bottom\")}},insert:function(){var t=this.component.create(\"line\");this.insertion.insertRaw(t)},remove:function(t){this.component.remove(t)}}),$R.add(\"class\",\"line.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,e&&void 0!==e.cmnt?e:this._init(e)},_init:function(t){var e,i;if(void 0!==t){var n=$R.dom(t),o=n.get();\"HR\"===o.tagName?i=o:\"FIGURE\"===o.tagName&&(e=o,i=n.find(\"hr\").get())}this._buildWrapper(e),this._buildElement(i),this._initWrapper()},_buildElement:function(t){t?this.$element=$R.dom(t):(this.$element=$R.dom(\"<hr>\"),this.append(this.$element))},_buildWrapper:function(t){t=t||\"<figure>\",this.parse(t)},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"line\",tabindex:\"-1\",contenteditable:!1})}}),$R.add(\"module\",\"link\",{modals:{link:'<form action=\"\">                 <div class=\"form-item\">                     <label for=\"modal-link-url\">URL <span class=\"req\">*</span></label>                     <input type=\"text\" id=\"modal-link-url\" name=\"url\">                 </div>                 <div class=\"form-item\">                     <label for=\"modal-link-text\">## text ##</label>                     <input type=\"text\" id=\"modal-link-text\" name=\"text\">                 </div>                 <div class=\"form-item form-item-title\">                     <label for=\"modal-link-title\">## title ##</label>                     <input type=\"text\" id=\"modal-link-title\" name=\"title\">                 </div>                 <div class=\"form-item form-item-target\">                     <label class=\"checkbox\">                         <input type=\"checkbox\" name=\"target\"> ## link-in-new-tab ##                     </label>                 </div>             </form>'},init:function(t){this.app=t,this.opts=t.opts,this.lang=t.lang,this.caret=t.caret,this.utils=t.utils,this.inline=t.inline,this.editor=t.editor,this.inspector=t.inspector,this.insertion=t.insertion,this.selection=t.selection,this.isCurrentLink=!1,this.currentText=!1},onmodal:{link:{open:function(t,e){this._setFormData(e,t)},opened:function(t,e){this._setFormFocus(e)},update:function(t,e){var i=e.getData()\n;this._validateData(e,i)&&this._update(i)},insert:function(t,e){var i=e.getData();this._validateData(e,i)&&this._insert(i)},unlink:function(){this._unlink()}}},onbutton:{link:{observe:function(t){this._observeButton(t)}}},ondropdown:{link:{observe:function(t){this._observeUnlink(t),this._observeEdit(t)}}},oncontextbar:function(t,e){var i=this._getCurrent(),n=this.inspector.parse(i);if(n.isLink()){var o=n.getLink(),s=$R.dom(o),r=$R.dom(\"<a>\"),a=s.attr(\"href\");r.text(this._truncateText(a)),r.attr(\"href\",a),r.attr(\"target\",\"_blank\");var c={link:{title:r},edit:{title:this.lang.get(\"edit\"),api:\"module.link.open\"},unlink:{title:this.lang.get(\"unlink\"),api:\"module.link.unlink\"}};e.set(t,o,c,\"bottom\")}},open:function(){this.$link=this._buildCurrent(),this.app.api(\"module.modal.build\",this._getModalData())},insert:function(t){this._insert(t)},update:function(t){this._update(t)},unlink:function(){this._unlink()},_observeButton:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e);i.isPre()||i.isCode()?t.disable():t.enable()},_observeUnlink:function(t){var e=t.getItem(\"unlink\");0===this._getLinks().length?e.disable():e.enable()},_observeEdit:function(t){var e=this._getCurrent(),i=t.getItem(\"link\"),n=this.inspector.parse(e),o=n.isLink()?this.lang.get(\"link-edit\"):this.lang.get(\"link-insert\");i.setTitle(o)},_unlink:function(){this.app.api(\"module.modal.close\");var t=[],e=this._getLinks();this.selection.save();for(var i=0;i<e.length;i++){var n=$R.create(\"link.component\",this.app,e[i]);t.push(this.selection.getElement(e[i])),n.unwrap(),this.app.broadcast(\"link.deleted\",n)}this.selection.restore();for(var i=0;i<t.length;i++){var o=t[i]?t[i]:this.editor.getElement();this.utils.normalizeTextNodes(o)}this._resetCurrent()},_update:function(t){this.app.api(\"module.modal.close\");var e=this._getLinks();this._setLinkData(e,t,\"updated\"),this._resetCurrent()},_insert:function(t){this.app.api(\"module.modal.close\");var e=this._getLinks();this._insertSingle(e,t)||(this._removeInSelection(e),this._insertMultiple(t)),this._resetCurrent()},_removeInSelection:function(t){this.selection.save();for(var e=0;e<t.length;e++){var i=$R.create(\"link.component\",this.app,t[e]),n=i.clone();i.unwrap(),this.app.broadcast(\"link.deleted\",n)}this.selection.restore()},_insertMultiple:function(t){var e=this.selection.getRange();e&&this._isCurrentTextChanged(t)&&this._deleteContents(e);var i=this.inline.format({tag:\"a\"});this._setLinkData(i,t,\"inserted\")},_insertSingle:function(t,e){var i=this.selection.getInline();if(1===t.length&&t[0].textContext===this.selection.getText()||i&&\"A\"===i.tagName){var n=$R.create(\"link.component\",this.app,t[0]);return n.setData(e),this.caret.setAfter(n),this.app.broadcast(\"link.inserted\",n),!0}return!1},_setLinkData:function(t,e,i){e.text=\"\"===e.text.trim()?this._truncateText(e.url):e.text;var n=!this.currentText||this.currentText!==e.text;this.selection.save();for(var o=0;o<t.length;o++){var s=$R.create(\"link.component\",this.app,t[o]),r={};e.text&&n&&(r.text=e.text),e.url&&(r.url=e.url),void 0!==e.title&&(r.title=e.title),void 0!==e.target&&(r.target=e.target),s.setData(r),this.app.broadcast(\"link.\"+i,s)}setTimeout(this.selection.restore.bind(this.selection),0)},_deleteContents:function(t){var e=this.selection.getHtml(),i=this.utils.parseHtml(e),n=i.nodes[0];if(n&&3!==n.nodeType){var o=n.tagName.toLowerCase(),s=document.createElement(o);this.insertion.insertNode(s,\"start\")}else t.deleteContents()},_getModalData:function(){var t;return t=this._isLink()?{update:{title:this.lang.get(\"save\")},unlink:{title:this.lang.get(\"unlink\"),type:\"danger\"},cancel:{title:this.lang.get(\"cancel\")}}:{insert:{title:this.lang.get(\"insert\")},cancel:{title:this.lang.get(\"cancel\")}},{name:\"link\",title:this._isLink()?this.lang.get(\"link-edit\"):this.lang.get(\"link-insert\"),handle:this._isLink()?\"update\":\"insert\",commands:t}},_isLink:function(){return this.currentLink},_isCurrentTextChanged:function(t){return this.currentText&&this.currentText!==t.text},_buildCurrent:function(){var t,e=this._getCurrent(),i=this.inspector.parse(e);if(i.isLink())this.currentLink=!0,t=i.getLink(),t=$R.create(\"link.component\",this.app,t);else{this.currentLink=!1,t=$R.create(\"link.component\",this.app);var n={text:this.selection.getText()};t.setData(n)}return t},_getCurrent:function(){return this.selection.getInlinesAllSelected({tags:[\"a\"]})[0]},_getLinks:function(){for(var t=this.selection.getInlines({all:!0,tags:[\"a\"]}),e=[],i=0;i<t.length;i++){this.inspector.parse(t[i]).isLink()&&e.push(t[i])}return e},_resetCurrent:function(){this.isCurrentLink=!1,this.currentText=!1},_truncateText:function(t){return t&&t.length>this.opts.linkSize?t.substring(0,this.opts.linkSize)+\"...\":t},_validateData:function(t,e){return\"\"!==e.url.trim()||t.setError(\"url\")},_setFormFocus:function(t){t.getField(\"url\").focus()},_setFormData:function(t,e){var i=this.$link.getData(),n={url:i.url,text:i.text,title:i.title,target:this.opts.linkTarget||i.target};this.opts.linkNewTab||e.find(\".form-item-target\").hide(),this.opts.linkTitle||e.find(\".form-item-title\").hide(),t.setData(n),this.currentText=t.getField(\"text\").val()}}),$R.add(\"class\",\"link.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,this.opts=t.opts,this.reUrl=/^(?:(?:(?:https?|ftp):)?\\/\\/)?(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[\\/?#]\\S*)?$/i,e&&void 0!==e.cmnt?e:this._init(e)},setData:function(t){for(var e in t)this._set(e,t[e])},getData:function(){for(var t=[\"url\",\"text\",\"target\",\"title\"],e={},i=0;i<t.length;i++)e[t[i]]=this._get(t[i]);return e},_init:function(t){var e=$R.dom(t);void 0===t?this.parse(\"<a>\"):this.parse(e)},_set:function(t,e){this[\"_set_\"+t](e)},_get:function(t){return this[\"_get_\"+t]()},_get_target:function(){return!!this.attr(\"target\")&&this.attr(\"target\")},_get_url:function(){return this.attr(\"href\")},_get_title:function(){return this.attr(\"title\")},_get_text:function(){return this._getContext().text()},_getContext:function(){return this._findDeepestChild(this).element},_set_target:function(t){!1===t?this.removeAttr(\"target\"):t&&this.attr(\"target\",!0===t?\"_blank\":t)},_set_text:function(t){this._getContext().html(t)},_set_title:function(t){t&&\"\"!==t?this.attr(\"title\",t):this.removeAttr(\"title\")},_set_url:function(t){this.opts.linkValidation&&(t=this._cleanUrl(t),this._isMailto(t)?t=\"mailto:\"+t.replace(\"mailto:\",\"\"):this._isUrl(t)&&-1===t.search(/^(ftp|https?)/i)&&(t=\"http://\"+t.replace(/(ftp|https?):\\/\\//i,\"\"))),this.attr(\"href\",t)},_isMailto:function(t){return-1!==t.search(\"@\")&&!1===/(ftp|https?):\\/\\//i.test(t)},_isUrl:function(t){return this.reUrl.test(t)},_cleanUrl:function(t){return t.trim().replace(/[^\\W\\w\\D\\d+&\\'@#\\/%?=~_|!:,.;\\(\\)]/gi,\"\")},_findDeepestChild:function(t){var e={depth:0,element:t};return t.children().each(function(i){var n=$R.dom(i);if(i.outerHTML===t.html()){var o=this._findDeepestChild(n);o.depth+1>e.depth&&(e={depth:1+o.depth,element:o.element})}}.bind(this)),e}}),$R.add(\"module\",\"modal\",{init:function(t){this.app=t,this.lang=t.lang,this.$doc=t.$doc,this.$win=t.$win,this.$body=t.$body,this.animate=t.animate,this.detector=t.detector,this.selection=t.selection,this.$box=!1,this.$modal=!1,this.selectionMarkers=!1,this.defaults={name:!1,url:!1,title:!1,width:\"600px\",height:!1,handle:!1,commands:!1}},build:function(t){this._open(t)},close:function(){this._close()},stop:function(){this.$box&&(this.$box.remove(),this.$box=!1,this.$modal=!1,this.$doc.off(\".redactor.modal\"),this.$win.off(\".redactor.modal\")),this.$overlay&&this.$overlay.remove()},resize:function(){this.$modal.setWidth(this.p.width),this.$modal.updatePosition()},_isOpened:function(){return this.$modal&&this.$modal.hasClass(\"open\")},_open:function(t){this._buildDefaults(t),this.p.url?this._openUrl():this._openTemplate()},_openUrl:function(){$R.ajax.post({url:this.p.url,success:this._doOpen.bind(this)})},_openTemplate:function(){if(void 0!==$R.modals[this.p.name]){var t=this.lang.parse($R.modals[this.p.name]);this._doOpen(t)}},_doOpen:function(t){this.stop(),this.selection.isCollapsed()?(this.selection.save(),this.selectionMarkers=!1):(this.selection.saveMarkers(),this.selectionMarkers=!0),this.detector.isDesktop()||document.activeElement.blur(),this._createModal(t),this._buildModalBox(),this._buildOverlay(),this._buildModal(),this._buildModalForm(),this._buildModalCommands(),this._broadcast(\"open\"),this.$modal.updatePosition(),this._buildModalTabs(),this.animate.start(this.$box,\"fadeIn\",this._opened.bind(this)),this.animate.start(this.$overlay,\"fadeIn\")},_opened:function(){this.$modal.addClass(\"open\"),this.$box.on(\"mousedown.redactor.modal\",this._close.bind(this)),this.$doc.on(\"keyup.redactor.modal\",this._handleEscape.bind(this)),this.$win.on(\"resize.redactor.modal\",this.resize.bind(this)),this.$modal.getBody().find(\"input[type=text],input[type=url],input[type=email]\").on(\"keydown.redactor.modal\",this._handleEnter.bind(this)),window.jQuery&&jQuery(document).off(\"focusin.modal\"),this._broadcast(\"opened\")},_close:function(t){if(this.$box&&this._isOpened()){if(t){if(!this._needToClose(t.target))return;t.stopPropagation(),t.preventDefault()}this.selectionMarkers?this.selection.restoreMarkers():this.selection.restore(),this.selectionMarkers=!1,this._broadcast(\"close\"),this.animate.start(this.$box,\"fadeOut\",this._closed.bind(this)),this.animate.start(this.$overlay,\"fadeOut\")}},_closed:function(){this.$modal.removeClass(\"open\"),this.$box.off(\".redactor.modal\"),this.$doc.off(\".redactor.modal\"),this.$win.off(\".redactor.modal\"),this._broadcast(\"closed\")},_createModal:function(t){this.$modal=$R.create(\"modal.element\",this.app,t)},_broadcast:function(t){this.app.broadcast(\"modal.\"+t,this.$modal,this.$modalForm),this.app.broadcast(\"modal.\"+this.p.name+\".\"+t,this.$modal,this.$modalForm)},_buildDefaults:function(t){this.p=$R.extend({},this.defaults,t)},_buildModalBox:function(){this.$box=$R.dom(\"<div>\"),this.$box.attr(\"id\",\"redactor-modal\"),this.$box.addClass(\"redactor-animate-hide\"),this.$box.html(\"\"),this.$body.append(this.$box)},_buildOverlay:function(){this.$overlay=$R.dom(\"#redactor-overlay\"),0===this.$overlay.length&&(this.$overlay=$R.dom(\"<div>\"),this.$overlay.attr(\"id\",\"redactor-overlay\"),this.$overlay.addClass(\"redactor-animate-hide\"),this.$body.prepend(this.$overlay))},_buildModal:function(){this.$box.append(this.$modal),this.$modal.setTitle(this.p.title),this.$modal.setHeight(this.p.height),this.$modal.setWidth(this.p.width)},_buildModalCommands:function(){if(this.p.commands){var t=this.p.commands,e=this.$modal.getFooter();for(var i in t){var n=$R.dom(\"<button>\");n.html(t[i].title),n.attr(\"data-command\",i),\"cancel\"===i&&(n.attr(\"data-action\",\"close\"),n.addClass(\"redactor-button-unstyled\")),void 0!==t[i].type&&\"danger\"===t[i].type&&n.addClass(\"redactor-button-danger\"),n.on(\"click\",this._handleCommand.bind(this)),e.append(n)}}},_buildModalTabs:function(){var t=this.$modal.getBody(),e=t.find(\".redactor-modal-tab\"),i=t.find(\".redactor-modal-tabs\");e.length>1&&(i=0===i.length?$R.dom(\"<div>\"):i.html(\"\"),i.addClass(\"redactor-modal-tabs\"),e.each(function(t,e){var n=$R.dom(t),o=$R.dom(\"<a>\");o.attr(\"href\",\"#\"),o.attr(\"rel\",e),o.text(n.attr(\"data-title\")),o.on(\"click\",this._showTab.bind(this)),0===e&&o.addClass(\"active\"),i.append(o)}.bind(this)),t.prepend(i))},_buildModalForm:function(){this.$modalForm=$R.create(\"modal.form\",this.app,this.$modal.getForm())},_showTab:function(t){t.preventDefault();var e=$R.dom(t.target),i=e.attr(\"rel\"),n=this.$modal.getBody(),o=n.find(\".redactor-modal-tab\");o.hide(),o.eq(i).show(),n.find(\".redactor-modal-tabs a\").removeClass(\"active\"),e.addClass(\"active\")},_needToClose:function(t){var e=$R.dom(t);return!(\"close\"!==e.attr(\"data-action\")&&!this.$modal.isCloseNode(t)&&0!==e.closest(\".redactor-modal\").length)},_handleCommand:function(t){var e=$R.dom(t.target).closest(\"button\"),i=e.attr(\"data-command\");\"cancel\"!==i&&t.preventDefault(),this._broadcast(i)},_handleEnter:function(t){13===t.which&&this.p.handle&&(t.preventDefault(),this._broadcast(this.p.handle))},_handleEscape:function(t){27===t.which&&this._close()}}),$R.add(\"class\",\"modal.element\",{mixins:[\"dom\"],init:function(t,e){this.app=t,this.opts=t.opts,this.$win=t.$win,this._init(e)},getForm:function(){return this.find(\"form\")},getHeader:function(){return this.$modalHeader},getBody:function(){return this.$modalBody},getFooter:function(){return this.$modalFooter},setTitle:function(t){t&&this.$modalHeader.html(t)},setWidth:function(t){t=parseInt(t)>=this.$win.width()?\"96%\":t,this.css(\"max-width\",t)},setHeight:function(t){!1!==t&&this.$modalBody.css(\"height\",t)},updatePosition:function(){var t=this.width();this.css({left:\"50%\",\"margin-left\":\"-\"+t/2+\"px\"});var e=this.$win.height(),i=this.height(),n=e/2-i/2;i<e&&0!==n&&this.css(\"margin-top\",n+\"px\")},isCloseNode:function(t){return t===this.$modalClose.get()},_init:function(t){this._build(),this._buildClose(),this._buildHeader(),this._buildBody(),this._buildFooter(),this._buildTemplate(t)},_build:function(){this.parse(\"<div>\"),this.addClass(\"redactor-modal\"),this.attr(\"dir\",this.opts.direction)},_buildClose:function(){this.$modalClose=$R.dom(\"<span>\"),this.$modalClose.addClass(\"redactor-close\"),this.append(this.$modalClose)},_buildHeader:function(){this.$modalHeader=$R.dom(\"<div>\"),this.$modalHeader.addClass(\"redactor-modal-header\"),this.append(this.$modalHeader)},_buildBody:function(){this.$modalBody=$R.dom(\"<div>\"),this.$modalBody.addClass(\"redactor-modal-body\"),this.append(this.$modalBody)},_buildFooter:function(){this.$modalFooter=$R.dom(\"<div>\"),this.$modalFooter.addClass(\"redactor-modal-footer\"),this.append(this.$modalFooter)},_buildTemplate:function(t){this.$modalBody.html(t)}}),$R.add(\"class\",\"modal.form\",{mixins:[\"dom\"],init:function(t,e){this.app=t,this.build(e)},build:function(t){this.parse(t)},getData:function(){var t={};return this.find(\"[name]\").each(function(e){var i=$R.dom(e);t[i.attr(\"name\")]=i.val()}),t},setData:function(t){this.find(\"[name]\").each(function(e){var i=$R.dom(e),n=i.attr(\"name\");t.hasOwnProperty(n)&&(e.type&&\"checkbox\"===e.type?e.checked=t[n]:i.val(t[n]))})},getField:function(t){return this.find(\"[name=\"+t+\"]\")},setError:function(t){var e=this.getField(t);return e.addClass(\"error\"),e.one(this._getFieldEventName(e.get()),this._clearError),!1},_clearError:function(){return $R.dom(this).removeClass(\"error\")},_getFieldEventName:function(t){return\"SELECT\"===t.tagName||\"checkbox\"===t.type||\"radio\"===t.type?\"change\":\"keyup\"}}),$R.add(\"module\",\"block\",{init:function(t){this.app=t,this.block=t.block},format:function(t){var e=this.block.format(t);this.app.broadcast(\"format\",\"block\",e)},clearformat:function(){this.block.clearFormat()},clearstyle:function(){this.block.clearStyle()},clearclass:function(){this.block.clearClass()},clearattr:function(){this.block.clearAttr()},add:function(t,e){this.block.add(t,e)},toggle:function(t,e){this.block.toggle(t,e)},set:function(t,e){this.block.set(t,e)},remove:function(t,e){this.block.remove(t,e)}}),$R.add(\"module\",\"inline\",{init:function(t){this.app=t,this.inline=t.inline},format:function(t){var e=this.inline.format(t);this.app.broadcast(\"format\",\"inline\",e)},clearformat:function(){this.inline.clearFormat()},clearstyle:function(){this.inline.clearStyle()},clearclass:function(){this.inline.clearClass()},clearattr:function(){this.inline.clearAttr()},add:function(t,e){this.inline.add(t,e)},toggle:function(t,e){this.inline.toggle(t,e)},set:function(t,e){this.inline.set(t,e)},remove:function(t,e){this.inline.remove(t,e)}}),$R.add(\"module\",\"autosave\",{init:function(t){this.app=t,this.opts=t.opts,this.utils=t.utils,this.source=t.source},onsynced:function(){this.opts.autosave&&this._send()},_send:function(){var t=this.opts.autosaveName?this.opts.autosaveName:this.source.getName(),e={};e[t]=this.source.getCode(),e=this.utils.extendData(e,this.opts.autosaveData),$R.ajax.post({url:this.opts.autosave,data:e,success:function(i){this._complete(i,t,e)}.bind(this)})},_complete:function(t,e,i){var n=t&&t.error?\"autosaveError\":\"autosave\";this.app.broadcast(n,e,i,t)}}),$R.add(\"module\",\"input\",{init:function(t){this.app=t,this.opts=t.opts,this.utils=t.utils,this.editor=t.editor,this.keycodes=t.keycodes,this.element=t.element,this.selection=t.selection,this.insertion=t.insertion,this.inspector=t.inspector,this.autoparser=t.autoparser,this.lastShiftKey=!1},onpaste:function(t,e){if(this.opts.input)return $R.create(\"input.paste\",this.app,t,e)},onkeydown:function(t){if(this.opts.input){var e=t.which;if(!$R.create(\"input.shortcut\",this.app,t).is()){if((t.ctrlKey||t.metaKey)&&!t.altKey&&65===e)return t.preventDefault(),this._selectAll();var i=[this.keycodes.ENTER,this.keycodes.SPACE,this.keycodes.BACKSPACE,this.keycodes.DELETE],n=-1!==i.indexOf(e),o=(t.ctrlKey||t.metaKey)&&88===e,s=!t.ctrlKey&&!t.metaKey&&(e>=48&&e<=57||e>=65&&e<=90);if(this.selection.isAll()&&(o||!t.ctrlKey&&!t.metaKey&&!t.altKey&&!t.shiftKey)){if(o)return this.editor.disableNonEditables(),void this.app.broadcast(\"empty\");if(this._isArrowKey(e))return!0;if(n&&t.preventDefault(),this.element.isType(\"inline\")){this.editor.getElement().html(\"\"),this.editor.startFocus()}else this.insertion.set(this.opts.emptyHtml);if(n)return;this.app.broadcast(\"empty\")}return this.opts.autoparse&&this.autoparser.format(t,e),s&&this.selection.hasNonEditable()?void t.preventDefault():e===this.keycodes.ENTER?$R.create(\"input.enter\",this.app,t,e):t.metaKey&&219===e?(t.preventDefault(),void this.app.api(\"module.list.outdent\")):e===this.keycodes.TAB||t.metaKey&&221===e?$R.create(\"input.tab\",this.app,t,e):e===this.keycodes.SPACE?$R.create(\"input.space\",this.app,t,e,this.lastShiftKey):this._isDeleteKey(e)?$R.create(\"input.delete\",this.app,t,e):this._isArrowKey(e)?$R.create(\"input.arrow\",this.app,t,e):void 0}}},onkeyup:function(t){if(this.opts.input){var e=t.which;this.lastShiftKey=t.shiftKey,this.app.broadcast(\"contextbar.close\");if(!$R.create(\"input.shortcode\",this.app,t,e).is()){if(e===this.keycodes.BACKSPACE){var i=this.editor.getElement(),n=this.utils.trimSpaces(i.html());if(n=n.replace(/<br\\s?\\/?>/g,\"\"),\"\"===(n=n.replace(/<div><\\/div>/,\"\")))return t.preventDefault(),this.editor.setEmpty(),void this.editor.startFocus()}this.editor.isEmpty()&&this.app.broadcast(\"empty\")}}},start:function(){this.opts.shortcutsAdd&&(this.opts.shortcuts=$R.extend({},!0,this.opts.shortcuts,this.opts.shortcutsAdd))},_selectAll:function(){var t,e=this.selection.getCurrent(),i=this.inspector.parse(e);return i.isComponentType(\"table\")?(t=i.getTable(),void this.selection.setAll(t)):i.isComponentType(\"code\")?(t=i.getComponentCodeElement(),void this.selection.setAll(t)):void this.selection.setAll()},_isArrowKey:function(t){return-1!==[this.keycodes.UP,this.keycodes.DOWN,this.keycodes.RIGHT,this.keycodes.LEFT].indexOf(t)},_isDeleteKey:function(t){return t===this.keycodes.BACKSPACE||t===this.keycodes.DELETE}}),$R.add(\"class\",\"input.arrow\",{init:function(t,e,i){this.app=t,this.opts=t.opts,this.utils=t.utils,this.caret=t.caret,this.offset=t.offset,this.marker=t.marker,this.editor=t.editor,this.keycodes=t.keycodes,this.component=t.component,this.inspector=t.inspector,this.selection=t.selection,this.key=i,this._init(e)},_init:function(t){if(!this._isRightLeftKey()||!this._isExitVariable(t)){if(this._isRightDownKey()){if(this._isExitOnDownRight(t))return;if(this._selectComponent(t,\"End\",\"next\"))return}if(this._isLeftUpKey()){if(this._isExitOnUpLeft(t))return;if(this._selectComponent(t,\"Start\",\"prev\"))return}this.key===this.keycodes.LEFT?this.utils.trimInvisibleChars(\"left\"):this.key===this.keycodes.RIGHT&&this.utils.trimInvisibleChars(\"right\")}},_isRightDownKey:function(){return-1!==[this.keycodes.DOWN,this.keycodes.RIGHT].indexOf(this.key)},_isLeftUpKey:function(){return-1!==[this.keycodes.UP,this.keycodes.LEFT].indexOf(this.key)},_isRightLeftKey:function(){return-1!==[this.keycodes.RIGHT,this.keycodes.LEFT].indexOf(this.key)},_isExitVariable:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e),n=i.getComponent();if(i.isComponentType(\"variable\")&&i.isComponentActive()){t.preventDefault();var o=this.key===this.keycodes.LEFT?\"setBefore\":\"setAfter\";return void this.caret[o](n)}},_isExitOnUpLeft:function(t){var e=this.selection.getCurrent(),i=this.selection.getBlock(e),n=this.inspector.parse(e),o=i.previousElementSibling,s=this.caret.isStart(i);if(s&&o&&\"TABLE\"===o.tagName)return t.preventDefault(),this.caret.setEnd(o),!0;if(n.isFigcaption()){i=n.getFigcaption(),s=this.caret.isStart(i);var r=$R.dom(i).closest(\".redactor-component\");if(s&&0!==r.length)return t.preventDefault(),this.caret.setEnd(r),!0}else{if(n.isTable()&&s)return t.preventDefault(),this.caret.setEnd(i.previousElementSibling),!0;if(!n.isComponentEditable()&&n.isComponent()&&!n.isComponentType(\"variable\")){var a=n.getComponent();if(a.previousElementSibling)return t.preventDefault(),this.component.clearActive(),this.caret.setEnd(a.previousElementSibling),!0}}},_isExitOnDownRight:function(t){var e,i,n=this.editor.getElement(),o=this.selection.getCurrent(),s=this.inspector.parse(o),r=this.caret.isEnd();if(s.isTable()){if(i||r)return this._exitNextElement(t,s.getComponent())}else if(s.isFigcaption()){if(e=s.getFigcaption(),(i=this.caret.isEnd(e))||r)return this._exitNextElement(t,s.getComponent())}else if(s.isComponentType(\"code\")){var a=s.getComponent(),c=$R.dom(s.getComponentCodeElement()).closest(\"pre\");i=this.caret.isEnd(e);var l=c&&c.get().nextElementSibling;if(i&&!l)return this._exitNextElement(t,a)}else if(s.isPre()||s.isBlockquote()||s.isDl()){if(r){if(s.isPre())return this._exitNextElement(t,s.getPre());if(s.isBlockquote())return this._exitNextElement(t,s.getBlockquote());if(s.isDl())return this._exitNextElement(t,s.getDl())}}else if(s.isList()){var d=$R.dom(o).parents(\"ul, ol\",n).last();if((i=this.caret.isEnd(d))||r)return this._exitNextElement(t,d.get())}else if(s.isComponent()&&!s.isComponentType(\"variable\")&&\"span\"!==s.getTag())return this.component.clearActive(),this._exitNextElement(t,s.getComponent())},_exitNextElement:function(t,e){return t.preventDefault(),e.nextElementSibling?this.caret.setStart(e.nextElementSibling):this.utils.createMarkup(e),!0},_selectComponent:function(t,e,i){var n=this.selection.getCurrent(),o=this.selection.getBlock(n),s=this.utils.findSiblings(n,i),r=this.utils.findSiblings(o,i);s&&this.caret[\"is\"+e](n)?this._selectComponentItem(t,s,e):r&&this.caret[\"is\"+e](o)&&this._selectComponentItem(t,r,e)},_selectComponentItem:function(t,e,i){if(this.component.isNonEditable(e))return t.preventDefault(),this.caret[\"set\"+i](e),!0}}),$R.add(\"class\",\"input.delete\",{init:function(t,e,i){this.app=t,this.opts=t.opts,this.caret=t.caret,this.utils=t.utils,this.editor=t.editor,this.marker=t.marker,this.keycodes=t.keycodes,this.component=t.component,this.inspector=t.inspector,this.selection=t.selection,this.key=i,this._init(e)},_init:function(t){if(!this._removeActiveComponent(t)&&!this._removeAllSelectedTable(t)){if(this.key===this.keycodes.BACKSPACE){var e=this.editor.getElement();if(this.utils.trimSpaces(e.html())===this.opts.emptyHtml)return void t.preventDefault()}if(this._detectVariableOrNonEditable()||this.selection.hasNonEditable())return void t.preventDefault();this.selection.isCollapsed()&&(this.key===this.keycodes.BACKSPACE?this._traverseBackspace(t):this.key===this.keycodes.DELETE&&this._traverseDelete(t)),this.key===this.keycodes.BACKSPACE&&this.utils.trimInvisibleChars(\"left\"),this._removeUnwantedStyles(),this._removeEmptySpans(),this._removeSpanTagsInHeadings(),this._removeInlineTagsInPre()}},_detectVariableOrNonEditable:function(){var t,e=this.selection.getBlock(),i=this.caret.isStart(e),n=this.caret.isEnd(e);if(this.key===this.keycodes.BACKSPACE&&i){if(t=e.previousSibling,this._isNonEditable(t))return!0}else if(this.key===this.keycodes.DELETE&&n&&(t=e.nextSibling,this._isNonEditable(t)))return!0;var o=this.selection.getCurrent(),s=this.caret.isStart(o),r=this.caret.isEnd(o),a=\"\"===this.selection.getTextBeforeCaret().trim(),c=\"\"===this.selection.getTextAfterCaret().trim();if(this.key===this.keycodes.BACKSPACE&&s&&!a){if(t=o.previousSibling,this._isVariable(t))return this.caret.setEnd(t),!0;if(this._isNonEditable(t))return!0}else if(this.key===this.keycodes.DELETE&&r&&!c){if(t=o.nextSibling,this._isVariable(t))return this.caret.setStart(t),!0;if(this._isNonEditable(t))return!0}},_isVariable:function(t){return 0!==$R.dom(t).closest('[data-redactor-type=\"variable\"]').length},_isNonEditable:function(t){return 0!==$R.dom(t).closest(\".non-editable\").length},_getBlock:function(){var t=this.editor.getElement(),e=this.selection.getBlock(),i=this.inspector.parse(e);return e=i.isList()?$R.dom(e).parents(\"ul, ol\",t).last().get():e,e=i.isDl()?i.getDl():e,e=i.isTable()?i.getTable():e},_traverseDelete:function(t){var e,i,n,o=this.selection.getCurrent(),s=this.inspector.parse(o);if(s.isFigcaption()){if(e=s.getFigcaption(),i=this.caret.isEnd(e))return void t.preventDefault()}else if(s.isComponentType(\"code\")&&(e=s.getComponent(),i=this.caret.isEnd(e)))return void t.preventDefault();e=this._getBlock();var r=this.utils.findSiblings(e,\"next\");if(r){i=this.caret.isEnd(e);var a=this.inspector.parse(r),c=\"P\"===r.tagName||\"DIV\"===r.tagName;if(i&&a.isComponentEditable())return t.preventDefault(),void this.component.remove(r,!1);if(i&&a.isComponent())return t.preventDefault(),this.caret.setStart(r),void(this.utils.isEmptyHtml(e.innerHTML)&&$R.dom(e).remove());if(i&&a.isList()){var l=$R.dom(e);if(n=$R.dom(r),s.isList())return t.preventDefault(),l.append(n),void n.unwrap();var d=n.children(\"li\").first(),p=d.find(\"ul, ol\");if(0!==p.length)return t.preventDefault(),n.prepend(p),p.unwrap(),l.append(d),void d.unwrap()}else if(i&&!s.isList()&&!s.isTable()&&c&&!this.utils.isEmptyHtml(e.innerHTML)){t.preventDefault();var u=$R.dom(e);return n=$R.dom(r),u.append(n),void n.unwrap()}}},_traverseBackspace:function(t){var e,i,n,o,s=this.selection.getCurrent(),r=this.inspector.parse(s);if(r.isFigcaption()){if(e=r.getFigcaption(),i=this.caret.isStart(e))return void t.preventDefault()}else if(r.isComponentType(\"code\")&&(e=r.getComponent(),(i=this.caret.isStart(e))&&e.previousElementSibling))return t.preventDefault(),this.caret.setEnd(e.previousElementSibling),!0;e=this._getBlock();var a=this.utils.findSiblings(e,\"prev\");if(!a)return void setTimeout(this._replaceBlock.bind(this),1);i=this.caret.isStart(e);var c=this.inspector.parse(a),l=\"P\"===a.tagName||\"DIV\"===a.tagName;if(i&&c.isComponentEditable())return t.preventDefault(),void this.component.remove(a,!1);if(i&&c.isComponent())return t.preventDefault(),this.caret.setStart(a),void(this.utils.isEmptyHtml(e.innerHTML)&&$R.dom(e).remove());if(i&&r.isList())if(t.preventDefault(),o=$R.dom(e),n=$R.dom(a),c.isList())o.children(\"li\").first().prepend(this.marker.build(\"start\")),n.append(o),o.unwrap(),this.selection.restoreMarkers();else{var d=o.children(\"li\").first(),p=d.get(),u=d.find(\"ul, ol\"),h=this.utils.replaceToTag(p,this.opts.markup);this.opts.breakline&&h.attr(\"data-redactor-tag\",\"br\"),o.before(h),this.caret.setStart(h),0!==u.length&&(o.prepend(u),u.unwrap())}else if(i&&l){t.preventDefault();var f=this.utils.createInvisibleChar(),M=$R.dom(e);return n=$R.dom(a),this.caret.setEnd(n),M.prepend(f),n.append(M.contents()),void M.remove()}},_replaceBlock:function(){var t=this.selection.getBlock(),e=$R.dom(t);if(\"p\"===this.opts.markup&&t&&this._isNeedToReplaceBlock(t)){var i=document.createElement(this.opts.markup);e.replaceWith(i),this.caret.setStart(i)}this.opts.breakline&&t&&\"DIV\"===t.tagName&&e.attr(\"data-redactor-tag\",\"br\")},_isNeedToReplaceBlock:function(t){return\"DIV\"===t.tagName&&this.utils.isEmptyHtml(t.innerHTML)},_removeActiveComponent:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e),n=i.getComponent();if(i.isComponent()&&this.component.isActive(n))return t.preventDefault(),this.component.remove(n),!0},_removeAllSelectedTable:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e),n=i.getTable();if(n&&this.selection.isAll(n))return t.preventDefault(),this.component.remove(n),!0},_removeUnwantedStyles:function(){var t=this.editor.getElement();setTimeout(function(){t.find(\"*[style]\").not(\"img, figure, iframe, [data-redactor-style-cache], [data-redactor-span]\").removeAttr(\"style\")},0)},_removeEmptySpans:function(){var t=this.editor.getElement();setTimeout(function(){t.find(\"span\").each(function(t){0===t.attributes.length&&$R.dom(t).replaceWith(t.childNodes)})},0)},_removeSpanTagsInHeadings:function(){var t=this.editor.getElement();setTimeout(function(){t.find(\"h1, h2, h3, h4, h5, h6\").each(function(t){var e=$R.dom(t);0===e.closest(\"figure\").length&&e.find(\"span\").not(\".redactor-component, .non-editable, .redactor-selection-marker, [data-redactor-style-cache], [data-redactor-span]\").unwrap()})},1)},_removeInlineTagsInPre:function(){var t=this.editor.getElement(),e=this.opts.inlineTags;setTimeout(function(){t.find(\"pre\").each(function(t){var i=$R.dom(t);0===i.closest(\"figure\").length&&i.find(e.join(\",\")).not(\"code, .redactor-selection-marker\").unwrap()})},1)}}),$R.add(\"class\",\"input.enter\",{init:function(t,e){this.app=t,this.opts=t.opts,this.utils=t.utils,this.caret=t.caret,this.editor=t.editor,this.insertion=t.insertion,this.selection=t.selection,this.inspector=t.inspector,this._init(e)},_init:function(t){return this.opts.enterKey?!1===this.app.broadcast(\"enter\",t)?t.preventDefault():this.selection.hasNonEditable()?void t.preventDefault():t.ctrlKey||t.shiftKey?this._insertBreak(t):void(this._isExit(t)||this._traverse(t)):this._disable(t)},_disable:function(t){t.preventDefault();var e=this.selection.getRange();e&&!e.collapsed&&e.deleteContents()},_insertBreak:function(t){t.preventDefault();var e=this.selection.getCurrent(),i=this.inspector.parse(e);i.isComponent()&&!i.isComponentEditable()||i.isCode()||(i.isPre()?this.insertion.insertNewline():this.insertion.insertBreakLine())},_isExit:function(t){var e=this.editor.getElement(),i=this.selection.getBlock(),n=this.inspector.parse(i),o=this.caret.isEnd(i),s=this.selection.getCurrent(),r=s.previousSibling;if(n.isBlockquote()){var a=o&&this._isExitableBlock(i,\"P\"),c=o&&this._isExitableDblBreak(r);if(a||c)return this._exitFromElement(t,c?r:i,n.getBlockquote())}else if(!n.isComponentType(\"code\")&&n.isPre()){if(o){var l=i.innerHTML;if(l=this.utils.removeInvisibleChars(l),null!==l.match(/(\\n\\n\\n)$/))return $R.dom(r.previousSibling.previousSibling).remove(),this._exitFromElement(t,r,i)}}else if(n.isDl()){if(o&&this._isExitableBlock(i,\"DT\"))return this._exitFromElement(t,i,n.getDl())}else if(n.isList()){var d=$R.dom(s).parents(\"ul, ol\",e).last();if((o=this.caret.isEnd(d))&&this._isExitableBlock(i,\"LI\"))return this._exitFromElement(t,i,d)}else if(n.isComponent()&&n.isComponentActive()&&!n.isFigcaption()&&!n.isComponentEditable())return this._exitFromElement(t,!1,n.getComponent())},_isExitableDblBreak:function(t){var e=!!t&&t.nextSibling;if(e){var i=this.utils.removeInvisibleChars(e.textContent);return 3===e.nodeType&&\"\"===i.trim()}},_isExitableBlock:function(t,e){return t&&t.tagName===e&&this.utils.isEmptyHtml(t.innerHTML)},_exitFromElement:function(t,e,i){return t.preventDefault(),e&&$R.dom(e).remove(),this.utils.createMarkup(i),!0},_exitNextElement:function(t,e){return t.preventDefault(),e.nextSibling?this.caret.setStart(e.nextSibling):this.utils.createMarkup(e),!0},_traverse:function(t){var e=this.selection.getCurrent(),i=this.selection.isText(),n=this.selection.getBlock(),o=this.inspector.parse(e),s=!!n&&n.tagName.toLowerCase();if(o.isPre())return t.preventDefault(),this.insertion.insertNewline();if(!o.isBlockquote()){if(o.isFigcaption()){\nn=o.getFigcaption();var r=this.caret.isEnd(n),a=this.caret.isEnd();return r||a?this._exitNextElement(t,o.getComponent()):void t.preventDefault()}return o.isDl()?(t.preventDefault(),this._traverseDl(e)):i||this.opts.breakline&&\"div\"===s?(t.preventDefault(),this.insertion.insertBreakLine()):void setTimeout(this._replaceBlock.bind(this),1)}return(n=this.selection.getBlock(e))&&\"BLOCKQUOTE\"===n.tagName?(t.preventDefault(),this.insertion.insertBreakLine()):void 0},_traverseDl:function(t){var e=this.selection.getBlock(t),i=this.inspector.parse(e),n=i.getTag(),o=$R.dom(e),s=o.get().nextSibling||!1,r=$R.dom(s),a=s&&r.is(\"dd\"),c=s&&r.is(\"dt\"),l=this.caret.isEnd(e);if(\"dt\"===n&&!a&&l){var d=document.createElement(\"dd\");return o.after(d),void this.caret.setStart(d)}if(\"dd\"===n&&!c&&l){var p=document.createElement(\"dt\");return o.after(p),void this.caret.setStart(p)}return this.insertion.insertBreakLine()},_replaceBlock:function(){var t=this.selection.getBlock(),e=$R.dom(t);if(\"p\"===this.opts.markup&&t&&this._isNeedToReplaceBlock(t)){var i=document.createElement(this.opts.markup);e.replaceWith(i),this.caret.setStart(i)}else if(t)if(this.utils.isEmptyHtml(t.innerHTML))this._clearBlock(e,t);else{var n=this.utils.getFirstNode(t);n&&\"BR\"===n.tagName&&($R.dom(n).remove(),this.caret.setStart(t))}t&&this._isNeedToCleanBlockStyle(t)&&this.opts.cleanOnEnter&&e.removeAttr(\"class style\"),this.opts.breakline&&t&&\"DIV\"===t.tagName&&e.attr(\"data-redactor-tag\",\"br\")},_clearBlock:function(t,e){(this.opts.cleanInlineOnEnter||\"<br>\"===e.innerHTML)&&t.html(\"\"),this.caret.setStart(e)},_isNeedToReplaceBlock:function(t){return\"DIV\"===t.tagName&&this.utils.isEmptyHtml(t.innerHTML)},_isNeedToCleanBlockStyle:function(t){return\"P\"===t.tagName&&this.utils.isEmptyHtml(t.innerHTML)}}),$R.add(\"class\",\"input.paste\",{init:function(t,e,i,n,o){this.app=t,this.opts=t.opts,this.editor=t.editor,this.cleaner=t.cleaner,this.container=t.container,this.inspector=t.inspector,this.insertion=t.insertion,this.selection=t.selection,this.autoparser=t.autoparser,this.pasteHtml=n,this.pointInserted=o,this.dataTransfer=i,this._init(e)},_init:function(t){var e=this.dataTransfer||t.clipboardData,i=this.selection.getCurrent(),n=this.inspector.parse(i);if(this.dropPasted=this.dataTransfer,this.isRawCode=n.isPre()||n.isCode(),this.editor.enablePasting(),this.editor.saveScroll(),this.dropPasted||this.selection.saveMarkers(),this.isRawCode||!e){var o;return o=this.isRawCode||e||!window.clipboardData?e.getData(\"text/plain\"):window.clipboardData.getData(\"text\"),t.preventDefault(),void this._insert(t,o)}if(this.pasteHtml)t.preventDefault(),this._insert(t,this.pasteHtml);else{var s=e.getData(\"URL\"),r=this._isPlainText(e)?e.getData(\"text/plain\"):e.getData(\"text/html\");if(r=s&&\"\"!==s?s:r,e.files.length>0&&\"\"===r){for(var a=[],c=0;c<e.files.length;c++){var l=e.files[c]||e.items[c].getAsFile();l&&a.push(l)}if(a.length>0)return t.preventDefault(),void this._insertFiles(t,a)}t.preventDefault(),this._insert(t,r)}},_isPlainText:function(t){var e=t.getData(\"text/plain\"),i=t.getData(\"text/html\");if(!e||!i)return null!==e;var n=document.createElement(\"div\");return n.innerHTML=i,n.textContent===e?!n.querySelector(\":not(meta)\"):void 0},_restoreSelection:function(){this.editor.restoreScroll(),this.editor.disablePasting(),this.dropPasted||this.selection.restoreMarkers()},_insert:function(t,e){var i=this.app.broadcast(\"pasteBefore\",e);if(e=void 0===i?e:i,e=this.isRawCode?e:this.cleaner.paste(e),e=this.isRawCode?this.cleaner.encodePhpCode(e):e,i=this.app.broadcast(\"pasting\",e),e=void 0===i?e:i,this._restoreSelection(),this.opts.input){this.opts.autoparse&&this.opts.autoparsePaste&&(e=this.autoparser.parse(e));var n=this.dropPasted?this.insertion.insertToPoint(t,e,this.pointInserted):this.insertion.insertHtml(e);this.app.broadcast(\"pasted\",n),this.app.broadcast(\"autoparseobserve\")}},_insertFiles:function(t,e){this._restoreSelection();var i=-1!==this.opts.imageTypes.indexOf(e[0].type),n=void 0===this.dropPasted;i?this.app.broadcast(\"dropimage\",t,e,n):this.app.broadcast(\"dropfile\",t,e,n)}}),$R.add(\"class\",\"input.shortcode\",{init:function(t,e,i){this.app=t,this.opts=t.opts,this.utils=t.utils,this.marker=t.marker,this.keycodes=t.keycodes,this.selection=t.selection,this.worked=!1,i===this.keycodes.SPACE&&this._init()},is:function(){return this.worked},_init:function(){var t=this.selection.getCurrent();if(t&&3===t.nodeType){var e=this.utils.removeInvisibleChars(t.textContent),i=this.opts.shortcodes;for(var n in i){var o=new RegExp(\"^\"+this.utils.escapeRegExp(n));if(null!==e.match(o)&&void 0!==i[n].format)return this._format(i[n].format,t,o)}}},_format:function(t,e,i){e=this.marker.insert(\"start\").previousSibling;var n=e.textContent;n=this.utils.trimSpaces(n),n=n.replace(i,\"\"),e.textContent=n;var o=\"ul\"===t||\"ol\"===t?\"module.list.toggle\":\"module.block.format\";this.app.api(o,t),this.selection.restoreMarkers(),this.worked=!0}}),$R.add(\"class\",\"input.shortcut\",{init:function(t,e){this.app=t,this.opts=t.opts,this.worked=!1,this.hotkeys={8:\"backspace\",9:\"tab\",10:\"return\",13:\"return\",16:\"shift\",17:\"ctrl\",18:\"alt\",19:\"pause\",20:\"capslock\",27:\"esc\",32:\"space\",33:\"pageup\",34:\"pagedown\",35:\"end\",36:\"home\",37:\"left\",38:\"up\",39:\"right\",40:\"down\",45:\"insert\",46:\"del\",59:\";\",61:\"=\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",106:\"*\",107:\"+\",109:\"-\",110:\".\",111:\"/\",112:\"f1\",113:\"f2\",114:\"f3\",115:\"f4\",116:\"f5\",117:\"f6\",118:\"f7\",119:\"f8\",120:\"f9\",121:\"f10\",122:\"f11\",123:\"f12\",144:\"numlock\",145:\"scroll\",173:\"-\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"},this.hotkeysShiftNums={\"`\":\"~\",1:\"!\",2:\"@\",3:\"#\",4:\"$\",5:\"%\",6:\"^\",7:\"&\",8:\"*\",9:\"(\",0:\")\",\"-\":\"_\",\"=\":\"+\",\";\":\": \",\"'\":'\"',\",\":\"<\",\".\":\">\",\"/\":\"?\",\"\\\\\":\"|\"},this._init(e)},is:function(){return this.worked},_init:function(t){if(!1===this.opts.shortcuts)return void(!t.ctrlKey&&!t.metaKey||66!==t.which&&73!==t.which||t.preventDefault());for(var e in this.opts.shortcuts)this._build(t,e,this.opts.shortcuts[e])},_build:function(t,e,i){for(var n=e.split(\",\"),o=n.length,s=0;s<o;s++)\"string\"==typeof n[s]&&this._handler(t,n[s].trim(),i)},_handler:function(t,e,i){e=e.toLowerCase().split(\" \");for(var n=this.hotkeys[t.keyCode],o=String.fromCharCode(t.which).toLowerCase(),s=\"\",r={},a=[\"alt\",\"ctrl\",\"meta\",\"shift\"],c=0;c<a.length;c++){var l=a[c];t[l+\"Key\"]&&n!==l&&(s+=l+\"+\")}n&&(r[s+n]=!0),o&&(r[s+o]=!0,r[s+this.hotkeysShiftNums[o]]=!0,\"shift+\"===s&&(r[this.hotkeysShiftNums[o]]=!0));for(var d=e.length,c=0;c<d;c++)if(r[e[c]])return t.preventDefault(),this.worked=!0,void(i.message?this.app.broadcast(i.message,i.args):i.api&&this.app.api(i.api,i.args))}}),$R.add(\"class\",\"input.space\",{init:function(t,e,i,n){this.app=t,this.keycodes=t.keycodes,this.insertion=t.insertion,this.selection=t.selection,this.key=i,this.lastShiftKey=n,this._init(e)},_init:function(t){return this.selection.hasNonEditable()?void t.preventDefault():this.lastShiftKey||this.key!==this.keycodes.SPACE||!t.ctrlKey&&!t.shiftKey||t.metaKey?void 0:(t.preventDefault(),void this.insertion.insertChar(\"&nbsp;\"))}}),$R.add(\"class\",\"input.tab\",{init:function(t,e){this.app=t,this.opts=t.opts,this.inspector=t.inspector,this.insertion=t.insertion,this.selection=t.selection,this._init(e)},_init:function(t){if(this.opts.tabKey){if(!1===this.app.broadcast(\"tab\",t))return t.preventDefault();this._traverse(t)}},_traverse:function(t){var e=this.selection.getCurrent(),i=this.inspector.parse(e);return!i.isComponent()&&t.shiftKey?this._insertHardTab(t,4):i.isList()?(t.preventDefault(),this.app.api(\"module.list.indent\")):i.isPre()||i.isComponentType(\"code\")&&!i.isFigcaption()?this._tabCode(t):!1!==this.opts.tabAsSpaces?this._insertHardTab(t,this.opts.tabAsSpaces):void 0},_insertHardTab:function(t,e){t.preventDefault();var i=document.createTextNode(Array(e+1).join(\" \"));return this.insertion.insertNode(i,\"end\")},_tabCode:function(t){t.preventDefault();var e=this.opts.preSpaces?document.createTextNode(Array(this.opts.preSpaces+1).join(\" \")):document.createTextNode(\"\\t\");return this.insertion.insertNode(e,\"end\")}}),$R.add(\"module\",\"upload\",{init:function(t){this.app=t,this.opts=t.opts,this.lang=t.lang,this.utils=t.utils,this.editor=t.editor,this.progress=t.progress,this.defaults={event:!1,element:!1,name:!1,files:!1,url:!1,data:!1,paramName:!1}},build:function(t){this.p=$R.extend(this.defaults,t),this.$el=$R.dom(this.p.element),\"INPUT\"===this.$el.get().tagName?this._buildInput():this._buildBox()},send:function(t){this.p=$R.extend(this.defaults,t),this.$uploadbox=this.editor.getElement(),this._send(this.p.event,this.p.files)},complete:function(t,e){this._complete(t,e)},_buildInput:function(){this.box=!1,this.prefix=\"\",this.$uploadbox=$R.dom('<div class=\"upload-box\" />'),this.$el.hide(),this.$el.after(this.$uploadbox),this.opts.multipleUpload?this.$el.attr(\"multiple\",\"multiple\"):this.$el.removeAttr(\"multiple\"),this._buildPlaceholder(),this._buildEvents()},_buildBox:function(){this.box=!0,this.prefix=\"box-\",this.$uploadbox=this.$el,this.$uploadbox.attr(\"ondragstart\",\"return false;\"),this.$uploadbox.on(\"drop.redactor.upload\",this._onDropBox.bind(this)),this.$uploadbox.on(\"dragover.redactor.upload\",this._onDragOver.bind(this)),this.$uploadbox.on(\"dragleave.redactor.upload\",this._onDragLeave.bind(this))},_buildPlaceholder:function(){this.$placeholder=$R.dom('<div class=\"upload-placeholder\" />'),this.$placeholder.html(this.lang.get(\"upload-label\")),this.$uploadbox.append(this.$placeholder)},_buildEvents:function(){this.$el.on(\"change.redactor.upload\",this._onChange.bind(this)),this.$uploadbox.on(\"click.redactor.upload\",this._onClick.bind(this)),this.$uploadbox.on(\"drop.redactor.upload\",this._onDrop.bind(this)),this.$uploadbox.on(\"dragover.redactor.upload\",this._onDragOver.bind(this)),this.$uploadbox.on(\"dragleave.redactor.upload\",this._onDragLeave.bind(this))},_onClick:function(t){t.preventDefault(),this.$el.click()},_onChange:function(t){this._send(t,this.$el.get().files)},_onDrop:function(t){t.preventDefault(),this._clear(),this._setStatusDrop(),this._send(t)},_onDragOver:function(t){return t.preventDefault(),this._setStatusHover(),!1},_onDragLeave:function(t){return t.preventDefault(),this._removeStatusHover(),!1},_onDropBox:function(t){t.preventDefault(),this._clear(),this._setStatusDrop(),this._send(t)},_removeStatusHover:function(){this.$uploadbox.removeClass(\"upload-\"+this.prefix+\"hover\")},_setStatusDrop:function(){this.$uploadbox.addClass(\"upload-\"+this.prefix+\"drop\")},_setStatusHover:function(){this.$uploadbox.addClass(\"upload-\"+this.prefix+\"hover\")},_setStatusError:function(){this.$uploadbox.addClass(\"upload-\"+this.prefix+\"error\")},_setStatusSuccess:function(){this.$uploadbox.addClass(\"upload-\"+this.prefix+\"success\")},_clear:function(){for(var t=[\"drop\",\"hover\",\"error\",\"success\"],e=0;e<t.length;e++)this.$uploadbox.removeClass(\"upload-\"+this.prefix+t[e]);this.$uploadbox.removeAttr(\"ondragstart\")},_send:function(t,e){t=t.originalEvent||t,e=e||t.dataTransfer.files;var i=new FormData,n=this._getUploadParam();i=this._buildData(n,e,i),i=this.utils.extendData(i,this.p.data),!1!==this.app.broadcast(\"upload.start\",t,i,e)&&this._sendData(i,e,t)},_sendData:function(t,e,i){if(this.progress.show(),\"function\"==typeof this.p.url){var n=this.p.url(t,e,i,this);n instanceof Promise||this._complete(n,i)}else $R.ajax.post({url:this.p.url,data:t,before:function(t){return this.app.broadcast(\"upload.beforeSend\",t)}.bind(this),success:function(t){this._complete(t,i)}.bind(this)})},_getUploadParam:function(){return this.p.paramName?this.p.paramName:\"file\"},_buildData:function(t,e,i){if(1===e.length)i.append(t+\"[]\",e[0]);else if(e.length>1&&!1!==this.opts.multipleUpload)for(var n=0;n<e.length;n++)i.append(t+\"[]\",e[n]);return i},_complete:function(t,e){this._clear(),this.progress.hide(),t&&t.error?(this._setStatusError(),this.app.broadcast(\"upload.\"+this.p.name+\".error\",t,e),this.app.broadcast(\"upload.error\",t)):(this._setStatusSuccess(),this.app.broadcast(\"upload.\"+this.p.name+\".complete\",t,e),this.app.broadcast(\"upload.complete\",t),setTimeout(this._clear.bind(this),500))}}),$R.add(\"class\",\"code.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,e&&void 0!==e.cmnt?e:this._init(e)},_init:function(t){var e;if(void 0!==t){var i=$R.dom(t),n=i.closest(\"figure\");0!==n.length?this.parse(n):(this.parse(\"<figure>\"),this.append(t)),e=this.find(\"pre code, pre\").last()}else e=$R.dom(\"<pre>\"),this.parse(\"<figure>\"),this.append(e);this._initElement(e),this._initWrapper()},_initElement:function(t){t.attr({tabindex:\"-1\",contenteditable:!0})},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"code\",tabindex:\"-1\",contenteditable:!1})}}),$R.add(\"module\",\"form\",{init:function(t){this.app=t,this.lang=t.lang,this.component=t.component,this.inspector=t.inspector},onform:{remove:function(t){this._remove(t)}},oncontextbar:function(t,e){var i=this.inspector.parse(t.target);if(i.isComponentType(\"form\")){var n=i.getComponent(),o={remove:{title:this.lang.get(\"delete\"),api:\"module.form.remove\",args:n}};e.set(t,n,o,\"top\")}},_remove:function(t){this.component.remove(t)}}),$R.add(\"class\",\"form.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,this.utils=t.utils,e&&void 0!==e.cmnt?e:this._init(e)},_init:function(t){if(void 0!==t){if(0!==$R.dom(t).closest(\"form\").length){var e=this.utils.replaceToTag(t,\"figure\");this.parse(e)}else this.parse(\"<figure>\"),this.append(t)}else this.parse(\"<figure>\");this._initWrapper()},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"form\",tabindex:\"-1\",contenteditable:!1})}}),$R.add(\"module\",\"image\",{modals:{image:'<div class=\"redactor-modal-tab\" data-title=\"## upload ##\"><form action=\"\">                 <input type=\"file\" name=\"file\">             </form></div>',imageedit:'<div class=\"redactor-modal-group\">                 <div id=\"redactor-modal-image-preview\" class=\"redactor-modal-side\"></div>                 <form action=\"\" class=\"redactor-modal-area\">                     <div class=\"form-item\">                         <label for=\"modal-image-title\"> ## title ##</label>                         <input type=\"text\" id=\"modal-image-title\" name=\"title\" />                     </div>                     <div class=\"form-item\">                         <label for=\"modal-image-caption\">## caption ##</label>                         <input type=\"text\" id=\"modal-image-caption\" name=\"caption\" aria-label=\"## caption ##\" />                     </div>                     <div class=\"form-item form-item-align\">                         <label>## image-position ##</label>                         <select name=\"align\" aria-label=\"## image-position ##\">                             <option value=\"none\">## none ##</option>                             <option value=\"left\">## left ##</option>                             <option value=\"center\">## center ##</option>                             <option value=\"right\">## right ##</option>                         </select>                     </div>                     <div class=\"form-item\">                         <label for=\"modal-image-url\">## link ##</label>                         <input type=\"text\" id=\"modal-image-url\" name=\"url\" aria-label=\"## link ##\" />                     </div>                     <div class=\"form-item\">                         <label class=\"checkbox\"><input type=\"checkbox\" name=\"target\" aria-label=\"## link-in-new-tab ##\"> ## link-in-new-tab ##</label>                     </div>                 </form>             </div>'},init:function(t){this.app=t,this.opts=t.opts,this.lang=t.lang,this.caret=t.caret,this.utils=t.utils,this.editor=t.editor,this.storage=t.storage,this.component=t.component,this.inspector=t.inspector,this.insertion=t.insertion,this.selection=t.selection,this.justResized=!1},oninsert:function(){this._observeImages()},onstarted:function(){this.storage.observeImages(),this.opts.imageResizable&&(this.resizer=$R.create(\"image.resize\",this.app)),this._observeImages()},ondropimage:function(t,e,i){if(this.opts.imageUpload){var n={url:this.opts.imageUpload,event:!i&&t,files:e,name:\"imagedrop\",data:this.opts.imageData,paramName:this.opts.imageUploadParam};this.app.api(\"module.upload.send\",n)}},onstop:function(){this.resizer&&this.resizer.stop()},onbottomclick:function(){this.insertion.insertToEnd(this.editor.getLastNode(),\"image\")},onimageresizer:{stop:function(){this.resizer&&this.resizer.hide()}},onsource:{open:function(){this.resizer&&this.resizer.hide()},closed:function(){this._observeImages(),this.resizer&&this.resizer.rebuild()}},onupload:{complete:function(){this._observeImages()},image:{complete:function(t){this._insert(t)},error:function(t){this._uploadError(t)}},imageedit:{complete:function(t){this._change(t)},error:function(t){this._uploadError(t)}},imagedrop:{complete:function(t,e){this._insert(t,e)},error:function(t){this._uploadError(t)}},imagereplace:{complete:function(t){this._change(t,!1)},error:function(t){this._uploadError(t)}}},onmodal:{image:{open:function(t,e){this._setUpload(e)}},imageedit:{open:function(t,e){this._setFormData(t,e)},opened:function(t,e){this._setFormFocus(e)},remove:function(){this._remove(this.$image)},save:function(t,e){this._save(t,e)}}},onimage:{observe:function(){this._observeImages()},resized:function(){this.justResized=!0}},oncontextbar:function(t,e){if(this.justResized)return void(this.justResized=!1);var i=this.selection.getCurrent(),n=this.inspector.parse(i);if(!n.isFigcaption()&&n.isComponentType(\"image\")){var o=n.getComponent(),s={edit:{title:this.lang.get(\"edit\"),api:\"module.image.open\"},remove:{title:this.lang.get(\"delete\"),api:\"module.image.remove\",args:o}};e.set(t,o,s)}},open:function(){this.$image=this._getCurrent(),this.app.api(\"module.modal.build\",this._getModalData())},insert:function(t){this._insert(t)},remove:function(t){this._remove(t)},_getModalData:function(){return this._isImage()&&this.opts.imageEditable?{name:\"imageedit\",width:\"800px\",title:this.lang.get(\"edit\"),handle:\"save\",commands:{save:{title:this.lang.get(\"save\")},remove:{title:this.lang.get(\"delete\"),type:\"danger\"},cancel:{title:this.lang.get(\"cancel\")}}}:{name:\"image\",title:this.lang.get(\"image\")}},_isImage:function(){return this.$image},_getCurrent:function(){var t=this.selection.getCurrent(),e=this.inspector.parse(t);return!(!e.isComponentType(\"image\")||!e.isComponentActive())&&this.component.create(\"image\",e.getComponent())},_insert:function(t,e){if(this.app.api(\"module.modal.close\"),Array.isArray(t)){for(var i={},n=0;n<t.length;n++)i=$R.extend(i,t[n]);t=i}else\"string\"==typeof t&&(t={file:{url:t}});if(\"object\"==typeof t){Object.keys(t).length>1?this._insertMultiple(t,e):this._insertSingle(t,e)}},_insertSingle:function(t,e){for(var i in t){var n=this._createImageAndStore(t[i]),o=e?this.insertion.insertToPoint(e,n):this.insertion.insertHtml(n);this._removeSpaceBeforeFigure(o[0]),this.component.setActive(o[0]),this.app.broadcast(\"image.uploaded\",o[0],t)}},_insertMultiple:function(t,e){var i,n=0,o=[];for(var s in t){n++;var r=this._createImageAndStore(t[s]);if(1===n)o=e?this.insertion.insertToPoint(e,r):this.insertion.insertHtml(r);else{$R.dom(o[0]).after(r),o=[r.get()],this.app.broadcast(\"image.inserted\",r)}i=o[0],this._removeSpaceBeforeFigure(o[0]),this.app.broadcast(\"image.uploaded\",o[0],t)}this.component.setActive(i)},_createImageAndStore:function(t){var e=this.component.create(\"image\");return e.addClass(\"redactor-uploaded-figure\"),e.setData({src:t.url,id:t.id?t.id:this.utils.getRandomId()}),this.storage.add(\"image\",e.getElement()),e},_removeSpaceBeforeFigure:function(t){if(t){var e=t.previousSibling;e&&(this._removeInvisibleSpace(e),this._removeInvisibleSpace(e.previousSibling))}},_removeInvisibleSpace:function(t){t&&3===t.nodeType&&-1!==this.utils.searchInvisibleChars(t.textContent)&&t.parentNode.removeChild(t)},_save:function(t,e){var i=e.getData(),n={title:i.title,link:{url:i.url,target:i.target}};this.opts.imageCaption&&(n.caption=i.caption),this.opts.imagePosition&&(n.align=i.align),this.$image.setData(n),this.resizer&&this.resizer.rebuild(),this.app.broadcast(\"image.changed\",this.$image),this.app.api(\"module.modal.close\")},_change:function(t,e){if(\"string\"==typeof t&&(t={file:{url:t}}),\"object\"==typeof t){var i;for(var n in t){i=$R.dom(\"<img>\"),i.attr(\"src\",t[n].url),this.$image.changeImage(t[n]),this.app.broadcast(\"image.changed\",this.$image,t),this.app.broadcast(\"image.uploaded\",this.$image,t);break}!1!==e&&i.on(\"load\",function(){this.$previewBox.html(i)}.bind(this))}},_uploadError:function(t){this.app.broadcast(\"image.uploadError\",t)},_remove:function(t){this.app.api(\"module.modal.close\"),this.component.remove(t)},_observeImages:function(){var t=this.editor.getElement(),e=this;t.find(\"img\").each(function(t){var i=$R.dom(t);i.off(\".drop-to-replace\"),i.on(\"dragover.drop-to-replace dragenter.drop-to-replace\",function(t){t.preventDefault()}),i.on(\"drop.drop-to-replace\",function(t){if(!e.app.isDragComponentInside())return e._setReplaceUpload(t,i)})})},_setFormData:function(t,e){this._buildPreview(),this._buildPreviewUpload();var i=this.$image.getData(),n={title:i.title};this.opts.imageCaption?n.caption=i.caption:t.find(\".form-item-caption\").hide(),this.opts.imagePosition?n.align=i.align:t.find(\".form-item-align\").hide(),i.link&&(n.url=i.link.url,i.link.target&&(n.target=!0)),e.setData(n)},_setFormFocus:function(t){t.getField(\"title\").focus()},_setReplaceUpload:function(t,e){if(t=t.originalEvent||t,t.stopPropagation(),t.preventDefault(),this.opts.imageUpload){this.$image=this.component.create(\"image\",e);var i={url:this.opts.imageUpload,files:t.dataTransfer.files,name:\"imagereplace\",data:this.opts.imageData,paramName:this.opts.imageUploadParam};this.app.api(\"module.upload.send\",i)}},_setUpload:function(t){var e={url:this.opts.imageUpload,element:t.getField(\"file\"),name:\"image\",data:this.opts.imageData,paramName:this.opts.imageUploadParam};this.app.api(\"module.upload.build\",e)},_buildPreview:function(){this.$preview=$R.dom(\"#redactor-modal-image-preview\");var t=this.$image.getData(),e=$R.dom(\"<img>\");e.attr(\"src\",t.src),this.$previewBox=$R.dom(\"<div>\"),this.$previewBox.append(e),this.$preview.html(\"\"),this.$preview.append(this.$previewBox)},_buildPreviewUpload:function(){if(this.opts.imageUpload){var t=$R.dom('<div class=\"desc\">');t.html(this.lang.get(\"upload-change-label\")),this.$preview.append(t);var e={url:this.opts.imageUpload,element:this.$previewBox,name:\"imageedit\",paramName:this.opts.imageUploadParam};this.app.api(\"module.upload.build\",e)}}}),$R.add(\"class\",\"image.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,this.opts=t.opts,this.selection=t.selection,e&&void 0!==e.cmnt?e:this._init(e)},setData:function(t){for(var e in t)this._set(e,t[e])},getData:function(){for(var t=[\"src\",\"title\",\"caption\",\"align\",\"link\",\"id\"],e={},i=0;i<t.length;i++)e[t[i]]=this._get(t[i]);return e},getElement:function(){return this.$element},changeImage:function(t){this.$element.attr(\"src\",t.url)},_init:function(t){var e=$R.dom(t),i=e.closest(\"figure\");void 0===t?(this.$element=$R.dom(\"<img>\"),this.parse(\"<figure>\"),this.append(this.$element)):0===i.length?(this.parse(\"<figure>\"),this.$element=e,this.$element.wrap(this)):(this.parse(i),this.$element=this.find(\"img\")),this._initWrapper()},_set:function(t,e){this[\"_set_\"+t](e)},_get:function(t){return this[\"_get_\"+t]()},_set_src:function(t){this.$element.attr(\"src\",t)},_set_id:function(t){this.$element.attr(\"data-image\",t)},_set_title:function(t){t=t.trim().replace(/(<([^>]+)>)/gi,\"\"),\"\"===t?(this.$element.removeAttr(\"alt\"),this.$element.removeAttr(\"title\")):(this.$element.attr(\"alt\",t),this.$element.attr(\"title\",t))},_set_caption:function(t){var e=this.find(\"figcaption\");return 0===e.length&&(e=$R.dom(\"<figcaption>\"),e.attr(\"contenteditable\",\"true\"),this.append(e)),\"\"===t?e.remove():e.html(t),e},_set_align:function(t){var e=\"\",i=\"\",n=\"\",o=this;if(\"object\"==typeof this.opts.imagePosition){var s=this.opts.imagePosition;for(var r in s)o.removeClass(s[r]);var a=void 0!==s[t]&&s[t];a&&o.addClass(a)}else{switch(t){case\"left\":e=\"left\",i=\"0 \"+this.opts.imageFloatMargin+\" \"+this.opts.imageFloatMargin+\" 0\";break;case\"right\":e=\"right\",i=\"0 0 \"+this.opts.imageFloatMargin+\" \"+this.opts.imageFloatMargin;break;case\"center\":n=\"center\"}o.css({float:e,margin:i,\"text-align\":n}),o.attr(\"rel\",o.attr(\"style\"))}},_set_link:function(t){var e=this._findLink();return\"\"===t.url?void(e&&e.unwrap()):(e||(e=$R.dom(\"<a>\"),this.$element.wrap(e)),e.attr(\"href\",t.url),t.target?e.attr(\"target\",t.target):e.removeAttr(\"target\"),e)},_get_src:function(){return this.$element.attr(\"src\")},_get_id:function(){return this.$element.attr(\"data-image\")},_get_title:function(){var t=this.$element.attr(\"alt\"),e=this.$element.attr(\"title\");return t||(e||\"\")},_get_caption:function(){var t=this.find(\"figcaption\");return 0===t.length?\"\":t.html()},_get_align:function(){var t=\"\";if(\"object\"==typeof this.opts.imagePosition){t=\"none\";var e=this.opts.imagePosition;for(var i in e)if(this.hasClass(e[i])){t=i;break}}else t=\"center\"===this.css(\"text-align\")?\"center\":this.css(\"float\");return t},_get_link:function(){var t=this._findLink();if(t){var e=!!t.attr(\"target\");return{url:t.attr(\"href\"),target:e}}},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"image\",tabindex:\"-1\",contenteditable:!1})},_findLink:function(){var t=this.find(\"a\").filter(function(t){return 0===$R.dom(t).closest(\"figcaption\").length});return 0!==t.length&&t}}),$R.add(\"class\",\"image.resize\",{init:function(t){this.app=t,this.$doc=t.$doc,this.$win=t.$win,this.$body=t.$body,this.editor=t.editor,this.toolbar=t.toolbar,this.inspector=t.inspector,this.$target=this.toolbar.isTarget()?this.toolbar.getTargetElement():this.$body,this._init()},rebuild:function(){this._setResizerPosition()},hide:function(){this.$target.find(\"#redactor-image-resizer\").remove()},stop:function(){this.editor.getElement().off(\".redactor.image-resize\"),this.$doc.off(\".redactor.image-resize\"),this.$win.off(\"resize.redactor.image-resize\"),this.hide()},_init:function(){this.editor.getElement().on(\"click.redactor.image-resize\",this._build.bind(this)),this.$win.on(\"resize.redactor.image-resize\",this._setResizerPosition.bind(this))},_build:function(t){this.$target.find(\"#redactor-image-resizer\").remove();var e=this.inspector.parse(t.target),i=this.editor.getElement();e.isComponentType(\"image\")&&(this.$resizableBox=i,this.$resizableImage=$R.dom(e.getImageElement()),this.$resizer=$R.dom(\"<span>\"),this.$resizer.attr(\"id\",\"redactor-image-resizer\"),this.$target.append(this.$resizer),this._setResizerPosition(),this.$resizer.on(\"mousedown touchstart\",this._set.bind(this)))},_setResizerPosition:function(){if(this.$resizer){var t=this.toolbar.isTarget(),e=this.$target.offset(),i=t?7-e.top+this.$target.scrollTop():7,n=t?7-e.left:7,o=this.$resizableImage.offset(),s=this.$resizableImage.width(),r=this.$resizableImage.height(),a=this.$resizer.width(),c=this.$resizer.height();this.$resizer.css({top:o.top+r-c+i+\"px\",left:o.left+s-a+n+\"px\"})}},_set:function(t){t.preventDefault(),this.resizeHandle={x:t.pageX,y:t.pageY,el:this.$resizableImage,ratio:this.$resizableImage.width()/this.$resizableImage.height(),h:this.$resizableImage.height()},t=t.originalEvent||t,t.targetTouches&&(this.resizeHandle.x=t.targetTouches[0].pageX,this.resizeHandle.y=t.targetTouches[0].pageY),this.app.broadcast(\"contextbar.close\"),this.app.broadcast(\"image.resize\",this.$resizableImage),this._start()},_start:function(){this.$doc.on(\"mousemove.redactor.image-resize touchmove.redactor.image-resize\",this._move.bind(this)),this.$doc.on(\"mouseup.redactor.image-resize touchend.redactor.image-resize\",this._stop.bind(this))},_stop:function(){this.$doc.off(\".redactor.image-resize\"),this.app.broadcast(\"image.resized\",this.$resizableImage)},_move:function(t){t.preventDefault(),t=t.originalEvent||t;var e=this.resizeHandle.h;t.targetTouches?e+=t.targetTouches[0].pageY-this.resizeHandle.y:e+=t.pageY-this.resizeHandle.y;var i=e*this.resizeHandle.ratio;e<50||i<100||this._getResizableBoxWidth()<=i||(this.resizeHandle.el.attr({width:i,height:e}),this.resizeHandle.el.width(i),this.resizeHandle.el.height(e),this._setResizerPosition())},_getResizableBoxWidth:function(){return this.$resizableBox.width()-parseInt(this.$resizableBox.css(\"padding-left\"))-parseInt(this.$resizableBox.css(\"padding-right\"))}}),$R.add(\"module\",\"file\",{modals:{file:'<div class=\"redactor-modal-tab\" data-title=\"## upload ##\"><form action=\"\">                 <div class=\"form-item form-item-title\">                     <label for=\"modal-file-title\"> ## filename ## <span class=\"desc\">(## optional ##)</span></label>                     <input type=\"text\" id=\"modal-file-title\" name=\"title\" />                 </div>                 <input type=\"file\" name=\"file\">             </form></div>'},init:function(t){this.app=t,this.opts=t.opts,this.lang=t.lang,this.caret=t.caret,this.utils=t.utils,this.storage=t.storage,this.component=t.component,this.inspector=t.inspector,this.insertion=t.insertion,this.selection=t.selection},onstarted:function(){this.storage.observeFiles()},ondropfile:function(t,e,i){if(this.opts.fileUpload){var n={url:this.opts.fileUpload,event:!i&&t,files:e,name:\"filedrop\",data:this.opts.fileData};this.app.api(\"module.upload.send\",n)}},onmodal:{file:{open:function(t,e){this._setFormData(t,e),this._setUpload(e)},opened:function(t,e){this._setFormFocus(e),this.$form=e}}},onupload:{file:{complete:function(t){this._insert(t)},error:function(t){this._uploadError(t)}},filedrop:{complete:function(t,e){this._insert(t,e)},error:function(t){this._uploadError(t)}}},oncontextbar:function(t,e){var i=this.selection.getCurrent(),n=this.inspector.parse(i);if(n.isFile()){var o=n.getFile(),s={remove:{title:this.lang.get(\"delete\"),api:\"module.file.remove\",args:o}};e.set(t,o,s,\"bottom\")}},open:function(){this._open()},insert:function(t){this._insert(t)},remove:function(t){this._remove(t)},_open:function(){this.app.api(\"module.modal.build\",this._getModalData())},_getModalData:function(){return{name:\"file\",title:this.lang.get(\"file\")}},_insert:function(t,e){if(this.app.api(\"module.modal.close\"),\"object\"==typeof t){if(Array.isArray(t)){for(var i={},n=0;n<t.length;n++)i=$R.extend(i,t[n]);t=i}Object.keys(t).length>1?this._insertMultiple(t,e):this._insertSingle(t,e),this.$form=!1}},_insertSingle:function(t,e){var i=[];for(var n in t){var o=this._createFileAndStore(t[n]);i=this.opts.fileAttachment?this._insertAsAttachment(o):e?this.insertion.insertToPoint(e,o):this.insertion.insertRaw(o),this.app.broadcast(\"file.uploaded\",i[0],t)}},_insertMultiple:function(t,e){var i,n=0,o=[];for(var s in t){n++;var r=this._createFileAndStore(t[s]);if(this.opts.fileAttachment)o=this._insertAsAttachment(r,t);else if(1===n)o=e?this.insertion.insertToPoint(e,r):this.insertion.insertRaw(r);else{var a=$R.dom(o[0]);a.after(r).after(\" \"),o=[r.get()],this.app.broadcast(\"file.inserted\",r)}i=r,this.app.broadcast(\"file.uploaded\",o[0],t)}this.opts.fileAttachment||this.caret.setAfter(i)},_insertAsAttachment:function(t,e){var i=$R.dom(this.opts.fileAttachment),n=t.wrapAttachment();i.append(n);var o=[n.get()];return this.app.broadcast(\"file.appended\",o[0],e),o},_createFileAndStore:function(t){var e=!!this.$form&&this.$form.getData(),i=t.name?t.name:t.url,n=!this.opts.fileAttachment&&e&&\"\"!==e.title?e.title:this._truncateUrl(i),o=this.component.create(\"file\");return o.attr(\"href\",t.url),o.attr(\"data-file\",t.id?t.id:this.utils.getRandomId()),o.attr(\"data-name\",t.name),o.html(n),this.storage.add(\"file\",o),o},_remove:function(t){this.selection.save();var e=this.component.create(\"file\",t);!1!==this.app.broadcast(\"file.delete\",e)?(e.unwrap(),this.selection.restore(),this.app.broadcast(\"file.deleted\",e)):this.selection.restore()},_truncateUrl:function(t){return-1!==t.search(/^http/)&&t.length>20?t.substring(0,20)+\"...\":t},\n_setUpload:function(t){var e={url:this.opts.fileUpload,element:t.getField(\"file\"),name:\"file\",data:this.opts.fileData,paramName:this.opts.fileUploadParam};this.app.api(\"module.upload.build\",e)},_setFormData:function(t,e){this.opts.fileAttachment?t.find(\".form-item-title\").hide():e.setData({title:this.selection.getText()})},_setFormFocus:function(t){t.getField(\"title\").focus()},_uploadError:function(t){this.app.broadcast(\"file.uploadError\",t)}}),$R.add(\"class\",\"file.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,this.opts=t.opts,e&&void 0!==e.cmnt?e:this._init(e)},wrapAttachment:function(){return this.$wrapper=$R.dom('<span class=\"redactor-file-item\">'),this.$remover=$R.dom('<span class=\"redactor-file-remover\">'),this.$remover.html(\"&times;\"),this.$remover.on(\"click\",this.removeAttachment.bind(this)),this.$wrapper.append(this),this.$wrapper.append(this.$remover),this.$wrapper},removeAttachment:function(t){t.preventDefault(),!1!==this.app.broadcast(\"file.delete\",this,this.$wrapper)&&(this.$wrapper.remove(),this.app.broadcast(\"file.deleted\",this),this.app.broadcast(\"file.removeAttachment\",this))},_init:function(t){if(void 0===t)this.parse(\"<a>\");else{var e=$R.dom(t).closest(\"a\");this.parse(e)}}}),$R.add(\"module\",\"buffer\",{init:function(t){this.app=t,this.opts=t.opts,this.editor=t.editor,this.offset=t.offset,this.keycodes=t.keycodes,this.selection=t.selection,this.state=!1,this.passed=!1,this.keyPressed=!1,this.savedHtml=!1,this.savedOffset=!1,this.undoStorage=[],this.redoStorage=[]},onkeydown:function(t){this._listen(t)},onsyncing:function(){this.keyPressed||this.trigger(),this.keyPressed=!1},onstate:function(t,e,i){t&&(t.ctrlKey||t.metaKey)||t&&(this._isUndo(t)||this._isRedo(t))||(this.passed=!1,this._saveState(e,i))},onenable:function(){this.clear()},clear:function(){this.state=!1,this.undoStorage=[],this.redoStorage=[]},undo:function(){this._getUndo()},redo:function(){this._getRedo()},trigger:function(){this.state&&!1===this.passed&&this._setUndo()},_saveState:function(t,e){var i=this.editor.getElement();this.state={html:t||i.html(),offset:e||this.offset.get()}},_listen:function(t){var e=t.which,i=t.ctrlKey||t.metaKey,n=i||t.shiftKey||t.altKey,o=[this.keycodes.SPACE,this.keycodes.ENTER,this.keycodes.BACKSPACE,this.keycodes.DELETE,this.keycodes.TAB,this.keycodes.LEFT,this.keycodes.RIGHT,this.keycodes.UP,this.keycodes.DOWN];return this._isUndo(t)?(t.preventDefault(),void this.undo()):this._isRedo(t)?(t.preventDefault(),void this.redo()):(i||-1===o.indexOf(e)?!i||88!==e&&67!==e||(n=!0,this.trigger()):(n=!0,this.trigger()),n||this._hasUndo()||this.trigger(),void(this.keyPressed=!0))},_isUndo:function(t){var e=t.which;return(t.ctrlKey||t.metaKey)&&90===e&&!t.shiftKey&&!t.altKey},_isRedo:function(t){var e=t.which;return(t.ctrlKey||t.metaKey)&&(90===e&&t.shiftKey||89===e&&!t.shiftKey)&&!t.altKey},_setUndo:function(){var t=this.undoStorage[this.undoStorage.length-1];void 0!==t&&t[0]===this.state.html||(this.undoStorage.push([this.state.html,this.state.offset]),this._removeOverStorage())},_setRedo:function(){var t=this.editor.getElement(),e=this.offset.get(),i=t.html();this.redoStorage.push([i,e]),this.redoStorage=this.redoStorage.slice(0,this.opts.bufferLimit)},_getUndo:function(){if(this._hasUndo()){this.passed=!0;var t=this.editor.getElement(),e=this.undoStorage.pop();this._setRedo(),t.html(e[0]),this.offset.set(e[1]),this.selection.restore(),this.app.broadcast(\"undo\",e[0],e[1])}},_getRedo:function(){if(this._hasRedo()){this.passed=!0;var t=this.editor.getElement(),e=this.redoStorage.pop();this._setUndo(),t.html(e[0]),this.offset.set(e[1]),this.app.broadcast(\"redo\",e[0],e[1])}},_removeOverStorage:function(){this.undoStorage.length>this.opts.bufferLimit&&(this.undoStorage=this.undoStorage.slice(0,this.undoStorage.length-this.opts.bufferLimit))},_hasUndo:function(){return 0!==this.undoStorage.length},_hasRedo:function(){return 0!==this.redoStorage.length}}),$R.add(\"module\",\"list\",{init:function(t){this.app=t,this.opts=t.opts,this.utils=t.utils,this.block=t.block,this.toolbar=t.toolbar,this.inspector=t.inspector,this.selection=t.selection},onbutton:{list:{observe:function(t){this._observeButton(t)}}},ondropdown:{list:{observe:function(t){this._observeDropdown(t)}}},toggle:function(t){var e=this._getBlocks(),i=this.selection.getBlock(),n=$R.dom(i).parents(\"ul, ol\",\".redactor-in\").last();return 0===e.length&&0!==n.length&&(e=[n.get()]),!i||\"TD\"!==i.tagName&&\"TH\"!==i.tagName||(e=this.block.format(\"div\")),this.selection.saveMarkers(),e=0!==e.length&&this._isUnformat(t,e)?this._unformat(t,e):this._format(t,e),this.selection.restoreMarkers(),e},indent:function(){var t=this.selection.isCollapsed(),e=this.selection.getCurrent(),i=this.inspector.parse(e),n=!!i.isList()&&i.getListItem(),o=$R.dom(n),s=o.prevElement(),r=s.get();if(t&&n&&r&&\"LI\"===r.tagName){this.selection.saveMarkers(),s=$R.dom(r);var a=s.children(\"ul, ol\"),c=o.closest(\"ul, ol\");if(0!==a.length)a.append(o);else{var l=c.get().tagName.toLowerCase(),d=$R.dom(\"<\"+l+\">\");d.append(o),s.append(d)}this.selection.restoreMarkers()}},outdent:function(){var t=this.selection.isCollapsed(),e=this.selection.getCurrent(),i=this.inspector.parse(e),n=!!i.isList()&&i.getListItem(),o=$R.dom(n);if(t&&n){var s,r,a,c,l=o.parent(),d=l.closest(\"li\",\".redactor-in\"),p=o.prevElement(),u=o.nextElement(),h=p.get(),f=u.get(),M=!1===h,m=!1!==h&&!1!==f,b=!M&&!1===f;if(this.selection.saveMarkers(),0!==d.length)if(m){s=this._getAllNext(o.get()),a=$R.dom(\"<\"+l.get().tagName.toLowerCase()+\">\");for(var g=0;g<s.length;g++)a.append(s[g]);d.after(o),o.append(a)}else d.after(o),0===l.children().length?l.remove():M&&o.append(l);else{var v=this._createUnformatContainer(o),A=v.find(\"ul, ol\").first();if(M)l.before(v);else if(b)l.after(v);else if(m){a=$R.dom(\"<\"+l.get().tagName.toLowerCase()+\">\"),s=this._getAllNext(o.get());for(var g=0;g<s.length;g++)a.append(s[g]);l.after(v),v.after(a)}0!==A.length&&(c=v.nextElement(),r=c.get(),r&&r.tagName===l.get().tagName?($R.dom(r).prepend(A),A.unwrap()):v.after(A)),o.remove()}this.selection.restoreMarkers()}},_getAllNext:function(t){for(var e=[];t;){if(!(t=$R.dom(t).nextElement().get()))return e;e.push(t)}return e},_isUnformat:function(t,e){for(var i=0,n=0;n<e.length;n++)if(3!==e[n].nodeType){var o=e[n].tagName.toLowerCase();o!==t&&\"figure\"!==o||i++}return i===e.length},_format:function(t,e){var i=[\"p\",\"div\",\"blockquote\",\"pre\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"ul\",\"ol\"],n=this._uniteBlocks(e,i),o=[];for(var s in n){for(var r=n[s],a=this._createList(t,n[s]),c=0;c<r.length;c++){var l;if(3===r[c].nodeType||\"UL\"!==r[c].tagName&&\"OL\"!==r[c].tagName)l=this._createListItem(r[c]),this.utils.normalizeTextNodes(l),a.append(l);else{var d=$R.dom(r[c]);l=d.contents(),a.append(l),this.utils.isEmpty(d)&&d.remove()}}o.push(a.get())}return o},_uniteBlocks:function(t,e){for(var i=0,n={0:[]},o=!1,s=0;s<t.length;s++){var r=$R.dom(t[s]),a=r.closest(\"th, td\");0!==a.length?(a.get()!==o&&(i++,n[i]=[]),this._isUniteBlock(t[s],e)&&n[i].push(t[s])):this._isUniteBlock(t[s],e)?n[i].push(t[s]):(i++,n[i]=[]),o=a.get()}return n},_isUniteBlock:function(t,e){return 3===t.nodeType||-1!==e.indexOf(t.tagName.toLowerCase())},_createList:function(t,e){var i=e[e.length-1],n=$R.dom(i),o=$R.dom(\"<\"+t+\">\");return n.after(o),o},_createListItem:function(t){var e=$R.dom(\"<li>\");if(3===t.nodeType)e.append(t);else{var i=$R.dom(t);e.append(i.contents()),i.remove()}return e},_unformat:function(t,e){if(1===e.length){var i=$R.dom(e[0]),n=i.find(\"li\"),o=this.selection.getNodes({tags:[\"li\"]}),s=this.selection.getBlock(),r=$R.dom(s).closest(\"li\");if(0===o.length&&0!==r.length&&(o=[r.get()]),o.length===n.length)return this._unformatEntire(e[0]);var a=this._getItemsPosition(n,o);if(\"Top\"===a)return this._unformatAtSide(\"before\",o,i);if(\"Bottom\"===a)return o.reverse(),this._unformatAtSide(\"after\",o,i);if(\"Middle\"===a){var c=$R.dom(o[o.length-1]),l=!1,d=!1,p=$R.dom(\"<\"+i.get().tagName.toLowerCase()+\">\");n.each(function(t){if(l){var e=$R.dom(t);0!==e.closest(\".redactor-split-item\").length||!1!==d&&0!==e.closest(d).length||e.addClass(\"redactor-split-item\"),d=e}t===c.get()&&(l=!0)}),n.filter(\".redactor-split-item\").each(function(t){$R.dom(t).removeClass(\"redactor-split-item\"),p.append(t)}),i.after(p),o.reverse();for(var u=0;u<o.length;u++){var h=$R.dom(o[u]),f=this._createUnformatContainer(h);i.after(f),f.find(\"ul, ol\").remove(),h.remove()}return}}else for(var u=0;u<e.length;u++)3!==e[u].nodeType&&e[u].tagName.toLowerCase()===t&&this._unformatEntire(e[u])},_unformatEntire:function(t){var e=$R.dom(t);e.find(\"li\").each(function(t){var i=$R.dom(t),n=this._createUnformatContainer(i);i.remove(),e.before(n)}.bind(this)),e.remove()},_unformatAtSide:function(t,e,i){for(var n=0;n<e.length;n++){var o=$R.dom(e[n]),s=this._createUnformatContainer(o);i[t](s);var r=s.find(\"ul, ol\").first();o.append(r),r.each(function(t){var i=$R.dom(t),o=i.closest(\"li\");o.get()===e[n]&&(i.unwrap(),o.addClass(\"r-unwrapped\"))}),this.utils.isEmptyHtml(o.html())&&o.remove()}i.find(\".r-unwrapped\").each(function(t){var e=$R.dom(t);\"\"===e.html().trim()?e.remove():e.removeClass(\"r-unwrapped\")})},_getItemsPosition:function(t,e){var i=\"Middle\",n=e[0],o=e[e.length-1],s=t.first().get(),r=t.last().get();return s===n&&r!==o?i=\"Top\":s!==n&&r===o&&(i=\"Bottom\"),i},_createUnformatContainer:function(t){var e=$R.dom(\"<\"+this.opts.markup+\">\");return this.opts.breakline&&e.attr(\"data-redactor-tag\",\"br\"),e.append(t.contents()),e},_getBlocks:function(){return this.selection.getBlocks({first:!0})},_observeButton:function(){var t=this.selection.getCurrent(),e=this.inspector.parse(t),i=e.isPre()||e.isCode()||e.isFigcaption();this._observeButtonsList(i,[\"lists\",\"ul\",\"ol\",\"outdent\",\"indent\"]);var n=this.toolbar.getButton(\"outdent\"),o=this.toolbar.getButton(\"indent\");this._observeIndent(o,n)},_observeDropdown:function(t){var e=t.getItem(\"outdent\"),i=t.getItem(\"indent\");this._observeIndent(i,e)},_observeIndent:function(t,e){var i=this.selection.isCollapsed(),n=this.selection.getCurrent(),o=this.inspector.parse(n),s=!!o.isList()&&o.getListItem(),r=$R.dom(s),a=r.prevElement(),c=a.get(),l=i&&s&&c&&\"LI\"===c.tagName;e&&(s&&i?e.enable():e.disable()),t&&(s&&l?t.enable():t.disable())},_observeButtonsList:function(t,e){for(var i=0;i<e.length;i++){var n=this.toolbar.getButton(e[i]);n&&(t?n.disable():n.enable())}}}),$R.add(\"class\",\"video.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,e&&void 0!==e.cmnt?e:this._init(e)},_init:function(t){if(void 0!==t){var e=$R.dom(t),i=e.closest(\"figure\");0!==i.length?this.parse(i):(this.parse(\"<figure>\"),this.append(t))}else this.parse(\"<figure>\");this._initWrapper()},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"video\",tabindex:\"-1\",contenteditable:!1})}}),window.Redactor=window.$R=$R,window.addEventListener(\"load\",function(){$R(\"[data-redactor]\")})}(),function(t){t.add(\"plugin\",\"fileselector\",{init:function(t){this.app=t,this.opts=t.opts,this.caret=t.caret,this.selection=t.selection,this.toolbar=t.toolbar,this.insertion=t.insertion},start:function(){var t={title:\"Insert File\",api:\"plugin.fileselector.open\"};this.toolbar.addButton(\"fileselector\",t).setIcon('<i class=\"fa fa-archive\"></i>')},modals:{fileselector:'<section id=\"redactor-modal-fileselector\"><div class=\"input-group\"><input id=\"fileselector-filter\" type=\"textbox\" placeholder=\"Search\" class=\"form-control\"><span class=\"input-group-btn\"><span class=\"btn btn-default\"><span class=\"fa fa-search\"></span></span></span></div><div id=\"fileselector-container\" class=\"raw-block-400 cms-row raw-margin-top-24\" style=\"overflow: scroll;\">Loading your file collection...</div></section>'},open:function(){var t={title:\"File Selector\",width:\"600px\",name:\"fileselector\"};this.app.api(\"module.modal.build\",t)},onmodal:{fileselector:{opened:function(t,e){this.load()}}},load:function(){$.ajax({dataType:\"json\",cache:!1,headers:{Cms:_apiKey,Authorization:\"Bearer \"+_apiToken},url:this.opts.fileManagerJson,error:function(t){console.log(t)},success:$.proxy(function(t){$(\"#fileselector-container\").html(\"\"),t.data.length>0?$.each(t.data,$.proxy(function(t,e){var i=$('<div class=\"list-row raw-left raw100\"><div class=\"raw100 raw-left\"><p><span class=\"fa fa-download\"></span> <a class=\"file-link\" href=\"#\" data-url=\"/public-download/'+e.file_identifier+'\">'+e.file_name+\"</a></p></div>\");$(\"#fileselector-container\").append(i),$(i).click($.proxy(this.insert,this))},this)):$(\"#fileselector-container\").append(\"You have not yet uploaded any files, visit the files tab to add some.\"),$(\"#fileselector-filter\").bind(\"keyup\",function(){$(\"#fileselector-container\").find(\".file-link\").each(function(){$(this).html().indexOf($(\"#fileselector-filter\").val())<0?$(this).parent().parent().parent().hide():$(this).parent().parent().parent().show()})})},this)})},insert:function(t){t.preventDefault(),this.insertion.insertHtml('<a href=\"'+$(t.target).attr(\"data-url\")+'\">'+$(t.target).html()+\"</a>\",!1),this.app.api(\"module.modal.close\")}})}(Redactor),function(t){t.add(\"plugin\",\"fontcolor\",{translations:{en:{fontcolor:\"Text Color\",text:\"Text\",highlight:\"Highlight\"}},init:function(t){this.app=t,this.opts=t.opts,this.lang=t.lang,this.inline=t.inline,this.toolbar=t.toolbar,this.selection=t.selection,this.colors=this.opts.fontcolors?this.opts.fontcolors:[\"#ffffff\",\"#000000\",\"#eeece1\",\"#1f497d\",\"#4f81bd\",\"#c0504d\",\"#9bbb59\",\"#8064a2\",\"#4bacc6\",\"#f79646\",\"#ffff00\",\"#f2f2f2\",\"#7f7f7f\",\"#ddd9c3\",\"#c6d9f0\",\"#dbe5f1\",\"#f2dcdb\",\"#ebf1dd\",\"#e5e0ec\",\"#dbeef3\",\"#fdeada\",\"#fff2ca\",\"#d8d8d8\",\"#595959\",\"#c4bd97\",\"#8db3e2\",\"#b8cce4\",\"#e5b9b7\",\"#d7e3bc\",\"#ccc1d9\",\"#b7dde8\",\"#fbd5b5\",\"#ffe694\",\"#bfbfbf\",\"#3f3f3f\",\"#938953\",\"#548dd4\",\"#95b3d7\",\"#d99694\",\"#c3d69b\",\"#b2a2c7\",\"#b7dde8\",\"#fac08f\",\"#f2c314\",\"#a5a5a5\",\"#262626\",\"#494429\",\"#17365d\",\"#366092\",\"#953734\",\"#76923c\",\"#5f497a\",\"#92cddc\",\"#e36c09\",\"#c09100\",\"#7f7f7f\",\"#0c0c0c\",\"#1d1b10\",\"#0f243e\",\"#244061\",\"#632423\",\"#4f6128\",\"#3f3151\",\"#31859b\",\"#974806\",\"#7f6000\"]},onfontcolor:{set:function(t,e){this._set(t,e)},remove:function(t){this._remove(t)}},start:function(){var t={title:this.lang.get(\"fontcolor\")},e=this._buildDropdown();this.$button=this.toolbar.addButton(\"fontcolor\",t),this.$button.setIcon('<i class=\"re-icon-fontcolor\"></i>'),this.$button.setDropdown(e)},_buildDropdown:function(){var e=t.dom('<div class=\"redactor-dropdown-cells\">');return this.$selector=this._buildSelector(),this.$selectorText=this._buildSelectorItem(\"text\",this.lang.get(\"text\")),this.$selectorText.addClass(\"active\"),this.$selectorBack=this._buildSelectorItem(\"back\",this.lang.get(\"highlight\")),this.$selector.append(this.$selectorText),this.$selector.append(this.$selectorBack),this.$pickerText=this._buildPicker(\"textcolor\"),this.$pickerBack=this._buildPicker(\"backcolor\"),e.append(this.$selector),e.append(this.$pickerText),e.append(this.$pickerBack),this._buildSelectorEvents(),e.width(242),e},_buildSelector:function(){var e=t.dom(\"<div>\");return e.addClass(\"redactor-dropdown-selector\"),e},_buildSelectorItem:function(e,i){var n=t.dom(\"<span>\");return n.attr(\"rel\",e).html(i),n.addClass(\"redactor-dropdown-not-close\"),n},_buildSelectorEvents:function(){this.$selectorText.on(\"mousedown\",function(t){t.preventDefault(),this.$selector.find(\"span\").removeClass(\"active\"),this.$pickerBack.hide(),this.$pickerText.show(),this.$selectorText.addClass(\"active\")}.bind(this)),this.$selectorBack.on(\"mousedown\",function(t){t.preventDefault(),this.$selector.find(\"span\").removeClass(\"active\"),this.$pickerText.hide(),this.$pickerBack.show(),this.$selectorBack.addClass(\"active\")}.bind(this))},_buildPicker:function(e){for(var i=t.dom('<div class=\"re-dropdown-box-'+e+'\">'),n=\"backcolor\"==e?\"background-color\":\"color\",o=this.colors.length,s=this,r=function(e){e.preventDefault();var i=t.dom(e.target);s._set(i.data(\"rule\"),i.attr(\"rel\"))},a=0;a<o;a++){var c=this.colors[a],l=t.dom(\"<span>\");l.attr({rel:c,\"data-rule\":n}),l.css({\"background-color\":c,\"font-size\":0,border:\"2px solid #fff\",width:\"22px\",height:\"22px\"}),l.on(\"mousedown\",r),i.append(l)}var d=t.dom(\"<a>\");return d.attr({href:\"#\"}),d.css({display:\"block\",clear:\"both\",padding:\"8px 5px\",\"font-size\":\"12px\",\"line-height\":1}),d.html(this.lang.get(\"none\")),d.on(\"click\",function(t){t.preventDefault(),s._remove(n)}),i.append(d),\"backcolor\"==e&&i.hide(),i},_set:function(t,e){var i={};i[t]=e;var n={tag:\"span\",style:i,type:\"toggle\"};this.inline.format(n)},_remove:function(t){this.inline.remove({style:t})}})}(Redactor),function(t){t.add(\"plugin\",\"alignment\",{translations:{en:{align:\"Align\",\"align-left\":\"Align Left\",\"align-center\":\"Align Center\",\"align-right\":\"Align Right\",\"align-justify\":\"Align Justify\"}},init:function(t){this.app=t,this.opts=t.opts,this.lang=t.lang,this.block=t.block,this.toolbar=t.toolbar},start:function(){var t={};t.left={title:this.lang.get(\"align-left\"),api:\"plugin.alignment.set\",args:\"left\"},t.center={title:this.lang.get(\"align-center\"),api:\"plugin.alignment.set\",args:\"center\"},t.right={title:this.lang.get(\"align-right\"),api:\"plugin.alignment.set\",args:\"right\"},t.justify={title:this.lang.get(\"align-justify\"),api:\"plugin.alignment.set\",args:\"justify\"};var e=this.toolbar.addButton(\"alignment\",{title:this.lang.get(\"align\")});e.setIcon('<i class=\"re-icon-alignment\"></i>'),e.setDropdown(t)},set:function(t){if(\"left\"===t&&\"ltr\"===this.opts.direction)return this._remove();var e={style:{\"text-align\":t}};this.block.toggle(e)},_remove:function(){this.block.remove({style:\"text-align\"})}})}(Redactor),function(t){t.add(\"plugin\",\"imageselector\",{init:function(t){this.app=t,this.opts=t.opts,this.caret=t.caret,this.selection=t.selection,this.toolbar=t.toolbar,this.insertion=t.insertion},start:function(){var t={title:\"Insert Image\",api:\"plugin.imageselector.open\"};this.toolbar.addButton(\"imageselector\",t).setIcon('<i class=\"fa fa-image\"></i>')},modals:{imageselector:'<section id=\"redactor-modal-imageselector\"><div class=\"input-group\"><input id=\"imageselector-filter\" type=\"textbox\" placeholder=\"Search\" class=\"form-control\"><span class=\"input-group-btn\"><span class=\"btn btn-default\"><span class=\"fa fa-search\"></span></span></span></div><div id=\"imageselector-container\" class=\"raw-block-400 cms-row raw-margin-top-24\" style=\"overflow: scroll;\">Loading your image collection...</div></section>'},open:function(){var t={title:\"Image Selector\",width:\"600px\",name:\"imageselector\"};this.app.api(\"module.modal.build\",t)},onmodal:{imageselector:{opened:function(t,e){this.load()}}},load:function(){$.ajax({dataType:\"json\",cache:!1,headers:{Cms:_apiKey,Authorization:\"Bearer \"+_apiToken},url:this.opts.imageManagerJson,error:function(t){console.log(t)},success:$.proxy(function(t){$(\"#imageselector-container\").html(\"\"),t.data.length>0?$.each(t.data,$.proxy(function(t,e){var i=\"\";void 0!==e.title_tag&&null!=e.title_tag&&(i=e.title_tag);var n=$('<div class=\"raw25 float-left thumbnail-box\"><div class=\"img cms-thumbnail-img\" style=\"background-image: url(\\''+e.js_url+'\\')\" data-img-name=\"'+e.js_url+'\" src=\"'+e.js_url+'\" rel=\"'+e.js_url+'\" title=\"'+i+'\"></div></div>');$(\"#imageselector-container\").append(n),$(n).click($.proxy(this.insert,this))},this)):$(\"#imageselector-container\").append(\"You have not yet uploaded any images, visit the images tab to add some.\"),$(\"#imageselector-filter\").bind(\"keyup\",function(){$(\".cms-thumbnail-img\").each(function(){console.log($(this).attr(\"title\")),$(this).attr(\"title\").indexOf($(\"#imageselector-filter\").val())<0?$(this).parent().hide():$(this).parent().show()})})},this)})},insert:function(t){t.preventDefault(),this.insertion.insertHtml('<img src=\"'+$(t.target).attr(\"rel\")+'\" alt=\"'+$(t.target).attr(\"title\")+'\" title=\"'+$(t.target).attr(\"title\")+'\">'),this.app.api(\"module.modal.close\")}})}(Redactor),function(t){t.add(\"plugin\",\"stockimagemanager\",{init:function(t){this.app=t,this.opts=t.opts,this.caret=t.caret,this.selection=t.selection,this.toolbar=t.toolbar,this.insertion=t.insertion},start:function(){var t={title:\"Insert Stock Image\",api:\"plugin.stockimagemanager.open\"};this.toolbar.addButton(\"stockimagemanager\",t).setIcon('<i class=\"fa fa-camera-retro\"></i>')},modals:{stockimagemanager:'<section id=\"redactor-modal-stockimagemanager\"><div class=\"input-group stockimagemanager-search-box\"><input id=\"stockimagemanager-filter\" type=\"textbox\" placeholder=\"Search\" class=\"form-control\"><span class=\"input-group-btn\"><button class=\"btn btn-default\" type=\"button\" id=\"stockimagemanager-search\"><span class=\"fa fa-search\"></span></button></span></div><div id=\"stockimagemanager-container\" class=\"raw-block-300 cms-row raw-margin-top-24 raw-margin-bottom-24\" style=\"overflow: scroll;\"></div><div id=\"stockimagemanager-links\" class=\"raw-block-20 cms-row\"><button id=\"stockImgPrevBtn\" class=\"btn btn-default float-left\">Prev</button><button id=\"stockImgNextBtn\" class=\"pull-right btn btn-default\">Next</button></div><div><a href=\"https://pixabay.com/\"><img class=\"raw100 raw-margin-top-24\" src=\"https://pixabay.com/static/img/public/leaderboard_a.png\" alt=\"Pixabay\"> </a></div></section>'},open:function(){var t={title:\"Stock Image Manager\",width:\"600px\",name:\"stockimagemanager\"};this.app.api(\"module.modal.build\",t)},onmodal:{stockimagemanager:{opened:function(t,e){this.load()}}},load:function(){if(\"\"==_pixabayKey)$(\"#stockImgPrevBtn, #stockImgNextBtn, .stockimagemanager-search-box\").hide(),$(\"#stockimagemanager-container\").html('<p class=\"text-center\">In order to have an easy supply of stock images visit <a target=\"_blank\" href=\"https://pixabay.com/api/docs/\">Pixabay</a> to get an API key for your application.</p><p class=\"text-center\">Then add the following to your .env file:<br> PIXABAY=yourApiKey</p>');else{var t=this;t.search(\"null\"),$(\"#stockimagemanager-search\").bind(\"click\",function(){var e=$(\"#stockimagemanager-filter\").val();\"\"==e&&(e=\"null\"),t.search(e)}),$(\"#stockImgPrevBtn, #stockImgNextBtn\").bind(\"click\",function(){var e=$(\"#stockimagemanager-filter\").val();\"\"==e&&(e=\"null\"),t.search(e,$(this).attr(\"data-page\"))})}},search:function(t,e){void 0===e&&(e=1),_searchTerm=void 0!==t&&\"null\"!=t&&null!=t?\"&q=\"+encodeURIComponent(t):\"\",$(\"#stockimagemanager-container\").html(\"loading...\"),$.ajax({dataType:\"json\",cache:!1,url:this.opts.stockImageManagerJson+\"?key=\"+_pixabayKey+_searchTerm+\"&order=popular&page=\"+e,error:function(t){console.log(t)},success:$.proxy(function(t){Math.floor(t.totalHits/20)==e?$(\"#stockImgNextBtn\").hide():$(\"#stockImgNextBtn\").show(),1==e?$(\"#stockImgPrevBtn\").hide():$(\"#stockImgPrevBtn\").show(),$(\"#stockImgNextBtn\").attr(\"data-page\",parseInt(e)+1),$(\"#stockImgPrevBtn\").attr(\"data-page\",parseInt(e)-1),$(\"#stockimagemanager-container\").html(\"\"),$.each(t.hits,$.proxy(function(t,e){var i=$('<div class=\"raw25 float-left thumbnail-box\"><img class=\"img-responsive\" data-img-name=\"'+e.previewURL+'\" data-url=\"'+e.webformatURL+'\" src=\"'+e.previewURL+'\" rel=\"'+e.previewURL+'\" style=\"cursor: pointer;\" /></div>');$(\"#stockimagemanager-container\").append(i),$(i).click($.proxy(this.insert,this))},this))},this)})},insert:function(t){var e=this;$.ajax({type:\"POST\",dataType:\"json\",cache:!1,data:{_token:_token,location:$(t.target).attr(\"data-url\")},url:_url+\"/cms/api/images/store\",error:function(t){console.log(t)},success:$.proxy(function(i){t.preventDefault(),e.insertion.insertHtml('<img src=\"'+i.data.js_url+'\" />'),e.app.api(\"module.modal.close\")},this)})}})}(Redactor),function(t){t.add(\"plugin\",\"specialchars\",{translations:{en:{specialchars:\"Special Characters\"}},init:function(t){this.app=t,this.lang=t.lang,this.toolbar=t.toolbar,this.insertion=t.insertion,this.chars=[\"&lsquo;\",\"&rsquo;\",\"&ldquo;\",\"&rdquo;\",\"&ndash;\",\"&mdash;\",\"&divide;\",\"&hellip;\",\"&trade;\",\"&bull;\",\"&rarr;\",\"&asymp;\",\"$\",\"&euro;\",\"&cent;\",\"&pound;\",\"&yen;\",\"&iexcl;\",\"&curren;\",\"&brvbar;\",\"&sect;\",\"&uml;\",\"&copy;\",\"&ordf;\",\"&laquo;\",\"&raquo;\",\"&not;\",\"&reg;\",\"&macr;\",\"&deg;\",\"&sup1;\",\"&sup2;\",\"&sup3;\",\"&acute;\",\"&micro;\",\"&para;\",\"&middot;\",\"&cedil;\",\"&ordm;\",\"&frac14;\",\"&frac12;\",\"&frac34;\",\"&iquest;\",\"&Agrave;\",\"&Aacute;\",\"&Acirc;\",\"&Atilde;\",\"&Auml;\",\"&Aring;\",\"&AElig;\",\"&Ccedil;\",\"&Egrave;\",\"&Eacute;\",\"&Ecirc;\",\"&Euml;\",\"&Igrave;\",\"&Iacute;\",\"&Icirc;\",\"&Iuml;\",\"&ETH;\",\"&Ntilde;\",\"&Ograve;\",\"&Oacute;\",\"&Ocirc;\",\"&Otilde;\",\"&Ouml;\",\"&times;\",\"&Oslash;\",\"&Ugrave;\",\"&Uacute;\",\"&Ucirc;\",\"&Uuml;\",\"&Yacute;\",\"&THORN;\",\"&szlig;\",\"&agrave;\",\"&aacute;\",\"&acirc;\",\"&atilde;\",\"&auml;\",\"&aring;\",\"&aelig;\",\"&ccedil;\",\"&egrave;\",\"&eacute;\",\"&ecirc;\",\"&euml;\",\"&igrave;\",\"&iacute;\",\"&icirc;\",\"&iuml;\",\"&eth;\",\"&ntilde;\",\"&ograve;\",\"&oacute;\",\"&ocirc;\",\"&otilde;\",\"&ouml;\",\"&oslash;\",\"&ugrave;\",\"&uacute;\",\"&ucirc;\",\"&uuml;\",\"&yacute;\",\"&thorn;\",\"&yuml;\",\"&OElig;\",\"&oelig;\",\"&#372;\",\"&#374\",\"&#373\",\"&#375;\"]},start:function(){var t={title:this.lang.get(\"specialchars\")},e=this._buildDropdown();this.$button=this.toolbar.addButton(\"specialchars\",t),this.$button.setIcon('<i class=\"re-icon-specialcharacters\"></i>'),this.$button.setDropdown(e)},_set:function(t){this.insertion.insertChar(t)},_buildDropdown:function(){for(var e=this,i=t.dom('<div class=\"redactor-dropdown-cells\">'),n=function(i){i.preventDefault();var n=t.dom(i.target);e._set(n.data(\"char\"))},o=0;o<this.chars.length;o++){var s=t.dom(\"<a>\");s.attr({href:\"#\",\"data-char\":this.chars[o]}),s.css({\"line-height\":\"32px\",width:\"32px\",height:\"32px\"}),s.html(this.chars[o]),s.on(\"mousedown\",n),i.append(s)}return i}})}(Redactor),function(t){t.add(\"plugin\",\"table\",{translations:{en:{table:\"Table\",\"insert-table\":\"Insert table\",\"insert-row-above\":\"Insert row above\",\"insert-row-below\":\"Insert row below\",\"insert-column-left\":\"Insert column left\",\"insert-column-right\":\"Insert column right\",\"add-head\":\"Add head\",\"delete-head\":\"Delete head\",\"delete-column\":\"Delete column\",\"delete-row\":\"Delete row\",\"delete-table\":\"Delete table\"}},init:function(t){this.app=t,this.lang=t.lang,this.opts=t.opts,this.caret=t.caret,this.editor=t.editor,this.toolbar=t.toolbar,this.component=t.component,this.inspector=t.inspector,this.insertion=t.insertion,this.selection=t.selection},ondropdown:{table:{observe:function(t){this._observeDropdown(t)}}},onbottomclick:function(){this.insertion.insertToEnd(this.editor.getLastNode(),\"table\")},start:function(){var t={observe:\"table\",\"insert-table\":{title:this.lang.get(\"insert-table\"),api:\"plugin.table.insert\"},\"insert-row-above\":{title:this.lang.get(\"insert-row-above\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.addRowAbove\"},\"insert-row-below\":{title:this.lang.get(\"insert-row-below\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.addRowBelow\"},\"insert-column-left\":{title:this.lang.get(\"insert-column-left\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.addColumnLeft\"},\"insert-column-right\":{title:this.lang.get(\"insert-column-right\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.addColumnRight\"},\"add-head\":{title:this.lang.get(\"add-head\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.addHead\"},\"delete-head\":{title:this.lang.get(\"delete-head\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.deleteHead\"},\"delete-column\":{title:this.lang.get(\"delete-column\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.deleteColumn\"},\"delete-row\":{title:this.lang.get(\"delete-row\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.deleteRow\"},\"delete-table\":{title:this.lang.get(\"delete-table\"),classname:\"redactor-table-item-observable\",api:\"plugin.table.deleteTable\"}},e={title:this.lang.get(\"table\")},i=this.toolbar.addButtonBefore(\"link\",\"table\",e);i.setIcon('<i class=\"re-icon-table\"></i>'),i.setDropdown(t)},insert:function(){for(var t=this.component.create(\"table\"),e=0;e<2;e++)t.addRow(3);t=this.insertion.insertHtml(t),this.caret.setStart(t)},addRowAbove:function(){var t=this._getComponent();if(t){var e=this.selection.getCurrent(),i=t.addRowTo(e,\"before\");this.caret.setStart(i)}},addRowBelow:function(){var t=this._getComponent();if(t){var e=this.selection.getCurrent(),i=t.addRowTo(e,\"after\");this.caret.setStart(i)}},addColumnLeft:function(){var t=this._getComponent();if(t){var e=this.selection.getCurrent();this.selection.save(),t.addColumnTo(e,\"left\"),this.selection.restore()}},addColumnRight:function(){var t=this._getComponent();if(t){var e=this.selection.getCurrent();this.selection.save(),t.addColumnTo(e,\"right\"),this.selection.restore()}},addHead:function(){var t=this._getComponent();t&&(this.selection.save(),t.addHead(),this.selection.restore())},deleteHead:function(){var e=this._getComponent();if(e){var i=this.selection.getCurrent();0!==t.dom(i).closest(\"thead\").length?(e.removeHead(),this.caret.setStart(e)):(this.selection.save(),e.removeHead(),this.selection.restore())}},deleteColumn:function(){var e=this._getComponent();if(e){var i=this.selection.getCurrent(),n=t.dom(i).closest(\"td, th\"),o=n.nextElement().get(),s=n.prevElement().get();e.removeColumn(i),o?this.caret.setStart(o):s?this.caret.setEnd(s):this.deleteTable()}},deleteRow:function(){var e=this._getComponent();if(e){var i=this.selection.getCurrent(),n=t.dom(i).closest(\"tr\"),o=n.nextElement().get(),s=n.prevElement().get();e.removeRow(i),o?this.caret.setStart(o):s?this.caret.setEnd(s):this.deleteTable()}},deleteTable:function(){var t=this._getTable();t&&this.component.remove(t)},_getTable:function(){var t=this.selection.getCurrent(),e=this.inspector.parse(t);if(e.isTable())return e.getTable()},_getComponent:function(){var t=this.selection.getCurrent(),e=this.inspector.parse(t);if(e.isTable()){var i=e.getTable();return this.component.create(\"table\",i)}},_observeDropdown:function(t){var e=this._getTable(),i=t.getItemsByClass(\"redactor-table-item-observable\"),n=t.getItem(\"insert-table\");e?(this._observeItems(i,\"enable\"),n.disable()):(this._observeItems(i,\"disable\"),n.enable())},_observeItems:function(t,e){for(var i=0;i<t.length;i++)t[i][e]()}})}(Redactor),function(t){t.add(\"class\",\"table.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,e&&void 0!==e.cmnt?e:this._init(e)},addHead:function(){this.removeHead();var e=this.$element.find(\"tr\").first().children(\"td, th\").length,i=t.dom(\"<thead>\"),n=this._buildRow(e,\"<th>\");i.append(n),this.$element.prepend(i)},addRow:function(t){var e=this._buildRow(t);return this.$element.append(e),e},addRowTo:function(t,e){return this._addRowTo(t,e)},addColumnTo:function(e,i){var n=t.dom(e),o=n.closest(\"tr\"),s=n.closest(\"td, th\"),r=0;o.find(\"td, th\").each(function(t,e){t===s.get()&&(r=e)}),this.$element.find(\"tr\").each(function(e){var n=t.dom(e),o=n.find(\"td, th\").get(r),s=t.dom(o),a=s.clone();a.html(\"\"),\"right\"===i?s.after(a):s.before(a)})},removeHead:function(){var t=this.$element.find(\"thead\");0!==t.length&&t.remove()},removeRow:function(e){t.dom(e).closest(\"tr\").remove()},removeColumn:function(e){var i=t.dom(e),n=i.closest(\"tr\"),o=i.closest(\"td, th\"),s=0;n.find(\"td, th\").each(function(t,e){t===o.get()&&(s=e)}),this.$element.find(\"tr\").each(function(e){var i=t.dom(e),n=i.find(\"td, th\").get(s);t.dom(n).remove()})},_init:function(e){var i,n;if(void 0!==e){var o=t.dom(e),s=o.get(),r=o.closest(\"figure\");0!==r.length?(i=r,n=r.find(\"table\").get()):\"TABLE\"===s.tagName&&(n=s)}this._buildWrapper(i),this._buildElement(n),this._initWrapper()},_addRowTo:function(e,i){var n=t.dom(e),o=n.closest(\"tr\");if(0!==o.length){var s=o.children(\"td, th\").length,r=this._buildRow(s);return o[i](r),r}},_buildRow:function(e,i){i=i||\"<td>\";for(var n=t.dom(\"<tr>\"),o=0;o<e;o++){var s=t.dom(i);s.attr(\"contenteditable\",!0),n.append(s)}return n},_buildElement:function(e){e?this.$element=t.dom(e):(this.$element=t.dom(\"<table>\"),this.append(this.$element))},_buildWrapper:function(t){t=t||\"<figure>\",this.parse(t)},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"table\",tabindex:\"-1\",contenteditable:!1})}})}(Redactor),function(t){t.add(\"plugin\",\"video\",{translations:{en:{video:\"Video\",\"video-html-code\":\"Video Embed Code or Youtube/Vimeo Link\"}},modals:{\nvideo:'<form action=\"\">                     <div class=\"form-item\">                         <label for=\"modal-video-input\">## video-html-code ## <span class=\"req\">*</span></label>                         <textarea id=\"modal-video-input\" name=\"video\" style=\"height: 160px;\"></textarea>                     </div>                 </form>'},init:function(t){this.app=t,this.lang=t.lang,this.opts=t.opts,this.toolbar=t.toolbar,this.component=t.component,this.insertion=t.insertion,this.inspector=t.inspector},onmodal:{video:{opened:function(t,e){e.getField(\"video\").focus()},insert:function(t,e){var i=e.getData();this._insert(i)}}},oncontextbar:function(t,e){var i=this.inspector.parse(t.target);if(i.isComponentType(\"video\")){var n=i.getComponent(),o={remove:{title:this.lang.get(\"delete\"),api:\"plugin.video.remove\",args:n}};e.set(t,n,o,\"bottom\")}},start:function(){var t={title:this.lang.get(\"video\"),api:\"plugin.video.open\"};this.toolbar.addButtonAfter(\"image\",\"video\",t).setIcon('<i class=\"re-icon-video\"></i>')},open:function(){var t={title:this.lang.get(\"video\"),width:\"600px\",name:\"video\",handle:\"insert\",commands:{insert:{title:this.lang.get(\"insert\")},cancel:{title:this.lang.get(\"cancel\")}}};this.app.api(\"module.modal.build\",t)},remove:function(t){this.component.remove(t)},_insert:function(t){if(this.app.api(\"module.modal.close\"),\"\"!==t.video.trim()&&(t.video=this._matchData(t.video),this._isVideoIframe(t.video))){var e=this.component.create(\"video\",t.video);this.insertion.insertHtml(e)}},_isVideoIframe:function(t){return null!==t.match(/<iframe|<video/gi)},_matchData:function(t){var e='<iframe style=\"width: 500px; height: 281px;\" src=\"',i='\" frameborder=\"0\" allowfullscreen></iframe>';if(this._isVideoIframe(t)){var n=[\"iframe\",\"video\",\"source\"],o=/<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi;t=t.replace(o,function(t,e){return-1===n.indexOf(e.toLowerCase())?\"\":t})}return t.match(this.opts.regex.youtube)?t=t.replace(this.opts.regex.youtube,e+\"//www.youtube.com/embed/$1\"+i):t.match(this.opts.regex.vimeo)&&(t=t.replace(this.opts.regex.vimeo,e+\"//player.vimeo.com/video/$2\"+i)),t}})}(Redactor),function(t){t.add(\"class\",\"video.component\",{mixins:[\"dom\",\"component\"],init:function(t,e){return this.app=t,e&&void 0!==e.cmnt?e:this._init(e)},_init:function(e){if(void 0!==e){var i=t.dom(e),n=i.closest(\"figure\");0!==n.length?this.parse(n):(this.parse(\"<figure>\"),this.append(e))}else this.parse(\"<figure>\");this._initWrapper()},_initWrapper:function(){this.addClass(\"redactor-component\"),this.attr({\"data-redactor-type\":\"video\",tabindex:\"-1\",contenteditable:!1})}})}(Redactor);\n"
  },
  {
    "path": "src/Assets/dist/mix-manifest.json",
    "content": "{\n    \"/css/cms.css\": \"/css/cms.css\",\n    \"/js/vendor.js\": \"/js/vendor.js\",\n    \"/js/cms.js\": \"/js/cms.js\",\n    \"/css/vendor.css\": \"/css/vendor.css\"\n}\n"
  },
  {
    "path": "src/Assets/mimes.php",
    "content": "<?php\n\n/*\n * --------------------------------------------------------------------------\n * Mimes\n * --------------------------------------------------------------------------\n*/\n\nreturn [\n    '.3dm' => 'x-world/x-3dmf',\n    '.3dmf' => 'x-world/x-3dmf',\n    '.a' => 'application/octet-stream',\n    '.aab' => 'application/x-authorware-bin',\n    '.aam' => 'application/x-authorware-map',\n    '.aas' => 'application/x-authorware-seg',\n    '.abc' => 'text/vnd.abc',\n    '.acgi' => 'text/html',\n    '.afl' => 'video/animaflex',\n    '.ai' => 'application/postscript',\n    '.aif' => 'audio/aiff',\n    '.aif' => 'audio/x-aiff',\n    '.aifc' => 'audio/aiff',\n    '.aifc' => 'audio/x-aiff',\n    '.aiff' => 'audio/aiff',\n    '.aiff' => 'audio/x-aiff',\n    '.aim' => 'application/x-aim',\n    '.aip' => 'text/x-audiosoft-intra',\n    '.ani' => 'application/x-navi-animation',\n    '.aos' => 'application/x-nokia-9000-communicator-add-on-software',\n    '.aps' => 'application/mime',\n    '.arc' => 'application/octet-stream',\n    '.arj' => 'application/arj',\n    '.arj' => 'application/octet-stream',\n    '.art' => 'image/x-jg',\n    '.asf' => 'video/x-ms-asf',\n    '.asm' => 'text/x-asm',\n    '.asp' => 'text/asp',\n    '.asx' => 'application/x-mplayer2',\n    '.asx' => 'video/x-ms-asf',\n    '.asx' => 'video/x-ms-asf-plugin',\n    '.au' => 'audio/basic',\n    '.au' => 'audio/x-au',\n    '.avi' => 'application/x-troff-msvideo',\n    '.avi' => 'video/avi',\n    '.avi' => 'video/msvideo',\n    '.avi' => 'video/x-msvideo',\n    '.avs' => 'video/avs-video',\n    '.bcpio' => 'application/x-bcpio',\n    '.bin' => 'application/mac-binary',\n    '.bin' => 'application/macbinary',\n    '.bin' => 'application/octet-stream',\n    '.bin' => 'application/x-binary',\n    '.bin' => 'application/x-macbinary',\n    '.bm' => 'image/bmp',\n    '.bmp' => 'image/bmp',\n    '.bmp' => 'image/x-windows-bmp',\n    '.boo' => 'application/book',\n    '.book' => 'application/book',\n    '.boz' => 'application/x-bzip2',\n    '.bsh' => 'application/x-bsh',\n    '.bz' => 'application/x-bzip',\n    '.bz2' => 'application/x-bzip2',\n    '.c' => 'text/plain',\n    '.c++' => 'text/plain',\n    '.cat' => 'application/vnd.ms-pki.seccat',\n    '.cc' => 'text/plain',\n    '.cc' => 'text/x-c',\n    '.ccad' => 'application/clariscad',\n    '.cco' => 'application/x-cocoa',\n    '.cdf' => 'application/cdf',\n    '.cdf' => 'application/x-cdf',\n    '.cdf' => 'application/x-netcdf',\n    '.cer' => 'application/pkix-cert',\n    '.cer' => 'application/x-x509-ca-cert',\n    '.cha' => 'application/x-chat',\n    '.chat' => 'application/x-chat',\n    '.class' => 'application/java',\n    '.class' => 'application/java-byte-code',\n    '.class' => 'application/x-java-class',\n    '.com' => 'application/octet-stream',\n    '.com' => 'text/plain',\n    '.conf' => 'text/plain',\n    '.cpio' => 'application/x-cpio',\n    '.cpp' => 'text/x-c',\n    '.cpt' => 'application/mac-compactpro',\n    '.cpt' => 'application/x-compactpro',\n    '.cpt' => 'application/x-cpt',\n    '.crl' => 'application/pkcs-crl',\n    '.crl' => 'application/pkix-crl',\n    '.crt' => 'application/pkix-cert',\n    '.crt' => 'application/x-x509-ca-cert',\n    '.crt' => 'application/x-x509-user-cert',\n    '.csh' => 'application/x-csh',\n    '.csh' => 'text/x-script.csh',\n    '.css' => 'application/x-pointplus',\n    '.css' => 'text/css',\n    '.cxx' => 'text/plain',\n    '.dcr' => 'application/x-director',\n    '.deepv' => 'application/x-deepv',\n    '.def' => 'text/plain',\n    '.der' => 'application/x-x509-ca-cert',\n    '.dif' => 'video/x-dv',\n    '.dir' => 'application/x-director',\n    '.dl' => 'video/dl',\n    '.dl' => 'video/x-dl',\n    '.doc' => 'application/msword',\n    '.docx' => 'application/msword',\n    '.dot' => 'application/msword',\n    '.dp' => 'application/commonground',\n    '.drw' => 'application/drafting',\n    '.dump' => 'application/octet-stream',\n    '.dv' => 'video/x-dv',\n    '.dvi' => 'application/x-dvi',\n    '.dwf' => 'drawing/x-dwf (old)',\n    '.dwf' => 'model/vnd.dwf',\n    '.dwg' => 'application/acad',\n    '.dwg' => 'image/vnd.dwg',\n    '.dwg' => 'image/x-dwg',\n    '.dxf' => 'application/dxf',\n    '.dxf' => 'image/vnd.dwg',\n    '.dxf' => 'image/x-dwg',\n    '.dxr' => 'application/x-director',\n    '.el' => 'text/x-script.elisp',\n    '.elc' => 'application/x-bytecode.elisp (compiled elisp)',\n    '.elc' => 'application/x-elc',\n    '.env' => 'application/x-envoy',\n    '.eps' => 'application/postscript',\n    '.es' => 'application/x-esrehber',\n    '.etx' => 'text/x-setext',\n    '.evy' => 'application/envoy',\n    '.evy' => 'application/x-envoy',\n    '.exe' => 'application/octet-stream',\n    '.f' => 'text/plain',\n    '.f' => 'text/x-fortran',\n    '.f77' => 'text/x-fortran',\n    '.f90' => 'text/plain',\n    '.f90' => 'text/x-fortran',\n    '.fdf' => 'application/vnd.fdf',\n    '.fif' => 'application/fractals',\n    '.fif' => 'image/fif',\n    '.fli' => 'video/fli',\n    '.fli' => 'video/x-fli',\n    '.flo' => 'image/florian',\n    '.flx' => 'text/vnd.fmi.flexstor',\n    '.fmf' => 'video/x-atomic3d-feature',\n    '.for' => 'text/plain',\n    '.for' => 'text/x-fortran',\n    '.fpx' => 'image/vnd.fpx',\n    '.fpx' => 'image/vnd.net-fpx',\n    '.frl' => 'application/freeloader',\n    '.funk' => 'audio/make',\n    '.g' => 'text/plain',\n    '.g3' => 'image/g3fax',\n    '.gif' => 'image/gif',\n    '.gl' => 'video/gl',\n    '.gl' => 'video/x-gl',\n    '.gsd' => 'audio/x-gsm',\n    '.gsm' => 'audio/x-gsm',\n    '.gsp' => 'application/x-gsp',\n    '.gss' => 'application/x-gss',\n    '.gtar' => 'application/x-gtar',\n    '.gz' => 'application/x-compressed',\n    '.gz' => 'application/x-gzip',\n    '.gzip' => 'application/x-gzip',\n    '.gzip' => 'multipart/x-gzip',\n    '.h' => 'text/plain',\n    '.h' => 'text/x-h',\n    '.hdf' => 'application/x-hdf',\n    '.help' => 'application/x-helpfile',\n    '.hgl' => 'application/vnd.hp-hpgl',\n    '.hh' => 'text/plain',\n    '.hh' => 'text/x-h',\n    '.hlb' => 'text/x-script',\n    '.hlp' => 'application/hlp',\n    '.hlp' => 'application/x-helpfile',\n    '.hlp' => 'application/x-winhelp',\n    '.hpg' => 'application/vnd.hp-hpgl',\n    '.hpgl' => 'application/vnd.hp-hpgl',\n    '.hqx' => 'application/binhex',\n    '.hqx' => 'application/binhex4',\n    '.hqx' => 'application/mac-binhex',\n    '.hqx' => 'application/mac-binhex40',\n    '.hqx' => 'application/x-binhex40',\n    '.hqx' => 'application/x-mac-binhex40',\n    '.hta' => 'application/hta',\n    '.htc' => 'text/x-component',\n    '.htm' => 'text/html',\n    '.html' => 'text/html',\n    '.htmls' => 'text/html',\n    '.htt' => 'text/webviewhtml',\n    '.htx' => 'text/html',\n    '.ice' => 'x-conference/x-cooltalk',\n    '.ico' => 'image/x-icon',\n    '.idc' => 'text/plain',\n    '.ief' => 'image/ief',\n    '.iefs' => 'image/ief',\n    '.iges' => 'application/iges',\n    '.iges' => 'model/iges',\n    '.igs' => 'application/iges',\n    '.igs' => 'model/iges',\n    '.ima' => 'application/x-ima',\n    '.imap' => 'application/x-httpd-imap',\n    '.inf' => 'application/inf',\n    '.ins' => 'application/x-internett-signup',\n    '.ip' => 'application/x-ip2',\n    '.isu' => 'video/x-isvideo',\n    '.it' => 'audio/it',\n    '.iv' => 'application/x-inventor',\n    '.ivr' => 'i-world/i-vrml',\n    '.ivy' => 'application/x-livescreen',\n    '.jam' => 'audio/x-jam',\n    '.jav' => 'text/plain',\n    '.jav' => 'text/x-java-source',\n    '.java' => 'text/plain',\n    '.java' => 'text/x-java-source',\n    '.jcm' => 'application/x-java-commerce',\n    '.jfif' => 'image/jpeg',\n    '.jfif' => 'image/pjpeg',\n    '.jfif-tbnl' => 'image/jpeg',\n    '.jpe' => 'image/jpeg',\n    '.jpe' => 'image/pjpeg',\n    '.jpeg' => 'image/jpeg',\n    '.jpeg' => 'image/pjpeg',\n    '.jpg' => 'image/jpeg',\n    '.jps' => 'image/x-jps',\n    '.js' => 'application/x-javascript',\n    '.jut' => 'image/jutvision',\n    '.kar' => 'audio/midi',\n    '.kar' => 'music/x-karaoke',\n    '.ksh' => 'application/x-ksh',\n    '.ksh' => 'text/x-script.ksh',\n    '.la' => 'audio/nspaudio',\n    '.la' => 'audio/x-nspaudio',\n    '.lam' => 'audio/x-liveaudio',\n    '.latex' => 'application/x-latex',\n    '.lha' => 'application/lha',\n    '.lha' => 'application/octet-stream',\n    '.lha' => 'application/x-lha',\n    '.lhx' => 'application/octet-stream',\n    '.list' => 'text/plain',\n    '.lma' => 'audio/nspaudio',\n    '.lma' => 'audio/x-nspaudio',\n    '.log' => 'text/plain',\n    '.lsp' => 'application/x-lisp',\n    '.lsp' => 'text/x-script.lisp',\n    '.lst' => 'text/plain',\n    '.lsx' => 'text/x-la-asf',\n    '.ltx' => 'application/x-latex',\n    '.lzh' => 'application/octet-stream',\n    '.lzh' => 'application/x-lzh',\n    '.lzx' => 'application/lzx',\n    '.lzx' => 'application/octet-stream',\n    '.lzx' => 'application/x-lzx',\n    '.m' => 'text/plain',\n    '.m' => 'text/x-m',\n    '.m1v' => 'video/mpeg',\n    '.m2a' => 'audio/mpeg',\n    '.m2v' => 'video/mpeg',\n    '.m3u' => 'audio/x-mpequrl',\n    '.man' => 'application/x-troff-man',\n    '.map' => 'application/x-navimap',\n    '.mar' => 'text/plain',\n    '.mbd' => 'application/mbedlet',\n    '.mc' => 'application/x-magic-cap-package-1.0',\n    '.mcd' => 'application/mcad',\n    '.mcd' => 'application/x-mathcad',\n    '.mcf' => 'image/vasa',\n    '.mcf' => 'text/mcf',\n    '.mcp' => 'application/netmc',\n    '.me' => 'application/x-troff-me',\n    '.mht' => 'message/rfc822',\n    '.mhtml' => 'message/rfc822',\n    '.mid' => 'application/x-midi',\n    '.mid' => 'audio/midi',\n    '.mid' => 'audio/x-mid',\n    '.mid' => 'audio/x-midi',\n    '.mid' => 'music/crescendo',\n    '.mid' => 'x-music/x-midi',\n    '.midi' => 'application/x-midi',\n    '.midi' => 'audio/midi',\n    '.midi' => 'audio/x-mid',\n    '.midi' => 'audio/x-midi',\n    '.midi' => 'music/crescendo',\n    '.midi' => 'x-music/x-midi',\n    '.mif' => 'application/x-frame',\n    '.mif' => 'application/x-mif',\n    '.mime' => 'message/rfc822',\n    '.mime' => 'www/mime',\n    '.mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile',\n    '.mjpg' => 'video/x-motion-jpeg',\n    '.mm' => 'application/base64',\n    '.mm' => 'application/x-meme',\n    '.mme' => 'application/base64',\n    '.mod' => 'audio/mod',\n    '.mod' => 'audio/x-mod',\n    '.moov' => 'video/quicktime',\n    '.mov' => 'video/quicktime',\n    '.movie' => 'video/x-sgi-movie',\n    '.mp2' => 'audio/mpeg',\n    '.mp2' => 'audio/x-mpeg',\n    '.mp2' => 'video/mpeg',\n    '.mp2' => 'video/x-mpeg',\n    '.mp2' => 'video/x-mpeq2a',\n    '.mp3' => 'audio/mpeg3',\n    '.mp3' => 'audio/x-mpeg-3',\n    '.mp3' => 'video/mpeg',\n    '.mp3' => 'video/x-mpeg',\n    '.mpa' => 'audio/mpeg',\n    '.mpa' => 'video/mpeg',\n    '.mpc' => 'application/x-project',\n    '.mpe' => 'video/mpeg',\n    '.mpeg' => 'video/mpeg',\n    '.mpg' => 'audio/mpeg',\n    '.mpg' => 'video/mpeg',\n    '.mpga' => 'audio/mpeg',\n    '.mpp' => 'application/vnd.ms-project',\n    '.mpt' => 'application/x-project',\n    '.mpv' => 'application/x-project',\n    '.mpx' => 'application/x-project',\n    '.mrc' => 'application/marc',\n    '.ms' => 'application/x-troff-ms',\n    '.mv' => 'video/x-sgi-movie',\n    '.my' => 'audio/make',\n    '.mzz' => 'application/x-vnd.audioexplosion.mzz',\n    '.nap' => 'image/naplps',\n    '.naplps' => 'image/naplps',\n    '.nc' => 'application/x-netcdf',\n    '.ncm' => 'application/vnd.nokia.configuration-message',\n    '.nif' => 'image/x-niff',\n    '.niff' => 'image/x-niff',\n    '.nix' => 'application/x-mix-transfer',\n    '.nsc' => 'application/x-conference',\n    '.nvd' => 'application/x-navidoc',\n    '.o' => 'application/octet-stream',\n    '.oda' => 'application/oda',\n    '.omc' => 'application/x-omc',\n    '.omcd' => 'application/x-omcdatamaker',\n    '.omcr' => 'application/x-omcregerator',\n    '.p' => 'text/x-pascal',\n    '.p10' => 'application/pkcs10',\n    '.p10' => 'application/x-pkcs10',\n    '.p12' => 'application/pkcs-12',\n    '.p12' => 'application/x-pkcs12',\n    '.p7a' => 'application/x-pkcs7-signature',\n    '.p7c' => 'application/pkcs7-mime',\n    '.p7c' => 'application/x-pkcs7-mime',\n    '.p7m' => 'application/pkcs7-mime',\n    '.p7m' => 'application/x-pkcs7-mime',\n    '.p7r' => 'application/x-pkcs7-certreqresp',\n    '.p7s' => 'application/pkcs7-signature',\n    '.part' => 'application/pro_eng',\n    '.pas' => 'text/pascal',\n    '.pbm' => 'image/x-portable-bitmap',\n    '.pcl' => 'application/vnd.hp-pcl',\n    '.pcl' => 'application/x-pcl',\n    '.pct' => 'image/x-pict',\n    '.pcx' => 'image/x-pcx',\n    '.pdb' => 'chemical/x-pdb',\n    '.pdf' => 'application/pdf',\n    '.pfunk' => 'audio/make',\n    '.pgm' => 'image/x-portable-greymap',\n    '.pic' => 'image/pict',\n    '.pict' => 'image/pict',\n    '.pkg' => 'application/x-newton-compatible-pkg',\n    '.pko' => 'application/vnd.ms-pki.pko',\n    '.pl' => 'text/plain',\n    '.pl' => 'text/x-script.perl',\n    '.plx' => 'application/x-pixclscript',\n    '.pm' => 'image/x-xpixmap',\n    '.pm' => 'text/x-script.perl-module',\n    '.pm4' => 'application/x-pagemaker',\n    '.pm5' => 'application/x-pagemaker',\n    '.png' => 'image/png',\n    '.pnm' => 'application/x-portable-anymap',\n    '.pnm' => 'image/x-portable-anymap',\n    '.pot' => 'application/mspowerpoint',\n    '.pot' => 'application/vnd.ms-powerpoint',\n    '.pov' => 'model/x-pov',\n    '.ppa' => 'application/vnd.ms-powerpoint',\n    '.ppm' => 'image/x-portable-pixmap',\n    '.pps' => 'application/mspowerpoint',\n    '.pps' => 'application/vnd.ms-powerpoint',\n    '.ppt' => 'application/mspowerpoint',\n    '.ppt' => 'application/powerpoint',\n    '.ppt' => 'application/vnd.ms-powerpoint',\n    '.ppt' => 'application/x-mspowerpoint',\n    '.ppz' => 'application/mspowerpoint',\n    '.pre' => 'application/x-freelance',\n    '.prt' => 'application/pro_eng',\n    '.ps' => 'application/postscript',\n    '.psd' => 'application/octet-stream',\n    '.pvu' => 'paleovu/x-pv',\n    '.pwz' => 'application/vnd.ms-powerpoint',\n    '.py' => 'text/x-script.phyton',\n    '.pyc' => 'applicaiton/x-bytecode.python',\n    '.qcp' => 'audio/vnd.qcelp',\n    '.qd3' => 'x-world/x-3dmf',\n    '.qd3d' => 'x-world/x-3dmf',\n    '.qif' => 'image/x-quicktime',\n    '.qt' => 'video/quicktime',\n    '.qtc' => 'video/x-qtc',\n    '.qti' => 'image/x-quicktime',\n    '.qtif' => 'image/x-quicktime',\n    '.ra' => 'audio/x-pn-realaudio',\n    '.ra' => 'audio/x-pn-realaudio-plugin',\n    '.ra' => 'audio/x-realaudio',\n    '.ram' => 'audio/x-pn-realaudio',\n    '.ras' => 'application/x-cmu-raster',\n    '.ras' => 'image/cmu-raster',\n    '.ras' => 'image/x-cmu-raster',\n    '.rast' => 'image/cmu-raster',\n    '.rexx' => 'text/x-script.rexx',\n    '.rf' => 'image/vnd.rn-realflash',\n    '.rgb' => 'image/x-rgb',\n    '.rm' => 'application/vnd.rn-realmedia',\n    '.rm' => 'audio/x-pn-realaudio',\n    '.rmi' => 'audio/mid',\n    '.rmm' => 'audio/x-pn-realaudio',\n    '.rmp' => 'audio/x-pn-realaudio',\n    '.rmp' => 'audio/x-pn-realaudio-plugin',\n    '.rng' => 'application/ringing-tones',\n    '.rng' => 'application/vnd.nokia.ringing-tone',\n    '.rnx' => 'application/vnd.rn-realplayer',\n    '.roff' => 'application/x-troff',\n    '.rp' => 'image/vnd.rn-realpix',\n    '.rpm' => 'audio/x-pn-realaudio-plugin',\n    '.rt' => 'text/richtext',\n    '.rt' => 'text/vnd.rn-realtext',\n    '.rtf' => 'application/rtf',\n    '.rtf' => 'application/x-rtf',\n    '.rtf' => 'text/richtext',\n    '.rtx' => 'application/rtf',\n    '.rtx' => 'text/richtext',\n    '.rv' => 'video/vnd.rn-realvideo',\n    '.s' => 'text/x-asm',\n    '.s3m' => 'audio/s3m',\n    '.saveme' => 'aapplication/octet-stream',\n    '.sbk' => 'application/x-tbook',\n    '.scm' => 'application/x-lotusscreencam',\n    '.scm' => 'text/x-script.guile',\n    '.scm' => 'text/x-script.scheme',\n    '.scm' => 'video/x-scm',\n    '.sdml' => 'text/plain',\n    '.sdp' => 'application/sdp',\n    '.sdp' => 'application/x-sdp',\n    '.sdr' => 'application/sounder',\n    '.sea' => 'application/sea',\n    '.sea' => 'application/x-sea',\n    '.set' => 'application/set',\n    '.sgm' => 'text/sgml',\n    '.sgm' => 'text/x-sgml',\n    '.sgml' => 'text/sgml',\n    '.sgml' => 'text/x-sgml',\n    '.sh' => 'application/x-bsh',\n    '.sh' => 'application/x-sh',\n    '.sh' => 'application/x-shar',\n    '.sh' => 'text/x-script.sh',\n    '.shar' => 'application/x-bsh',\n    '.shar' => 'application/x-shar',\n    '.shtml' => 'text/html',\n    '.shtml' => 'text/x-server-parsed-html',\n    '.sid' => 'audio/x-psid',\n    '.sit' => 'application/x-sit',\n    '.sit' => 'application/x-stuffit',\n    '.skd' => 'application/x-koan',\n    '.skm' => 'application/x-koan',\n    '.skp' => 'application/x-koan',\n    '.skt' => 'application/x-koan',\n    '.sl' => 'application/x-seelogo',\n    '.smi' => 'application/smil',\n    '.smil' => 'application/smil',\n    '.snd' => 'audio/basic',\n    '.snd' => 'audio/x-adpcm',\n    '.sol' => 'application/solids',\n    '.spc' => 'application/x-pkcs7-certificates',\n    '.spc' => 'text/x-speech',\n    '.spl' => 'application/futuresplash',\n    '.spr' => 'application/x-sprite',\n    '.sprite' => 'application/x-sprite',\n    '.src' => 'application/x-wais-source',\n    '.ssi' => 'text/x-server-parsed-html',\n    '.ssm' => 'application/streamingmedia',\n    '.sst' => 'application/vnd.ms-pki.certstore',\n    '.step' => 'application/step',\n    '.stl' => 'application/sla',\n    '.stl' => 'application/vnd.ms-pki.stl',\n    '.stl' => 'application/x-navistyle',\n    '.stp' => 'application/step',\n    '.sv4cpio' => 'application/x-sv4cpio',\n    '.sv4crc' => 'application/x-sv4crc',\n    '.svf' => 'image/vnd.dwg',\n    '.svf' => 'image/x-dwg',\n    '.svr' => 'application/x-world',\n    '.svr' => 'x-world/x-svr',\n    '.swf' => 'application/x-shockwave-flash',\n    '.t' => 'application/x-troff',\n    '.talk' => 'text/x-speech',\n    '.tar' => 'application/x-tar',\n    '.tbk' => 'application/toolbook',\n    '.tbk' => 'application/x-tbook',\n    '.tcl' => 'application/x-tcl',\n    '.tcl' => 'text/x-script.tcl',\n    '.tcsh' => 'text/x-script.tcsh',\n    '.tex' => 'application/x-tex',\n    '.texi' => 'application/x-texinfo',\n    '.texinfo' => ' lication/x-texinfo',\n    '.text' => 'application/plain',\n    '.text' => 'text/plain',\n    '.tgz' => 'application/gnutar',\n    '.tgz' => 'application/x-compressed',\n    '.tif' => 'image/tiff',\n    '.tif' => 'image/x-tiff',\n    '.tiff' => 'image/tiff',\n    '.tiff' => 'image/x-tiff',\n    '.tr' => 'application/x-troff',\n    '.tsi' => 'audio/tsp-audio',\n    '.tsp' => 'application/dsptype',\n    '.tsp' => 'audio/tsplayer',\n    '.tsv' => 'text/tab-separated-values',\n    '.turbot' => 'image/florian',\n    '.txt' => 'text/plain',\n    '.uil' => 'text/x-uil',\n    '.uni' => 'text/uri-list',\n    '.unis' => 'text/uri-list',\n    '.unv' => 'application/i-deas',\n    '.uri' => 'text/uri-list',\n    '.uris' => 'text/uri-list',\n    '.ustar' => 'application/x-ustar',\n    '.ustar' => 'multipart/x-ustar',\n    '.uu' => 'application/octet-stream',\n    '.uu' => 'text/x-uuencode',\n    '.uue' => 'text/x-uuencode',\n    '.vcd' => 'application/x-cdlink',\n    '.vcs' => 'text/x-vcalendar',\n    '.vda' => 'application/vda',\n    '.vdo' => 'video/vdo',\n    '.vew' => 'application/groupwise',\n    '.viv' => 'video/vivo',\n    '.viv' => 'video/vnd.vivo',\n    '.vivo' => 'video/vivo',\n    '.vivo' => 'video/vnd.vivo',\n    '.vmd' => 'application/vocaltec-media-desc',\n    '.vmf' => 'application/vocaltec-media-file',\n    '.voc' => 'audio/voc',\n    '.voc' => 'audio/x-voc',\n    '.vos' => 'video/vosaic',\n    '.vox' => 'audio/voxware',\n    '.vqe' => 'audio/x-twinvq-plugin',\n    '.vqf' => 'audio/x-twinvq',\n    '.vql' => 'audio/x-twinvq-plugin',\n    '.vrml' => 'application/x-vrml',\n    '.vrml' => 'model/vrml',\n    '.vrml' => 'x-world/x-vrml',\n    '.vrt' => 'x-world/x-vrt',\n    '.vsd' => 'application/x-visio',\n    '.vst' => 'application/x-visio',\n    '.vsw' => 'application/x-visio',\n    '.w60' => 'application/wordperfect6.0',\n    '.w61' => 'application/wordperfect6.1',\n    '.w6w' => 'application/msword',\n    '.wav' => 'audio/wav',\n    '.wav' => 'audio/x-wav',\n    '.wb1' => 'application/x-qpro',\n    '.wbmp' => 'image/vnd.wap.wbmp',\n    '.web' => 'application/vnd.xara',\n    '.wiz' => 'application/msword',\n    '.wk1' => 'application/x-123',\n    '.wmf' => 'windows/metafile',\n    '.wml' => 'text/vnd.wap.wml',\n    '.wmlc' => 'application/vnd.wap.wmlc',\n    '.wmls' => 'text/vnd.wap.wmlscript',\n    '.wmlsc' => 'application/vnd.wap.wmlscriptc',\n    '.word' => 'application/msword',\n    '.wp' => 'application/wordperfect',\n    '.wp5' => 'application/wordperfect',\n    '.wp5' => 'application/wordperfect6.0',\n    '.wp6' => 'application/wordperfect',\n    '.wpd' => 'application/wordperfect',\n    '.wpd' => 'application/x-wpwin',\n    '.wq1' => 'application/x-lotus',\n    '.wri' => 'application/mswrite',\n    '.wri' => 'application/x-wri',\n    '.wrl' => 'application/x-world',\n    '.wrl' => 'model/vrml',\n    '.wrl' => 'x-world/x-vrml',\n    '.wrz' => 'model/vrml',\n    '.wrz' => 'x-world/x-vrml',\n    '.wsc' => 'text/scriplet',\n    '.wsrc' => 'application/x-wais-source',\n    '.wtk' => 'application/x-wintalk',\n    '.xbm' => 'image/x-xbitmap',\n    '.xbm' => 'image/x-xbm',\n    '.xbm' => 'image/xbm',\n    '.xdr' => 'video/x-amt-demorun',\n    '.xgz' => 'xgl/drawing',\n    '.xif' => 'image/vnd.xiff',\n    '.xl' => 'application/excel',\n    '.xla' => 'application/excel',\n    '.xla' => 'application/x-excel',\n    '.xla' => 'application/x-msexcel',\n    '.xlb' => 'application/excel',\n    '.xlb' => 'application/vnd.ms-excel',\n    '.xlb' => 'application/x-excel',\n    '.xlc' => 'application/excel',\n    '.xlc' => 'application/vnd.ms-excel',\n    '.xlc' => 'application/x-excel',\n    '.xld' => 'application/excel',\n    '.xld' => 'application/x-excel',\n    '.xlk' => 'application/excel',\n    '.xlk' => 'application/x-excel',\n    '.xll' => 'application/excel',\n    '.xll' => 'application/vnd.ms-excel',\n    '.xll' => 'application/x-excel',\n    '.xlm' => 'application/excel',\n    '.xlm' => 'application/vnd.ms-excel',\n    '.xlm' => 'application/x-excel',\n    '.xls' => 'application/excel',\n    '.xls' => 'application/vnd.ms-excel',\n    '.xls' => 'application/x-excel',\n    '.xls' => 'application/x-msexcel',\n    '.xlt' => 'application/excel',\n    '.xlt' => 'application/x-excel',\n    '.xlv' => 'application/excel',\n    '.xlv' => 'application/x-excel',\n    '.xlw' => 'application/excel',\n    '.xlw' => 'application/vnd.ms-excel',\n    '.xlw' => 'application/x-excel',\n    '.xlw' => 'application/x-msexcel',\n    '.xm' => 'audio/xm',\n    '.xml' => 'application/xml',\n    '.xml' => 'text/xml',\n    '.xmz' => 'xgl/movie',\n    '.xpix' => 'application/x-vnd.ls-xpix',\n    '.xpm' => 'image/x-xpixmap',\n    '.xpm' => 'image/xpm',\n    '.x-png' => 'image/png',\n    '.xsr' => 'video/x-amt-showrun',\n    '.xwd' => 'image/x-xwd',\n    '.xwd' => 'image/x-xwindowdump',\n    '.xyz' => 'chemical/x-pdb',\n    '.z' => 'application/x-compress',\n    '.z' => 'application/x-compressed',\n    '.zip' => 'application/x-compressed',\n    '.zip' => 'application/x-zip-compressed',\n    '.zip' => 'application/zip',\n    '.zip' => 'multipart/x-zip',\n    '.zoo' => 'application/octet-stream',\n    '.zsh' => 'text/x-script.zsh',\n];\n"
  },
  {
    "path": "src/Assets/src/js/cms.js",
    "content": "/*\n|--------------------------------------------------------------------------\n| Sidebar\n|--------------------------------------------------------------------------\n*/\n\n$(document).ready(function () {\n    $('.alert').delay(7000).fadeOut();\n\n    // toggle sidebar when button clicked\n    $('.sidebar-toggle').on('click', function () {\n        $('.sidebar').toggleClass('toggled');\n    });\n\n    // auto-expand submenu if an item is active\n    var active = $('.sidebar .active');\n\n    if (active.length && active.parent('.collapse').length) {\n        var parent = active.parent('.collapse');\n\n        parent.prev('a').attr('aria-expanded', true);\n        parent.addClass('show');\n    }\n});\n\n\n/*\n|--------------------------------------------------------------------------\n| Generals\n|--------------------------------------------------------------------------\n*/\n\n$(function () {\n    $(\".non-form-btn\").bind(\"click\", function (e) {\n        e.preventDefault();\n    });\n\n    $(\".delete-btn\").bind(\"click\", function (e) {\n        e.preventDefault();\n        $('#deleteModal').modal('toggle');\n        var _parentForm = $(this).parent('form');\n        $('#deleteBtn').bind('click', function(){\n            _parentForm[0].submit();\n        });\n    });\n\n    $(\".delete-link-btn\").bind(\"click\", function (e) {\n        e.preventDefault();\n        $('#deleteLinkModal').modal('toggle');\n        var _parentForm = $(this).parent('form');\n        $('#deleteLinkBtn').bind('click', function(){\n            _parentForm[0].submit();\n        });\n    });\n\n    $(\".delete-btn-confirm\").bind(\"click\", function (e) {\n        e.preventDefault();\n    });\n\n    $('form.add, form.edit').submit(function(){\n        $('.loading-overlay').show();\n    });\n\n    $('a.slow-link').click(function(){\n        $('.loading-overlay').show();\n    });\n});\n\n/*\n|--------------------------------------------------------------------------\n| Notifications - Growl Style\n|--------------------------------------------------------------------------\n*/\n\nfunction cmsNotify(message, _type) {\n    $(\".cms-notification\").css(\"display\", \"block\");\n    $(\".cms-notification\").attr('class', 'cms-notification');\n    $(\".cms-notification\").addClass(_type);\n\n    $(\".cms-notify-comment\").html(message);\n    $(\".cms-notification\").animate({\n        right: \"20px\",\n    });\n\n    $(\".cms-notify-closer\").click(function(){\n        $(\".cms-notification\").animate({\n            right: \"-300px\"\n        },\"\", function(){\n            $(\".cms-notification\").css(\"display\", \"none\");\n            $(\".cms-notify-comment\").html(\"\");\n        });\n    });\n\n    setTimeout(function(){\n        $(\".cms-notification\").animate({\n            right: \"-300px\"\n        },\"\", function(){\n            $(\".cms-notification\").css(\"display\", \"none\");\n            $(\".cms-notify-comment\").html(\"\");\n        });\n    }, 8000);\n}\n\n/*\n|--------------------------------------------------------------------------\n| Twitter Typeahead - Taken straight from Twitter's docs\n|--------------------------------------------------------------------------\n*/\n\nvar typeaheadMatcher = function (strs) {\n    return function findMatches(q, cb) {\n        var matches, substringRegex;\n\n        // an array that will be populated with substring matches\n        matches = [];\n\n        // regex used to determine if a string contains the substring `q`\n        substrRegex = new RegExp(q, 'i');\n\n        // iterate through the pool of strings and for any string that\n        // contains the substring `q`, add it to the `matches` array\n        $.each(strs, function(i, str) {\n            if (substrRegex.test(str)) {\n                matches.push(str);\n            }\n        });\n\n        cb(matches);\n    };\n};\n"
  },
  {
    "path": "src/Assets/src/js/dashboard-chart.js",
    "content": "/*\n|--------------------------------------------------------------------------\n| Charts\n|--------------------------------------------------------------------------\n*/\n\n$(function () {\n\n    var _chartDataConfig = {\n        type: 'line',\n        data: {\n            labels: _chartData._labels,\n            datasets: [{\n                label: \"Visits\",\n                backgroundColor: [\n                    \"#36A2EB\"\n                ],\n                hoverBackgroundColor: [\n                    \"#36A2EB\"\n                ],\n                pointStrokeColor: \"#fff\",\n                pointHighlightFill: \"#fff\",\n                pointHighlightStroke: \"rgba(220,220,220,1)\",\n                data: _chartData._visits\n            }]\n        }\n    }\n\n    var ctx = $(\"#dashboardChart\").get(0).getContext(\"2d\");\n    window.dashboard = new Chart(ctx, _chartDataConfig);\n\n});\n"
  },
  {
    "path": "src/Assets/src/js/dashboard.js",
    "content": ""
  },
  {
    "path": "src/Assets/src/js/dropzone-custom.js",
    "content": "Dropzone.options.fileDropzone = {\n    paramName: \"location\",\n    addRemoveLinks: true,\n    autoProcessQueue: false,\n    init: function() {\n        this.on(\"success\", function(file, responseText) {\n            file.serverData = responseText.data;\n            $(['name', 'original', 'mime', 'size']).each(function() {\n                $(\"#fileDetailsForm\").prepend('<input id=\"file_'+file.serverData.name+'\" name=\"location['+file.serverData.name+']['+this+']\" value=\"'+file.serverData[this]+'\" type=\"hidden\" />');\n            });\n            this.options.autoProcessQueue = true;\n        });\n        this.on(\"queuecomplete\", function(){\n            $('#fileDetailsForm').submit();\n        });\n        this.on(\"removedfile\", function(file) {\n            if (! file.serverData) {\n                return;\n            } else {\n                $.get(_url+\"/cms/files/remove/\"+file.serverData.name);\n                $(\"#file_\"+file.serverData.name).remove();\n            }\n        });\n    },\n    accept: function(file, done) {\n        done();\n    }\n};"
  },
  {
    "path": "src/Assets/src/js/forms.js",
    "content": "/*\n|--------------------------------------------------------------------------\n| Grafite CMS\n|--------------------------------------------------------------------------\n*/\n\nvar _redactorConfig = {\n    toolbarFixedTopOffset: ($(window).width() < 376) ? 30 : 50,\n    visual: true,\n    minHeight: 175,\n    convertVideoLinks: true,\n    imageUpload: false,\n    pastePlaintext: true,\n    imagePosition: true,\n    imageResizable: true,\n    deniedTags: ['script'],\n    imageManagerJson: _url+'/cms/api/images/list',\n    fileManagerJson: _url+'/cms/api/files/list',\n    stockImageManagerJson: 'https://pixabay.com/api/',\n    formatting: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5'],\n    buttonsAddAfter: {\n        after: 'deleted',\n        buttons: [\n            'underline'\n        ]\n    },\n    plugins: [\n        'table',\n        'fontcolor',\n        'alignment',\n        'specialchars',\n        'video',\n        'stockimagemanager',\n        'fileselector',\n        'imageselector',\n    ]\n};\n\n$(window).load(function() {\n\n    $('.pull-down').each(function() {\n        var height = 300 - $(this).siblings('.thumbnail').height() - $(this).height() - 48;\n        $(this).css('margin-top', height);\n    });\n\n    $('textarea.redactor').redactor(_redactorConfig);\n});\n\n$(function () {\n    var _initialUrlValue = $('#Url').val();\n\n    function _urlPrepare (title) {\n        return title.replace(/[^\\w\\s]/gi, '').replace(/ /g, '-').toLowerCase();\n    }\n\n    $('#Title, #Name').bind('keyup', function () {\n        if (_initialUrlValue == '') {\n            $('#Url').val(_urlPrepare($(this).val()));\n        }\n    });\n\n    $('.timepicker').datetimepicker({\n        format: 'LT',\n        timeZone: _appTimeZone\n    });\n\n    $('.datepicker').datetimepicker({\n        format: 'YYYY-MM-DD',\n        timeZone: _appTimeZone\n    });\n\n    $('.datetimepicker').datetimepicker({\n        showTodayButton: true,\n        format: 'YYYY-MM-DD HH:mm',\n        timeZone: _appTimeZone\n    });\n\n    $('.tags').tagsinput();\n});\n"
  },
  {
    "path": "src/Assets/src/js/modules.js",
    "content": "/*\n * --------------------------------------------------------------------------\n * General\n * --------------------------------------------------------------------------\n*/\n\n$(document).ready(function () {\n    $('[data-toggle=\"tooltip\"]').tooltip();\n});\n\n/*\n * --------------------------------------------------------------------------\n * Links\n * --------------------------------------------------------------------------\n*/\n\nif ($('#External').is(':checked')) {\n    $('#External_url').parent().show();\n    $('#Page_id').parent().hide();\n} else {\n    $('#External_url').parent().hide();\n    $('#Page_id').parent().show();\n}\n\n$(window).ready(function(){\n    $('#External').bind('click', function() {\n        if ($(this).is(':checked')) {\n            $('#External_url').parent().show();\n            $('#Page_id').parent().hide();\n        } else {\n            $('#External_url').parent().hide();\n            $('#Page_id').parent().show();\n        }\n    });\n});\n\nvar linkList = document.getElementById('linkList');\n\nif (typeof linkList != 'undefined' && linkList != null) {\n    var sortable = Sortable.create(linkList, {\n        store: {\n            get: function (sortable) {\n                return _linkOrder ? _linkOrder : [];\n            },\n            set: function (sortable) {\n                var _order = sortable.toArray();\n                $.ajax({\n                    url: _cmsUrl + '/menus/' + _id + '/order',\n                    type: 'put',\n                    data: {\n                        _token: _token,\n                        order: JSON.stringify(_order)\n                    },\n                    success: function (_data) {\n                        // do nothing!\n                    }\n                });\n            }\n        }\n    });\n}\n\n/*\n * --------------------------------------------------------------------------\n * Files\n * --------------------------------------------------------------------------\n*/\n\n$(function () {\n    $('#saveFilesBtn').click(function(e){\n        e.preventDefault();\n        Dropzone.forElement('.dropzone').processQueue();\n    });\n});\n\nfunction confirmDelete (url) {\n    $('#deleteBtn').attr('href', url);\n    $('#deleteModal').modal('toggle');\n}\n\n/*\n * --------------------------------------------------------------------------\n * Images\n * --------------------------------------------------------------------------\n*/\n\n$(function () {\n    $('.bulk-image-delete').hide();\n\n    $('#saveImagesBtn').click(function(e){\n        e.preventDefault();\n        Dropzone.forElement('.dropzone').processQueue();\n    });\n\n    $('.selectable').bind('click', function () {\n        if (!$(this).hasClass('selected-highlight')) {\n            $(this).addClass('selected-highlight');\n        } else {\n            $(this).removeClass('selected-highlight');\n        }\n\n        if ($('.selected-highlight').length > 0) {\n            $('.bulk-image-delete').show();\n        } else {\n            $('.bulk-image-delete').hide();\n        }\n    });\n\n    $('.bulk-image-delete').click(function () {\n        var _images = [];\n        $('.selected-highlight').each(function () {\n            _images.push($(this).attr('data-id'));\n        });\n\n        if (_images.length > 0) {\n            $('#bulkImageDeleteModal').modal('toggle');\n            var _deleteUrl = _cmsUrl +'/images/bulk-delete/' + _images.join('-')\n            $('#bulkImageDelete').attr('href', _deleteUrl);\n        }\n    });\n\n    $('.img-alter-btn').click(function (e) {\n        e.stopPropagation();\n    });\n});\n\n/*\n * --------------------------------------------------------------------------\n * Previews\n * --------------------------------------------------------------------------\n*/\n\n$('.preview-toggle').bind('click', function () {\n    if ($(this).attr('data-platform') == 'desktop') {\n        $('#frame').css({\n            width: '150%'\n        });\n    }\n    if ($(this).attr('data-platform') == 'mobile') {\n        $('#frame').css({\n            width: '320px'\n        });\n    }\n});\n\n$('#frame').load(function () {\n    var frameBody = $('#frame').contents().find('body');\n    $('a', frameBody).click(function(e){\n        e.preventDefault();\n    });\n});\n\n/*\n * --------------------------------------------------------------------------\n * Pages and Blocks\n * --------------------------------------------------------------------------\n*/\n\n$(function () {\n    $('.add-block-btn').bind('click', function (e) {\n        e.preventDefault();\n        $('#blockName').val('');\n        $('#addBlockModal').modal('toggle');\n    });\n\n    $('#addBlockBtn').bind('click', function () {\n        var _slug = $('#blockName').val();\n        $('.blocks').prepend('<div id=\"block_container_'+_slug+'\" class=\"col-md-12\"><div class=\"form-group\"><h4>'+_slug+'<button type=\"button\" class=\"btn btn-xs btn-danger delete-block-btn pull-right\"><span class=\"fa fa-trash\"></span></button></h4><textarea id=\"block_'+_slug+'\" name=\"block_'+_slug+'\" class=\"form-control redactor\"></textarea></div></div>');\n        $('#addBlockModal').modal('toggle');\n        $('#block_'+_slug).redactor(_redactorConfig);\n    });\n\n    $('.delete-block-btn').bind('click', function (e) {\n        e.preventDefault();\n        $('#deleteBlockBtn').attr('data-slug', $(this).attr('data-slug'));\n        $('#deleteBlockModal').modal('toggle');\n    });\n\n    $('#deleteBlockBtn').bind('click', function () {\n        $('#'+$(this).attr('data-slug')).remove();\n        $('#deleteBlockModal').modal('toggle');\n    });\n});\n"
  },
  {
    "path": "src/Assets/src/js/vendor/dropzone.js",
    "content": "\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n(function() {\n  var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,\n    __slice = [].slice,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n  noop = function() {};\n\n  Emitter = (function() {\n    function Emitter() {}\n\n    Emitter.prototype.addEventListener = Emitter.prototype.on;\n\n    Emitter.prototype.on = function(event, fn) {\n      this._callbacks = this._callbacks || {};\n      if (!this._callbacks[event]) {\n        this._callbacks[event] = [];\n      }\n      this._callbacks[event].push(fn);\n      return this;\n    };\n\n    Emitter.prototype.emit = function() {\n      var args, callback, callbacks, event, _i, _len;\n      event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      this._callbacks = this._callbacks || {};\n      callbacks = this._callbacks[event];\n      if (callbacks) {\n        for (_i = 0, _len = callbacks.length; _i < _len; _i++) {\n          callback = callbacks[_i];\n          callback.apply(this, args);\n        }\n      }\n      return this;\n    };\n\n    Emitter.prototype.removeListener = Emitter.prototype.off;\n\n    Emitter.prototype.removeAllListeners = Emitter.prototype.off;\n\n    Emitter.prototype.removeEventListener = Emitter.prototype.off;\n\n    Emitter.prototype.off = function(event, fn) {\n      var callback, callbacks, i, _i, _len;\n      if (!this._callbacks || arguments.length === 0) {\n        this._callbacks = {};\n        return this;\n      }\n      callbacks = this._callbacks[event];\n      if (!callbacks) {\n        return this;\n      }\n      if (arguments.length === 1) {\n        delete this._callbacks[event];\n        return this;\n      }\n      for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {\n        callback = callbacks[i];\n        if (callback === fn) {\n          callbacks.splice(i, 1);\n          break;\n        }\n      }\n      return this;\n    };\n\n    return Emitter;\n\n  })();\n\n  Dropzone = (function(_super) {\n    var extend, resolveOption;\n\n    __extends(Dropzone, _super);\n\n    Dropzone.prototype.Emitter = Emitter;\n\n\n    /*\n    This is a list of all available events you can register on a dropzone object.\n\n    You can register an event handler like this:\n\n        dropzone.on(\"dragEnter\", function() { });\n     */\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      method: \"post\",\n      withCredentials: false,\n      parallelUploads: 2,\n      uploadMultiple: false,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 10,\n      thumbnailWidth: 120,\n      thumbnailHeight: 120,\n      filesizeBase: 1000,\n      maxFiles: null,\n      filesizeBase: 1000,\n      params: {},\n      clickable: true,\n      ignoreHiddenFiles: true,\n      acceptedFiles: null,\n      acceptedMimeTypes: null,\n      autoProcessQueue: true,\n      autoQueue: true,\n      addRemoveLinks: false,\n      previewsContainer: null,\n      capture: null,\n      dictDefaultMessage: \"Drop files here to upload\",\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n      dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n      dictInvalidFileType: \"You can't upload files of this type.\",\n      dictResponseError: \"Server responded with {{statusCode}} code.\",\n      dictCancelUpload: \"Cancel upload\",\n      dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n      dictRemoveFile: \"Remove file\",\n      dictRemoveFileConfirmation: null,\n      dictMaxFilesExceeded: \"You can not upload any more files.\",\n      accept: function(file, done) {\n        return done();\n      },\n      init: function() {\n        return noop;\n      },\n      forceFallback: false,\n      fallback: function() {\n        var child, messageElement, span, _i, _len, _ref;\n        this.element.className = \"\" + this.element.className + \" dz-browser-not-supported\";\n        _ref = this.element.getElementsByTagName(\"div\");\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          child = _ref[_i];\n          if (/(^| )dz-message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"dz-message\";\n            continue;\n          }\n        }\n        if (!messageElement) {\n          messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n        span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          span.textContent = this.options.dictFallbackMessage;\n        }\n        return this.element.appendChild(this.getFallbackForm());\n      },\n      resize: function(file) {\n        var info, srcRatio, trgRatio;\n        info = {\n          srcX: 0,\n          srcY: 0,\n          srcWidth: file.width,\n          srcHeight: file.height\n        };\n        srcRatio = file.width / file.height;\n        info.optWidth = this.options.thumbnailWidth;\n        info.optHeight = this.options.thumbnailHeight;\n        if ((info.optWidth == null) && (info.optHeight == null)) {\n          info.optWidth = info.srcWidth;\n          info.optHeight = info.srcHeight;\n        } else if (info.optWidth == null) {\n          info.optWidth = srcRatio * info.optHeight;\n        } else if (info.optHeight == null) {\n          info.optHeight = (1 / srcRatio) * info.optWidth;\n        }\n        trgRatio = info.optWidth / info.optHeight;\n        if (file.height < info.optHeight || file.width < info.optWidth) {\n          info.trgHeight = info.srcHeight;\n          info.trgWidth = info.srcWidth;\n        } else {\n          if (srcRatio > trgRatio) {\n            info.srcHeight = file.height;\n            info.srcWidth = info.srcHeight * trgRatio;\n          } else {\n            info.srcWidth = file.width;\n            info.srcHeight = info.srcWidth / trgRatio;\n          }\n        }\n        info.srcX = (file.width - info.srcWidth) / 2;\n        info.srcY = (file.height - info.srcHeight) / 2;\n        return info;\n      },\n\n      /*\n      Those functions register themselves to the events on init and handle all\n      the user interface specific stuff. Overwriting them won't break the upload\n      but can break the way it's displayed.\n      You can overwrite them if you don't like the default behavior. If you just\n      want to add an additional event handler, register it on the dropzone object\n      and don't overwrite those options.\n       */\n      drop: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragstart: noop,\n      dragend: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      paste: noop,\n      reset: function() {\n        return this.element.classList.remove(\"dz-started\");\n      },\n      addedfile: function(file) {\n        var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;\n        if (this.element === this.previewsContainer) {\n          this.element.classList.add(\"dz-started\");\n        }\n        if (this.previewsContainer) {\n          file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n          file.previewTemplate = file.previewElement;\n          this.previewsContainer.appendChild(file.previewElement);\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            node.textContent = file.name;\n          }\n          _ref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\n          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n            node = _ref1[_j];\n            node.innerHTML = this.filesize(file.size);\n          }\n          if (this.options.addRemoveLinks) {\n            file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n            file.previewElement.appendChild(file._removeLink);\n          }\n          removeFileEvent = (function(_this) {\n            return function(e) {\n              e.preventDefault();\n              e.stopPropagation();\n              if (file.status === Dropzone.UPLOADING) {\n                return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {\n                  return _this.removeFile(file);\n                });\n              } else {\n                if (_this.options.dictRemoveFileConfirmation) {\n                  return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {\n                    return _this.removeFile(file);\n                  });\n                } else {\n                  return _this.removeFile(file);\n                }\n              }\n            };\n          })(this);\n          _ref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\n          _results = [];\n          for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n            removeLink = _ref2[_k];\n            _results.push(removeLink.addEventListener(\"click\", removeFileEvent));\n          }\n          return _results;\n        }\n      },\n      removedfile: function(file) {\n        var _ref;\n        if (file.previewElement) {\n          if ((_ref = file.previewElement) != null) {\n            _ref.parentNode.removeChild(file.previewElement);\n          }\n        }\n        return this._updateMaxFilesReachedClass();\n      },\n      thumbnail: function(file, dataUrl) {\n        var thumbnailElement, _i, _len, _ref;\n        if (file.previewElement) {\n          file.previewElement.classList.remove(\"dz-file-preview\");\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            thumbnailElement = _ref[_i];\n            thumbnailElement.alt = file.name;\n            thumbnailElement.src = dataUrl;\n          }\n          return setTimeout(((function(_this) {\n            return function() {\n              return file.previewElement.classList.add(\"dz-image-preview\");\n            };\n          })(this)), 1);\n        }\n      },\n      error: function(file, message) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-error\");\n          if (typeof message !== \"String\" && message.error) {\n            message = message.error;\n          }\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            _results.push(node.textContent = message);\n          }\n          return _results;\n        }\n      },\n      errormultiple: noop,\n      processing: function(file) {\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-processing\");\n          if (file._removeLink) {\n            return file._removeLink.textContent = this.options.dictCancelUpload;\n          }\n        }\n      },\n      processingmultiple: noop,\n      uploadprogress: function(file, progress, bytesSent) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            if (node.nodeName === 'PROGRESS') {\n              _results.push(node.value = progress);\n            } else {\n              _results.push(node.style.width = \"\" + progress + \"%\");\n            }\n          }\n          return _results;\n        }\n      },\n      totaluploadprogress: noop,\n      sending: noop,\n      sendingmultiple: noop,\n      success: function(file) {\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-success\");\n        }\n      },\n      successmultiple: noop,\n      canceled: function(file) {\n        return this.emit(\"error\", file, \"Upload canceled.\");\n      },\n      canceledmultiple: noop,\n      complete: function(file) {\n        if (file._removeLink) {\n          file._removeLink.textContent = this.options.dictRemoveFile;\n        }\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-complete\");\n        }\n      },\n      completemultiple: noop,\n      maxfilesexceeded: noop,\n      maxfilesreached: noop,\n      queuecomplete: noop,\n      previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n  <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n  <div class=\\\"dz-details\\\">\\n    <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n    <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n  </div>\\n  <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n  <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n  <div class=\\\"dz-success-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Check</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n      </g>\\n    </svg>\\n  </div>\\n  <div class=\\\"dz-error-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Error</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n          <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n        </g>\\n      </g>\\n    </svg>\\n  </div>\\n</div>\"\n    };\n\n    extend = function() {\n      var key, object, objects, target, val, _i, _len;\n      target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      for (_i = 0, _len = objects.length; _i < _len; _i++) {\n        object = objects[_i];\n        for (key in object) {\n          val = object[key];\n          target[key] = val;\n        }\n      }\n      return target;\n    };\n\n    function Dropzone(element, options) {\n      var elementOptions, fallback, _ref;\n      this.element = element;\n      this.version = Dropzone.version;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      this.clickableElements = [];\n      this.listeners = [];\n      this.files = [];\n      if (typeof this.element === \"string\") {\n        this.element = document.querySelector(this.element);\n      }\n      if (!(this.element && (this.element.nodeType != null))) {\n        throw new Error(\"Invalid dropzone element.\");\n      }\n      if (this.element.dropzone) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      Dropzone.instances.push(this);\n      this.element.dropzone = this;\n      elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n        return this.options.fallback.call(this);\n      }\n      if (this.options.url == null) {\n        this.options.url = this.element.getAttribute(\"action\");\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n        throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n      }\n      if (this.options.acceptedMimeTypes) {\n        this.options.acceptedFiles = this.options.acceptedMimeTypes;\n        delete this.options.acceptedMimeTypes;\n      }\n      this.options.method = this.options.method.toUpperCase();\n      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n        fallback.parentNode.removeChild(fallback);\n      }\n      if (this.options.previewsContainer !== false) {\n        if (this.options.previewsContainer) {\n          this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n        } else {\n          this.previewsContainer = this.element;\n        }\n      }\n      if (this.options.clickable) {\n        if (this.options.clickable === true) {\n          this.clickableElements = [this.element];\n        } else {\n          this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n        }\n      }\n      this.init();\n    }\n\n    Dropzone.prototype.getAcceptedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getRejectedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (!file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getFilesWithStatus = function(status) {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === status) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getQueuedFiles = function() {\n      return this.getFilesWithStatus(Dropzone.QUEUED);\n    };\n\n    Dropzone.prototype.getUploadingFiles = function() {\n      return this.getFilesWithStatus(Dropzone.UPLOADING);\n    };\n\n    Dropzone.prototype.getActiveFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.init = function() {\n      var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n        this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n      }\n      if (this.clickableElements.length) {\n        setupHiddenFileInput = (function(_this) {\n          return function() {\n            if (_this.hiddenFileInput) {\n              document.body.removeChild(_this.hiddenFileInput);\n            }\n            _this.hiddenFileInput = document.createElement(\"input\");\n            _this.hiddenFileInput.setAttribute(\"type\", \"file\");\n            if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\n              _this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n            }\n            _this.hiddenFileInput.className = \"dz-hidden-input\";\n            if (_this.options.acceptedFiles != null) {\n              _this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\n            }\n            if (_this.options.capture != null) {\n              _this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\n            }\n            _this.hiddenFileInput.style.visibility = \"hidden\";\n            _this.hiddenFileInput.style.position = \"absolute\";\n            _this.hiddenFileInput.style.top = \"0\";\n            _this.hiddenFileInput.style.left = \"0\";\n            _this.hiddenFileInput.style.height = \"0\";\n            _this.hiddenFileInput.style.width = \"0\";\n            document.body.appendChild(_this.hiddenFileInput);\n            return _this.hiddenFileInput.addEventListener(\"change\", function() {\n              var file, files, _i, _len;\n              files = _this.hiddenFileInput.files;\n              if (files.length) {\n                for (_i = 0, _len = files.length; _i < _len; _i++) {\n                  file = files[_i];\n                  _this.addFile(file);\n                }\n              }\n              return setupHiddenFileInput();\n            });\n          };\n        })(this);\n        setupHiddenFileInput();\n      }\n      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n      _ref1 = this.events;\n      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n        eventName = _ref1[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      this.on(\"uploadprogress\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"removedfile\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"canceled\", (function(_this) {\n        return function(file) {\n          return _this.emit(\"complete\", file);\n        };\n      })(this));\n      this.on(\"complete\", (function(_this) {\n        return function(file) {\n          if (_this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\n            return setTimeout((function() {\n              return _this.emit(\"queuecomplete\");\n            }), 0);\n          }\n        };\n      })(this));\n      noPropagation = function(e) {\n        e.stopPropagation();\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      };\n      this.listeners = [\n        {\n          element: this.element,\n          events: {\n            \"dragstart\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragstart\", e);\n              };\n            })(this),\n            \"dragenter\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.emit(\"dragenter\", e);\n              };\n            })(this),\n            \"dragover\": (function(_this) {\n              return function(e) {\n                var efct;\n                try {\n                  efct = e.dataTransfer.effectAllowed;\n                } catch (_error) {}\n                e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n                noPropagation(e);\n                return _this.emit(\"dragover\", e);\n              };\n            })(this),\n            \"dragleave\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragleave\", e);\n              };\n            })(this),\n            \"drop\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.drop(e);\n              };\n            })(this),\n            \"dragend\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragend\", e);\n              };\n            })(this)\n          }\n        }\n      ];\n      this.clickableElements.forEach((function(_this) {\n        return function(clickableElement) {\n          return _this.listeners.push({\n            element: clickableElement,\n            events: {\n              \"click\": function(evt) {\n                if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\n                  return _this.hiddenFileInput.click();\n                }\n              }\n            }\n          });\n        };\n      })(this));\n      this.enable();\n      return this.options.init.call(this);\n    };\n\n    Dropzone.prototype.destroy = function() {\n      var _ref;\n      this.disable();\n      this.removeAllFiles(true);\n      if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {\n        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        this.hiddenFileInput = null;\n      }\n      delete this.element.dropzone;\n      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n    };\n\n    Dropzone.prototype.updateTotalUploadProgress = function() {\n      var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;\n      totalBytesSent = 0;\n      totalBytes = 0;\n      activeFiles = this.getActiveFiles();\n      if (activeFiles.length) {\n        _ref = this.getActiveFiles();\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          totalBytesSent += file.upload.bytesSent;\n          totalBytes += file.upload.total;\n        }\n        totalUploadProgress = 100 * totalBytesSent / totalBytes;\n      } else {\n        totalUploadProgress = 100;\n      }\n      return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n    };\n\n    Dropzone.prototype._getParamName = function(n) {\n      if (typeof this.options.paramName === \"function\") {\n        return this.options.paramName(n);\n      } else {\n        return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n      }\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var existingFallback, fields, fieldsString, form;\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n      fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n      }\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + (this._getParamName(0)) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : void 0) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n      fields = Dropzone.createElement(fieldsString);\n      if (this.element.tagName !== \"FORM\") {\n        form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n        form.appendChild(fields);\n      } else {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n      return form != null ? form : fields;\n    };\n\n    Dropzone.prototype.getExistingFallback = function() {\n      var fallback, getFallback, tagName, _i, _len, _ref;\n      getFallback = function(elements) {\n        var el, _i, _len;\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )fallback($| )/.test(el.className)) {\n            return el;\n          }\n        }\n      };\n      _ref = [\"div\", \"form\"];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        tagName = _ref[_i];\n        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n          return fallback;\n        }\n      }\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.disable = function() {\n      var file, _i, _len, _ref, _results;\n      this.clickableElements.forEach(function(element) {\n        return element.classList.remove(\"dz-clickable\");\n      });\n      this.removeEventListeners();\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        _results.push(this.cancelUpload(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.enable = function() {\n      this.clickableElements.forEach(function(element) {\n        return element.classList.add(\"dz-clickable\");\n      });\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;\n      units = ['TB', 'GB', 'MB', 'KB', 'b'];\n      selectedSize = selectedUnit = null;\n      for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {\n        unit = units[i];\n        cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n      selectedSize = Math.round(10 * selectedSize) / 10;\n      return \"<strong>\" + selectedSize + \"</strong> \" + selectedUnit;\n    };\n\n    Dropzone.prototype._updateMaxFilesReachedClass = function() {\n      if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        if (this.getAcceptedFiles().length === this.options.maxFiles) {\n          this.emit('maxfilesreached', this.files);\n        }\n        return this.element.classList.add(\"dz-max-files-reached\");\n      } else {\n        return this.element.classList.remove(\"dz-max-files-reached\");\n      }\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files, items;\n      if (!e.dataTransfer) {\n        return;\n      }\n      this.emit(\"drop\", e);\n      files = e.dataTransfer.files;\n      if (files.length) {\n        items = e.dataTransfer.items;\n        if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n          this._addFilesFromItems(items);\n        } else {\n          this.handleFiles(files);\n        }\n      }\n    };\n\n    Dropzone.prototype.paste = function(e) {\n      var items, _ref;\n      if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {\n        return;\n      }\n      this.emit(\"paste\", e);\n      items = e.clipboardData.items;\n      if (items.length) {\n        return this._addFilesFromItems(items);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromItems = function(items) {\n      var entry, item, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = items.length; _i < _len; _i++) {\n        item = items[_i];\n        if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n          if (entry.isFile) {\n            _results.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            _results.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            _results.push(void 0);\n          }\n        } else if (item.getAsFile != null) {\n          if ((item.kind == null) || item.kind === \"file\") {\n            _results.push(this.addFile(item.getAsFile()));\n          } else {\n            _results.push(void 0);\n          }\n        } else {\n          _results.push(void 0);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromDirectory = function(directory, path) {\n      var dirReader, entriesReader;\n      dirReader = directory.createReader();\n      entriesReader = (function(_this) {\n        return function(entries) {\n          var entry, _i, _len;\n          for (_i = 0, _len = entries.length; _i < _len; _i++) {\n            entry = entries[_i];\n            if (entry.isFile) {\n              entry.file(function(file) {\n                if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n                  return;\n                }\n                file.fullPath = \"\" + path + \"/\" + file.name;\n                return _this.addFile(file);\n              });\n            } else if (entry.isDirectory) {\n              _this._addFilesFromDirectory(entry, \"\" + path + \"/\" + entry.name);\n            }\n          }\n        };\n      })(this);\n      return dirReader.readEntries(entriesReader, function(error) {\n        return typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\n      });\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n        return done(this.options.dictInvalidFileType);\n      } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n        return this.emit(\"maxfilesexceeded\", file);\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      file.upload = {\n        progress: 0,\n        total: file.size,\n        bytesSent: 0\n      };\n      this.files.push(file);\n      file.status = Dropzone.ADDED;\n      this.emit(\"addedfile\", file);\n      this._enqueueThumbnail(file);\n      return this.accept(file, (function(_this) {\n        return function(error) {\n          if (error) {\n            file.accepted = false;\n            _this._errorProcessing([file], error);\n          } else {\n            file.accepted = true;\n            if (_this.options.autoQueue) {\n              _this.enqueueFile(file);\n            }\n          }\n          return _this._updateMaxFilesReachedClass();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.enqueueFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        this.enqueueFile(file);\n      }\n      return null;\n    };\n\n    Dropzone.prototype.enqueueFile = function(file) {\n      if (file.status === Dropzone.ADDED && file.accepted === true) {\n        file.status = Dropzone.QUEUED;\n        if (this.options.autoProcessQueue) {\n          return setTimeout(((function(_this) {\n            return function() {\n              return _this.processQueue();\n            };\n          })(this)), 0);\n        }\n      } else {\n        throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n      }\n    };\n\n    Dropzone.prototype._thumbnailQueue = [];\n\n    Dropzone.prototype._processingThumbnail = false;\n\n    Dropzone.prototype._enqueueThumbnail = function(file) {\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this._thumbnailQueue.push(file);\n        return setTimeout(((function(_this) {\n          return function() {\n            return _this._processThumbnailQueue();\n          };\n        })(this)), 0);\n      }\n    };\n\n    Dropzone.prototype._processThumbnailQueue = function() {\n      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n        return;\n      }\n      this._processingThumbnail = true;\n      return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {\n        return function() {\n          _this._processingThumbnail = false;\n          return _this._processThumbnailQueue();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        this.cancelUpload(file);\n      }\n      this.files = without(this.files, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {\n      var file, _i, _len, _ref;\n      if (cancelIfNecessary == null) {\n        cancelIfNecessary = false;\n      }\n      _ref = this.files.slice();\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n          this.removeFile(file);\n        }\n      }\n      return null;\n    };\n\n    Dropzone.prototype.createThumbnail = function(file, callback) {\n      var fileReader;\n      fileReader = new FileReader;\n      fileReader.onload = (function(_this) {\n        return function() {\n          if (file.type === \"image/svg+xml\") {\n            _this.emit(\"thumbnail\", file, fileReader.result);\n            if (callback != null) {\n              callback();\n            }\n            return;\n          }\n          return _this.createThumbnailFromUrl(file, fileReader.result, callback);\n        };\n      })(this);\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback) {\n      var img;\n      img = document.createElement(\"img\");\n      img.onload = (function(_this) {\n        return function() {\n          var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;\n          file.width = img.width;\n          file.height = img.height;\n          resizeInfo = _this.options.resize.call(_this, file);\n          if (resizeInfo.trgWidth == null) {\n            resizeInfo.trgWidth = resizeInfo.optWidth;\n          }\n          if (resizeInfo.trgHeight == null) {\n            resizeInfo.trgHeight = resizeInfo.optHeight;\n          }\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          canvas.width = resizeInfo.trgWidth;\n          canvas.height = resizeInfo.trgHeight;\n          drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          _this.emit(\"thumbnail\", file, thumbnail);\n          if (callback != null) {\n            return callback();\n          }\n        };\n      })(this);\n      if (callback != null) {\n        img.onerror = callback;\n      }\n      return img.src = imageUrl;\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength, queuedFiles;\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.getUploadingFiles().length;\n      i = processingLength;\n      if (processingLength >= parallelUploads) {\n        return;\n      }\n      queuedFiles = this.getQueuedFiles();\n      if (!(queuedFiles.length > 0)) {\n        return;\n      }\n      if (this.options.uploadMultiple) {\n        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n      } else {\n        while (i < parallelUploads) {\n          if (!queuedFiles.length) {\n            return;\n          }\n          this.processFile(queuedFiles.shift());\n          i++;\n        }\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      return this.processFiles([file]);\n    };\n\n    Dropzone.prototype.processFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.processing = true;\n        file.status = Dropzone.UPLOADING;\n        this.emit(\"processing\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"processingmultiple\", files);\n      }\n      return this.uploadFiles(files);\n    };\n\n    Dropzone.prototype._getFilesWithXhr = function(xhr) {\n      var file, files;\n      return files = (function() {\n        var _i, _len, _ref, _results;\n        _ref = this.files;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          if (file.xhr === xhr) {\n            _results.push(file);\n          }\n        }\n        return _results;\n      }).call(this);\n    };\n\n    Dropzone.prototype.cancelUpload = function(file) {\n      var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;\n      if (file.status === Dropzone.UPLOADING) {\n        groupedFiles = this._getFilesWithXhr(file.xhr);\n        for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {\n          groupedFile = groupedFiles[_i];\n          groupedFile.status = Dropzone.CANCELED;\n        }\n        file.xhr.abort();\n        for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {\n          groupedFile = groupedFiles[_j];\n          this.emit(\"canceled\", groupedFile);\n        }\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", groupedFiles);\n        }\n      } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {\n        file.status = Dropzone.CANCELED;\n        this.emit(\"canceled\", file);\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", [file]);\n        }\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    resolveOption = function() {\n      var args, option;\n      option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      if (typeof option === 'function') {\n        return option.apply(this, args);\n      }\n      return option;\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      return this.uploadFiles([file]);\n    };\n\n    Dropzone.prototype.uploadFiles = function(files) {\n      var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n      xhr = new XMLHttpRequest();\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.xhr = xhr;\n      }\n      method = resolveOption(this.options.method, files);\n      url = resolveOption(this.options.url, files);\n      xhr.open(method, url, true);\n      xhr.withCredentials = !!this.options.withCredentials;\n      response = null;\n      handleError = (function(_this) {\n        return function() {\n          var _j, _len1, _results;\n          _results = [];\n          for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n            file = files[_j];\n            _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\n          }\n          return _results;\n        };\n      })(this);\n      updateProgress = (function(_this) {\n        return function(e) {\n          var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;\n          if (e != null) {\n            progress = 100 * e.loaded / e.total;\n            for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n              file = files[_j];\n              file.upload = {\n                progress: progress,\n                total: e.total,\n                bytesSent: e.loaded\n              };\n            }\n          } else {\n            allFilesFinished = true;\n            progress = 100;\n            for (_k = 0, _len2 = files.length; _k < _len2; _k++) {\n              file = files[_k];\n              if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\n                allFilesFinished = false;\n              }\n              file.upload.progress = progress;\n              file.upload.bytesSent = file.upload.total;\n            }\n            if (allFilesFinished) {\n              return;\n            }\n          }\n          _results = [];\n          for (_l = 0, _len3 = files.length; _l < _len3; _l++) {\n            file = files[_l];\n            _results.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\n          }\n          return _results;\n        };\n      })(this);\n      xhr.onload = (function(_this) {\n        return function(e) {\n          var _ref;\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          if (xhr.readyState !== 4) {\n            return;\n          }\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            try {\n              response = JSON.parse(response);\n            } catch (_error) {\n              e = _error;\n              response = \"Invalid JSON response from server.\";\n            }\n          }\n          updateProgress();\n          if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n            return handleError();\n          } else {\n            return _this._finished(files, response, e);\n          }\n        };\n      })(this);\n      xhr.onerror = (function(_this) {\n        return function() {\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          return handleError();\n        };\n      })(this);\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = updateProgress;\n      headers = {\n        \"Accept\": \"application/json\",\n        \"Cache-Control\": \"no-cache\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      };\n      if (this.options.headers) {\n        extend(headers, this.options.headers);\n      }\n      for (headerName in headers) {\n        headerValue = headers[headerName];\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n        file = files[_j];\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n      if (this.element.tagName === \"FORM\") {\n        _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n          input = _ref2[_k];\n          inputName = input.getAttribute(\"name\");\n          inputType = input.getAttribute(\"type\");\n          if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n            _ref3 = input.options;\n            for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n              option = _ref3[_l];\n              if (option.selected) {\n                formData.append(inputName, option.value);\n              }\n            }\n          } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== \"checkbox\" && _ref4 !== \"radio\") || input.checked) {\n            formData.append(inputName, input.value);\n          }\n        }\n      }\n      for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {\n        formData.append(this._getParamName(i), files[i], files[i].name);\n      }\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype._finished = function(files, responseText, e) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.SUCCESS;\n        this.emit(\"success\", file, responseText, e);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"successmultiple\", files, responseText, e);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    Dropzone.prototype._errorProcessing = function(files, message, xhr) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.ERROR;\n        this.emit(\"error\", file, message, xhr);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"errormultiple\", files, message, xhr);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    return Dropzone;\n\n  })(Emitter);\n\n  Dropzone.version = \"4.0.1\";\n\n  Dropzone.options = {};\n\n  Dropzone.optionsForElement = function(element) {\n    if (element.getAttribute(\"id\")) {\n      return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n    } else {\n      return void 0;\n    }\n  };\n\n  Dropzone.instances = [];\n\n  Dropzone.forElement = function(element) {\n    if (typeof element === \"string\") {\n      element = document.querySelector(element);\n    }\n    if ((element != null ? element.dropzone : void 0) == null) {\n      throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n    }\n    return element.dropzone;\n  };\n\n  Dropzone.autoDiscover = true;\n\n  Dropzone.discover = function() {\n    var checkElements, dropzone, dropzones, _i, _len, _results;\n    if (document.querySelectorAll) {\n      dropzones = document.querySelectorAll(\".dropzone\");\n    } else {\n      dropzones = [];\n      checkElements = function(elements) {\n        var el, _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            _results.push(dropzones.push(el));\n          } else {\n            _results.push(void 0);\n          }\n        }\n        return _results;\n      };\n      checkElements(document.getElementsByTagName(\"div\"));\n      checkElements(document.getElementsByTagName(\"form\"));\n    }\n    _results = [];\n    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n      dropzone = dropzones[_i];\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        _results.push(new Dropzone(dropzone));\n      } else {\n        _results.push(void 0);\n      }\n    }\n    return _results;\n  };\n\n  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n  Dropzone.isBrowserSupported = function() {\n    var capableBrowser, regex, _i, _len, _ref;\n    capableBrowser = true;\n    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n      if (!(\"classList\" in document.createElement(\"a\"))) {\n        capableBrowser = false;\n      } else {\n        _ref = Dropzone.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      }\n    } else {\n      capableBrowser = false;\n    }\n    return capableBrowser;\n  };\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match.charAt(1).toUpperCase();\n    });\n  };\n\n  Dropzone.createElement = function(string) {\n    var div;\n    div = document.createElement(\"div\");\n    div.innerHTML = string;\n    return div.childNodes[0];\n  };\n\n  Dropzone.elementInside = function(element, container) {\n    if (element === container) {\n      return true;\n    }\n    while (element = element.parentNode) {\n      if (element === container) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  Dropzone.getElement = function(el, name) {\n    var element;\n    if (typeof el === \"string\") {\n      element = document.querySelector(el);\n    } else if (el.nodeType != null) {\n      element = el;\n    }\n    if (element == null) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n    }\n    return element;\n  };\n\n  Dropzone.getElements = function(els, name) {\n    var e, el, elements, _i, _j, _len, _len1, _ref;\n    if (els instanceof Array) {\n      elements = [];\n      try {\n        for (_i = 0, _len = els.length; _i < _len; _i++) {\n          el = els[_i];\n          elements.push(this.getElement(el, name));\n        }\n      } catch (_error) {\n        e = _error;\n        elements = null;\n      }\n    } else if (typeof els === \"string\") {\n      elements = [];\n      _ref = document.querySelectorAll(els);\n      for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n        el = _ref[_j];\n        elements.push(el);\n      }\n    } else if (els.nodeType != null) {\n      elements = [els];\n    }\n    if (!((elements != null) && elements.length)) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n    }\n    return elements;\n  };\n\n  Dropzone.confirm = function(question, accepted, rejected) {\n    if (window.confirm(question)) {\n      return accepted();\n    } else if (rejected != null) {\n      return rejected();\n    }\n  };\n\n  Dropzone.isValidFile = function(file, acceptedFiles) {\n    var baseMimeType, mimeType, validType, _i, _len;\n    if (!acceptedFiles) {\n      return true;\n    }\n    acceptedFiles = acceptedFiles.split(\",\");\n    mimeType = file.type;\n    baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n    for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {\n      validType = acceptedFiles[_i];\n      validType = validType.trim();\n      if (validType.charAt(0) === \".\") {\n        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n          return true;\n        }\n      } else if (/\\/\\*$/.test(validType)) {\n        if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n          return true;\n        }\n      } else {\n        if (mimeType === validType) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n\n  if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n    jQuery.fn.dropzone = function(options) {\n      return this.each(function() {\n        return new Dropzone(this, options);\n      });\n    };\n  }\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n  Dropzone.ADDED = \"added\";\n\n  Dropzone.QUEUED = \"queued\";\n\n  Dropzone.ACCEPTED = Dropzone.QUEUED;\n\n  Dropzone.UPLOADING = \"uploading\";\n\n  Dropzone.PROCESSING = Dropzone.UPLOADING;\n\n  Dropzone.CANCELED = \"canceled\";\n\n  Dropzone.ERROR = \"error\";\n\n  Dropzone.SUCCESS = \"success\";\n\n\n  /*\n\n  Bugfix for iOS 6 and 7\n  Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n  based on the work of https://github.com/stomita/ios-imagefile-megapixel\n   */\n\n  detectVerticalSquash = function(img) {\n    var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\n    iw = img.naturalWidth;\n    ih = img.naturalHeight;\n    canvas = document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = ih;\n    ctx = canvas.getContext(\"2d\");\n    ctx.drawImage(img, 0, 0);\n    data = ctx.getImageData(0, 0, 1, ih).data;\n    sy = 0;\n    ey = ih;\n    py = ih;\n    while (py > sy) {\n      alpha = data[(py - 1) * 4 + 3];\n      if (alpha === 0) {\n        ey = py;\n      } else {\n        sy = py;\n      }\n      py = (ey + sy) >> 1;\n    }\n    ratio = py / ih;\n    if (ratio === 0) {\n      return 1;\n    } else {\n      return ratio;\n    }\n  };\n\n  drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n    var vertSquashRatio;\n    vertSquashRatio = detectVerticalSquash(img);\n    return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n  };\n\n\n  /*\n   * contentloaded.js\n   *\n   * Author: Diego Perini (diego.perini at gmail.com)\n   * Summary: cross-browser wrapper for DOMContentLoaded\n   * Updated: 20101020\n   * License: MIT\n   * Version: 1.2\n   *\n   * URL:\n   * http://javascript.nwbox.com/ContentLoaded/\n   * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n   */\n\n  contentLoaded = function(win, fn) {\n    var add, doc, done, init, poll, pre, rem, root, top;\n    done = false;\n    top = true;\n    doc = win.document;\n    root = doc.documentElement;\n    add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n    rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n    pre = (doc.addEventListener ? \"\" : \"on\");\n    init = function(e) {\n      if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n        return;\n      }\n      (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n      if (!done && (done = true)) {\n        return fn.call(win, e.type || e);\n      }\n    };\n    poll = function() {\n      var e;\n      try {\n        root.doScroll(\"left\");\n      } catch (_error) {\n        e = _error;\n        setTimeout(poll, 50);\n        return;\n      }\n      return init(\"poll\");\n    };\n    if (doc.readyState !== \"complete\") {\n      if (doc.createEventObject && root.doScroll) {\n        try {\n          top = !win.frameElement;\n        } catch (_error) {}\n        if (top) {\n          poll();\n        }\n      }\n      doc[add](pre + \"DOMContentLoaded\", init, false);\n      doc[add](pre + \"readystatechange\", init, false);\n      return win[add](pre + \"load\", init, false);\n    }\n  };\n\n  Dropzone._autoDiscoverFunction = function() {\n    if (Dropzone.autoDiscover) {\n      return Dropzone.discover();\n    }\n  };\n\n  contentLoaded(window, Dropzone._autoDiscoverFunction);\n\n}).call(this);"
  },
  {
    "path": "src/Assets/src/js/vendor/typeahead.bundle.js",
    "content": "/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"bloodhound\", [ \"jquery\" ], function(a0) {\n            return root[\"Bloodhound\"] = factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        root[\"Bloodhound\"] = factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var VERSION = \"0.11.1\";\n    var tokenizers = function() {\n        \"use strict\";\n        return {\n            nonword: nonword,\n            whitespace: whitespace,\n            obj: {\n                nonword: getObjTokenizer(nonword),\n                whitespace: getObjTokenizer(whitespace)\n            }\n        };\n        function whitespace(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\s+/) : [];\n        }\n        function nonword(str) {\n            str = _.toStr(str);\n            return str ? str.split(/\\W+/) : [];\n        }\n        function getObjTokenizer(tokenizer) {\n            return function setKey(keys) {\n                keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n                return function tokenize(o) {\n                    var tokens = [];\n                    _.each(keys, function(k) {\n                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n                    });\n                    return tokens;\n                };\n            };\n        }\n    }();\n    var LruCache = function() {\n        \"use strict\";\n        function LruCache(maxSize) {\n            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n            this.reset();\n            if (this.maxSize <= 0) {\n                this.set = this.get = $.noop;\n            }\n        }\n        _.mixin(LruCache.prototype, {\n            set: function set(key, val) {\n                var tailItem = this.list.tail, node;\n                if (this.size >= this.maxSize) {\n                    this.list.remove(tailItem);\n                    delete this.hash[tailItem.key];\n                    this.size--;\n                }\n                if (node = this.hash[key]) {\n                    node.val = val;\n                    this.list.moveToFront(node);\n                } else {\n                    node = new Node(key, val);\n                    this.list.add(node);\n                    this.hash[key] = node;\n                    this.size++;\n                }\n            },\n            get: function get(key) {\n                var node = this.hash[key];\n                if (node) {\n                    this.list.moveToFront(node);\n                    return node.val;\n                }\n            },\n            reset: function reset() {\n                this.size = 0;\n                this.hash = {};\n                this.list = new List();\n            }\n        });\n        function List() {\n            this.head = this.tail = null;\n        }\n        _.mixin(List.prototype, {\n            add: function add(node) {\n                if (this.head) {\n                    node.next = this.head;\n                    this.head.prev = node;\n                }\n                this.head = node;\n                this.tail = this.tail || node;\n            },\n            remove: function remove(node) {\n                node.prev ? node.prev.next = node.next : this.head = node.next;\n                node.next ? node.next.prev = node.prev : this.tail = node.prev;\n            },\n            moveToFront: function(node) {\n                this.remove(node);\n                this.add(node);\n            }\n        });\n        function Node(key, val) {\n            this.key = key;\n            this.val = val;\n            this.prev = this.next = null;\n        }\n        return LruCache;\n    }();\n    var PersistentStorage = function() {\n        \"use strict\";\n        var LOCAL_STORAGE;\n        try {\n            LOCAL_STORAGE = window.localStorage;\n            LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n            LOCAL_STORAGE.removeItem(\"~~~\");\n        } catch (err) {\n            LOCAL_STORAGE = null;\n        }\n        function PersistentStorage(namespace, override) {\n            this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n            this.ttlKey = \"__ttl__\";\n            this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n            this.ls = override || LOCAL_STORAGE;\n            !this.ls && this._noop();\n        }\n        _.mixin(PersistentStorage.prototype, {\n            _prefix: function(key) {\n                return this.prefix + key;\n            },\n            _ttlKey: function(key) {\n                return this._prefix(key) + this.ttlKey;\n            },\n            _noop: function() {\n                this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n            },\n            _safeSet: function(key, val) {\n                try {\n                    this.ls.setItem(key, val);\n                } catch (err) {\n                    if (err.name === \"QuotaExceededError\") {\n                        this.clear();\n                        this._noop();\n                    }\n                }\n            },\n            get: function(key) {\n                if (this.isExpired(key)) {\n                    this.remove(key);\n                }\n                return decode(this.ls.getItem(this._prefix(key)));\n            },\n            set: function(key, val, ttl) {\n                if (_.isNumber(ttl)) {\n                    this._safeSet(this._ttlKey(key), encode(now() + ttl));\n                } else {\n                    this.ls.removeItem(this._ttlKey(key));\n                }\n                return this._safeSet(this._prefix(key), encode(val));\n            },\n            remove: function(key) {\n                this.ls.removeItem(this._ttlKey(key));\n                this.ls.removeItem(this._prefix(key));\n                return this;\n            },\n            clear: function() {\n                var i, keys = gatherMatchingKeys(this.keyMatcher);\n                for (i = keys.length; i--; ) {\n                    this.remove(keys[i]);\n                }\n                return this;\n            },\n            isExpired: function(key) {\n                var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n                return _.isNumber(ttl) && now() > ttl ? true : false;\n            }\n        });\n        return PersistentStorage;\n        function now() {\n            return new Date().getTime();\n        }\n        function encode(val) {\n            return JSON.stringify(_.isUndefined(val) ? null : val);\n        }\n        function decode(val) {\n            return $.parseJSON(val);\n        }\n        function gatherMatchingKeys(keyMatcher) {\n            var i, key, keys = [], len = LOCAL_STORAGE.length;\n            for (i = 0; i < len; i++) {\n                if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n                    keys.push(key.replace(keyMatcher, \"\"));\n                }\n            }\n            return keys;\n        }\n    }();\n    var Transport = function() {\n        \"use strict\";\n        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n        function Transport(o) {\n            o = o || {};\n            this.cancelled = false;\n            this.lastReq = null;\n            this._send = o.transport;\n            this._get = o.limiter ? o.limiter(this._get) : this._get;\n            this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n        }\n        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n            maxPendingRequests = num;\n        };\n        Transport.resetCache = function resetCache() {\n            sharedCache.reset();\n        };\n        _.mixin(Transport.prototype, {\n            _fingerprint: function fingerprint(o) {\n                o = o || {};\n                return o.url + o.type + $.param(o.data || {});\n            },\n            _get: function(o, cb) {\n                var that = this, fingerprint, jqXhr;\n                fingerprint = this._fingerprint(o);\n                if (this.cancelled || fingerprint !== this.lastReq) {\n                    return;\n                }\n                if (jqXhr = pendingRequests[fingerprint]) {\n                    jqXhr.done(done).fail(fail);\n                } else if (pendingRequestsCount < maxPendingRequests) {\n                    pendingRequestsCount++;\n                    pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n                } else {\n                    this.onDeckRequestArgs = [].slice.call(arguments, 0);\n                }\n                function done(resp) {\n                    cb(null, resp);\n                    that._cache.set(fingerprint, resp);\n                }\n                function fail() {\n                    cb(true);\n                }\n                function always() {\n                    pendingRequestsCount--;\n                    delete pendingRequests[fingerprint];\n                    if (that.onDeckRequestArgs) {\n                        that._get.apply(that, that.onDeckRequestArgs);\n                        that.onDeckRequestArgs = null;\n                    }\n                }\n            },\n            get: function(o, cb) {\n                var resp, fingerprint;\n                cb = cb || $.noop;\n                o = _.isString(o) ? {\n                    url: o\n                } : o || {};\n                fingerprint = this._fingerprint(o);\n                this.cancelled = false;\n                this.lastReq = fingerprint;\n                if (resp = this._cache.get(fingerprint)) {\n                    cb(null, resp);\n                } else {\n                    this._get(o, cb);\n                }\n            },\n            cancel: function() {\n                this.cancelled = true;\n            }\n        });\n        return Transport;\n    }();\n    var SearchIndex = window.SearchIndex = function() {\n        \"use strict\";\n        var CHILDREN = \"c\", IDS = \"i\";\n        function SearchIndex(o) {\n            o = o || {};\n            if (!o.datumTokenizer || !o.queryTokenizer) {\n                $.error(\"datumTokenizer and queryTokenizer are both required\");\n            }\n            this.identify = o.identify || _.stringify;\n            this.datumTokenizer = o.datumTokenizer;\n            this.queryTokenizer = o.queryTokenizer;\n            this.reset();\n        }\n        _.mixin(SearchIndex.prototype, {\n            bootstrap: function bootstrap(o) {\n                this.datums = o.datums;\n                this.trie = o.trie;\n            },\n            add: function(data) {\n                var that = this;\n                data = _.isArray(data) ? data : [ data ];\n                _.each(data, function(datum) {\n                    var id, tokens;\n                    that.datums[id = that.identify(datum)] = datum;\n                    tokens = normalizeTokens(that.datumTokenizer(datum));\n                    _.each(tokens, function(token) {\n                        var node, chars, ch;\n                        node = that.trie;\n                        chars = token.split(\"\");\n                        while (ch = chars.shift()) {\n                            node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n                            node[IDS].push(id);\n                        }\n                    });\n                });\n            },\n            get: function get(ids) {\n                var that = this;\n                return _.map(ids, function(id) {\n                    return that.datums[id];\n                });\n            },\n            search: function search(query) {\n                var that = this, tokens, matches;\n                tokens = normalizeTokens(this.queryTokenizer(query));\n                _.each(tokens, function(token) {\n                    var node, chars, ch, ids;\n                    if (matches && matches.length === 0) {\n                        return false;\n                    }\n                    node = that.trie;\n                    chars = token.split(\"\");\n                    while (node && (ch = chars.shift())) {\n                        node = node[CHILDREN][ch];\n                    }\n                    if (node && chars.length === 0) {\n                        ids = node[IDS].slice(0);\n                        matches = matches ? getIntersection(matches, ids) : ids;\n                    } else {\n                        matches = [];\n                        return false;\n                    }\n                });\n                return matches ? _.map(unique(matches), function(id) {\n                    return that.datums[id];\n                }) : [];\n            },\n            all: function all() {\n                var values = [];\n                for (var key in this.datums) {\n                    values.push(this.datums[key]);\n                }\n                return values;\n            },\n            reset: function reset() {\n                this.datums = {};\n                this.trie = newNode();\n            },\n            serialize: function serialize() {\n                return {\n                    datums: this.datums,\n                    trie: this.trie\n                };\n            }\n        });\n        return SearchIndex;\n        function normalizeTokens(tokens) {\n            tokens = _.filter(tokens, function(token) {\n                return !!token;\n            });\n            tokens = _.map(tokens, function(token) {\n                return token.toLowerCase();\n            });\n            return tokens;\n        }\n        function newNode() {\n            var node = {};\n            node[IDS] = [];\n            node[CHILDREN] = {};\n            return node;\n        }\n        function unique(array) {\n            var seen = {}, uniques = [];\n            for (var i = 0, len = array.length; i < len; i++) {\n                if (!seen[array[i]]) {\n                    seen[array[i]] = true;\n                    uniques.push(array[i]);\n                }\n            }\n            return uniques;\n        }\n        function getIntersection(arrayA, arrayB) {\n            var ai = 0, bi = 0, intersection = [];\n            arrayA = arrayA.sort();\n            arrayB = arrayB.sort();\n            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n            while (ai < lenArrayA && bi < lenArrayB) {\n                if (arrayA[ai] < arrayB[bi]) {\n                    ai++;\n                } else if (arrayA[ai] > arrayB[bi]) {\n                    bi++;\n                } else {\n                    intersection.push(arrayA[ai]);\n                    ai++;\n                    bi++;\n                }\n            }\n            return intersection;\n        }\n    }();\n    var Prefetch = function() {\n        \"use strict\";\n        var keys;\n        keys = {\n            data: \"data\",\n            protocol: \"protocol\",\n            thumbprint: \"thumbprint\"\n        };\n        function Prefetch(o) {\n            this.url = o.url;\n            this.ttl = o.ttl;\n            this.cache = o.cache;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = o.transport;\n            this.thumbprint = o.thumbprint;\n            this.storage = new PersistentStorage(o.cacheKey);\n        }\n        _.mixin(Prefetch.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            store: function store(data) {\n                if (!this.cache) {\n                    return;\n                }\n                this.storage.set(keys.data, data, this.ttl);\n                this.storage.set(keys.protocol, location.protocol, this.ttl);\n                this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n            },\n            fromCache: function fromCache() {\n                var stored = {}, isExpired;\n                if (!this.cache) {\n                    return null;\n                }\n                stored.data = this.storage.get(keys.data);\n                stored.protocol = this.storage.get(keys.protocol);\n                stored.thumbprint = this.storage.get(keys.thumbprint);\n                isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n                return stored.data && !isExpired ? stored.data : null;\n            },\n            fromNetwork: function(cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                settings = this.prepare(this._settings());\n                this.transport(settings).fail(onError).done(onResponse);\n                function onError() {\n                    cb(true);\n                }\n                function onResponse(resp) {\n                    cb(null, that.transform(resp));\n                }\n            },\n            clear: function clear() {\n                this.storage.clear();\n                return this;\n            }\n        });\n        return Prefetch;\n    }();\n    var Remote = function() {\n        \"use strict\";\n        function Remote(o) {\n            this.url = o.url;\n            this.prepare = o.prepare;\n            this.transform = o.transform;\n            this.transport = new Transport({\n                cache: o.cache,\n                limiter: o.limiter,\n                transport: o.transport\n            });\n        }\n        _.mixin(Remote.prototype, {\n            _settings: function settings() {\n                return {\n                    url: this.url,\n                    type: \"GET\",\n                    dataType: \"json\"\n                };\n            },\n            get: function get(query, cb) {\n                var that = this, settings;\n                if (!cb) {\n                    return;\n                }\n                query = query || \"\";\n                settings = this.prepare(query, this._settings());\n                return this.transport.get(settings, onResponse);\n                function onResponse(err, resp) {\n                    err ? cb([]) : cb(that.transform(resp));\n                }\n            },\n            cancelLastRequest: function cancelLastRequest() {\n                this.transport.cancel();\n            }\n        });\n        return Remote;\n    }();\n    var oParser = function() {\n        \"use strict\";\n        return function parse(o) {\n            var defaults, sorter;\n            defaults = {\n                initialize: true,\n                identify: _.stringify,\n                datumTokenizer: null,\n                queryTokenizer: null,\n                sufficient: 5,\n                sorter: null,\n                local: [],\n                prefetch: null,\n                remote: null\n            };\n            o = _.mixin(defaults, o || {});\n            !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n            !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n            sorter = o.sorter;\n            o.sorter = sorter ? function(x) {\n                return x.sort(sorter);\n            } : _.identity;\n            o.local = _.isFunction(o.local) ? o.local() : o.local;\n            o.prefetch = parsePrefetch(o.prefetch);\n            o.remote = parseRemote(o.remote);\n            return o;\n        };\n        function parsePrefetch(o) {\n            var defaults;\n            if (!o) {\n                return null;\n            }\n            defaults = {\n                url: null,\n                ttl: 24 * 60 * 60 * 1e3,\n                cache: true,\n                cacheKey: null,\n                thumbprint: \"\",\n                prepare: _.identity,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"prefetch requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.cacheKey = o.cacheKey || o.url;\n            o.thumbprint = VERSION + o.thumbprint;\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            return o;\n        }\n        function parseRemote(o) {\n            var defaults;\n            if (!o) {\n                return;\n            }\n            defaults = {\n                url: null,\n                cache: true,\n                prepare: null,\n                replace: null,\n                wildcard: null,\n                limiter: null,\n                rateLimitBy: \"debounce\",\n                rateLimitWait: 300,\n                transform: _.identity,\n                transport: null\n            };\n            o = _.isString(o) ? {\n                url: o\n            } : o;\n            o = _.mixin(defaults, o);\n            !o.url && $.error(\"remote requires url to be set\");\n            o.transform = o.filter || o.transform;\n            o.prepare = toRemotePrepare(o);\n            o.limiter = toLimiter(o);\n            o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n            delete o.replace;\n            delete o.wildcard;\n            delete o.rateLimitBy;\n            delete o.rateLimitWait;\n            return o;\n        }\n        function toRemotePrepare(o) {\n            var prepare, replace, wildcard;\n            prepare = o.prepare;\n            replace = o.replace;\n            wildcard = o.wildcard;\n            if (prepare) {\n                return prepare;\n            }\n            if (replace) {\n                prepare = prepareByReplace;\n            } else if (o.wildcard) {\n                prepare = prepareByWildcard;\n            } else {\n                prepare = idenityPrepare;\n            }\n            return prepare;\n            function prepareByReplace(query, settings) {\n                settings.url = replace(settings.url, query);\n                return settings;\n            }\n            function prepareByWildcard(query, settings) {\n                settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n                return settings;\n            }\n            function idenityPrepare(query, settings) {\n                return settings;\n            }\n        }\n        function toLimiter(o) {\n            var limiter, method, wait;\n            limiter = o.limiter;\n            method = o.rateLimitBy;\n            wait = o.rateLimitWait;\n            if (!limiter) {\n                limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n            }\n            return limiter;\n            function debounce(wait) {\n                return function debounce(fn) {\n                    return _.debounce(fn, wait);\n                };\n            }\n            function throttle(wait) {\n                return function throttle(fn) {\n                    return _.throttle(fn, wait);\n                };\n            }\n        }\n        function callbackToDeferred(fn) {\n            return function wrapper(o) {\n                var deferred = $.Deferred();\n                fn(o, onSuccess, onError);\n                return deferred;\n                function onSuccess(resp) {\n                    _.defer(function() {\n                        deferred.resolve(resp);\n                    });\n                }\n                function onError(err) {\n                    _.defer(function() {\n                        deferred.reject(err);\n                    });\n                }\n            };\n        }\n    }();\n    var Bloodhound = function() {\n        \"use strict\";\n        var old;\n        old = window && window.Bloodhound;\n        function Bloodhound(o) {\n            o = oParser(o);\n            this.sorter = o.sorter;\n            this.identify = o.identify;\n            this.sufficient = o.sufficient;\n            this.local = o.local;\n            this.remote = o.remote ? new Remote(o.remote) : null;\n            this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n            this.index = new SearchIndex({\n                identify: this.identify,\n                datumTokenizer: o.datumTokenizer,\n                queryTokenizer: o.queryTokenizer\n            });\n            o.initialize !== false && this.initialize();\n        }\n        Bloodhound.noConflict = function noConflict() {\n            window && (window.Bloodhound = old);\n            return Bloodhound;\n        };\n        Bloodhound.tokenizers = tokenizers;\n        _.mixin(Bloodhound.prototype, {\n            __ttAdapter: function ttAdapter() {\n                var that = this;\n                return this.remote ? withAsync : withoutAsync;\n                function withAsync(query, sync, async) {\n                    return that.search(query, sync, async);\n                }\n                function withoutAsync(query, sync) {\n                    return that.search(query, sync);\n                }\n            },\n            _loadPrefetch: function loadPrefetch() {\n                var that = this, deferred, serialized;\n                deferred = $.Deferred();\n                if (!this.prefetch) {\n                    deferred.resolve();\n                } else if (serialized = this.prefetch.fromCache()) {\n                    this.index.bootstrap(serialized);\n                    deferred.resolve();\n                } else {\n                    this.prefetch.fromNetwork(done);\n                }\n                return deferred.promise();\n                function done(err, data) {\n                    if (err) {\n                        return deferred.reject();\n                    }\n                    that.add(data);\n                    that.prefetch.store(that.index.serialize());\n                    deferred.resolve();\n                }\n            },\n            _initialize: function initialize() {\n                var that = this, deferred;\n                this.clear();\n                (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n                return this.initPromise;\n                function addLocalToIndex() {\n                    that.add(that.local);\n                }\n            },\n            initialize: function initialize(force) {\n                return !this.initPromise || force ? this._initialize() : this.initPromise;\n            },\n            add: function add(data) {\n                this.index.add(data);\n                return this;\n            },\n            get: function get(ids) {\n                ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n                return this.index.get(ids);\n            },\n            search: function search(query, sync, async) {\n                var that = this, local;\n                local = this.sorter(this.index.search(query));\n                sync(this.remote ? local.slice() : local);\n                if (this.remote && local.length < this.sufficient) {\n                    this.remote.get(query, processRemote);\n                } else if (this.remote) {\n                    this.remote.cancelLastRequest();\n                }\n                return this;\n                function processRemote(remote) {\n                    var nonDuplicates = [];\n                    _.each(remote, function(r) {\n                        !_.some(local, function(l) {\n                            return that.identify(r) === that.identify(l);\n                        }) && nonDuplicates.push(r);\n                    });\n                    async && async(nonDuplicates);\n                }\n            },\n            all: function all() {\n                return this.index.all();\n            },\n            clear: function clear() {\n                this.index.reset();\n                return this;\n            },\n            clearPrefetchCache: function clearPrefetchCache() {\n                this.prefetch && this.prefetch.clear();\n                return this;\n            },\n            clearRemoteCache: function clearRemoteCache() {\n                Transport.resetCache();\n                return this;\n            },\n            ttAdapter: function ttAdapter() {\n                return this.__ttAdapter();\n            }\n        });\n        return Bloodhound;\n    }();\n    return Bloodhound;\n});\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof exports === \"object\") {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(jQuery);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e;\n                $e = $.Event(namespace + type);\n                (args = args || []).unshift($e);\n                this.$el.trigger.apply(this.$el, args);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function getRegex(patterns, caseSensitive, wordsOnly) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = o.name || nameGenerator();\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", this.name, suggestions, false);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", this.name, suggestions, true);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        rendered += suggestions.length;\n                        that._append(query, suggestions.slice(0, that.limit - rendered));\n                        that.async && that.trigger(\"asyncReceived\", query);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion || suggestionTemplate\n            };\n            function suggestionTemplate(context) {\n                return $(\"<div>\").text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, isDatasetEmpty);\n                function isDatasetEmpty(dataset) {\n                    return dataset.isEmpty();\n                }\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n                this._updateHint();\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if ($selectable = this.menu.getTopSelectable()) {\n                    this.autocomplete($selectable) && $e.preventDefault();\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, payload, cancelMove;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                payload = data ? data.obj : null;\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        this.input.setInputValue(data.val);\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", payload);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(newVal);\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\n                autocomplete: \"off\",\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                autocomplete: \"off\",\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});"
  },
  {
    "path": "src/Assets/src/sass/_base.scss",
    "content": "html {\n    position: relative;\n    min-height: 100%;\n}\n\nbody {\n    /* Margin bottom by footer height */\n    margin-bottom: 60px;\n}\n\n.form-small {\n    width: 100%;\n    max-width: 330px;\n    padding: 15px;\n    margin: 48px auto 0 auto;\n}\n\n.page-title {\n    font-size: 1.4rem;\n}\n\n.footer {\n    position: fixed;\n    bottom: 0;\n    width: 100%;\n    /* Set the fixed height of the footer here */\n    height: 60px;\n    line-height: 60px; /* Vertically center the text there */\n    background-color: #f5f5f5;\n    z-index: 9999;\n}\n\n.navbar {\n    line-height: 1;\n}\n\n.navbar-brand {\n    padding-top: 0px;\n    padding-bottom: 0px;\n    background-color: rgba(0, 0, 0, .25);\n    box-shadow: inset 0 0 0 rgba(0, 0, 0, .25);\n    height: 60px;\n    line-height: 60px;\n    width: 320px;\n}\n\n.border-top {\n    border-top: 1px solid #e5e5e5;\n}\n\n.border-bottom {\n    border-bottom: 1px solid #e5e5e5;\n}\n\n.alert {\n    width: 330px;\n    position: absolute;\n    top: 72px;\n    right: 24px;\n    z-index: 1000;\n}\n\n.main {\n    margin-bottom: 40px;\n}\n\n.table-striped td {\n    line-height: 1.9;\n}\n\n.table-striped td .btn-sm {\n    line-height: 1.8;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Placeholders\n|--------------------------------------------------------------------------\n*/\n\n.placeholders {\n    margin-bottom: 30px;\n    text-align: center;\n}\n.placeholders h4 {\n    margin-bottom: 0;\n}\n.placeholder {\n    margin-bottom: 20px;\n}\n.placeholder img {\n    display: inline-block;\n    border-radius: 50%;\n}\n\n/*\n|--------------------------------------------------------------------------\n| iFrame\n|--------------------------------------------------------------------------\n*/\n\n#wrap {\n    height: calc(645px * 0.65);\n}\n\n#frame {\n    width: 150%;\n    position: relative;\n    z-index: 0;\n    height: 645px;\n    border: 1px solid #ddd;\n}\n\n#frame {\n    transform: scale(0.65);\n    transform-origin: 0 0;\n    -ms-zoom: 0.65;\n    -moz-transform: scale(0.65);\n    -moz-transform-origin: 0 0;\n    -o-transform: scale(0.65);\n    -o-transform-origin: 0 0;\n    -webkit-transform: scale(0.65);\n    -webkit-transform-origin: 0 0;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Notifications\n|--------------------------------------------------------------------------\n*/\n\n.cms-notification {\n    width: 260px;\n    min-height: 30px;\n    position: fixed;\n    z-index: 10000;\n    right: -300px;\n    top: 124px;\n    display: none;\n    padding: 8px 8px 0 8px;\n    border-radius: 4px;\n    color: #FFF;\n    box-shadow: 0px 0px 3px;\n}\n\n.cms-notify {\n    float: left;\n    margin-left: 10px;\n    width: 200px;\n}\n\n.cms-notify-closer {\n    width: 20px;\n    margin-left: 10px;\n    float: left;\n    line-height: 20px;\n}\n\n.cms-notify-closer-icon {\n    cursor: pointer;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Globals\n|--------------------------------------------------------------------------\n*/\n\ntextarea {\n    resize: vertical;\n}\n\n.table-input {\n    border: none;\n    background-color: transparent;\n}\n\n    .table-input:focus {\n        outline: 0;\n        border-bottom: 1px solid #BBB;\n    }\n\n/*\n|--------------------------------------------------------------------------\n| Twitter Typeahead\n|--------------------------------------------------------------------------\n*/\n\nspan.twitter-typeahead {\n    width: 100%;\n}\n\n.tt-menu {\n    background-color: #FFF;\n    border: 1px solid #DDD;\n}\n\n    .tt-suggestion {\n        min-width: 200px;\n        padding: 8px;\n    }\n        .tt-suggestion:hover {\n            cursor: pointer;\n            background-color: #222;\n            color: #FFF;\n        }\n\n        .tt-suggestion:focus {\n            text-decoration: underline;\n        }\n\n.navbar-header .back-link a, .navbar-header .back-link a:hover  {\n    color: #EEE;\n}\n\n.navbar-nav {\n    margin-right: 14px !important;\n}\n\n.list-row {\n    margin-top: 12px;\n}\n\n.thumbnail-box {\n    max-height: 90px;\n    height: 90px;\n    overflow: hidden;\n    display: table-cell;\n    vertical-align: middle;\n    text-align: center;\n}\n\n.thumbnail-box .img {\n    background-position: center center;\n    background-size: cover;\n    height: 100%;\n    cursor: pointer;\n}\n\n.overflow-hidden {\n    overflow: hidden;\n}\n\n.cms-errors li {\n    list-style: none;\n}\n\n.profile-image {\n    width: 100%;\n    border-radius: 50%;\n    overflow: hidden;\n    margin: 48px auto;\n    background-position: center center;\n    background-size: cover;\n}\n\n.profile-image:after {\n  content: \"\";\n  display: block;\n  padding-bottom: 100%;\n}\n\n/*\n|--------------------------------------------------------------------------\n| CMS Styles\n|--------------------------------------------------------------------------\n*/\n\n.bulk-image-delete {\n    display: none;\n}\n\n.image-listing {\n    max-height: 300px;\n}\n\n.card-help {\n    height: auto !important;\n    margin-bottom: 24px;\n}\n\n.image-panel {\n    height: 320px;\n}\n\n    .image-panel .thumbnail {\n        overflow: hidden;\n        text-align: center;\n    }\n\n    .image-panel .img {\n        width: 100%;\n        height: 200px;\n        background-size: cover;\n        background-position: center center;\n    }\n\n.table-form {\n    width: calc(100% - 30px);\n    margin-left: 15px;\n    margin-right: 15px;\n}\n\n.bootstrap-tagsinput .tag {\n    font-size: 100% !important;\n    padding: 0.6em !important;\n}\n\n.navbar-toggle span {\n    color: #FFF;\n}\n\n.checkbox label {\n    width: 200px;\n    margin-left: 24px;\n    padding-top: 20px;\n}\n\npre {\n    padding: 8px;\n    background-color: #222;\n    color: #eee;\n    border-radius: 4px;\n}\n\n.tag {\n    background-color: purple;\n}\n\n.well {\n    padding: 16px;\n    background-color: #ecf0f1;\n    border-radius: 4px;\n}\n\n@media (max-width: 1024px) {\n    .t-hidden {\n        display: none;\n    }\n}\n\n@media (max-width: 576px) {\n    .m-hidden {\n        display: none;\n    }\n    .main {\n\n    }\n}"
  },
  {
    "path": "src/Assets/src/sass/_modules.scss",
    "content": ".dropzone {\n    border: dotted;\n    margin-bottom: 24px;\n}\n\n.dz-message {\n    margin-top: 3em !important;\n}\n\n.bootstrap-tagsinput .tag {\n    font-size: 100% !important;\n    padding: 0.6em !important;\n    background-color: purple;\n    border-radius: 2px;\n    margin-right: 3px;\n    color: #FFF;\n}\n\n.selectable {\n    cursor: pointer;\n}\n\n.selected-highlight {\n    background-color: #FEF1B5;\n    border-color: #EEC900;\n}"
  },
  {
    "path": "src/Assets/src/sass/_sidebar.scss",
    "content": "\n.sidebar {\n    width: 320px;\n    position: fixed;\n    top: 60px;\n    bottom: 60px;\n    left: 0;\n    z-index: 100; /* Behind the navbar */\n    padding: 0;\n    transition: all 0.3s;\n    z-index: 1001;\n}\n\n.sidebar-sticky {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 60px;\n    height: calc(100vh - 135px);\n    overflow-x: hidden;\n    overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */\n}\n\n.sidebar .nav-link {\n    font-weight: 500;\n    color: #333;\n}\n\n.sidebar .nav-link .feather {\n    margin-right: 4px;\n    color: #999;\n}\n\n.sidebar .nav-link .active {\n    color: #007bff;\n}\n\n.sidebar .nav-link:hover .feather,\n.sidebar .nav-link.active .feather {\n    color: inherit;\n}\n\n.sidebar-heading {\n  font-size: .75rem;\n  text-transform: uppercase;\n}\n\n.sidebar-header {\n    line-height: 48px;\n    span {\n        padding-left: 16px;\n    }\n}\n\n.main {\n    width: calc(100% - 320px);\n}\n.sidebar-toggle {\n    display: none;\n}\n\n@media (max-width: 1024px) {\n    .sidebar-toggle {\n        display: inline-block;\n    }\n    .main {\n        width: 100%;\n    }\n    .sidebar {\n        top: 60px;\n        margin-left: -320px;\n    }\n    .sidebar.toggled {\n        margin-left: 0;\n    }\n}\n\n@media (max-width: 576px) {\n    .navbar-brand {\n        width: 100%;\n        padding-right: 15px;\n    }\n    .sidebar {\n        top: 8px;\n        margin-left: -320px;\n    }\n    .sidebar-sticky {\n        margin-top: 94px;\n        height: calc(100vh - 180px);\n    }\n}\n"
  },
  {
    "path": "src/Assets/src/sass/cms.scss",
    "content": "/*\n|--------------------------------------------------------------------------\n| Grafite CMS\n|--------------------------------------------------------------------------\n*/\n\n@import \"base.scss\";\n@import \"modules.scss\";\n@import \"sidebar.scss\";\n"
  },
  {
    "path": "src/Assets/src/vendor/datepicker/bootstrap-datetimepicker-standalone.css",
    "content": "/*!\n * Datetimepicker for Bootstrap 3\n * version : 4.17.37\n * https://github.com/Eonasdan/bootstrap-datetimepicker/\n */\n@font-face {\n    font-family: 'Glyphicons Halflings';\n    src: url('../fonts/glyphicons-halflings-regular.eot');\n    src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n\n.glyphicon {\n    position: relative;\n    top: 1px;\n    display: inline-block;\n    font-family: 'Glyphicons Halflings';\n    font-style: normal;\n    font-weight: normal;\n    line-height: 1;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n\n.glyphicon-time:before {\n    content: \"\\e023\";\n}\n\n.glyphicon-chevron-left:before {\n    content: \"\\e079\";\n}\n\n.glyphicon-chevron-right:before {\n    content: \"\\e080\";\n}\n\n.glyphicon-chevron-up:before {\n    content: \"\\e113\";\n}\n\n.glyphicon-chevron-down:before {\n    content: \"\\e114\";\n}\n\n.glyphicon-calendar:before {\n    content: \"\\e109\";\n}\n\n.btn {\n    display: inline-block;\n    padding: 6px 12px;\n    margin-bottom: 0;\n    font-size: 14px;\n    font-weight: normal;\n    line-height: 1.42857143;\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: middle;\n    -ms-touch-action: manipulation;\n    touch-action: manipulation;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    background-image: none;\n    border: 1px solid transparent;\n    border-radius: 4px;\n}\n\n.collapse {\n    display: none;\n}\n\n    .collapse.in {\n        display: block;\n    }\n\n.dropdown-menu {\n    position: absolute;\n    left: 0;\n    z-index: 1000;\n    display: none;\n    float: left;\n    min-width: 160px;\n    padding: 5px 0;\n    margin: 2px 0 0;\n    font-size: 14px;\n    text-align: left;\n    list-style: none;\n    background-color: #fff;\n    -webkit-background-clip: padding-box;\n    background-clip: padding-box;\n    border: 1px solid #ccc;\n    border: 1px solid rgba(0, 0, 0, .15);\n    border-radius: 4px;\n    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n    box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n\n.list-unstyled {\n    padding-left: 0;\n    list-style: none;\n}"
  },
  {
    "path": "src/Assets/src/vendor/datepicker/bootstrap-datetimepicker.css",
    "content": "/*!\n * Datetimepicker for Bootstrap 3\n * version : 4.17.47\n * https://github.com/Eonasdan/bootstrap-datetimepicker/\n */\n.bootstrap-datetimepicker-widget {\n  list-style: none;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu {\n  display: block;\n  margin: 2px 0;\n  padding: 4px;\n  width: 19em;\n}\n@media (min-width: 576px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n@media (min-width: 768px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n@media (min-width: 992px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n.bootstrap-datetimepicker-widget.dropdown-menu:before,\n.bootstrap-datetimepicker-widget.dropdown-menu:after {\n  content: '';\n  display: inline-block;\n  position: absolute;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  top: -7px;\n  left: 7px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid white;\n  top: -6px;\n  left: 8px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.top:before {\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-top: 7px solid #ccc;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  bottom: -7px;\n  left: 6px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.top:after {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-top: 6px solid white;\n  bottom: -6px;\n  left: 7px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {\n  left: auto;\n  right: 6px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {\n  left: auto;\n  right: 7px;\n}\n.bootstrap-datetimepicker-widget .list-unstyled {\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget a[data-action] {\n  padding: 6px 0;\n}\n.bootstrap-datetimepicker-widget a[data-action]:active {\n  box-shadow: none;\n}\n.bootstrap-datetimepicker-widget .timepicker-hour,\n.bootstrap-datetimepicker-widget .timepicker-minute,\n.bootstrap-datetimepicker-widget .timepicker-second {\n  width: 54px;\n  font-weight: bold;\n  font-size: 1.2em;\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget button[data-action] {\n  padding: 6px;\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"incrementHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Increment Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"incrementMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Increment Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"decrementHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Decrement Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"decrementMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Decrement Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"showHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Show Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"showMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Show Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"togglePeriod\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Toggle AM/PM\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"clear\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Clear the picker\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"today\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Set the date to today\";\n}\n.bootstrap-datetimepicker-widget .picker-switch {\n  text-align: center;\n}\n.bootstrap-datetimepicker-widget .picker-switch::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Toggle Date and Time Screens\";\n}\n.bootstrap-datetimepicker-widget .picker-switch td {\n  padding: 0;\n  margin: 0;\n  height: auto;\n  width: auto;\n  line-height: inherit;\n}\n.bootstrap-datetimepicker-widget .picker-switch td span,\n.bootstrap-datetimepicker-widget .picker-switch td i {\n  line-height: 2.5;\n  height: 2.5em;\n  width: 100%;\n}\n.bootstrap-datetimepicker-widget table {\n  width: 100%;\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget table td,\n.bootstrap-datetimepicker-widget table th {\n  text-align: center;\n  border-radius: 0.25rem;\n  padding: 0.5em;\n}\n.bootstrap-datetimepicker-widget table th {\n  height: 20px;\n  line-height: 20px;\n  width: 20px;\n}\n.bootstrap-datetimepicker-widget table th.picker-switch {\n  width: 145px;\n}\n.bootstrap-datetimepicker-widget table th.disabled,\n.bootstrap-datetimepicker-widget table th.disabled:hover {\n  background: none;\n  color: #dee2e6;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget table th.prev::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Previous Month\";\n}\n.bootstrap-datetimepicker-widget table th.next::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Next Month\";\n}\n.bootstrap-datetimepicker-widget table thead tr:first-child th {\n  cursor: pointer;\n}\n.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {\n  background: #f8f9fa;\n}\n.bootstrap-datetimepicker-widget table td {\n  height: 54px;\n  line-height: 54px;\n  width: 54px;\n}\n.bootstrap-datetimepicker-widget table td.cw {\n  font-size: .8em;\n  height: 20px;\n  line-height: 20px;\n  color: #dee2e6;\n}\n.bootstrap-datetimepicker-widget table td.day {\n  height: 20px;\n  line-height: 20px;\n  width: 20px;\n}\n.bootstrap-datetimepicker-widget table td.day:hover,\n.bootstrap-datetimepicker-widget table td.hour:hover,\n.bootstrap-datetimepicker-widget table td.minute:hover,\n.bootstrap-datetimepicker-widget table td.second:hover {\n  background: #f8f9fa;\n  cursor: pointer;\n}\n.bootstrap-datetimepicker-widget table td.old,\n.bootstrap-datetimepicker-widget table td.new {\n  color: #dee2e6;\n}\n.bootstrap-datetimepicker-widget table td.today {\n  position: relative;\n}\n.bootstrap-datetimepicker-widget table td.today:before {\n  content: '';\n  display: inline-block;\n  border: solid transparent;\n  border-width: 0 0 7px 7px;\n  border-bottom-color: #dee2e6;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  bottom: 4px;\n  right: 4px;\n}\n.bootstrap-datetimepicker-widget table td.active,\n.bootstrap-datetimepicker-widget table td.active:hover {\n  background-color: #dee2e6;\n  color: #007bff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.bootstrap-datetimepicker-widget table td.active.today:before {\n  border-bottom-color: #fff;\n}\n.bootstrap-datetimepicker-widget table td.disabled,\n.bootstrap-datetimepicker-widget table td.disabled:hover {\n  background: none;\n  color: #dee2e6;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget table td span,\n.bootstrap-datetimepicker-widget table td i {\n  display: inline-block;\n  width: 54px;\n  height: 54px;\n  line-height: 54px;\n  margin: 2px 1.5px;\n  cursor: pointer;\n  border-radius: 0.25rem;\n}\n.bootstrap-datetimepicker-widget table td span:hover,\n.bootstrap-datetimepicker-widget table td i:hover {\n  background: #f8f9fa;\n}\n.bootstrap-datetimepicker-widget table td span.active,\n.bootstrap-datetimepicker-widget table td i.active {\n  background-color: #dee2e6;\n  color: #007bff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.bootstrap-datetimepicker-widget table td span.old,\n.bootstrap-datetimepicker-widget table td i.old {\n  color: #dee2e6;\n}\n.bootstrap-datetimepicker-widget table td span.disabled,\n.bootstrap-datetimepicker-widget table td i.disabled,\n.bootstrap-datetimepicker-widget table td span.disabled:hover,\n.bootstrap-datetimepicker-widget table td i.disabled:hover {\n  background: none;\n  color: #dee2e6;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget.usetwentyfour td.hour {\n  height: 27px;\n  line-height: 27px;\n}\n.bootstrap-datetimepicker-widget.wider {\n  width: 21em;\n}\n.bootstrap-datetimepicker-widget .datepicker-decades .decade {\n  line-height: 1.8em !important;\n}\n.input-group.date .input-group-addon {\n  cursor: pointer;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n"
  },
  {
    "path": "src/Assets/src/vendor/datepicker/moment-timezone.js",
    "content": "//! moment-timezone.js\n//! version : 0.5.13\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n!function(a,b){\"use strict\";\"function\"==typeof define&&define.amd?define([\"moment\"],b):\"object\"==typeof module&&module.exports?module.exports=b(require(\"moment\")):b(a.moment)}(this,function(a){\"use strict\";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split(\".\"),f=e[0],g=e[1]||\"\",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d<f.length;d++)c=b(f.charCodeAt(d)),i=60*i+c;for(d=0;d<g.length;d++)h/=60,c=b(g.charCodeAt(d)),i+=c*h;return i*j}function d(a){for(var b=0;b<a.length;b++)a[b]=c(a[b])}function e(a,b){for(var c=0;c<b;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;c<b.length;c++)d[c]=a[b[c]];return d}function g(a){var b=a.split(\"|\"),c=b[2].split(\" \"),g=b[3].split(\"\"),h=b[4].split(\" \");return d(c),d(g),d(h),e(h,g.length),{name:b[0],abbrs:f(b[1].split(\" \"),g),offsets:f(c,g),untils:h,population:0|b[5]}}function h(a){a&&this._set(g(a))}function i(a){var b=a.toTimeString(),c=b.match(/\\([a-z ]+\\)/i);c&&c[0]?(c=c[0].match(/[A-Z]/g),c=c?c.join(\"\"):void 0):(c=b.match(/[A-Z]{3,5}/g),c=c?c[0]:void 0),\"GMT\"===c&&(c=void 0),this.at=+a,this.abbr=c,this.offset=a.getTimezoneOffset()}function j(a){this.zone=a,this.offsetScore=0,this.abbrScore=0}function k(a,b){for(var c,d;d=6e4*((b.at-a.at)/12e4|0);)c=new i(new Date(a.at+d)),c.offset===a.offset?a=c:b=c;return a}function l(){var a,b,c,d=(new Date).getFullYear()-2,e=new i(new Date(d,0,1)),f=[e];for(c=1;c<48;c++)b=new i(new Date(d,c,1)),b.offset!==e.offset&&(a=k(e,b),f.push(a),f.push(new i(new Date(a.at+6e4)))),e=b;for(c=0;c<4;c++)f.push(new i(new Date(d+c,0,1))),f.push(new i(new Date(d+c,6,1)));return f}function m(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function n(a,b){var c,e;for(d(b),c=0;c<b.length;c++)e=b[c],I[e]=I[e]||{},I[e][a]=!0}function o(a){var b,c,d,e=a.length,f={},g=[];for(b=0;b<e;b++){d=I[a[b].offset]||{};for(c in d)d.hasOwnProperty(c)&&(f[c]=!0)}for(b in f)f.hasOwnProperty(b)&&g.push(H[b]);return g}function p(){try{var a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(a){var b=H[r(a)];if(b)return b;z(\"Moment Timezone found \"+a+\" from the Intl api, but did not have that data loaded.\")}}catch(c){}var d,e,f,g=l(),h=g.length,i=o(g),k=[];for(e=0;e<i.length;e++){for(d=new j(t(i[e]),h),f=0;f<h;f++)d.scoreOffsetAt(g[f]);k.push(d)}return k.sort(m),k.length>0?k[0].zone.name:void 0}function q(a){return D&&!a||(D=p()),D}function r(a){return(a||\"\").toLowerCase().replace(/\\//g,\"_\")}function s(a){var b,c,d,e;for(\"string\"==typeof a&&(a=[a]),b=0;b<a.length;b++)d=a[b].split(\"|\"),c=d[0],e=r(c),F[e]=a[b],H[e]=c,d[5]&&n(e,d[2].split(\" \"))}function t(a,b){a=r(a);var c,d=F[a];return d instanceof h?d:\"string\"==typeof d?(d=new h(d),F[a]=d,d):G[a]&&b!==t&&(c=t(G[a],t))?(d=F[a]=new h,d._set(c),d.name=H[a],d):null}function u(){var a,b=[];for(a in H)H.hasOwnProperty(a)&&(F[a]||F[G[a]])&&H[a]&&b.push(H[a]);return b.sort()}function v(a){var b,c,d,e;for(\"string\"==typeof a&&(a=[a]),b=0;b<a.length;b++)c=a[b].split(\"|\"),d=r(c[0]),e=r(c[1]),G[d]=e,H[d]=c[0],G[e]=d,H[e]=c[1]}function w(a){s(a.zones),v(a.links),A.dataVersion=a.version}function x(a){return x.didShowError||(x.didShowError=!0,z(\"moment.tz.zoneExists('\"+a+\"') has been deprecated in favor of !moment.tz.zone('\"+a+\"')\")),!!t(a)}function y(a){return!(!a._a||void 0!==a._tzm)}function z(a){\"undefined\"!=typeof console&&\"function\"==typeof console.error&&console.error(a)}function A(b){var c=Array.prototype.slice.call(arguments,0,-1),d=arguments[arguments.length-1],e=t(d),f=a.utc.apply(null,c);return e&&!a.isMoment(b)&&y(f)&&f.add(e.parse(f),\"minutes\"),f.tz(d),f}function B(a){return function(){return this._z?this._z.abbr(this):a.call(this)}}function C(a){return function(){return this._z=null,a.apply(this,arguments)}}var D,E=\"0.5.13\",F={},G={},H={},I={},J=a.version.split(\".\"),K=+J[0],L=+J[1];(K<2||2===K&&L<6)&&z(\"Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js \"+a.version+\". See momentjs.com\"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var b,c=+a,d=this.untils;for(b=0;b<d.length;b++)if(c<d[b])return b},parse:function(a){var b,c,d,e,f=+a,g=this.offsets,h=this.untils,i=h.length-1;for(e=0;e<i;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],b<c&&A.moveAmbiguousForward?b=c:b>d&&A.moveInvalidForward&&(b=d),f<h[e]-6e4*b)return g[e];return g[i]},abbr:function(a){return this.abbrs[this._index(a)]},offset:function(a){return this.offsets[this._index(a)]}},j.prototype.scoreOffsetAt=function(a){this.offsetScore+=Math.abs(this.zone.offset(a.at)-a.offset),this.zone.abbr(a.at).replace(/[^A-Z]/g,\"\")!==a.abbr&&this.abbrScore++},A.version=E,A.dataVersion=\"\",A._zones=F,A._links=G,A._names=H,A.add=s,A.link=v,A.load=w,A.zone=t,A.zoneExists=x,A.guess=q,A.names=u,A.Zone=h,A.unpack=g,A.unpackBase60=c,A.needsOffset=y,A.moveInvalidForward=!0,A.moveAmbiguousForward=!1;var M=a.fn;a.tz=A,a.defaultZone=null,a.updateOffset=function(b,c){var d,e=a.defaultZone;void 0===b._z&&(e&&y(b)&&!b._isUTC&&(b._d=a.utc(b._a)._d,b.utc().add(e.parse(b),\"minutes\")),b._z=e),b._z&&(d=b._z.offset(b),Math.abs(d)<16&&(d/=60),void 0!==b.utcOffset?b.utcOffset(-d,c):b.zone(d,c))},M.tz=function(b){return b?(this._z=t(b),this._z?a.updateOffset(this):z(\"Moment Timezone has no data for \"+b+\". See http://momentjs.com/timezone/docs/#/data-loading/.\"),this):this._z?this._z.name:void 0},M.zoneName=B(M.zoneName),M.zoneAbbr=B(M.zoneAbbr),M.utc=C(M.utc),a.tz.setDefault=function(b){return(K<2||2===K&&L<9)&&z(\"Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js \"+a.version+\".\"),a.defaultZone=b?t(b):null,a};var N=a.momentProperties;return\"[object Array]\"===Object.prototype.toString.call(N)?(N.push(\"_z\"),N.push(\"_a\")):N&&(N._z=null),w({version:\"2017b\",zones:[\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\"Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\"Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldWV.E 2xonV.E|39e4\",\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\"Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5\",\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\"Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4\",\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|51e5\",\"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5\",\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\"Africa/Windhoek|+0130 SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|32e4\",\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0\",\"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0\",\"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0\",\"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0\",\"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0\",\"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0\",\"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0\",\"America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\"America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\"America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|77e4\",\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\"America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|54e4\",\"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\"America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5\",\"America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4\",\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\"America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/La_Paz|CMT BOST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\"America/Montevideo|MMT -0330 -03 -02 -0230|3I.I 3u 30 20 2u|012121212121212121212121213232323232324242423243232323232323232323232323232323232323232|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4\",\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0\",\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5\",\"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\"America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|20e6\",\"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|0121212|-2q00 1DjS0 T90 40P0 KL0 blz0|10\",\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\"Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5\",\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6\",\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\"Asia/Kolkata|HMT +0630 IST|-5R.k -6u -5u|01212|-18LFR.k 1unn.k HB0 7zX0|15e6\",\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3\",\"Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6\",\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4\",\"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5\",\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0\",\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|18e5\",\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|25e4\",\"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\"Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3\",\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4\",\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5\",\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5\",\"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5\",\"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4\",\"Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4\",\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\"Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|01231|-2um8n 97XR 1lTzu 2Onc0|29e5\",\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4\",\"Asia/Rangoon|RMT +0630 +09|-6o.E -6u -90|0121|-21Jio.E SmnS.E 7j9u|48e5\",\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJH0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0|38e6\",\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2xomp.U 1qOMp.U 7zX0 1djf0|50e4\",\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\"Atlantic/South_Georgia|-02|20|0||30\",\"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2\",\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"EST|EST|50|0|\",\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Etc/GMT+0|GMT|0|0|\",\"Etc/GMT+1|-01|10|0|\",\"Etc/GMT+10|-10|a0|0|\",\"Etc/GMT+11|-11|b0|0|\",\"Etc/GMT+12|-12|c0|0|\",\"Etc/GMT+3|-03|30|0|\",\"Etc/GMT+4|-04|40|0|\",\"Etc/GMT+5|-05|50|0|\",\"Etc/GMT+6|-06|60|0|\",\"Etc/GMT+7|-07|70|0|\",\"Etc/GMT+8|-08|80|0|\",\"Etc/GMT+9|-09|90|0|\",\"Etc/GMT-1|+01|-10|0|\",\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\"Pacific/Pohnpei|+11|-b0|0||34e3\",\"Pacific/Tarawa|+12|-c0|0||29e3\",\"Etc/GMT-13|+13|-d0|0|\",\"Etc/GMT-14|+14|-e0|0|\",\"Etc/GMT-2|+02|-20|0|\",\"Etc/GMT-3|+03|-30|0|\",\"Etc/GMT-4|+04|-40|0|\",\"Etc/GMT-5|+05|-50|0|\",\"Etc/GMT-6|+06|-60|0|\",\"Indian/Christmas|+07|-70|0||21e2\",\"Etc/GMT-8|+08|-80|0|\",\"Pacific/Palau|+09|-90|0||21e3\",\"Etc/UCT|UCT|0|0|\",\"Etc/UTC|UTC|0|0|\",\"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\"Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810\",\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\"HST|HST|a0|0|\",\"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\"Indian/Cocos|+0630|-6u|0||596\",\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\"Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3\",\"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4\",\"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4\",\"Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3\",\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"MST|MST|70|0|\",\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B8n0|1\",\"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483\",\"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|88e4\",\"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3\",\"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125\",\"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4\",\"Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4\",\"Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4\",\"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B8nk|51e2\",\"Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2\",\"Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3\",\"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2\",\"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2\",\"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3\",\"Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2\",\"Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4\",\"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56\",\"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4\",\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121212121212121212121212121212121212121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|75e3\",\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"],\nlinks:[\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Sao_Tome\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Cairo|Egypt\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Khartoum|Africa/Juba\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"Africa/Tripoli|Libya\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|US/Alaska\",\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\"America/Argentina/Catamarca|America/Catamarca\",\"America/Argentina/Cordoba|America/Cordoba\",\"America/Argentina/Cordoba|America/Rosario\",\"America/Argentina/Jujuy|America/Jujuy\",\"America/Argentina/Mendoza|America/Mendoza\",\"America/Atikokan|America/Coral_Harbour\",\"America/Chicago|US/Central\",\"America/Curacao|America/Aruba\",\"America/Curacao|America/Kralendijk\",\"America/Curacao|America/Lower_Princes\",\"America/Denver|America/Shiprock\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Detroit|US/Michigan\",\"America/Edmonton|Canada/Mountain\",\"America/Fort_Wayne|America/Indiana/Indianapolis\",\"America/Fort_Wayne|America/Indianapolis\",\"America/Fort_Wayne|US/East-Indiana\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Indiana/Knox|America/Knox_IN\",\"America/Indiana/Knox|US/Indiana-Starke\",\"America/Jamaica|Jamaica\",\"America/Kentucky/Louisville|America/Louisville\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Manaus|Brazil/West\",\"America/Mazatlan|Mexico/BajaSur\",\"America/Mexico_City|Mexico/General\",\"America/New_York|US/Eastern\",\"America/Noronha|Brazil/DeNoronha\",\"America/Panama|America/Cayman\",\"America/Phoenix|US/Arizona\",\"America/Port_of_Spain|America/Anguilla\",\"America/Port_of_Spain|America/Antigua\",\"America/Port_of_Spain|America/Dominica\",\"America/Port_of_Spain|America/Grenada\",\"America/Port_of_Spain|America/Guadeloupe\",\"America/Port_of_Spain|America/Marigot\",\"America/Port_of_Spain|America/Montserrat\",\"America/Port_of_Spain|America/St_Barthelemy\",\"America/Port_of_Spain|America/St_Kitts\",\"America/Port_of_Spain|America/St_Lucia\",\"America/Port_of_Spain|America/St_Thomas\",\"America/Port_of_Spain|America/St_Vincent\",\"America/Port_of_Spain|America/Tortola\",\"America/Port_of_Spain|America/Virgin\",\"America/Regina|Canada/East-Saskatchewan\",\"America/Regina|Canada/Saskatchewan\",\"America/Rio_Branco|America/Porto_Acre\",\"America/Rio_Branco|Brazil/Acre\",\"America/Santiago|Chile/Continental\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Tijuana|America/Ensenada\",\"America/Tijuana|America/Santa_Isabel\",\"America/Tijuana|Mexico/BajaNorte\",\"America/Toronto|America/Montreal\",\"America/Toronto|Canada/Eastern\",\"America/Vancouver|Canada/Pacific\",\"America/Whitehorse|Canada/Yukon\",\"America/Winnipeg|Canada/Central\",\"Asia/Ashgabat|Asia/Ashkhabad\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Ho_Chi_Minh|Asia/Saigon\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Macau|Asia/Macao\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Nicosia|Europe/Nicosia\",\"Asia/Qatar|Asia/Bahrain\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Riyadh|Asia/Aden\",\"Asia/Riyadh|Asia/Kuwait\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|PRC\",\"Asia/Taipei|ROC\",\"Asia/Tehran|Iran\",\"Asia/Thimphu|Asia/Thimbu\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Urumqi|Asia/Kashgar\",\"Atlantic/Faroe|Atlantic/Faeroe\",\"Atlantic/Reykjavik|Iceland\",\"Atlantic/South_Georgia|Etc/GMT+2\",\"Australia/Adelaide|Australia/South\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Broken_Hill|Australia/Yancowinna\",\"Australia/Darwin|Australia/North\",\"Australia/Hobart|Australia/Tasmania\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Melbourne|Australia/Victoria\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/NSW\",\"Etc/GMT+0|Etc/GMT\",\"Etc/GMT+0|Etc/GMT-0\",\"Etc/GMT+0|Etc/GMT0\",\"Etc/GMT+0|Etc/Greenwich\",\"Etc/GMT+0|GMT\",\"Etc/GMT+0|GMT+0\",\"Etc/GMT+0|GMT-0\",\"Etc/GMT+0|GMT0\",\"Etc/GMT+0|Greenwich\",\"Etc/UCT|UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Belgrade|Europe/Ljubljana\",\"Europe/Belgrade|Europe/Podgorica\",\"Europe/Belgrade|Europe/Sarajevo\",\"Europe/Belgrade|Europe/Skopje\",\"Europe/Belgrade|Europe/Zagreb\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Helsinki|Europe/Mariehamn\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Portugal\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|W-SU\",\"Europe/Oslo|Arctic/Longyearbyen\",\"Europe/Oslo|Atlantic/Jan_Mayen\",\"Europe/Prague|Europe/Bratislava\",\"Europe/Rome|Europe/San_Marino\",\"Europe/Rome|Europe/Vatican\",\"Europe/Warsaw|Poland\",\"Europe/Zurich|Europe/Busingen\",\"Europe/Zurich|Europe/Vaduz\",\"Indian/Christmas|Etc/GMT-7\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kwajalein|Kwajalein\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Palau|Etc/GMT-9\",\"Pacific/Pohnpei|Etc/GMT-11\",\"Pacific/Pohnpei|Pacific/Ponape\",\"Pacific/Port_Moresby|Etc/GMT-10\",\"Pacific/Port_Moresby|Pacific/Chuuk\",\"Pacific/Port_Moresby|Pacific/Truk\",\"Pacific/Port_Moresby|Pacific/Yap\",\"Pacific/Tarawa|Etc/GMT-12\",\"Pacific/Tarawa|Pacific/Funafuti\",\"Pacific/Tarawa|Pacific/Wake\",\"Pacific/Tarawa|Pacific/Wallis\"]}),a});"
  },
  {
    "path": "src/Assets/src/vendor/datepicker/moment.js",
    "content": "//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n!function(a,b){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=b():\"function\"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){\"use strict\";function a(){return sd.apply(null,arguments)}function b(a){sd=a}function c(a){return a instanceof Array||\"[object Array]\"===Object.prototype.toString.call(a)}function d(a){return null!=a&&\"[object Object]\"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return\"number\"==typeof a||\"[object Number]\"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||\"[object Date]\"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)&&(a[c]=b[c]);return j(b,\"toString\")&&(a.toString=b.toString),j(b,\"valueOf\")&&(a.valueOf=b.valueOf),a}function l(a,b,c,d){return sb(a,b,c,d,!0).utc()}function m(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function n(a){return null==a._pf&&(a._pf=m()),a._pf}function o(a){if(null==a._isValid){var b=n(a),c=ud.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function p(a){var b=l(NaN);return null!=a?k(n(b),a):n(b).userInvalidated=!0,b}function q(a,b){var c,d,e;if(f(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),f(b._i)||(a._i=b._i),f(b._f)||(a._f=b._f),f(b._l)||(a._l=b._l),f(b._strict)||(a._strict=b._strict),f(b._tzm)||(a._tzm=b._tzm),f(b._isUTC)||(a._isUTC=b._isUTC),f(b._offset)||(a._offset=b._offset),f(b._pf)||(a._pf=n(b)),f(b._locale)||(a._locale=b._locale),vd.length>0)for(c=0;c<vd.length;c++)d=vd[c],e=b[d],f(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),wd===!1&&(wd=!0,a.updateOffset(this),wd=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;d<e;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+b)}function x(b,c){var d=!0;return k(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e=\"\",\"object\"==typeof arguments[g]){e+=\"\\n[\"+g+\"] \";for(var h in arguments[0])e+=h+\": \"+arguments[0][h]+\", \";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+\"\\nArguments: \"+Array.prototype.slice.call(f).join(\"\")+\"\\n\"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),xd[b]||(w(c),xd[b]=!0)}function z(a){return a instanceof Function||\"[object Function]\"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this[\"_\"+c]=b;this._config=a,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)}function B(a,b){var c,e=k({},a);for(c in b)j(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},k(e[c],a[c]),k(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)j(a,c)&&!j(b,c)&&d(a[c])&&(e[c]=k({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace(\"%d\",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?\"future\":\"past\"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Hd[c]=Hd[c+\"s\"]=Hd[b]=a}function K(a){return\"string\"==typeof a?Hd[a]||Hd[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){Id[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:Id[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d[\"get\"+(a._isUTC?\"UTC\":\"\")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d[\"set\"+(a._isUTC?\"UTC\":\"\")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if(\"object\"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=\"\"+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;\"string\"==typeof d&&(e=function(){return this[d]()}),a&&(Md[a]=e),b&&(Md[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Md[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\\[[\\s\\S]/)?a.replace(/^\\[|\\]$/g,\"\"):a.replace(/\\\\/g,\"\")}function W(a){var b,c,d=a.match(Jd);for(b=0,c=d.length;b<c;b++)Md[d[b]]?d[b]=Md[d[b]]:d[b]=V(d[b]);return function(b){var e,f=\"\";for(e=0;e<c;e++)f+=z(d[e])?d[e].call(b,a):d[e];return f}}function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Ld[b]=Ld[b]||W(b),Ld[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Kd.lastIndex=0;d>=0&&Kd.test(a);)a=a.replace(Kd,c),Kd.lastIndex=0,d-=1;return a}function Z(a,b,c){ce[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return j(ce,a)?ce[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}function ba(a,b){var c,d=b;for(\"string\"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)de[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&j(de,a)&&de[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function fa(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||oe).test(b)?\"format\":\"standalone\"][a.month()]:c(this._months)?this._months:this._months.standalone}function ga(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[oe.test(b)?\"format\":\"standalone\"][a.month()]:c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;d<12;++d)f=l([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,\"\").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,\"\").toLocaleLowerCase();return c?\"MMM\"===b?(e=ne.call(this._shortMonthsParse,g),e!==-1?e:null):(e=ne.call(this._longMonthsParse,g),e!==-1?e:null):\"MMM\"===b?(e=ne.call(this._shortMonthsParse,g),e!==-1?e:(e=ne.call(this._longMonthsParse,g),e!==-1?e:null)):(e=ne.call(this._longMonthsParse,g),e!==-1?e:(e=ne.call(this._shortMonthsParse,g),e!==-1?e:null))}function ia(a,b,c){var d,e,f;if(this._monthsParseExact)return ha.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;d<12;d++){if(e=l([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp(\"^\"+this.months(e,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[d]=new RegExp(\"^\"+this.monthsShort(e,\"\").replace(\".\",\"\")+\"$\",\"i\")),c||this._monthsParse[d]||(f=\"^\"+this.months(e,\"\")+\"|^\"+this.monthsShort(e,\"\"),this._monthsParse[d]=new RegExp(f.replace(\".\",\"\"),\"i\")),c&&\"MMMM\"===b&&this._longMonthsParse[d].test(a))return d;if(c&&\"MMM\"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ja(a,b){var c;if(!a.isValid())return a;if(\"string\"==typeof b)if(/^\\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!g(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d[\"set\"+(a._isUTC?\"UTC\":\"\")+\"Month\"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,\"Month\")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(j(this,\"_monthsRegex\")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(j(this,\"_monthsShortRegex\")||(this._monthsShortRegex=re),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function na(a){return this._monthsParseExact?(j(this,\"_monthsRegex\")||oa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(j(this,\"_monthsRegex\")||(this._monthsRegex=se),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function oa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;b<12;b++)c=l([2e3,b]),d.push(this.monthsShort(c,\"\")),e.push(this.months(c,\"\")),f.push(this.months(c,\"\")),f.push(this.monthsShort(c,\"\"));for(d.sort(a),e.sort(a),f.sort(a),b=0;b<12;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;b<24;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp(\"^(\"+f.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+e.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+d.join(\"|\")+\")\",\"i\")}function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return a<100&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),\"d\")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),\"d\")}function Da(a,b){return\"string\"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),\"number\"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return\"string\"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?\"format\":\"standalone\"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,\"\").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,\"\").toLocaleLowerCase();return c?\"dddd\"===b?(e=ne.call(this._weekdaysParse,g),e!==-1?e:null):\"ddd\"===b?(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null):\"dddd\"===b?(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null))):\"ddd\"===b?(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp(\"^\"+this.weekdays(e,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._shortWeekdaysParse[d]=new RegExp(\"^\"+this.weekdaysShort(e,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._minWeekdaysParse[d]=new RegExp(\"^\"+this.weekdaysMin(e,\"\").replace(\".\",\".?\")+\"$\",\"i\")),this._weekdaysParse[d]||(f=\"^\"+this.weekdays(e,\"\")+\"|^\"+this.weekdaysShort(e,\"\")+\"|^\"+this.weekdaysMin(e,\"\"),this._weekdaysParse[d]=new RegExp(f.replace(\".\",\"\"),\"i\")),c&&\"dddd\"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&\"ddd\"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&\"dd\"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,\"d\")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,\"d\")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(j(this,\"_weekdaysRegex\")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,\"_weekdaysRegex\")||(this._weekdaysRegex=ye),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(j(this,\"_weekdaysRegex\")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=ze),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,\"_weekdaysRegex\")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Ae),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,\"\"),e=this.weekdaysShort(c,\"\"),f=this.weekdays(c,\"\"),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp(\"^(\"+j.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+i.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+h.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+g.join(\"|\")+\")\",\"i\")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return\"p\"===(a+\"\").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?\"pm\":\"PM\":c?\"am\":\"AM\"}function Xa(a){return a?a.toLowerCase().replace(\"_\",\"-\"):a}function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split(\"-\"),b=e.length,c=Xa(a[f+1]),c=c?c.split(\"-\"):null;b>0;){if(d=Za(e.slice(0,b).join(\"-\")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Fe[a]&&\"undefined\"!=typeof module&&module&&module.exports)try{b=Be._abbr,require(\"./locale/\"+a),$a(b)}catch(a){}return Fe[a]}function $a(a,b){var c;return a&&(c=f(b)?bb(a):_a(a,b),c&&(Be=c)),Be._abbr}function _a(a,b){if(null!==b){var c=Ee;if(b.abbr=a,null!=Fe[a])y(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),c=Fe[a]._config;else if(null!=b.parentLocale){if(null==Fe[b.parentLocale])return Ge[b.parentLocale]||(Ge[b.parentLocale]=[]),Ge[b.parentLocale].push({name:a,config:b}),null;c=Fe[b.parentLocale]._config}return Fe[a]=new C(B(c,b)),Ge[a]&&Ge[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Fe[a]}return delete Fe[a],null}function ab(a,b){if(null!=b){var c,d=Ee;null!=Fe[a]&&(d=Fe[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Fe[a],Fe[a]=c,$a(a)}else null!=Fe[a]&&(null!=Fe[a].parentLocale?Fe[a]=Fe[a].parentLocale:null!=Fe[a]&&delete Fe[a]);return Fe[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Be;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return Ad(Fe)}function db(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[fe]<0||c[fe]>11?fe:c[ge]<1||c[ge]>ea(c[ee],c[fe])?ge:c[he]<0||c[he]>24||24===c[he]&&(0!==c[ie]||0!==c[je]||0!==c[ke])?he:c[ie]<0||c[ie]>59?ie:c[je]<0||c[je]>59?je:c[ke]<0||c[ke]>999?ke:-1,n(a)._overflowDayOfYear&&(b<ee||b>ge)&&(b=ge),n(a)._overflowWeeks&&b===-1&&(b=le),n(a)._overflowWeekday&&b===-1&&(b=me),n(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=He.exec(h)||Ie.exec(h);if(i){for(n(a).iso=!0,b=0,c=Ke.length;b<c;b++)if(Ke[b][1].exec(i[1])){e=Ke[b][0],d=Ke[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Le.length;b<c;b++)if(Le[b][1].exec(i[3])){f=(i[2]||\" \")+Le[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Je.exec(i[4]))return void(a._isValid=!1);g=\"Z\"}a._f=e+(f||\"\")+(g||\"\"),lb(a)}else a._isValid=!1}function fb(a){var b,c,d,e,f,g,h,i,j={\" GMT\":\" +0000\",\" EDT\":\" -0400\",\" EST\":\" -0500\",\" CDT\":\" -0500\",\" CST\":\" -0600\",\" MDT\":\" -0600\",\" MST\":\" -0700\",\" PDT\":\" -0700\",\" PST\":\" -0800\"},k=\"YXWVUTSRQPONZABCDEFGHIKLM\";if(b=a._i.replace(/\\([^\\)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").replace(/^\\s|\\s$/g,\"\"),c=Ne.exec(b)){if(d=c[1]?\"ddd\"+(5===c[1].length?\", \":\" \"):\"\",e=\"D MMM \"+(c[2].length>10?\"YYYY \":\"YY \"),f=\"HH:mm\"+(c[4]?\":ss\":\"\"),c[1]){var l=new Date(c[2]),m=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"][l.getDay()];if(c[1].substr(0,3)!==m)return n(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=\" +0000\":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?\" -\":\" +\")+(\"\"+i).replace(/^-?/,\"0\").match(/..$/)[0]+\"00\");break;case 4:h=j[c[5]];break;default:h=j[\" GMT\"]}c[5]=h,a._i=c.splice(1).join(\"\"),g=\" ZZ\",a._f=d+e+f+g,lb(a),n(a).rfc2822=!0}else a._isValid=!1}function gb(b){var c=Me.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,fb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function hb(a,b,c){return null!=a?a:null!=b?b:c}function ib(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function jb(a){var b,c,d,e,f=[];if(!a._d){for(d=ib(a),a._w&&null==a._a[ge]&&null==a._a[fe]&&kb(a),null!=a._dayOfYear&&(e=hb(a._a[ee],d[ee]),(a._dayOfYear>pa(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[fe]=c.getUTCMonth(),a._a[ge]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[he]&&0===a._a[ie]&&0===a._a[je]&&0===a._a[ke]&&(a._nextDay=!0,a._a[he]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[he]=24)}}function kb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=hb(b.GG,a._a[ee],wa(tb(),1,4).year),d=hb(b.W,1),e=hb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(tb(),f,g);c=hb(b.gg,a._a[ee],j.year),d=hb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>xa(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[ee]=h.year,a._dayOfYear=h.dayOfYear)}function lb(b){if(b._f===a.ISO_8601)return void eb(b);if(b._f===a.RFC_2822)return void fb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=\"\"+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Jd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Md[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[he]<=12&&n(b).bigHour===!0&&b._a[he]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[he]=mb(b._locale,b._a[he],b._meridiem),jb(b),db(b)}function mb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function nb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],lb(b),o(b)&&(f+=n(b).charsLeftOver,f+=10*n(b).unusedTokens.length,n(b).score=f,(null==d||f<d)&&(d=f,c=b));k(a,c||b)}function ob(a){if(!a._d){var b=L(a._i);a._a=i([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),jb(a)}}function pb(a){var b=new r(db(qb(a)));return b._nextDay&&(b.add(1,\"d\"),b._nextDay=void 0),b}function qb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&\"\"===b?p({nullInput:!0}):(\"string\"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(h(b)?a._d=b:c(d)?nb(a):d?lb(a):rb(a),o(a)||(a._d=null),a))}function rb(b){var e=b._i;f(e)?b._d=new Date(a.now()):h(e)?b._d=new Date(e.valueOf()):\"string\"==typeof e?gb(b):c(e)?(b._a=i(e.slice(0),function(a){return parseInt(a,10)}),jb(b)):d(e)?ob(b):g(e)?b._d=new Date(e):a.createFromInputFallback(b)}function sb(a,b,f,g,h){var i={};return f!==!0&&f!==!1||(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,pb(i)}function tb(a,b,c,d){return sb(a,b,c,d,!1)}function ub(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return tb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}function vb(){var a=[].slice.call(arguments,0);return ub(\"isBefore\",a)}function wb(){var a=[].slice.call(arguments,0);return ub(\"isAfter\",a)}function xb(a){for(var b in a)if(Re.indexOf(b)===-1||null!=a[b]&&isNaN(a[b]))return!1;for(var c=!1,d=0;d<Re.length;++d)if(a[Re[d]]){if(c)return!1;parseFloat(a[Re[d]])!==u(a[Re[d]])&&(c=!0)}return!0}function yb(){return this._isValid}function zb(){return Sb(NaN)}function Ab(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._isValid=xb(b),this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function Bb(a){return a instanceof Ab}function Cb(a){return a<0?Math.round(-1*a)*-1:Math.round(a)}function Db(a,b){U(a,0,0,function(){var a=this.utcOffset(),c=\"+\";return a<0&&(a=-a,c=\"-\"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Eb(a,b){var c=(b||\"\").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+\"\").match(Se)||[\"-\",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:\"+\"===e[0]?f:-f}function Fb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||h(b)?b.valueOf():tb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):tb(b).local()}function Gb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Hb(b,c,d){var e,f=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if(\"string\"==typeof b){if(b=Eb(_d,b),null===b)return this}else Math.abs(b)<16&&!d&&(b=60*b);return!this._isUTC&&c&&(e=Gb(this)),this._offset=b,this._isUTC=!0,null!=e&&this.add(e,\"m\"),f!==b&&(!c||this._changeInProgress?Xb(this,Sb(b-f,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?f:Gb(this)}function Ib(a,b){return null!=a?(\"string\"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Jb(a){return this.utcOffset(0,a)}function Kb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Gb(this),\"m\")),this}function Lb(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var a=Eb($d,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Mb(a){return!!this.isValid()&&(a=a?tb(a).utcOffset():0,(this.utcOffset()-a)%60===0)}function Nb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ob(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=qb(a),a._a){var b=a._isUTC?l(a._a):tb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Pb(){return!!this.isValid()&&!this._isUTC}function Qb(){return!!this.isValid()&&this._isUTC}function Rb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Sb(a,b){var c,d,e,f=a,h=null;return Bb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Te.exec(a))?(c=\"-\"===h[1]?-1:1,f={y:0,d:u(h[ge])*c,h:u(h[he])*c,m:u(h[ie])*c,s:u(h[je])*c,ms:u(Cb(1e3*h[ke]))*c}):(h=Ue.exec(a))?(c=\"-\"===h[1]?-1:1,f={y:Tb(h[2],c),M:Tb(h[3],c),w:Tb(h[4],c),d:Tb(h[5],c),h:Tb(h[6],c),m:Tb(h[7],c),s:Tb(h[8],c)}):null==f?f={}:\"object\"==typeof f&&(\"from\"in f||\"to\"in f)&&(e=Vb(tb(f.from),tb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Ab(f),Bb(a)&&j(a,\"_locale\")&&(d._locale=a._locale),d}function Tb(a,b){var c=a&&parseFloat(a.replace(\",\",\".\"));return(isNaN(c)?0:c)*b}function Ub(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,\"M\").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,\"M\"),c}function Vb(a,b){var c;return a.isValid()&&b.isValid()?(b=Fb(b,a),a.isBefore(b)?c=Ub(a,b):(c=Ub(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Wb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,\"moment().\"+b+\"(period, number) is deprecated. Please use moment().\"+b+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),f=c,c=d,d=f),c=\"string\"==typeof c?+c:c,e=Sb(c,d),Xb(this,e,a),this}}function Xb(b,c,d,e){var f=c._milliseconds,g=Cb(c._days),h=Cb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,\"Date\",P(b,\"Date\")+g*d),h&&ja(b,P(b,\"Month\")+h*d),e&&a.updateOffset(b,g||h))}function Yb(a,b){var c=a.diff(b,\"days\",!0);return c<-6?\"sameElse\":c<-1?\"lastWeek\":c<0?\"lastDay\":c<1?\"sameDay\":c<2?\"nextDay\":c<7?\"nextWeek\":\"sameElse\"}function Zb(b,c){var d=b||tb(),e=Fb(d,this).startOf(\"day\"),f=a.calendarFormat(this,e)||\"sameElse\",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,tb(d)))}function $b(){return new r(this)}function _b(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?\"millisecond\":b),\"millisecond\"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf())}function ac(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?\"millisecond\":b),\"millisecond\"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf())}function bc(a,b,c,d){return d=d||\"()\",(\"(\"===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(\")\"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function cc(a,b){var c,d=s(a)?a:tb(a);return!(!this.isValid()||!d.isValid())&&(b=K(b||\"millisecond\"),\"millisecond\"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf()))}function dc(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function ec(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function fc(a,b,c){var d,e,f,g;return this.isValid()?(d=Fb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),\"year\"===b||\"month\"===b||\"quarter\"===b?(g=gc(this,d),\"quarter\"===b?g/=3:\"year\"===b&&(g/=12)):(f=this-d,g=\"second\"===b?f/1e3:\"minute\"===b?f/6e4:\"hour\"===b?f/36e5:\"day\"===b?(f-e)/864e5:\"week\"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function gc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,\"months\");return b-f<0?(c=a.clone().add(e-1,\"months\"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,\"months\"),d=(b-f)/(c-f)),-(e+d)||0}function hc(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")}function ic(){if(!this.isValid())return null;var a=this.clone().utc();return a.year()<0||a.year()>9999?X(a,\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\"):z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}function jc(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var a=\"moment\",b=\"\";this.isLocal()||(a=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",b=\"Z\");var c=\"[\"+a+'(\"]',d=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",e=\"-MM-DD[T]HH:mm:ss.SSS\",f=b+'[\")]';return this.format(c+d+e+f)}function kc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function lc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mc(a){return this.from(tb(),a)}function nc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.to(tb(),a)}function pc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function qc(){return this._locale}function rc(a){switch(a=K(a)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}return\"week\"===a&&this.weekday(0),\"isoWeek\"===a&&this.isoWeekday(1),\"quarter\"===a&&this.month(3*Math.floor(this.month()/3)),this}function sc(a){return a=K(a),void 0===a||\"millisecond\"===a?this:(\"date\"===a&&(a=\"day\"),this.startOf(a).add(1,\"isoWeek\"===a?\"week\":a).subtract(1,\"ms\"))}function tc(){return this._d.valueOf()-6e4*(this._offset||0)}function uc(){return Math.floor(this.valueOf()/1e3)}function vc(){return new Date(this.valueOf())}function wc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function yc(){return this.isValid()?this.toISOString():null}function zc(){return o(this)}function Ac(){\nreturn k({},n(this))}function Bc(){return n(this).overflow}function Cc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dc(a,b){U(0,[a,a.length],0,b)}function Ec(a){return Ic.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Fc(a){return Ic.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Gc(){return xa(this.year(),1,4)}function Hc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ic(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Jc.call(this,a,b,c,d,e))}function Jc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Kc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Lc(a){var b=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==a?b:this.add(a-b,\"d\")}function Mc(a,b){b[ke]=u(1e3*(\"0.\"+a))}function Nc(){return this._isUTC?\"UTC\":\"\"}function Oc(){return this._isUTC?\"Coordinated Universal Time\":\"\"}function Pc(a){return tb(1e3*a)}function Qc(){return tb.apply(null,arguments).parseZone()}function Rc(a){return a}function Sc(a,b,c,d){var e=bb(),f=l().set(d,b);return e[c](f,a)}function Tc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||\"\",null!=b)return Sc(a,b,c,\"month\");var d,e=[];for(d=0;d<12;d++)e[d]=Sc(a,d,c,\"month\");return e}function Uc(a,b,c,d){\"boolean\"==typeof a?(g(b)&&(c=b,b=void 0),b=b||\"\"):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||\"\");var e=bb(),f=a?e._week.dow:0;if(null!=c)return Sc(b,(c+f)%7,d,\"day\");var h,i=[];for(h=0;h<7;h++)i[h]=Sc(b,(h+f)%7,d,\"day\");return i}function Vc(a,b){return Tc(a,b,\"months\")}function Wc(a,b){return Tc(a,b,\"monthsShort\")}function Xc(a,b,c){return Uc(a,b,c,\"weekdays\")}function Yc(a,b,c){return Uc(a,b,c,\"weekdaysShort\")}function Zc(a,b,c){return Uc(a,b,c,\"weekdaysMin\")}function $c(){var a=this._data;return this._milliseconds=df(this._milliseconds),this._days=df(this._days),this._months=df(this._months),a.milliseconds=df(a.milliseconds),a.seconds=df(a.seconds),a.minutes=df(a.minutes),a.hours=df(a.hours),a.months=df(a.months),a.years=df(a.years),this}function _c(a,b,c,d){var e=Sb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function ad(a,b){return _c(this,a,b,1)}function bd(a,b){return _c(this,a,b,-1)}function cd(a){return a<0?Math.floor(a):Math.ceil(a)}function dd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*cd(fd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ed(g)),h+=e,g-=cd(fd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ed(a){return 4800*a/146097}function fd(a){return 146097*a/4800}function gd(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),\"month\"===a||\"year\"===a)return b=this._days+d/864e5,c=this._months+ed(b),\"month\"===a?c:c/12;switch(b=this._days+Math.round(fd(this._months)),a){case\"week\":return b/7+d/6048e5;case\"day\":return b+d/864e5;case\"hour\":return 24*b+d/36e5;case\"minute\":return 1440*b+d/6e4;case\"second\":return 86400*b+d/1e3;case\"millisecond\":return Math.floor(864e5*b)+d;default:throw new Error(\"Unknown unit \"+a)}}function hd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function id(a){return function(){return this.as(a)}}function jd(a){return a=K(a),this.isValid()?this[a+\"s\"]():NaN}function kd(a){return function(){return this.isValid()?this._data[a]:NaN}}function ld(){return t(this.days()/7)}function md(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function nd(a,b,c){var d=Sb(a).abs(),e=uf(d.as(\"s\")),f=uf(d.as(\"m\")),g=uf(d.as(\"h\")),h=uf(d.as(\"d\")),i=uf(d.as(\"M\")),j=uf(d.as(\"y\")),k=e<=vf.ss&&[\"s\",e]||e<vf.s&&[\"ss\",e]||f<=1&&[\"m\"]||f<vf.m&&[\"mm\",f]||g<=1&&[\"h\"]||g<vf.h&&[\"hh\",g]||h<=1&&[\"d\"]||h<vf.d&&[\"dd\",h]||i<=1&&[\"M\"]||i<vf.M&&[\"MM\",i]||j<=1&&[\"y\"]||[\"yy\",j];return k[2]=b,k[3]=+a>0,k[4]=c,md.apply(null,k)}function od(a){return void 0===a?uf:\"function\"==typeof a&&(uf=a,!0)}function pd(a,b){return void 0!==vf[a]&&(void 0===b?vf[a]:(vf[a]=b,\"s\"===a&&(vf.ss=b-1),!0))}function qd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=nd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function rd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=wf(this._milliseconds)/1e3,e=wf(this._days),f=wf(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?\"-\":\"\")+\"P\"+(g?g+\"Y\":\"\")+(h?h+\"M\":\"\")+(i?i+\"D\":\"\")+(j||k||l?\"T\":\"\")+(j?j+\"H\":\"\")+(k?k+\"M\":\"\")+(l?l+\"S\":\"\"):\"P0D\"}var sd,td;td=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d<c;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var ud=td,vd=a.momentProperties=[],wd=!1,xd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var yd;yd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)j(a,b)&&c.push(b);return c};var zd,Ad=yd,Bd={sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},Cd={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},Dd=\"Invalid date\",Ed=\"%d\",Fd=/\\d{1,2}/,Gd={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},Hd={},Id={},Jd=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Kd=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ld={},Md={},Nd=/\\d/,Od=/\\d\\d/,Pd=/\\d{3}/,Qd=/\\d{4}/,Rd=/[+-]?\\d{6}/,Sd=/\\d\\d?/,Td=/\\d\\d\\d\\d?/,Ud=/\\d\\d\\d\\d\\d\\d?/,Vd=/\\d{1,3}/,Wd=/\\d{1,4}/,Xd=/[+-]?\\d{1,6}/,Yd=/\\d+/,Zd=/[+-]?\\d+/,$d=/Z|[+-]\\d\\d:?\\d\\d/gi,_d=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,ae=/[+-]?\\d+(\\.\\d{1,3})?/,be=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i,ce={},de={},ee=0,fe=1,ge=2,he=3,ie=4,je=5,ke=6,le=7,me=8;zd=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1};var ne=zd;U(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),U(\"MMM\",0,0,function(a){return this.localeData().monthsShort(this,a)}),U(\"MMMM\",0,0,function(a){return this.localeData().months(this,a)}),J(\"month\",\"M\"),M(\"month\",8),Z(\"M\",Sd),Z(\"MM\",Sd,Od),Z(\"MMM\",function(a,b){return b.monthsShortRegex(a)}),Z(\"MMMM\",function(a,b){return b.monthsRegex(a)}),ba([\"M\",\"MM\"],function(a,b){b[fe]=u(a)-1}),ba([\"MMM\",\"MMMM\"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[fe]=e:n(c).invalidMonth=a});var oe=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,pe=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),qe=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),re=be,se=be;U(\"Y\",0,0,function(){var a=this.year();return a<=9999?\"\"+a:\"+\"+a}),U(0,[\"YY\",2],0,function(){return this.year()%100}),U(0,[\"YYYY\",4],0,\"year\"),U(0,[\"YYYYY\",5],0,\"year\"),U(0,[\"YYYYYY\",6,!0],0,\"year\"),J(\"year\",\"y\"),M(\"year\",1),Z(\"Y\",Zd),Z(\"YY\",Sd,Od),Z(\"YYYY\",Wd,Qd),Z(\"YYYYY\",Xd,Rd),Z(\"YYYYYY\",Xd,Rd),ba([\"YYYYY\",\"YYYYYY\"],ee),ba(\"YYYY\",function(b,c){c[ee]=2===b.length?a.parseTwoDigitYear(b):u(b)}),ba(\"YY\",function(b,c){c[ee]=a.parseTwoDigitYear(b)}),ba(\"Y\",function(a,b){b[ee]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};var te=O(\"FullYear\",!0);U(\"w\",[\"ww\",2],\"wo\",\"week\"),U(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),J(\"week\",\"w\"),J(\"isoWeek\",\"W\"),M(\"week\",5),M(\"isoWeek\",5),Z(\"w\",Sd),Z(\"ww\",Sd,Od),Z(\"W\",Sd),Z(\"WW\",Sd,Od),ca([\"w\",\"ww\",\"W\",\"WW\"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var ue={dow:0,doy:6};U(\"d\",0,\"do\",\"day\"),U(\"dd\",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U(\"ddd\",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U(\"dddd\",0,0,function(a){return this.localeData().weekdays(this,a)}),U(\"e\",0,0,\"weekday\"),U(\"E\",0,0,\"isoWeekday\"),J(\"day\",\"d\"),J(\"weekday\",\"e\"),J(\"isoWeekday\",\"E\"),M(\"day\",11),M(\"weekday\",11),M(\"isoWeekday\",11),Z(\"d\",Sd),Z(\"e\",Sd),Z(\"E\",Sd),Z(\"dd\",function(a,b){return b.weekdaysMinRegex(a)}),Z(\"ddd\",function(a,b){return b.weekdaysShortRegex(a)}),Z(\"dddd\",function(a,b){return b.weekdaysRegex(a)}),ca([\"dd\",\"ddd\",\"dddd\"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),ca([\"d\",\"e\",\"E\"],function(a,b,c,d){b[d]=u(a)});var ve=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),we=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),xe=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),ye=be,ze=be,Ae=be;U(\"H\",[\"HH\",2],0,\"hour\"),U(\"h\",[\"hh\",2],0,Ra),U(\"k\",[\"kk\",2],0,Sa),U(\"hmm\",0,0,function(){return\"\"+Ra.apply(this)+T(this.minutes(),2)}),U(\"hmmss\",0,0,function(){return\"\"+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U(\"Hmm\",0,0,function(){return\"\"+this.hours()+T(this.minutes(),2)}),U(\"Hmmss\",0,0,function(){return\"\"+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ta(\"a\",!0),Ta(\"A\",!1),J(\"hour\",\"h\"),M(\"hour\",13),Z(\"a\",Ua),Z(\"A\",Ua),Z(\"H\",Sd),Z(\"h\",Sd),Z(\"k\",Sd),Z(\"HH\",Sd,Od),Z(\"hh\",Sd,Od),Z(\"kk\",Sd,Od),Z(\"hmm\",Td),Z(\"hmmss\",Ud),Z(\"Hmm\",Td),Z(\"Hmmss\",Ud),ba([\"H\",\"HH\"],he),ba([\"k\",\"kk\"],function(a,b,c){var d=u(a);b[he]=24===d?0:d}),ba([\"a\",\"A\"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba([\"h\",\"hh\"],function(a,b,c){b[he]=u(a),n(c).bigHour=!0}),ba(\"hmm\",function(a,b,c){var d=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d)),n(c).bigHour=!0}),ba(\"hmmss\",function(a,b,c){var d=a.length-4,e=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d,2)),b[je]=u(a.substr(e)),n(c).bigHour=!0}),ba(\"Hmm\",function(a,b,c){var d=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d))}),ba(\"Hmmss\",function(a,b,c){var d=a.length-4,e=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d,2)),b[je]=u(a.substr(e))});var Be,Ce=/[ap]\\.?m?\\.?/i,De=O(\"Hours\",!0),Ee={calendar:Bd,longDateFormat:Cd,invalidDate:Dd,ordinal:Ed,dayOfMonthOrdinalParse:Fd,relativeTime:Gd,months:pe,monthsShort:qe,week:ue,weekdays:ve,weekdaysMin:xe,weekdaysShort:we,meridiemParse:Ce},Fe={},Ge={},He=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,Ie=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,Je=/Z|[+-]\\d\\d(?::?\\d\\d)?/,Ke=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],Le=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],Me=/^\\/?Date\\((\\-?\\d+)/i,Ne=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;a.createFromInputFallback=x(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(a){a._d=new Date(a._i+(a._useUTC?\" UTC\":\"\"))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Oe=x(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a<this?this:a:p()}),Pe=x(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:p()}),Qe=function(){return Date.now?Date.now():+new Date},Re=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];Db(\"Z\",\":\"),Db(\"ZZ\",\"\"),Z(\"Z\",_d),Z(\"ZZ\",_d),ba([\"Z\",\"ZZ\"],function(a,b,c){c._useUTC=!0,c._tzm=Eb(_d,a)});var Se=/([\\+\\-]|\\d\\d)/gi;a.updateOffset=function(){};var Te=/^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,Ue=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Sb.fn=Ab.prototype,Sb.invalid=zb;var Ve=Wb(1,\"add\"),We=Wb(-1,\"subtract\");a.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",a.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var Xe=x(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(a){return void 0===a?this.localeData():this.locale(a)});U(0,[\"gg\",2],0,function(){return this.weekYear()%100}),U(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),Dc(\"gggg\",\"weekYear\"),Dc(\"ggggg\",\"weekYear\"),Dc(\"GGGG\",\"isoWeekYear\"),Dc(\"GGGGG\",\"isoWeekYear\"),J(\"weekYear\",\"gg\"),J(\"isoWeekYear\",\"GG\"),M(\"weekYear\",1),M(\"isoWeekYear\",1),Z(\"G\",Zd),Z(\"g\",Zd),Z(\"GG\",Sd,Od),Z(\"gg\",Sd,Od),Z(\"GGGG\",Wd,Qd),Z(\"gggg\",Wd,Qd),Z(\"GGGGG\",Xd,Rd),Z(\"ggggg\",Xd,Rd),ca([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca([\"gg\",\"GG\"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),U(\"Q\",0,\"Qo\",\"quarter\"),J(\"quarter\",\"Q\"),M(\"quarter\",7),Z(\"Q\",Nd),ba(\"Q\",function(a,b){b[fe]=3*(u(a)-1)}),U(\"D\",[\"DD\",2],\"Do\",\"date\"),J(\"date\",\"D\"),M(\"date\",9),Z(\"D\",Sd),Z(\"DD\",Sd,Od),Z(\"Do\",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),ba([\"D\",\"DD\"],ge),ba(\"Do\",function(a,b){b[ge]=u(a.match(Sd)[0],10)});var Ye=O(\"Date\",!0);U(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),J(\"dayOfYear\",\"DDD\"),M(\"dayOfYear\",4),Z(\"DDD\",Vd),Z(\"DDDD\",Pd),ba([\"DDD\",\"DDDD\"],function(a,b,c){c._dayOfYear=u(a)}),U(\"m\",[\"mm\",2],0,\"minute\"),J(\"minute\",\"m\"),M(\"minute\",14),Z(\"m\",Sd),Z(\"mm\",Sd,Od),ba([\"m\",\"mm\"],ie);var Ze=O(\"Minutes\",!1);U(\"s\",[\"ss\",2],0,\"second\"),J(\"second\",\"s\"),M(\"second\",15),Z(\"s\",Sd),Z(\"ss\",Sd,Od),ba([\"s\",\"ss\"],je);var $e=O(\"Seconds\",!1);U(\"S\",0,0,function(){return~~(this.millisecond()/100)}),U(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),U(0,[\"SSS\",3],0,\"millisecond\"),U(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),U(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),U(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),U(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),U(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),U(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),J(\"millisecond\",\"ms\"),M(\"millisecond\",16),Z(\"S\",Vd,Nd),Z(\"SS\",Vd,Od),Z(\"SSS\",Vd,Pd);var _e;for(_e=\"SSSS\";_e.length<=9;_e+=\"S\")Z(_e,Yd);for(_e=\"S\";_e.length<=9;_e+=\"S\")ba(_e,Mc);var af=O(\"Milliseconds\",!1);U(\"z\",0,0,\"zoneAbbr\"),U(\"zz\",0,0,\"zoneName\");var bf=r.prototype;bf.add=Ve,bf.calendar=Zb,bf.clone=$b,bf.diff=fc,bf.endOf=sc,bf.format=kc,bf.from=lc,bf.fromNow=mc,bf.to=nc,bf.toNow=oc,bf.get=R,bf.invalidAt=Bc,bf.isAfter=_b,bf.isBefore=ac,bf.isBetween=bc,bf.isSame=cc,bf.isSameOrAfter=dc,bf.isSameOrBefore=ec,bf.isValid=zc,bf.lang=Xe,bf.locale=pc,bf.localeData=qc,bf.max=Pe,bf.min=Oe,bf.parsingFlags=Ac,bf.set=S,bf.startOf=rc,bf.subtract=We,bf.toArray=wc,bf.toObject=xc,bf.toDate=vc,bf.toISOString=ic,bf.inspect=jc,bf.toJSON=yc,bf.toString=hc,bf.unix=uc,bf.valueOf=tc,bf.creationData=Cc,bf.year=te,bf.isLeapYear=ra,bf.weekYear=Ec,bf.isoWeekYear=Fc,bf.quarter=bf.quarters=Kc,bf.month=ka,bf.daysInMonth=la,bf.week=bf.weeks=Ba,bf.isoWeek=bf.isoWeeks=Ca,bf.weeksInYear=Hc,bf.isoWeeksInYear=Gc,bf.date=Ye,bf.day=bf.days=Ka,bf.weekday=La,bf.isoWeekday=Ma,bf.dayOfYear=Lc,bf.hour=bf.hours=De,bf.minute=bf.minutes=Ze,bf.second=bf.seconds=$e,bf.millisecond=bf.milliseconds=af,bf.utcOffset=Hb,bf.utc=Jb,bf.local=Kb,bf.parseZone=Lb,bf.hasAlignedHourOffset=Mb,bf.isDST=Nb,bf.isLocal=Pb,bf.isUtcOffset=Qb,bf.isUtc=Rb,bf.isUTC=Rb,bf.zoneAbbr=Nc,bf.zoneName=Oc,bf.dates=x(\"dates accessor is deprecated. Use date instead.\",Ye),bf.months=x(\"months accessor is deprecated. Use month instead\",ka),bf.years=x(\"years accessor is deprecated. Use year instead\",te),bf.zone=x(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",Ib),bf.isDSTShifted=x(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",Ob);var cf=C.prototype;cf.calendar=D,cf.longDateFormat=E,cf.invalidDate=F,cf.ordinal=G,cf.preparse=Rc,cf.postformat=Rc,cf.relativeTime=H,cf.pastFuture=I,cf.set=A,cf.months=fa,cf.monthsShort=ga,cf.monthsParse=ia,cf.monthsRegex=na,cf.monthsShortRegex=ma,cf.week=ya,cf.firstDayOfYear=Aa,cf.firstDayOfWeek=za,cf.weekdays=Fa,cf.weekdaysMin=Ha,cf.weekdaysShort=Ga,cf.weekdaysParse=Ja,cf.weekdaysRegex=Na,cf.weekdaysShortRegex=Oa,cf.weekdaysMinRegex=Pa,cf.isPM=Va,cf.meridiem=Wa,$a(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c}}),a.lang=x(\"moment.lang is deprecated. Use moment.locale instead.\",$a),a.langData=x(\"moment.langData is deprecated. Use moment.localeData instead.\",bb);var df=Math.abs,ef=id(\"ms\"),ff=id(\"s\"),gf=id(\"m\"),hf=id(\"h\"),jf=id(\"d\"),kf=id(\"w\"),lf=id(\"M\"),mf=id(\"y\"),nf=kd(\"milliseconds\"),of=kd(\"seconds\"),pf=kd(\"minutes\"),qf=kd(\"hours\"),rf=kd(\"days\"),sf=kd(\"months\"),tf=kd(\"years\"),uf=Math.round,vf={ss:44,s:45,m:45,h:22,d:26,M:11},wf=Math.abs,xf=Ab.prototype;return xf.isValid=yb,xf.abs=$c,xf.add=ad,xf.subtract=bd,xf.as=gd,xf.asMilliseconds=ef,xf.asSeconds=ff,xf.asMinutes=gf,xf.asHours=hf,xf.asDays=jf,xf.asWeeks=kf,xf.asMonths=lf,xf.asYears=mf,xf.valueOf=hd,xf._bubble=dd,xf.get=jd,xf.milliseconds=nf,xf.seconds=of,xf.minutes=pf,xf.hours=qf,xf.days=rf,xf.weeks=ld,xf.months=sf,xf.years=tf,xf.humanize=qd,xf.toISOString=rd,xf.toString=rd,xf.toJSON=rd,xf.locale=pc,xf.localeData=qc,xf.toIsoString=x(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",rd),xf.lang=Xe,U(\"X\",0,0,\"unix\"),U(\"x\",0,0,\"valueOf\"),Z(\"x\",Zd),Z(\"X\",ae),ba(\"X\",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba(\"x\",function(a,b,c){c._d=new Date(u(a))}),a.version=\"2.18.1\",b(tb),a.fn=bf,a.min=vb,a.max=wb,a.now=Qe,a.utc=l,a.unix=Pc,a.months=Vc,a.isDate=h,a.locale=$a,a.invalid=p,a.duration=Sb,a.isMoment=s,a.weekdays=Xc,a.parseZone=Qc,a.localeData=bb,a.isDuration=Bb,a.monthsShort=Wc,a.weekdaysMin=Zc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Yc,a.normalizeUnits=K,a.relativeTimeRounding=od,a.relativeTimeThreshold=pd,a.calendarFormat=Yb,a.prototype=bf,a});"
  },
  {
    "path": "src/Assets/src/vendor/dropzone/basic.css",
    "content": "/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno <m@tias.me>\n */\n.dropzone, .dropzone * {\n  box-sizing: border-box; }\n\n.dropzone {\n  position: relative; }\n  .dropzone .dz-preview {\n    position: relative;\n    display: inline-block;\n    width: 120px;\n    margin: 0.5em; }\n    .dropzone .dz-preview .dz-progress {\n      display: block;\n      height: 15px;\n      border: 1px solid #aaa; }\n      .dropzone .dz-preview .dz-progress .dz-upload {\n        display: block;\n        height: 100%;\n        width: 0;\n        background: green; }\n    .dropzone .dz-preview .dz-error-message {\n      color: red;\n      display: none; }\n    .dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark {\n      display: block; }\n    .dropzone .dz-preview.dz-success .dz-success-mark {\n      display: block; }\n    .dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark {\n      position: absolute;\n      display: none;\n      left: 30px;\n      top: 30px;\n      width: 54px;\n      height: 58px;\n      left: 50%;\n      margin-left: -27px; }\n"
  },
  {
    "path": "src/Assets/src/vendor/dropzone/dropzone-amd-module.js",
    "content": "// Uses AMD or browser globals to create a jQuery plugin.\n(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n      // AMD. Register as an anonymous module.\n      define(['jquery'], factory);\n  } else {\n      // Browser globals\n      factory(jQuery);\n  }\n} (function (jQuery) {\n    var module = { exports: { } }; // Fake component\n\n\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n(function() {\n  var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,\n    __slice = [].slice,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n  noop = function() {};\n\n  Emitter = (function() {\n    function Emitter() {}\n\n    Emitter.prototype.addEventListener = Emitter.prototype.on;\n\n    Emitter.prototype.on = function(event, fn) {\n      this._callbacks = this._callbacks || {};\n      if (!this._callbacks[event]) {\n        this._callbacks[event] = [];\n      }\n      this._callbacks[event].push(fn);\n      return this;\n    };\n\n    Emitter.prototype.emit = function() {\n      var args, callback, callbacks, event, _i, _len;\n      event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      this._callbacks = this._callbacks || {};\n      callbacks = this._callbacks[event];\n      if (callbacks) {\n        for (_i = 0, _len = callbacks.length; _i < _len; _i++) {\n          callback = callbacks[_i];\n          callback.apply(this, args);\n        }\n      }\n      return this;\n    };\n\n    Emitter.prototype.removeListener = Emitter.prototype.off;\n\n    Emitter.prototype.removeAllListeners = Emitter.prototype.off;\n\n    Emitter.prototype.removeEventListener = Emitter.prototype.off;\n\n    Emitter.prototype.off = function(event, fn) {\n      var callback, callbacks, i, _i, _len;\n      if (!this._callbacks || arguments.length === 0) {\n        this._callbacks = {};\n        return this;\n      }\n      callbacks = this._callbacks[event];\n      if (!callbacks) {\n        return this;\n      }\n      if (arguments.length === 1) {\n        delete this._callbacks[event];\n        return this;\n      }\n      for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {\n        callback = callbacks[i];\n        if (callback === fn) {\n          callbacks.splice(i, 1);\n          break;\n        }\n      }\n      return this;\n    };\n\n    return Emitter;\n\n  })();\n\n  Dropzone = (function(_super) {\n    var extend, resolveOption;\n\n    __extends(Dropzone, _super);\n\n    Dropzone.prototype.Emitter = Emitter;\n\n\n    /*\n    This is a list of all available events you can register on a dropzone object.\n    \n    You can register an event handler like this:\n    \n        dropzone.on(\"dragEnter\", function() { });\n     */\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      method: \"post\",\n      withCredentials: false,\n      parallelUploads: 2,\n      uploadMultiple: false,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 10,\n      thumbnailWidth: 120,\n      thumbnailHeight: 120,\n      filesizeBase: 1000,\n      maxFiles: null,\n      filesizeBase: 1000,\n      params: {},\n      clickable: true,\n      ignoreHiddenFiles: true,\n      acceptedFiles: null,\n      acceptedMimeTypes: null,\n      autoProcessQueue: true,\n      autoQueue: true,\n      addRemoveLinks: false,\n      previewsContainer: null,\n      capture: null,\n      dictDefaultMessage: \"Drop files here to upload\",\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n      dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n      dictInvalidFileType: \"You can't upload files of this type.\",\n      dictResponseError: \"Server responded with {{statusCode}} code.\",\n      dictCancelUpload: \"Cancel upload\",\n      dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n      dictRemoveFile: \"Remove file\",\n      dictRemoveFileConfirmation: null,\n      dictMaxFilesExceeded: \"You can not upload any more files.\",\n      accept: function(file, done) {\n        return done();\n      },\n      init: function() {\n        return noop;\n      },\n      forceFallback: false,\n      fallback: function() {\n        var child, messageElement, span, _i, _len, _ref;\n        this.element.className = \"\" + this.element.className + \" dz-browser-not-supported\";\n        _ref = this.element.getElementsByTagName(\"div\");\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          child = _ref[_i];\n          if (/(^| )dz-message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"dz-message\";\n            continue;\n          }\n        }\n        if (!messageElement) {\n          messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n        span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          span.textContent = this.options.dictFallbackMessage;\n        }\n        return this.element.appendChild(this.getFallbackForm());\n      },\n      resize: function(file) {\n        var info, srcRatio, trgRatio;\n        info = {\n          srcX: 0,\n          srcY: 0,\n          srcWidth: file.width,\n          srcHeight: file.height\n        };\n        srcRatio = file.width / file.height;\n        info.optWidth = this.options.thumbnailWidth;\n        info.optHeight = this.options.thumbnailHeight;\n        if ((info.optWidth == null) && (info.optHeight == null)) {\n          info.optWidth = info.srcWidth;\n          info.optHeight = info.srcHeight;\n        } else if (info.optWidth == null) {\n          info.optWidth = srcRatio * info.optHeight;\n        } else if (info.optHeight == null) {\n          info.optHeight = (1 / srcRatio) * info.optWidth;\n        }\n        trgRatio = info.optWidth / info.optHeight;\n        if (file.height < info.optHeight || file.width < info.optWidth) {\n          info.trgHeight = info.srcHeight;\n          info.trgWidth = info.srcWidth;\n        } else {\n          if (srcRatio > trgRatio) {\n            info.srcHeight = file.height;\n            info.srcWidth = info.srcHeight * trgRatio;\n          } else {\n            info.srcWidth = file.width;\n            info.srcHeight = info.srcWidth / trgRatio;\n          }\n        }\n        info.srcX = (file.width - info.srcWidth) / 2;\n        info.srcY = (file.height - info.srcHeight) / 2;\n        return info;\n      },\n\n      /*\n      Those functions register themselves to the events on init and handle all\n      the user interface specific stuff. Overwriting them won't break the upload\n      but can break the way it's displayed.\n      You can overwrite them if you don't like the default behavior. If you just\n      want to add an additional event handler, register it on the dropzone object\n      and don't overwrite those options.\n       */\n      drop: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragstart: noop,\n      dragend: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      paste: noop,\n      reset: function() {\n        return this.element.classList.remove(\"dz-started\");\n      },\n      addedfile: function(file) {\n        var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;\n        if (this.element === this.previewsContainer) {\n          this.element.classList.add(\"dz-started\");\n        }\n        if (this.previewsContainer) {\n          file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n          file.previewTemplate = file.previewElement;\n          this.previewsContainer.appendChild(file.previewElement);\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            node.textContent = file.name;\n          }\n          _ref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\n          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n            node = _ref1[_j];\n            node.innerHTML = this.filesize(file.size);\n          }\n          if (this.options.addRemoveLinks) {\n            file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n            file.previewElement.appendChild(file._removeLink);\n          }\n          removeFileEvent = (function(_this) {\n            return function(e) {\n              e.preventDefault();\n              e.stopPropagation();\n              if (file.status === Dropzone.UPLOADING) {\n                return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {\n                  return _this.removeFile(file);\n                });\n              } else {\n                if (_this.options.dictRemoveFileConfirmation) {\n                  return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {\n                    return _this.removeFile(file);\n                  });\n                } else {\n                  return _this.removeFile(file);\n                }\n              }\n            };\n          })(this);\n          _ref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\n          _results = [];\n          for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n            removeLink = _ref2[_k];\n            _results.push(removeLink.addEventListener(\"click\", removeFileEvent));\n          }\n          return _results;\n        }\n      },\n      removedfile: function(file) {\n        var _ref;\n        if (file.previewElement) {\n          if ((_ref = file.previewElement) != null) {\n            _ref.parentNode.removeChild(file.previewElement);\n          }\n        }\n        return this._updateMaxFilesReachedClass();\n      },\n      thumbnail: function(file, dataUrl) {\n        var thumbnailElement, _i, _len, _ref;\n        if (file.previewElement) {\n          file.previewElement.classList.remove(\"dz-file-preview\");\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            thumbnailElement = _ref[_i];\n            thumbnailElement.alt = file.name;\n            thumbnailElement.src = dataUrl;\n          }\n          return setTimeout(((function(_this) {\n            return function() {\n              return file.previewElement.classList.add(\"dz-image-preview\");\n            };\n          })(this)), 1);\n        }\n      },\n      error: function(file, message) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-error\");\n          if (typeof message !== \"String\" && message.error) {\n            message = message.error;\n          }\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            _results.push(node.textContent = message);\n          }\n          return _results;\n        }\n      },\n      errormultiple: noop,\n      processing: function(file) {\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-processing\");\n          if (file._removeLink) {\n            return file._removeLink.textContent = this.options.dictCancelUpload;\n          }\n        }\n      },\n      processingmultiple: noop,\n      uploadprogress: function(file, progress, bytesSent) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            if (node.nodeName === 'PROGRESS') {\n              _results.push(node.value = progress);\n            } else {\n              _results.push(node.style.width = \"\" + progress + \"%\");\n            }\n          }\n          return _results;\n        }\n      },\n      totaluploadprogress: noop,\n      sending: noop,\n      sendingmultiple: noop,\n      success: function(file) {\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-success\");\n        }\n      },\n      successmultiple: noop,\n      canceled: function(file) {\n        return this.emit(\"error\", file, \"Upload canceled.\");\n      },\n      canceledmultiple: noop,\n      complete: function(file) {\n        if (file._removeLink) {\n          file._removeLink.textContent = this.options.dictRemoveFile;\n        }\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-complete\");\n        }\n      },\n      completemultiple: noop,\n      maxfilesexceeded: noop,\n      maxfilesreached: noop,\n      queuecomplete: noop,\n      previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n  <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n  <div class=\\\"dz-details\\\">\\n    <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n    <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n  </div>\\n  <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n  <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n  <div class=\\\"dz-success-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Check</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n      </g>\\n    </svg>\\n  </div>\\n  <div class=\\\"dz-error-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Error</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n          <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n        </g>\\n      </g>\\n    </svg>\\n  </div>\\n</div>\"\n    };\n\n    extend = function() {\n      var key, object, objects, target, val, _i, _len;\n      target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      for (_i = 0, _len = objects.length; _i < _len; _i++) {\n        object = objects[_i];\n        for (key in object) {\n          val = object[key];\n          target[key] = val;\n        }\n      }\n      return target;\n    };\n\n    function Dropzone(element, options) {\n      var elementOptions, fallback, _ref;\n      this.element = element;\n      this.version = Dropzone.version;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      this.clickableElements = [];\n      this.listeners = [];\n      this.files = [];\n      if (typeof this.element === \"string\") {\n        this.element = document.querySelector(this.element);\n      }\n      if (!(this.element && (this.element.nodeType != null))) {\n        throw new Error(\"Invalid dropzone element.\");\n      }\n      if (this.element.dropzone) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      Dropzone.instances.push(this);\n      this.element.dropzone = this;\n      elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n        return this.options.fallback.call(this);\n      }\n      if (this.options.url == null) {\n        this.options.url = this.element.getAttribute(\"action\");\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n        throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n      }\n      if (this.options.acceptedMimeTypes) {\n        this.options.acceptedFiles = this.options.acceptedMimeTypes;\n        delete this.options.acceptedMimeTypes;\n      }\n      this.options.method = this.options.method.toUpperCase();\n      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n        fallback.parentNode.removeChild(fallback);\n      }\n      if (this.options.previewsContainer !== false) {\n        if (this.options.previewsContainer) {\n          this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n        } else {\n          this.previewsContainer = this.element;\n        }\n      }\n      if (this.options.clickable) {\n        if (this.options.clickable === true) {\n          this.clickableElements = [this.element];\n        } else {\n          this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n        }\n      }\n      this.init();\n    }\n\n    Dropzone.prototype.getAcceptedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getRejectedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (!file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getFilesWithStatus = function(status) {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === status) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getQueuedFiles = function() {\n      return this.getFilesWithStatus(Dropzone.QUEUED);\n    };\n\n    Dropzone.prototype.getUploadingFiles = function() {\n      return this.getFilesWithStatus(Dropzone.UPLOADING);\n    };\n\n    Dropzone.prototype.getActiveFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.init = function() {\n      var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n        this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n      }\n      if (this.clickableElements.length) {\n        setupHiddenFileInput = (function(_this) {\n          return function() {\n            if (_this.hiddenFileInput) {\n              document.body.removeChild(_this.hiddenFileInput);\n            }\n            _this.hiddenFileInput = document.createElement(\"input\");\n            _this.hiddenFileInput.setAttribute(\"type\", \"file\");\n            if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\n              _this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n            }\n            _this.hiddenFileInput.className = \"dz-hidden-input\";\n            if (_this.options.acceptedFiles != null) {\n              _this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\n            }\n            if (_this.options.capture != null) {\n              _this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\n            }\n            _this.hiddenFileInput.style.visibility = \"hidden\";\n            _this.hiddenFileInput.style.position = \"absolute\";\n            _this.hiddenFileInput.style.top = \"0\";\n            _this.hiddenFileInput.style.left = \"0\";\n            _this.hiddenFileInput.style.height = \"0\";\n            _this.hiddenFileInput.style.width = \"0\";\n            document.body.appendChild(_this.hiddenFileInput);\n            return _this.hiddenFileInput.addEventListener(\"change\", function() {\n              var file, files, _i, _len;\n              files = _this.hiddenFileInput.files;\n              if (files.length) {\n                for (_i = 0, _len = files.length; _i < _len; _i++) {\n                  file = files[_i];\n                  _this.addFile(file);\n                }\n              }\n              return setupHiddenFileInput();\n            });\n          };\n        })(this);\n        setupHiddenFileInput();\n      }\n      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n      _ref1 = this.events;\n      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n        eventName = _ref1[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      this.on(\"uploadprogress\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"removedfile\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"canceled\", (function(_this) {\n        return function(file) {\n          return _this.emit(\"complete\", file);\n        };\n      })(this));\n      this.on(\"complete\", (function(_this) {\n        return function(file) {\n          if (_this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\n            return setTimeout((function() {\n              return _this.emit(\"queuecomplete\");\n            }), 0);\n          }\n        };\n      })(this));\n      noPropagation = function(e) {\n        e.stopPropagation();\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      };\n      this.listeners = [\n        {\n          element: this.element,\n          events: {\n            \"dragstart\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragstart\", e);\n              };\n            })(this),\n            \"dragenter\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.emit(\"dragenter\", e);\n              };\n            })(this),\n            \"dragover\": (function(_this) {\n              return function(e) {\n                var efct;\n                try {\n                  efct = e.dataTransfer.effectAllowed;\n                } catch (_error) {}\n                e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n                noPropagation(e);\n                return _this.emit(\"dragover\", e);\n              };\n            })(this),\n            \"dragleave\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragleave\", e);\n              };\n            })(this),\n            \"drop\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.drop(e);\n              };\n            })(this),\n            \"dragend\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragend\", e);\n              };\n            })(this)\n          }\n        }\n      ];\n      this.clickableElements.forEach((function(_this) {\n        return function(clickableElement) {\n          return _this.listeners.push({\n            element: clickableElement,\n            events: {\n              \"click\": function(evt) {\n                if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\n                  return _this.hiddenFileInput.click();\n                }\n              }\n            }\n          });\n        };\n      })(this));\n      this.enable();\n      return this.options.init.call(this);\n    };\n\n    Dropzone.prototype.destroy = function() {\n      var _ref;\n      this.disable();\n      this.removeAllFiles(true);\n      if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {\n        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        this.hiddenFileInput = null;\n      }\n      delete this.element.dropzone;\n      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n    };\n\n    Dropzone.prototype.updateTotalUploadProgress = function() {\n      var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;\n      totalBytesSent = 0;\n      totalBytes = 0;\n      activeFiles = this.getActiveFiles();\n      if (activeFiles.length) {\n        _ref = this.getActiveFiles();\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          totalBytesSent += file.upload.bytesSent;\n          totalBytes += file.upload.total;\n        }\n        totalUploadProgress = 100 * totalBytesSent / totalBytes;\n      } else {\n        totalUploadProgress = 100;\n      }\n      return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n    };\n\n    Dropzone.prototype._getParamName = function(n) {\n      if (typeof this.options.paramName === \"function\") {\n        return this.options.paramName(n);\n      } else {\n        return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n      }\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var existingFallback, fields, fieldsString, form;\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n      fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n      }\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + (this._getParamName(0)) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : void 0) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n      fields = Dropzone.createElement(fieldsString);\n      if (this.element.tagName !== \"FORM\") {\n        form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n        form.appendChild(fields);\n      } else {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n      return form != null ? form : fields;\n    };\n\n    Dropzone.prototype.getExistingFallback = function() {\n      var fallback, getFallback, tagName, _i, _len, _ref;\n      getFallback = function(elements) {\n        var el, _i, _len;\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )fallback($| )/.test(el.className)) {\n            return el;\n          }\n        }\n      };\n      _ref = [\"div\", \"form\"];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        tagName = _ref[_i];\n        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n          return fallback;\n        }\n      }\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.disable = function() {\n      var file, _i, _len, _ref, _results;\n      this.clickableElements.forEach(function(element) {\n        return element.classList.remove(\"dz-clickable\");\n      });\n      this.removeEventListeners();\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        _results.push(this.cancelUpload(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.enable = function() {\n      this.clickableElements.forEach(function(element) {\n        return element.classList.add(\"dz-clickable\");\n      });\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;\n      units = ['TB', 'GB', 'MB', 'KB', 'b'];\n      selectedSize = selectedUnit = null;\n      for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {\n        unit = units[i];\n        cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n      selectedSize = Math.round(10 * selectedSize) / 10;\n      return \"<strong>\" + selectedSize + \"</strong> \" + selectedUnit;\n    };\n\n    Dropzone.prototype._updateMaxFilesReachedClass = function() {\n      if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        if (this.getAcceptedFiles().length === this.options.maxFiles) {\n          this.emit('maxfilesreached', this.files);\n        }\n        return this.element.classList.add(\"dz-max-files-reached\");\n      } else {\n        return this.element.classList.remove(\"dz-max-files-reached\");\n      }\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files, items;\n      if (!e.dataTransfer) {\n        return;\n      }\n      this.emit(\"drop\", e);\n      files = e.dataTransfer.files;\n      if (files.length) {\n        items = e.dataTransfer.items;\n        if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n          this._addFilesFromItems(items);\n        } else {\n          this.handleFiles(files);\n        }\n      }\n    };\n\n    Dropzone.prototype.paste = function(e) {\n      var items, _ref;\n      if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {\n        return;\n      }\n      this.emit(\"paste\", e);\n      items = e.clipboardData.items;\n      if (items.length) {\n        return this._addFilesFromItems(items);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromItems = function(items) {\n      var entry, item, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = items.length; _i < _len; _i++) {\n        item = items[_i];\n        if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n          if (entry.isFile) {\n            _results.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            _results.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            _results.push(void 0);\n          }\n        } else if (item.getAsFile != null) {\n          if ((item.kind == null) || item.kind === \"file\") {\n            _results.push(this.addFile(item.getAsFile()));\n          } else {\n            _results.push(void 0);\n          }\n        } else {\n          _results.push(void 0);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromDirectory = function(directory, path) {\n      var dirReader, entriesReader;\n      dirReader = directory.createReader();\n      entriesReader = (function(_this) {\n        return function(entries) {\n          var entry, _i, _len;\n          for (_i = 0, _len = entries.length; _i < _len; _i++) {\n            entry = entries[_i];\n            if (entry.isFile) {\n              entry.file(function(file) {\n                if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n                  return;\n                }\n                file.fullPath = \"\" + path + \"/\" + file.name;\n                return _this.addFile(file);\n              });\n            } else if (entry.isDirectory) {\n              _this._addFilesFromDirectory(entry, \"\" + path + \"/\" + entry.name);\n            }\n          }\n        };\n      })(this);\n      return dirReader.readEntries(entriesReader, function(error) {\n        return typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\n      });\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n        return done(this.options.dictInvalidFileType);\n      } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n        return this.emit(\"maxfilesexceeded\", file);\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      file.upload = {\n        progress: 0,\n        total: file.size,\n        bytesSent: 0\n      };\n      this.files.push(file);\n      file.status = Dropzone.ADDED;\n      this.emit(\"addedfile\", file);\n      this._enqueueThumbnail(file);\n      return this.accept(file, (function(_this) {\n        return function(error) {\n          if (error) {\n            file.accepted = false;\n            _this._errorProcessing([file], error);\n          } else {\n            file.accepted = true;\n            if (_this.options.autoQueue) {\n              _this.enqueueFile(file);\n            }\n          }\n          return _this._updateMaxFilesReachedClass();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.enqueueFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        this.enqueueFile(file);\n      }\n      return null;\n    };\n\n    Dropzone.prototype.enqueueFile = function(file) {\n      if (file.status === Dropzone.ADDED && file.accepted === true) {\n        file.status = Dropzone.QUEUED;\n        if (this.options.autoProcessQueue) {\n          return setTimeout(((function(_this) {\n            return function() {\n              return _this.processQueue();\n            };\n          })(this)), 0);\n        }\n      } else {\n        throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n      }\n    };\n\n    Dropzone.prototype._thumbnailQueue = [];\n\n    Dropzone.prototype._processingThumbnail = false;\n\n    Dropzone.prototype._enqueueThumbnail = function(file) {\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this._thumbnailQueue.push(file);\n        return setTimeout(((function(_this) {\n          return function() {\n            return _this._processThumbnailQueue();\n          };\n        })(this)), 0);\n      }\n    };\n\n    Dropzone.prototype._processThumbnailQueue = function() {\n      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n        return;\n      }\n      this._processingThumbnail = true;\n      return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {\n        return function() {\n          _this._processingThumbnail = false;\n          return _this._processThumbnailQueue();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        this.cancelUpload(file);\n      }\n      this.files = without(this.files, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {\n      var file, _i, _len, _ref;\n      if (cancelIfNecessary == null) {\n        cancelIfNecessary = false;\n      }\n      _ref = this.files.slice();\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n          this.removeFile(file);\n        }\n      }\n      return null;\n    };\n\n    Dropzone.prototype.createThumbnail = function(file, callback) {\n      var fileReader;\n      fileReader = new FileReader;\n      fileReader.onload = (function(_this) {\n        return function() {\n          if (file.type === \"image/svg+xml\") {\n            _this.emit(\"thumbnail\", file, fileReader.result);\n            if (callback != null) {\n              callback();\n            }\n            return;\n          }\n          return _this.createThumbnailFromUrl(file, fileReader.result, callback);\n        };\n      })(this);\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback) {\n      var img;\n      img = document.createElement(\"img\");\n      img.onload = (function(_this) {\n        return function() {\n          var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;\n          file.width = img.width;\n          file.height = img.height;\n          resizeInfo = _this.options.resize.call(_this, file);\n          if (resizeInfo.trgWidth == null) {\n            resizeInfo.trgWidth = resizeInfo.optWidth;\n          }\n          if (resizeInfo.trgHeight == null) {\n            resizeInfo.trgHeight = resizeInfo.optHeight;\n          }\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          canvas.width = resizeInfo.trgWidth;\n          canvas.height = resizeInfo.trgHeight;\n          drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          _this.emit(\"thumbnail\", file, thumbnail);\n          if (callback != null) {\n            return callback();\n          }\n        };\n      })(this);\n      if (callback != null) {\n        img.onerror = callback;\n      }\n      return img.src = imageUrl;\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength, queuedFiles;\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.getUploadingFiles().length;\n      i = processingLength;\n      if (processingLength >= parallelUploads) {\n        return;\n      }\n      queuedFiles = this.getQueuedFiles();\n      if (!(queuedFiles.length > 0)) {\n        return;\n      }\n      if (this.options.uploadMultiple) {\n        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n      } else {\n        while (i < parallelUploads) {\n          if (!queuedFiles.length) {\n            return;\n          }\n          this.processFile(queuedFiles.shift());\n          i++;\n        }\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      return this.processFiles([file]);\n    };\n\n    Dropzone.prototype.processFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.processing = true;\n        file.status = Dropzone.UPLOADING;\n        this.emit(\"processing\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"processingmultiple\", files);\n      }\n      return this.uploadFiles(files);\n    };\n\n    Dropzone.prototype._getFilesWithXhr = function(xhr) {\n      var file, files;\n      return files = (function() {\n        var _i, _len, _ref, _results;\n        _ref = this.files;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          if (file.xhr === xhr) {\n            _results.push(file);\n          }\n        }\n        return _results;\n      }).call(this);\n    };\n\n    Dropzone.prototype.cancelUpload = function(file) {\n      var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;\n      if (file.status === Dropzone.UPLOADING) {\n        groupedFiles = this._getFilesWithXhr(file.xhr);\n        for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {\n          groupedFile = groupedFiles[_i];\n          groupedFile.status = Dropzone.CANCELED;\n        }\n        file.xhr.abort();\n        for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {\n          groupedFile = groupedFiles[_j];\n          this.emit(\"canceled\", groupedFile);\n        }\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", groupedFiles);\n        }\n      } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {\n        file.status = Dropzone.CANCELED;\n        this.emit(\"canceled\", file);\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", [file]);\n        }\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    resolveOption = function() {\n      var args, option;\n      option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      if (typeof option === 'function') {\n        return option.apply(this, args);\n      }\n      return option;\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      return this.uploadFiles([file]);\n    };\n\n    Dropzone.prototype.uploadFiles = function(files) {\n      var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n      xhr = new XMLHttpRequest();\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.xhr = xhr;\n      }\n      method = resolveOption(this.options.method, files);\n      url = resolveOption(this.options.url, files);\n      xhr.open(method, url, true);\n      xhr.withCredentials = !!this.options.withCredentials;\n      response = null;\n      handleError = (function(_this) {\n        return function() {\n          var _j, _len1, _results;\n          _results = [];\n          for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n            file = files[_j];\n            _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\n          }\n          return _results;\n        };\n      })(this);\n      updateProgress = (function(_this) {\n        return function(e) {\n          var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;\n          if (e != null) {\n            progress = 100 * e.loaded / e.total;\n            for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n              file = files[_j];\n              file.upload = {\n                progress: progress,\n                total: e.total,\n                bytesSent: e.loaded\n              };\n            }\n          } else {\n            allFilesFinished = true;\n            progress = 100;\n            for (_k = 0, _len2 = files.length; _k < _len2; _k++) {\n              file = files[_k];\n              if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\n                allFilesFinished = false;\n              }\n              file.upload.progress = progress;\n              file.upload.bytesSent = file.upload.total;\n            }\n            if (allFilesFinished) {\n              return;\n            }\n          }\n          _results = [];\n          for (_l = 0, _len3 = files.length; _l < _len3; _l++) {\n            file = files[_l];\n            _results.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\n          }\n          return _results;\n        };\n      })(this);\n      xhr.onload = (function(_this) {\n        return function(e) {\n          var _ref;\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          if (xhr.readyState !== 4) {\n            return;\n          }\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            try {\n              response = JSON.parse(response);\n            } catch (_error) {\n              e = _error;\n              response = \"Invalid JSON response from server.\";\n            }\n          }\n          updateProgress();\n          if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n            return handleError();\n          } else {\n            return _this._finished(files, response, e);\n          }\n        };\n      })(this);\n      xhr.onerror = (function(_this) {\n        return function() {\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          return handleError();\n        };\n      })(this);\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = updateProgress;\n      headers = {\n        \"Accept\": \"application/json\",\n        \"Cache-Control\": \"no-cache\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      };\n      if (this.options.headers) {\n        extend(headers, this.options.headers);\n      }\n      for (headerName in headers) {\n        headerValue = headers[headerName];\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n        file = files[_j];\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n      if (this.element.tagName === \"FORM\") {\n        _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n          input = _ref2[_k];\n          inputName = input.getAttribute(\"name\");\n          inputType = input.getAttribute(\"type\");\n          if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n            _ref3 = input.options;\n            for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n              option = _ref3[_l];\n              if (option.selected) {\n                formData.append(inputName, option.value);\n              }\n            }\n          } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== \"checkbox\" && _ref4 !== \"radio\") || input.checked) {\n            formData.append(inputName, input.value);\n          }\n        }\n      }\n      for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {\n        formData.append(this._getParamName(i), files[i], files[i].name);\n      }\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype._finished = function(files, responseText, e) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.SUCCESS;\n        this.emit(\"success\", file, responseText, e);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"successmultiple\", files, responseText, e);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    Dropzone.prototype._errorProcessing = function(files, message, xhr) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.ERROR;\n        this.emit(\"error\", file, message, xhr);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"errormultiple\", files, message, xhr);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    return Dropzone;\n\n  })(Emitter);\n\n  Dropzone.version = \"4.0.1\";\n\n  Dropzone.options = {};\n\n  Dropzone.optionsForElement = function(element) {\n    if (element.getAttribute(\"id\")) {\n      return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n    } else {\n      return void 0;\n    }\n  };\n\n  Dropzone.instances = [];\n\n  Dropzone.forElement = function(element) {\n    if (typeof element === \"string\") {\n      element = document.querySelector(element);\n    }\n    if ((element != null ? element.dropzone : void 0) == null) {\n      throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n    }\n    return element.dropzone;\n  };\n\n  Dropzone.autoDiscover = true;\n\n  Dropzone.discover = function() {\n    var checkElements, dropzone, dropzones, _i, _len, _results;\n    if (document.querySelectorAll) {\n      dropzones = document.querySelectorAll(\".dropzone\");\n    } else {\n      dropzones = [];\n      checkElements = function(elements) {\n        var el, _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            _results.push(dropzones.push(el));\n          } else {\n            _results.push(void 0);\n          }\n        }\n        return _results;\n      };\n      checkElements(document.getElementsByTagName(\"div\"));\n      checkElements(document.getElementsByTagName(\"form\"));\n    }\n    _results = [];\n    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n      dropzone = dropzones[_i];\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        _results.push(new Dropzone(dropzone));\n      } else {\n        _results.push(void 0);\n      }\n    }\n    return _results;\n  };\n\n  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n  Dropzone.isBrowserSupported = function() {\n    var capableBrowser, regex, _i, _len, _ref;\n    capableBrowser = true;\n    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n      if (!(\"classList\" in document.createElement(\"a\"))) {\n        capableBrowser = false;\n      } else {\n        _ref = Dropzone.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      }\n    } else {\n      capableBrowser = false;\n    }\n    return capableBrowser;\n  };\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match.charAt(1).toUpperCase();\n    });\n  };\n\n  Dropzone.createElement = function(string) {\n    var div;\n    div = document.createElement(\"div\");\n    div.innerHTML = string;\n    return div.childNodes[0];\n  };\n\n  Dropzone.elementInside = function(element, container) {\n    if (element === container) {\n      return true;\n    }\n    while (element = element.parentNode) {\n      if (element === container) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  Dropzone.getElement = function(el, name) {\n    var element;\n    if (typeof el === \"string\") {\n      element = document.querySelector(el);\n    } else if (el.nodeType != null) {\n      element = el;\n    }\n    if (element == null) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n    }\n    return element;\n  };\n\n  Dropzone.getElements = function(els, name) {\n    var e, el, elements, _i, _j, _len, _len1, _ref;\n    if (els instanceof Array) {\n      elements = [];\n      try {\n        for (_i = 0, _len = els.length; _i < _len; _i++) {\n          el = els[_i];\n          elements.push(this.getElement(el, name));\n        }\n      } catch (_error) {\n        e = _error;\n        elements = null;\n      }\n    } else if (typeof els === \"string\") {\n      elements = [];\n      _ref = document.querySelectorAll(els);\n      for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n        el = _ref[_j];\n        elements.push(el);\n      }\n    } else if (els.nodeType != null) {\n      elements = [els];\n    }\n    if (!((elements != null) && elements.length)) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n    }\n    return elements;\n  };\n\n  Dropzone.confirm = function(question, accepted, rejected) {\n    if (window.confirm(question)) {\n      return accepted();\n    } else if (rejected != null) {\n      return rejected();\n    }\n  };\n\n  Dropzone.isValidFile = function(file, acceptedFiles) {\n    var baseMimeType, mimeType, validType, _i, _len;\n    if (!acceptedFiles) {\n      return true;\n    }\n    acceptedFiles = acceptedFiles.split(\",\");\n    mimeType = file.type;\n    baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n    for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {\n      validType = acceptedFiles[_i];\n      validType = validType.trim();\n      if (validType.charAt(0) === \".\") {\n        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n          return true;\n        }\n      } else if (/\\/\\*$/.test(validType)) {\n        if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n          return true;\n        }\n      } else {\n        if (mimeType === validType) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n\n  if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n    jQuery.fn.dropzone = function(options) {\n      return this.each(function() {\n        return new Dropzone(this, options);\n      });\n    };\n  }\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n  Dropzone.ADDED = \"added\";\n\n  Dropzone.QUEUED = \"queued\";\n\n  Dropzone.ACCEPTED = Dropzone.QUEUED;\n\n  Dropzone.UPLOADING = \"uploading\";\n\n  Dropzone.PROCESSING = Dropzone.UPLOADING;\n\n  Dropzone.CANCELED = \"canceled\";\n\n  Dropzone.ERROR = \"error\";\n\n  Dropzone.SUCCESS = \"success\";\n\n\n  /*\n  \n  Bugfix for iOS 6 and 7\n  Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n  based on the work of https://github.com/stomita/ios-imagefile-megapixel\n   */\n\n  detectVerticalSquash = function(img) {\n    var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\n    iw = img.naturalWidth;\n    ih = img.naturalHeight;\n    canvas = document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = ih;\n    ctx = canvas.getContext(\"2d\");\n    ctx.drawImage(img, 0, 0);\n    data = ctx.getImageData(0, 0, 1, ih).data;\n    sy = 0;\n    ey = ih;\n    py = ih;\n    while (py > sy) {\n      alpha = data[(py - 1) * 4 + 3];\n      if (alpha === 0) {\n        ey = py;\n      } else {\n        sy = py;\n      }\n      py = (ey + sy) >> 1;\n    }\n    ratio = py / ih;\n    if (ratio === 0) {\n      return 1;\n    } else {\n      return ratio;\n    }\n  };\n\n  drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n    var vertSquashRatio;\n    vertSquashRatio = detectVerticalSquash(img);\n    return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n  };\n\n\n  /*\n   * contentloaded.js\n   *\n   * Author: Diego Perini (diego.perini at gmail.com)\n   * Summary: cross-browser wrapper for DOMContentLoaded\n   * Updated: 20101020\n   * License: MIT\n   * Version: 1.2\n   *\n   * URL:\n   * http://javascript.nwbox.com/ContentLoaded/\n   * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n   */\n\n  contentLoaded = function(win, fn) {\n    var add, doc, done, init, poll, pre, rem, root, top;\n    done = false;\n    top = true;\n    doc = win.document;\n    root = doc.documentElement;\n    add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n    rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n    pre = (doc.addEventListener ? \"\" : \"on\");\n    init = function(e) {\n      if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n        return;\n      }\n      (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n      if (!done && (done = true)) {\n        return fn.call(win, e.type || e);\n      }\n    };\n    poll = function() {\n      var e;\n      try {\n        root.doScroll(\"left\");\n      } catch (_error) {\n        e = _error;\n        setTimeout(poll, 50);\n        return;\n      }\n      return init(\"poll\");\n    };\n    if (doc.readyState !== \"complete\") {\n      if (doc.createEventObject && root.doScroll) {\n        try {\n          top = !win.frameElement;\n        } catch (_error) {}\n        if (top) {\n          poll();\n        }\n      }\n      doc[add](pre + \"DOMContentLoaded\", init, false);\n      doc[add](pre + \"readystatechange\", init, false);\n      return win[add](pre + \"load\", init, false);\n    }\n  };\n\n  Dropzone._autoDiscoverFunction = function() {\n    if (Dropzone.autoDiscover) {\n      return Dropzone.discover();\n    }\n  };\n\n  contentLoaded(window, Dropzone._autoDiscoverFunction);\n\n}).call(this);\n\n    return module.exports;\n}));"
  },
  {
    "path": "src/Assets/src/vendor/dropzone/dropzone.css",
    "content": "/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno <m@tias.me>\n */\n@-webkit-keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@-moz-keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@keyframes passing-through {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30%, 70% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); }\n  100% {\n    opacity: 0;\n    -webkit-transform: translateY(-40px);\n    -moz-transform: translateY(-40px);\n    -ms-transform: translateY(-40px);\n    -o-transform: translateY(-40px);\n    transform: translateY(-40px); } }\n@-webkit-keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@-moz-keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@keyframes slide-in {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(40px);\n    -moz-transform: translateY(40px);\n    -ms-transform: translateY(40px);\n    -o-transform: translateY(40px);\n    transform: translateY(40px); }\n  30% {\n    opacity: 1;\n    -webkit-transform: translateY(0px);\n    -moz-transform: translateY(0px);\n    -ms-transform: translateY(0px);\n    -o-transform: translateY(0px);\n    transform: translateY(0px); } }\n@-webkit-keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n@-moz-keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n@keyframes pulse {\n  0% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); }\n  10% {\n    -webkit-transform: scale(1.1);\n    -moz-transform: scale(1.1);\n    -ms-transform: scale(1.1);\n    -o-transform: scale(1.1);\n    transform: scale(1.1); }\n  20% {\n    -webkit-transform: scale(1);\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    transform: scale(1); } }\n.dropzone, .dropzone * {\n  box-sizing: border-box; }\n\n.dropzone {\n  min-height: 150px;\n  border: 2px solid rgba(0, 0, 0, 0.3);\n  background: white;\n  padding: 20px 20px; }\n  .dropzone.dz-clickable {\n    cursor: pointer; }\n    .dropzone.dz-clickable * {\n      cursor: default; }\n    .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {\n      cursor: pointer; }\n  .dropzone.dz-started .dz-message {\n    display: none; }\n  .dropzone.dz-drag-hover {\n    border-style: solid; }\n    .dropzone.dz-drag-hover .dz-message {\n      opacity: 0.5; }\n  .dropzone .dz-message {\n    text-align: center;\n    margin: 2em 0; }\n  .dropzone .dz-preview {\n    position: relative;\n    display: inline-block;\n    vertical-align: top;\n    margin: 16px;\n    min-height: 100px; }\n    .dropzone .dz-preview:hover {\n      z-index: 1000; }\n      .dropzone .dz-preview:hover .dz-details {\n        opacity: 1; }\n    .dropzone .dz-preview.dz-file-preview .dz-image {\n      border-radius: 20px;\n      background: #999;\n      background: linear-gradient(to bottom, #eee, #ddd); }\n    .dropzone .dz-preview.dz-file-preview .dz-details {\n      opacity: 1; }\n    .dropzone .dz-preview.dz-image-preview {\n      background: white; }\n      .dropzone .dz-preview.dz-image-preview .dz-details {\n        -webkit-transition: opacity 0.2s linear;\n        -moz-transition: opacity 0.2s linear;\n        -ms-transition: opacity 0.2s linear;\n        -o-transition: opacity 0.2s linear;\n        transition: opacity 0.2s linear; }\n    .dropzone .dz-preview .dz-remove {\n      font-size: 14px;\n      text-align: center;\n      display: block;\n      cursor: pointer;\n      border: none; }\n      .dropzone .dz-preview .dz-remove:hover {\n        text-decoration: underline; }\n    .dropzone .dz-preview:hover .dz-details {\n      opacity: 1; }\n    .dropzone .dz-preview .dz-details {\n      z-index: 20;\n      position: absolute;\n      top: 0;\n      left: 0;\n      opacity: 0;\n      font-size: 13px;\n      min-width: 100%;\n      max-width: 100%;\n      padding: 2em 1em;\n      text-align: center;\n      color: rgba(0, 0, 0, 0.9);\n      line-height: 150%; }\n      .dropzone .dz-preview .dz-details .dz-size {\n        margin-bottom: 1em;\n        font-size: 16px; }\n      .dropzone .dz-preview .dz-details .dz-filename {\n        white-space: nowrap; }\n        .dropzone .dz-preview .dz-details .dz-filename:hover span {\n          border: 1px solid rgba(200, 200, 200, 0.8);\n          background-color: rgba(255, 255, 255, 0.8); }\n        .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\n          overflow: hidden;\n          text-overflow: ellipsis; }\n          .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\n            border: 1px solid transparent; }\n      .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {\n        background-color: rgba(255, 255, 255, 0.4);\n        padding: 0 0.4em;\n        border-radius: 3px; }\n    .dropzone .dz-preview:hover .dz-image img {\n      -webkit-transform: scale(1.05, 1.05);\n      -moz-transform: scale(1.05, 1.05);\n      -ms-transform: scale(1.05, 1.05);\n      -o-transform: scale(1.05, 1.05);\n      transform: scale(1.05, 1.05);\n      -webkit-filter: blur(8px);\n      filter: blur(8px); }\n    .dropzone .dz-preview .dz-image {\n      border-radius: 20px;\n      overflow: hidden;\n      width: 120px;\n      height: 120px;\n      position: relative;\n      display: block;\n      z-index: 10; }\n      .dropzone .dz-preview .dz-image img {\n        display: block; }\n    .dropzone .dz-preview.dz-success .dz-success-mark {\n      -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n      animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }\n    .dropzone .dz-preview.dz-error .dz-error-mark {\n      opacity: 1;\n      -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n      animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }\n    .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {\n      pointer-events: none;\n      opacity: 0;\n      z-index: 500;\n      position: absolute;\n      display: block;\n      top: 50%;\n      left: 50%;\n      margin-left: -27px;\n      margin-top: -27px; }\n      .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {\n        display: block;\n        width: 54px;\n        height: 54px; }\n    .dropzone .dz-preview.dz-processing .dz-progress {\n      opacity: 1;\n      -webkit-transition: all 0.2s linear;\n      -moz-transition: all 0.2s linear;\n      -ms-transition: all 0.2s linear;\n      -o-transition: all 0.2s linear;\n      transition: all 0.2s linear; }\n    .dropzone .dz-preview.dz-complete .dz-progress {\n      opacity: 0;\n      -webkit-transition: opacity 0.4s ease-in;\n      -moz-transition: opacity 0.4s ease-in;\n      -ms-transition: opacity 0.4s ease-in;\n      -o-transition: opacity 0.4s ease-in;\n      transition: opacity 0.4s ease-in; }\n    .dropzone .dz-preview:not(.dz-processing) .dz-progress {\n      -webkit-animation: pulse 6s ease infinite;\n      -moz-animation: pulse 6s ease infinite;\n      -ms-animation: pulse 6s ease infinite;\n      -o-animation: pulse 6s ease infinite;\n      animation: pulse 6s ease infinite; }\n    .dropzone .dz-preview .dz-progress {\n      opacity: 1;\n      z-index: 1000;\n      pointer-events: none;\n      position: absolute;\n      height: 16px;\n      left: 50%;\n      top: 50%;\n      margin-top: -8px;\n      width: 80px;\n      margin-left: -40px;\n      background: rgba(255, 255, 255, 0.9);\n      -webkit-transform: scale(1);\n      border-radius: 8px;\n      overflow: hidden; }\n      .dropzone .dz-preview .dz-progress .dz-upload {\n        background: #333;\n        background: linear-gradient(to bottom, #666, #444);\n        position: absolute;\n        top: 0;\n        left: 0;\n        bottom: 0;\n        width: 0;\n        -webkit-transition: width 300ms ease-in-out;\n        -moz-transition: width 300ms ease-in-out;\n        -ms-transition: width 300ms ease-in-out;\n        -o-transition: width 300ms ease-in-out;\n        transition: width 300ms ease-in-out; }\n    .dropzone .dz-preview.dz-error .dz-error-message {\n      display: block; }\n    .dropzone .dz-preview.dz-error:hover .dz-error-message {\n      opacity: 1;\n      pointer-events: auto; }\n    .dropzone .dz-preview .dz-error-message {\n      pointer-events: none;\n      z-index: 1000;\n      position: absolute;\n      display: block;\n      display: none;\n      opacity: 0;\n      -webkit-transition: opacity 0.3s ease;\n      -moz-transition: opacity 0.3s ease;\n      -ms-transition: opacity 0.3s ease;\n      -o-transition: opacity 0.3s ease;\n      transition: opacity 0.3s ease;\n      border-radius: 8px;\n      font-size: 13px;\n      top: 130px;\n      left: -10px;\n      width: 140px;\n      background: #be2626;\n      background: linear-gradient(to bottom, #be2626, #a92222);\n      padding: 0.5em 1.2em;\n      color: white; }\n      .dropzone .dz-preview .dz-error-message:after {\n        content: '';\n        position: absolute;\n        top: -6px;\n        left: 64px;\n        width: 0;\n        height: 0;\n        border-left: 6px solid transparent;\n        border-right: 6px solid transparent;\n        border-bottom: 6px solid #be2626; }\n"
  },
  {
    "path": "src/Assets/src/vendor/dropzone/dropzone.js",
    "content": "\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n(function() {\n  var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,\n    __slice = [].slice,\n    __hasProp = {}.hasOwnProperty,\n    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n  noop = function() {};\n\n  Emitter = (function() {\n    function Emitter() {}\n\n    Emitter.prototype.addEventListener = Emitter.prototype.on;\n\n    Emitter.prototype.on = function(event, fn) {\n      this._callbacks = this._callbacks || {};\n      if (!this._callbacks[event]) {\n        this._callbacks[event] = [];\n      }\n      this._callbacks[event].push(fn);\n      return this;\n    };\n\n    Emitter.prototype.emit = function() {\n      var args, callback, callbacks, event, _i, _len;\n      event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      this._callbacks = this._callbacks || {};\n      callbacks = this._callbacks[event];\n      if (callbacks) {\n        for (_i = 0, _len = callbacks.length; _i < _len; _i++) {\n          callback = callbacks[_i];\n          callback.apply(this, args);\n        }\n      }\n      return this;\n    };\n\n    Emitter.prototype.removeListener = Emitter.prototype.off;\n\n    Emitter.prototype.removeAllListeners = Emitter.prototype.off;\n\n    Emitter.prototype.removeEventListener = Emitter.prototype.off;\n\n    Emitter.prototype.off = function(event, fn) {\n      var callback, callbacks, i, _i, _len;\n      if (!this._callbacks || arguments.length === 0) {\n        this._callbacks = {};\n        return this;\n      }\n      callbacks = this._callbacks[event];\n      if (!callbacks) {\n        return this;\n      }\n      if (arguments.length === 1) {\n        delete this._callbacks[event];\n        return this;\n      }\n      for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {\n        callback = callbacks[i];\n        if (callback === fn) {\n          callbacks.splice(i, 1);\n          break;\n        }\n      }\n      return this;\n    };\n\n    return Emitter;\n\n  })();\n\n  Dropzone = (function(_super) {\n    var extend, resolveOption;\n\n    __extends(Dropzone, _super);\n\n    Dropzone.prototype.Emitter = Emitter;\n\n\n    /*\n    This is a list of all available events you can register on a dropzone object.\n    \n    You can register an event handler like this:\n    \n        dropzone.on(\"dragEnter\", function() { });\n     */\n\n    Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n    Dropzone.prototype.defaultOptions = {\n      url: null,\n      method: \"post\",\n      withCredentials: false,\n      parallelUploads: 2,\n      uploadMultiple: false,\n      maxFilesize: 256,\n      paramName: \"file\",\n      createImageThumbnails: true,\n      maxThumbnailFilesize: 10,\n      thumbnailWidth: 120,\n      thumbnailHeight: 120,\n      filesizeBase: 1000,\n      maxFiles: null,\n      filesizeBase: 1000,\n      params: {},\n      clickable: true,\n      ignoreHiddenFiles: true,\n      acceptedFiles: null,\n      acceptedMimeTypes: null,\n      autoProcessQueue: true,\n      autoQueue: true,\n      addRemoveLinks: false,\n      previewsContainer: null,\n      capture: null,\n      dictDefaultMessage: \"Drop files here to upload\",\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n      dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n      dictInvalidFileType: \"You can't upload files of this type.\",\n      dictResponseError: \"Server responded with {{statusCode}} code.\",\n      dictCancelUpload: \"Cancel upload\",\n      dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n      dictRemoveFile: \"Remove file\",\n      dictRemoveFileConfirmation: null,\n      dictMaxFilesExceeded: \"You can not upload any more files.\",\n      accept: function(file, done) {\n        return done();\n      },\n      init: function() {\n        return noop;\n      },\n      forceFallback: false,\n      fallback: function() {\n        var child, messageElement, span, _i, _len, _ref;\n        this.element.className = \"\" + this.element.className + \" dz-browser-not-supported\";\n        _ref = this.element.getElementsByTagName(\"div\");\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          child = _ref[_i];\n          if (/(^| )dz-message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"dz-message\";\n            continue;\n          }\n        }\n        if (!messageElement) {\n          messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n        span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          span.textContent = this.options.dictFallbackMessage;\n        }\n        return this.element.appendChild(this.getFallbackForm());\n      },\n      resize: function(file) {\n        var info, srcRatio, trgRatio;\n        info = {\n          srcX: 0,\n          srcY: 0,\n          srcWidth: file.width,\n          srcHeight: file.height\n        };\n        srcRatio = file.width / file.height;\n        info.optWidth = this.options.thumbnailWidth;\n        info.optHeight = this.options.thumbnailHeight;\n        if ((info.optWidth == null) && (info.optHeight == null)) {\n          info.optWidth = info.srcWidth;\n          info.optHeight = info.srcHeight;\n        } else if (info.optWidth == null) {\n          info.optWidth = srcRatio * info.optHeight;\n        } else if (info.optHeight == null) {\n          info.optHeight = (1 / srcRatio) * info.optWidth;\n        }\n        trgRatio = info.optWidth / info.optHeight;\n        if (file.height < info.optHeight || file.width < info.optWidth) {\n          info.trgHeight = info.srcHeight;\n          info.trgWidth = info.srcWidth;\n        } else {\n          if (srcRatio > trgRatio) {\n            info.srcHeight = file.height;\n            info.srcWidth = info.srcHeight * trgRatio;\n          } else {\n            info.srcWidth = file.width;\n            info.srcHeight = info.srcWidth / trgRatio;\n          }\n        }\n        info.srcX = (file.width - info.srcWidth) / 2;\n        info.srcY = (file.height - info.srcHeight) / 2;\n        return info;\n      },\n\n      /*\n      Those functions register themselves to the events on init and handle all\n      the user interface specific stuff. Overwriting them won't break the upload\n      but can break the way it's displayed.\n      You can overwrite them if you don't like the default behavior. If you just\n      want to add an additional event handler, register it on the dropzone object\n      and don't overwrite those options.\n       */\n      drop: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragstart: noop,\n      dragend: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragenter: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragover: function(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragleave: function(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      paste: noop,\n      reset: function() {\n        return this.element.classList.remove(\"dz-started\");\n      },\n      addedfile: function(file) {\n        var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;\n        if (this.element === this.previewsContainer) {\n          this.element.classList.add(\"dz-started\");\n        }\n        if (this.previewsContainer) {\n          file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n          file.previewTemplate = file.previewElement;\n          this.previewsContainer.appendChild(file.previewElement);\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            node.textContent = file.name;\n          }\n          _ref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\n          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n            node = _ref1[_j];\n            node.innerHTML = this.filesize(file.size);\n          }\n          if (this.options.addRemoveLinks) {\n            file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n            file.previewElement.appendChild(file._removeLink);\n          }\n          removeFileEvent = (function(_this) {\n            return function(e) {\n              e.preventDefault();\n              e.stopPropagation();\n              if (file.status === Dropzone.UPLOADING) {\n                return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {\n                  return _this.removeFile(file);\n                });\n              } else {\n                if (_this.options.dictRemoveFileConfirmation) {\n                  return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {\n                    return _this.removeFile(file);\n                  });\n                } else {\n                  return _this.removeFile(file);\n                }\n              }\n            };\n          })(this);\n          _ref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\n          _results = [];\n          for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n            removeLink = _ref2[_k];\n            _results.push(removeLink.addEventListener(\"click\", removeFileEvent));\n          }\n          return _results;\n        }\n      },\n      removedfile: function(file) {\n        var _ref;\n        if (file.previewElement) {\n          if ((_ref = file.previewElement) != null) {\n            _ref.parentNode.removeChild(file.previewElement);\n          }\n        }\n        return this._updateMaxFilesReachedClass();\n      },\n      thumbnail: function(file, dataUrl) {\n        var thumbnailElement, _i, _len, _ref;\n        if (file.previewElement) {\n          file.previewElement.classList.remove(\"dz-file-preview\");\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            thumbnailElement = _ref[_i];\n            thumbnailElement.alt = file.name;\n            thumbnailElement.src = dataUrl;\n          }\n          return setTimeout(((function(_this) {\n            return function() {\n              return file.previewElement.classList.add(\"dz-image-preview\");\n            };\n          })(this)), 1);\n        }\n      },\n      error: function(file, message) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-error\");\n          if (typeof message !== \"String\" && message.error) {\n            message = message.error;\n          }\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            _results.push(node.textContent = message);\n          }\n          return _results;\n        }\n      },\n      errormultiple: noop,\n      processing: function(file) {\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-processing\");\n          if (file._removeLink) {\n            return file._removeLink.textContent = this.options.dictCancelUpload;\n          }\n        }\n      },\n      processingmultiple: noop,\n      uploadprogress: function(file, progress, bytesSent) {\n        var node, _i, _len, _ref, _results;\n        if (file.previewElement) {\n          _ref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n          _results = [];\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            node = _ref[_i];\n            if (node.nodeName === 'PROGRESS') {\n              _results.push(node.value = progress);\n            } else {\n              _results.push(node.style.width = \"\" + progress + \"%\");\n            }\n          }\n          return _results;\n        }\n      },\n      totaluploadprogress: noop,\n      sending: noop,\n      sendingmultiple: noop,\n      success: function(file) {\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-success\");\n        }\n      },\n      successmultiple: noop,\n      canceled: function(file) {\n        return this.emit(\"error\", file, \"Upload canceled.\");\n      },\n      canceledmultiple: noop,\n      complete: function(file) {\n        if (file._removeLink) {\n          file._removeLink.textContent = this.options.dictRemoveFile;\n        }\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-complete\");\n        }\n      },\n      completemultiple: noop,\n      maxfilesexceeded: noop,\n      maxfilesreached: noop,\n      queuecomplete: noop,\n      previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n  <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n  <div class=\\\"dz-details\\\">\\n    <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n    <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n  </div>\\n  <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n  <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n  <div class=\\\"dz-success-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Check</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n      </g>\\n    </svg>\\n  </div>\\n  <div class=\\\"dz-error-mark\\\">\\n    <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n      <title>Error</title>\\n      <defs></defs>\\n      <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n        <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n          <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n        </g>\\n      </g>\\n    </svg>\\n  </div>\\n</div>\"\n    };\n\n    extend = function() {\n      var key, object, objects, target, val, _i, _len;\n      target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      for (_i = 0, _len = objects.length; _i < _len; _i++) {\n        object = objects[_i];\n        for (key in object) {\n          val = object[key];\n          target[key] = val;\n        }\n      }\n      return target;\n    };\n\n    function Dropzone(element, options) {\n      var elementOptions, fallback, _ref;\n      this.element = element;\n      this.version = Dropzone.version;\n      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n      this.clickableElements = [];\n      this.listeners = [];\n      this.files = [];\n      if (typeof this.element === \"string\") {\n        this.element = document.querySelector(this.element);\n      }\n      if (!(this.element && (this.element.nodeType != null))) {\n        throw new Error(\"Invalid dropzone element.\");\n      }\n      if (this.element.dropzone) {\n        throw new Error(\"Dropzone already attached.\");\n      }\n      Dropzone.instances.push(this);\n      this.element.dropzone = this;\n      elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};\n      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n      if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n        return this.options.fallback.call(this);\n      }\n      if (this.options.url == null) {\n        this.options.url = this.element.getAttribute(\"action\");\n      }\n      if (!this.options.url) {\n        throw new Error(\"No URL provided.\");\n      }\n      if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n        throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n      }\n      if (this.options.acceptedMimeTypes) {\n        this.options.acceptedFiles = this.options.acceptedMimeTypes;\n        delete this.options.acceptedMimeTypes;\n      }\n      this.options.method = this.options.method.toUpperCase();\n      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n        fallback.parentNode.removeChild(fallback);\n      }\n      if (this.options.previewsContainer !== false) {\n        if (this.options.previewsContainer) {\n          this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n        } else {\n          this.previewsContainer = this.element;\n        }\n      }\n      if (this.options.clickable) {\n        if (this.options.clickable === true) {\n          this.clickableElements = [this.element];\n        } else {\n          this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n        }\n      }\n      this.init();\n    }\n\n    Dropzone.prototype.getAcceptedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getRejectedFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (!file.accepted) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getFilesWithStatus = function(status) {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === status) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.getQueuedFiles = function() {\n      return this.getFilesWithStatus(Dropzone.QUEUED);\n    };\n\n    Dropzone.prototype.getUploadingFiles = function() {\n      return this.getFilesWithStatus(Dropzone.UPLOADING);\n    };\n\n    Dropzone.prototype.getActiveFiles = function() {\n      var file, _i, _len, _ref, _results;\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\n          _results.push(file);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.init = function() {\n      var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;\n      if (this.element.tagName === \"form\") {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      }\n      if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n        this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n      }\n      if (this.clickableElements.length) {\n        setupHiddenFileInput = (function(_this) {\n          return function() {\n            if (_this.hiddenFileInput) {\n              document.body.removeChild(_this.hiddenFileInput);\n            }\n            _this.hiddenFileInput = document.createElement(\"input\");\n            _this.hiddenFileInput.setAttribute(\"type\", \"file\");\n            if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\n              _this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n            }\n            _this.hiddenFileInput.className = \"dz-hidden-input\";\n            if (_this.options.acceptedFiles != null) {\n              _this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\n            }\n            if (_this.options.capture != null) {\n              _this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\n            }\n            _this.hiddenFileInput.style.visibility = \"hidden\";\n            _this.hiddenFileInput.style.position = \"absolute\";\n            _this.hiddenFileInput.style.top = \"0\";\n            _this.hiddenFileInput.style.left = \"0\";\n            _this.hiddenFileInput.style.height = \"0\";\n            _this.hiddenFileInput.style.width = \"0\";\n            document.body.appendChild(_this.hiddenFileInput);\n            return _this.hiddenFileInput.addEventListener(\"change\", function() {\n              var file, files, _i, _len;\n              files = _this.hiddenFileInput.files;\n              if (files.length) {\n                for (_i = 0, _len = files.length; _i < _len; _i++) {\n                  file = files[_i];\n                  _this.addFile(file);\n                }\n              }\n              return setupHiddenFileInput();\n            });\n          };\n        })(this);\n        setupHiddenFileInput();\n      }\n      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n      _ref1 = this.events;\n      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n        eventName = _ref1[_i];\n        this.on(eventName, this.options[eventName]);\n      }\n      this.on(\"uploadprogress\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"removedfile\", (function(_this) {\n        return function() {\n          return _this.updateTotalUploadProgress();\n        };\n      })(this));\n      this.on(\"canceled\", (function(_this) {\n        return function(file) {\n          return _this.emit(\"complete\", file);\n        };\n      })(this));\n      this.on(\"complete\", (function(_this) {\n        return function(file) {\n          if (_this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\n            return setTimeout((function() {\n              return _this.emit(\"queuecomplete\");\n            }), 0);\n          }\n        };\n      })(this));\n      noPropagation = function(e) {\n        e.stopPropagation();\n        if (e.preventDefault) {\n          return e.preventDefault();\n        } else {\n          return e.returnValue = false;\n        }\n      };\n      this.listeners = [\n        {\n          element: this.element,\n          events: {\n            \"dragstart\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragstart\", e);\n              };\n            })(this),\n            \"dragenter\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.emit(\"dragenter\", e);\n              };\n            })(this),\n            \"dragover\": (function(_this) {\n              return function(e) {\n                var efct;\n                try {\n                  efct = e.dataTransfer.effectAllowed;\n                } catch (_error) {}\n                e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n                noPropagation(e);\n                return _this.emit(\"dragover\", e);\n              };\n            })(this),\n            \"dragleave\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragleave\", e);\n              };\n            })(this),\n            \"drop\": (function(_this) {\n              return function(e) {\n                noPropagation(e);\n                return _this.drop(e);\n              };\n            })(this),\n            \"dragend\": (function(_this) {\n              return function(e) {\n                return _this.emit(\"dragend\", e);\n              };\n            })(this)\n          }\n        }\n      ];\n      this.clickableElements.forEach((function(_this) {\n        return function(clickableElement) {\n          return _this.listeners.push({\n            element: clickableElement,\n            events: {\n              \"click\": function(evt) {\n                if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\n                  return _this.hiddenFileInput.click();\n                }\n              }\n            }\n          });\n        };\n      })(this));\n      this.enable();\n      return this.options.init.call(this);\n    };\n\n    Dropzone.prototype.destroy = function() {\n      var _ref;\n      this.disable();\n      this.removeAllFiles(true);\n      if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {\n        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        this.hiddenFileInput = null;\n      }\n      delete this.element.dropzone;\n      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n    };\n\n    Dropzone.prototype.updateTotalUploadProgress = function() {\n      var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;\n      totalBytesSent = 0;\n      totalBytes = 0;\n      activeFiles = this.getActiveFiles();\n      if (activeFiles.length) {\n        _ref = this.getActiveFiles();\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          totalBytesSent += file.upload.bytesSent;\n          totalBytes += file.upload.total;\n        }\n        totalUploadProgress = 100 * totalBytesSent / totalBytes;\n      } else {\n        totalUploadProgress = 100;\n      }\n      return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n    };\n\n    Dropzone.prototype._getParamName = function(n) {\n      if (typeof this.options.paramName === \"function\") {\n        return this.options.paramName(n);\n      } else {\n        return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n      }\n    };\n\n    Dropzone.prototype.getFallbackForm = function() {\n      var existingFallback, fields, fieldsString, form;\n      if (existingFallback = this.getExistingFallback()) {\n        return existingFallback;\n      }\n      fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n      if (this.options.dictFallbackText) {\n        fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n      }\n      fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + (this._getParamName(0)) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : void 0) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n      fields = Dropzone.createElement(fieldsString);\n      if (this.element.tagName !== \"FORM\") {\n        form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n        form.appendChild(fields);\n      } else {\n        this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n        this.element.setAttribute(\"method\", this.options.method);\n      }\n      return form != null ? form : fields;\n    };\n\n    Dropzone.prototype.getExistingFallback = function() {\n      var fallback, getFallback, tagName, _i, _len, _ref;\n      getFallback = function(elements) {\n        var el, _i, _len;\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )fallback($| )/.test(el.className)) {\n            return el;\n          }\n        }\n      };\n      _ref = [\"div\", \"form\"];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        tagName = _ref[_i];\n        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n          return fallback;\n        }\n      }\n    };\n\n    Dropzone.prototype.setupEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.removeEventListeners = function() {\n      var elementListeners, event, listener, _i, _len, _ref, _results;\n      _ref = this.listeners;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        elementListeners = _ref[_i];\n        _results.push((function() {\n          var _ref1, _results1;\n          _ref1 = elementListeners.events;\n          _results1 = [];\n          for (event in _ref1) {\n            listener = _ref1[event];\n            _results1.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n          return _results1;\n        })());\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.disable = function() {\n      var file, _i, _len, _ref, _results;\n      this.clickableElements.forEach(function(element) {\n        return element.classList.remove(\"dz-clickable\");\n      });\n      this.removeEventListeners();\n      _ref = this.files;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        _results.push(this.cancelUpload(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype.enable = function() {\n      this.clickableElements.forEach(function(element) {\n        return element.classList.add(\"dz-clickable\");\n      });\n      return this.setupEventListeners();\n    };\n\n    Dropzone.prototype.filesize = function(size) {\n      var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;\n      units = ['TB', 'GB', 'MB', 'KB', 'b'];\n      selectedSize = selectedUnit = null;\n      for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {\n        unit = units[i];\n        cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n      selectedSize = Math.round(10 * selectedSize) / 10;\n      return \"<strong>\" + selectedSize + \"</strong> \" + selectedUnit;\n    };\n\n    Dropzone.prototype._updateMaxFilesReachedClass = function() {\n      if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        if (this.getAcceptedFiles().length === this.options.maxFiles) {\n          this.emit('maxfilesreached', this.files);\n        }\n        return this.element.classList.add(\"dz-max-files-reached\");\n      } else {\n        return this.element.classList.remove(\"dz-max-files-reached\");\n      }\n    };\n\n    Dropzone.prototype.drop = function(e) {\n      var files, items;\n      if (!e.dataTransfer) {\n        return;\n      }\n      this.emit(\"drop\", e);\n      files = e.dataTransfer.files;\n      if (files.length) {\n        items = e.dataTransfer.items;\n        if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n          this._addFilesFromItems(items);\n        } else {\n          this.handleFiles(files);\n        }\n      }\n    };\n\n    Dropzone.prototype.paste = function(e) {\n      var items, _ref;\n      if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {\n        return;\n      }\n      this.emit(\"paste\", e);\n      items = e.clipboardData.items;\n      if (items.length) {\n        return this._addFilesFromItems(items);\n      }\n    };\n\n    Dropzone.prototype.handleFiles = function(files) {\n      var file, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        _results.push(this.addFile(file));\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromItems = function(items) {\n      var entry, item, _i, _len, _results;\n      _results = [];\n      for (_i = 0, _len = items.length; _i < _len; _i++) {\n        item = items[_i];\n        if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n          if (entry.isFile) {\n            _results.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            _results.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            _results.push(void 0);\n          }\n        } else if (item.getAsFile != null) {\n          if ((item.kind == null) || item.kind === \"file\") {\n            _results.push(this.addFile(item.getAsFile()));\n          } else {\n            _results.push(void 0);\n          }\n        } else {\n          _results.push(void 0);\n        }\n      }\n      return _results;\n    };\n\n    Dropzone.prototype._addFilesFromDirectory = function(directory, path) {\n      var dirReader, entriesReader;\n      dirReader = directory.createReader();\n      entriesReader = (function(_this) {\n        return function(entries) {\n          var entry, _i, _len;\n          for (_i = 0, _len = entries.length; _i < _len; _i++) {\n            entry = entries[_i];\n            if (entry.isFile) {\n              entry.file(function(file) {\n                if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n                  return;\n                }\n                file.fullPath = \"\" + path + \"/\" + file.name;\n                return _this.addFile(file);\n              });\n            } else if (entry.isDirectory) {\n              _this._addFilesFromDirectory(entry, \"\" + path + \"/\" + entry.name);\n            }\n          }\n        };\n      })(this);\n      return dirReader.readEntries(entriesReader, function(error) {\n        return typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\n      });\n    };\n\n    Dropzone.prototype.accept = function(file, done) {\n      if (file.size > this.options.maxFilesize * 1024 * 1024) {\n        return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n        return done(this.options.dictInvalidFileType);\n      } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n        done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n        return this.emit(\"maxfilesexceeded\", file);\n      } else {\n        return this.options.accept.call(this, file, done);\n      }\n    };\n\n    Dropzone.prototype.addFile = function(file) {\n      file.upload = {\n        progress: 0,\n        total: file.size,\n        bytesSent: 0\n      };\n      this.files.push(file);\n      file.status = Dropzone.ADDED;\n      this.emit(\"addedfile\", file);\n      this._enqueueThumbnail(file);\n      return this.accept(file, (function(_this) {\n        return function(error) {\n          if (error) {\n            file.accepted = false;\n            _this._errorProcessing([file], error);\n          } else {\n            file.accepted = true;\n            if (_this.options.autoQueue) {\n              _this.enqueueFile(file);\n            }\n          }\n          return _this._updateMaxFilesReachedClass();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.enqueueFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        this.enqueueFile(file);\n      }\n      return null;\n    };\n\n    Dropzone.prototype.enqueueFile = function(file) {\n      if (file.status === Dropzone.ADDED && file.accepted === true) {\n        file.status = Dropzone.QUEUED;\n        if (this.options.autoProcessQueue) {\n          return setTimeout(((function(_this) {\n            return function() {\n              return _this.processQueue();\n            };\n          })(this)), 0);\n        }\n      } else {\n        throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n      }\n    };\n\n    Dropzone.prototype._thumbnailQueue = [];\n\n    Dropzone.prototype._processingThumbnail = false;\n\n    Dropzone.prototype._enqueueThumbnail = function(file) {\n      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n        this._thumbnailQueue.push(file);\n        return setTimeout(((function(_this) {\n          return function() {\n            return _this._processThumbnailQueue();\n          };\n        })(this)), 0);\n      }\n    };\n\n    Dropzone.prototype._processThumbnailQueue = function() {\n      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n        return;\n      }\n      this._processingThumbnail = true;\n      return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {\n        return function() {\n          _this._processingThumbnail = false;\n          return _this._processThumbnailQueue();\n        };\n      })(this));\n    };\n\n    Dropzone.prototype.removeFile = function(file) {\n      if (file.status === Dropzone.UPLOADING) {\n        this.cancelUpload(file);\n      }\n      this.files = without(this.files, file);\n      this.emit(\"removedfile\", file);\n      if (this.files.length === 0) {\n        return this.emit(\"reset\");\n      }\n    };\n\n    Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {\n      var file, _i, _len, _ref;\n      if (cancelIfNecessary == null) {\n        cancelIfNecessary = false;\n      }\n      _ref = this.files.slice();\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        file = _ref[_i];\n        if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n          this.removeFile(file);\n        }\n      }\n      return null;\n    };\n\n    Dropzone.prototype.createThumbnail = function(file, callback) {\n      var fileReader;\n      fileReader = new FileReader;\n      fileReader.onload = (function(_this) {\n        return function() {\n          if (file.type === \"image/svg+xml\") {\n            _this.emit(\"thumbnail\", file, fileReader.result);\n            if (callback != null) {\n              callback();\n            }\n            return;\n          }\n          return _this.createThumbnailFromUrl(file, fileReader.result, callback);\n        };\n      })(this);\n      return fileReader.readAsDataURL(file);\n    };\n\n    Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback) {\n      var img;\n      img = document.createElement(\"img\");\n      img.onload = (function(_this) {\n        return function() {\n          var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;\n          file.width = img.width;\n          file.height = img.height;\n          resizeInfo = _this.options.resize.call(_this, file);\n          if (resizeInfo.trgWidth == null) {\n            resizeInfo.trgWidth = resizeInfo.optWidth;\n          }\n          if (resizeInfo.trgHeight == null) {\n            resizeInfo.trgHeight = resizeInfo.optHeight;\n          }\n          canvas = document.createElement(\"canvas\");\n          ctx = canvas.getContext(\"2d\");\n          canvas.width = resizeInfo.trgWidth;\n          canvas.height = resizeInfo.trgHeight;\n          drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n          thumbnail = canvas.toDataURL(\"image/png\");\n          _this.emit(\"thumbnail\", file, thumbnail);\n          if (callback != null) {\n            return callback();\n          }\n        };\n      })(this);\n      if (callback != null) {\n        img.onerror = callback;\n      }\n      return img.src = imageUrl;\n    };\n\n    Dropzone.prototype.processQueue = function() {\n      var i, parallelUploads, processingLength, queuedFiles;\n      parallelUploads = this.options.parallelUploads;\n      processingLength = this.getUploadingFiles().length;\n      i = processingLength;\n      if (processingLength >= parallelUploads) {\n        return;\n      }\n      queuedFiles = this.getQueuedFiles();\n      if (!(queuedFiles.length > 0)) {\n        return;\n      }\n      if (this.options.uploadMultiple) {\n        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n      } else {\n        while (i < parallelUploads) {\n          if (!queuedFiles.length) {\n            return;\n          }\n          this.processFile(queuedFiles.shift());\n          i++;\n        }\n      }\n    };\n\n    Dropzone.prototype.processFile = function(file) {\n      return this.processFiles([file]);\n    };\n\n    Dropzone.prototype.processFiles = function(files) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.processing = true;\n        file.status = Dropzone.UPLOADING;\n        this.emit(\"processing\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"processingmultiple\", files);\n      }\n      return this.uploadFiles(files);\n    };\n\n    Dropzone.prototype._getFilesWithXhr = function(xhr) {\n      var file, files;\n      return files = (function() {\n        var _i, _len, _ref, _results;\n        _ref = this.files;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          file = _ref[_i];\n          if (file.xhr === xhr) {\n            _results.push(file);\n          }\n        }\n        return _results;\n      }).call(this);\n    };\n\n    Dropzone.prototype.cancelUpload = function(file) {\n      var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;\n      if (file.status === Dropzone.UPLOADING) {\n        groupedFiles = this._getFilesWithXhr(file.xhr);\n        for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {\n          groupedFile = groupedFiles[_i];\n          groupedFile.status = Dropzone.CANCELED;\n        }\n        file.xhr.abort();\n        for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {\n          groupedFile = groupedFiles[_j];\n          this.emit(\"canceled\", groupedFile);\n        }\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", groupedFiles);\n        }\n      } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {\n        file.status = Dropzone.CANCELED;\n        this.emit(\"canceled\", file);\n        if (this.options.uploadMultiple) {\n          this.emit(\"canceledmultiple\", [file]);\n        }\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    resolveOption = function() {\n      var args, option;\n      option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n      if (typeof option === 'function') {\n        return option.apply(this, args);\n      }\n      return option;\n    };\n\n    Dropzone.prototype.uploadFile = function(file) {\n      return this.uploadFiles([file]);\n    };\n\n    Dropzone.prototype.uploadFiles = function(files) {\n      var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n      xhr = new XMLHttpRequest();\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.xhr = xhr;\n      }\n      method = resolveOption(this.options.method, files);\n      url = resolveOption(this.options.url, files);\n      xhr.open(method, url, true);\n      xhr.withCredentials = !!this.options.withCredentials;\n      response = null;\n      handleError = (function(_this) {\n        return function() {\n          var _j, _len1, _results;\n          _results = [];\n          for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n            file = files[_j];\n            _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\n          }\n          return _results;\n        };\n      })(this);\n      updateProgress = (function(_this) {\n        return function(e) {\n          var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;\n          if (e != null) {\n            progress = 100 * e.loaded / e.total;\n            for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n              file = files[_j];\n              file.upload = {\n                progress: progress,\n                total: e.total,\n                bytesSent: e.loaded\n              };\n            }\n          } else {\n            allFilesFinished = true;\n            progress = 100;\n            for (_k = 0, _len2 = files.length; _k < _len2; _k++) {\n              file = files[_k];\n              if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\n                allFilesFinished = false;\n              }\n              file.upload.progress = progress;\n              file.upload.bytesSent = file.upload.total;\n            }\n            if (allFilesFinished) {\n              return;\n            }\n          }\n          _results = [];\n          for (_l = 0, _len3 = files.length; _l < _len3; _l++) {\n            file = files[_l];\n            _results.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\n          }\n          return _results;\n        };\n      })(this);\n      xhr.onload = (function(_this) {\n        return function(e) {\n          var _ref;\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          if (xhr.readyState !== 4) {\n            return;\n          }\n          response = xhr.responseText;\n          if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n            try {\n              response = JSON.parse(response);\n            } catch (_error) {\n              e = _error;\n              response = \"Invalid JSON response from server.\";\n            }\n          }\n          updateProgress();\n          if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n            return handleError();\n          } else {\n            return _this._finished(files, response, e);\n          }\n        };\n      })(this);\n      xhr.onerror = (function(_this) {\n        return function() {\n          if (files[0].status === Dropzone.CANCELED) {\n            return;\n          }\n          return handleError();\n        };\n      })(this);\n      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n      progressObj.onprogress = updateProgress;\n      headers = {\n        \"Accept\": \"application/json\",\n        \"Cache-Control\": \"no-cache\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n      };\n      if (this.options.headers) {\n        extend(headers, this.options.headers);\n      }\n      for (headerName in headers) {\n        headerValue = headers[headerName];\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n      formData = new FormData();\n      if (this.options.params) {\n        _ref1 = this.options.params;\n        for (key in _ref1) {\n          value = _ref1[key];\n          formData.append(key, value);\n        }\n      }\n      for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n        file = files[_j];\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n      if (this.element.tagName === \"FORM\") {\n        _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n          input = _ref2[_k];\n          inputName = input.getAttribute(\"name\");\n          inputType = input.getAttribute(\"type\");\n          if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n            _ref3 = input.options;\n            for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n              option = _ref3[_l];\n              if (option.selected) {\n                formData.append(inputName, option.value);\n              }\n            }\n          } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== \"checkbox\" && _ref4 !== \"radio\") || input.checked) {\n            formData.append(inputName, input.value);\n          }\n        }\n      }\n      for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {\n        formData.append(this._getParamName(i), files[i], files[i].name);\n      }\n      return xhr.send(formData);\n    };\n\n    Dropzone.prototype._finished = function(files, responseText, e) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.SUCCESS;\n        this.emit(\"success\", file, responseText, e);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"successmultiple\", files, responseText, e);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    Dropzone.prototype._errorProcessing = function(files, message, xhr) {\n      var file, _i, _len;\n      for (_i = 0, _len = files.length; _i < _len; _i++) {\n        file = files[_i];\n        file.status = Dropzone.ERROR;\n        this.emit(\"error\", file, message, xhr);\n        this.emit(\"complete\", file);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"errormultiple\", files, message, xhr);\n        this.emit(\"completemultiple\", files);\n      }\n      if (this.options.autoProcessQueue) {\n        return this.processQueue();\n      }\n    };\n\n    return Dropzone;\n\n  })(Emitter);\n\n  Dropzone.version = \"4.0.1\";\n\n  Dropzone.options = {};\n\n  Dropzone.optionsForElement = function(element) {\n    if (element.getAttribute(\"id\")) {\n      return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n    } else {\n      return void 0;\n    }\n  };\n\n  Dropzone.instances = [];\n\n  Dropzone.forElement = function(element) {\n    if (typeof element === \"string\") {\n      element = document.querySelector(element);\n    }\n    if ((element != null ? element.dropzone : void 0) == null) {\n      throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n    }\n    return element.dropzone;\n  };\n\n  Dropzone.autoDiscover = true;\n\n  Dropzone.discover = function() {\n    var checkElements, dropzone, dropzones, _i, _len, _results;\n    if (document.querySelectorAll) {\n      dropzones = document.querySelectorAll(\".dropzone\");\n    } else {\n      dropzones = [];\n      checkElements = function(elements) {\n        var el, _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = elements.length; _i < _len; _i++) {\n          el = elements[_i];\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            _results.push(dropzones.push(el));\n          } else {\n            _results.push(void 0);\n          }\n        }\n        return _results;\n      };\n      checkElements(document.getElementsByTagName(\"div\"));\n      checkElements(document.getElementsByTagName(\"form\"));\n    }\n    _results = [];\n    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n      dropzone = dropzones[_i];\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        _results.push(new Dropzone(dropzone));\n      } else {\n        _results.push(void 0);\n      }\n    }\n    return _results;\n  };\n\n  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n  Dropzone.isBrowserSupported = function() {\n    var capableBrowser, regex, _i, _len, _ref;\n    capableBrowser = true;\n    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n      if (!(\"classList\" in document.createElement(\"a\"))) {\n        capableBrowser = false;\n      } else {\n        _ref = Dropzone.blacklistedBrowsers;\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          regex = _ref[_i];\n          if (regex.test(navigator.userAgent)) {\n            capableBrowser = false;\n            continue;\n          }\n        }\n      }\n    } else {\n      capableBrowser = false;\n    }\n    return capableBrowser;\n  };\n\n  without = function(list, rejectedItem) {\n    var item, _i, _len, _results;\n    _results = [];\n    for (_i = 0, _len = list.length; _i < _len; _i++) {\n      item = list[_i];\n      if (item !== rejectedItem) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  };\n\n  camelize = function(str) {\n    return str.replace(/[\\-_](\\w)/g, function(match) {\n      return match.charAt(1).toUpperCase();\n    });\n  };\n\n  Dropzone.createElement = function(string) {\n    var div;\n    div = document.createElement(\"div\");\n    div.innerHTML = string;\n    return div.childNodes[0];\n  };\n\n  Dropzone.elementInside = function(element, container) {\n    if (element === container) {\n      return true;\n    }\n    while (element = element.parentNode) {\n      if (element === container) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  Dropzone.getElement = function(el, name) {\n    var element;\n    if (typeof el === \"string\") {\n      element = document.querySelector(el);\n    } else if (el.nodeType != null) {\n      element = el;\n    }\n    if (element == null) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n    }\n    return element;\n  };\n\n  Dropzone.getElements = function(els, name) {\n    var e, el, elements, _i, _j, _len, _len1, _ref;\n    if (els instanceof Array) {\n      elements = [];\n      try {\n        for (_i = 0, _len = els.length; _i < _len; _i++) {\n          el = els[_i];\n          elements.push(this.getElement(el, name));\n        }\n      } catch (_error) {\n        e = _error;\n        elements = null;\n      }\n    } else if (typeof els === \"string\") {\n      elements = [];\n      _ref = document.querySelectorAll(els);\n      for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n        el = _ref[_j];\n        elements.push(el);\n      }\n    } else if (els.nodeType != null) {\n      elements = [els];\n    }\n    if (!((elements != null) && elements.length)) {\n      throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n    }\n    return elements;\n  };\n\n  Dropzone.confirm = function(question, accepted, rejected) {\n    if (window.confirm(question)) {\n      return accepted();\n    } else if (rejected != null) {\n      return rejected();\n    }\n  };\n\n  Dropzone.isValidFile = function(file, acceptedFiles) {\n    var baseMimeType, mimeType, validType, _i, _len;\n    if (!acceptedFiles) {\n      return true;\n    }\n    acceptedFiles = acceptedFiles.split(\",\");\n    mimeType = file.type;\n    baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n    for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {\n      validType = acceptedFiles[_i];\n      validType = validType.trim();\n      if (validType.charAt(0) === \".\") {\n        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n          return true;\n        }\n      } else if (/\\/\\*$/.test(validType)) {\n        if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n          return true;\n        }\n      } else {\n        if (mimeType === validType) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n\n  if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n    jQuery.fn.dropzone = function(options) {\n      return this.each(function() {\n        return new Dropzone(this, options);\n      });\n    };\n  }\n\n  if (typeof module !== \"undefined\" && module !== null) {\n    module.exports = Dropzone;\n  } else {\n    window.Dropzone = Dropzone;\n  }\n\n  Dropzone.ADDED = \"added\";\n\n  Dropzone.QUEUED = \"queued\";\n\n  Dropzone.ACCEPTED = Dropzone.QUEUED;\n\n  Dropzone.UPLOADING = \"uploading\";\n\n  Dropzone.PROCESSING = Dropzone.UPLOADING;\n\n  Dropzone.CANCELED = \"canceled\";\n\n  Dropzone.ERROR = \"error\";\n\n  Dropzone.SUCCESS = \"success\";\n\n\n  /*\n  \n  Bugfix for iOS 6 and 7\n  Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n  based on the work of https://github.com/stomita/ios-imagefile-megapixel\n   */\n\n  detectVerticalSquash = function(img) {\n    var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\n    iw = img.naturalWidth;\n    ih = img.naturalHeight;\n    canvas = document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = ih;\n    ctx = canvas.getContext(\"2d\");\n    ctx.drawImage(img, 0, 0);\n    data = ctx.getImageData(0, 0, 1, ih).data;\n    sy = 0;\n    ey = ih;\n    py = ih;\n    while (py > sy) {\n      alpha = data[(py - 1) * 4 + 3];\n      if (alpha === 0) {\n        ey = py;\n      } else {\n        sy = py;\n      }\n      py = (ey + sy) >> 1;\n    }\n    ratio = py / ih;\n    if (ratio === 0) {\n      return 1;\n    } else {\n      return ratio;\n    }\n  };\n\n  drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n    var vertSquashRatio;\n    vertSquashRatio = detectVerticalSquash(img);\n    return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n  };\n\n\n  /*\n   * contentloaded.js\n   *\n   * Author: Diego Perini (diego.perini at gmail.com)\n   * Summary: cross-browser wrapper for DOMContentLoaded\n   * Updated: 20101020\n   * License: MIT\n   * Version: 1.2\n   *\n   * URL:\n   * http://javascript.nwbox.com/ContentLoaded/\n   * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n   */\n\n  contentLoaded = function(win, fn) {\n    var add, doc, done, init, poll, pre, rem, root, top;\n    done = false;\n    top = true;\n    doc = win.document;\n    root = doc.documentElement;\n    add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n    rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n    pre = (doc.addEventListener ? \"\" : \"on\");\n    init = function(e) {\n      if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n        return;\n      }\n      (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n      if (!done && (done = true)) {\n        return fn.call(win, e.type || e);\n      }\n    };\n    poll = function() {\n      var e;\n      try {\n        root.doScroll(\"left\");\n      } catch (_error) {\n        e = _error;\n        setTimeout(poll, 50);\n        return;\n      }\n      return init(\"poll\");\n    };\n    if (doc.readyState !== \"complete\") {\n      if (doc.createEventObject && root.doScroll) {\n        try {\n          top = !win.frameElement;\n        } catch (_error) {}\n        if (top) {\n          poll();\n        }\n      }\n      doc[add](pre + \"DOMContentLoaded\", init, false);\n      doc[add](pre + \"readystatechange\", init, false);\n      return win[add](pre + \"load\", init, false);\n    }\n  };\n\n  Dropzone._autoDiscoverFunction = function() {\n    if (Dropzone.autoDiscover) {\n      return Dropzone.discover();\n    }\n  };\n\n  contentLoaded(window, Dropzone._autoDiscoverFunction);\n\n}).call(this);\n"
  },
  {
    "path": "src/Assets/src/vendor/dropzone/readme.md",
    "content": "# Warning!\n\nYou shouldn't pull these files from the github master branch directly!\n\nThey might be outdated or not working at all since I normally only push them\nwhen I create a version release.\n\nTo be sure to get a proper release, please go to the\n[dropzone releases section on github](https://github.com/enyo/dropzone/releases/latest).\n\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/ar.js",
    "content": "(function($R)\n{\n    $R.lang['ar'] = {\n        \"format\": \"تنسيق\",\n        \"image\": \"صورة\",\n        \"file\": \"ملف\",\n        \"link\": \"رابط\",\n        \"bold\": \"متين\",\n        \"italic\": \"مائل\",\n        \"deleted\": \"مشطوب\",\n        \"underline\": \"مسطر\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"قوائم\",\n        \"link-insert\": \"إدراج رابط\",\n        \"link-edit\": \"تحرير الرابط\",\n        \"link-in-new-tab\": \"فتح الرابط في تبويب جديد\",\n        \"unlink\": \"إلغاء الرابط\",\n        \"cancel\": \"إلغاء\",\n        \"close\": \"إغلاق\",\n        \"insert\": \"إدراج\",\n        \"save\": \"حفظ\",\n        \"delete\": \"حذف\",\n        \"text\": \"النص\",\n        \"edit\": \"تحرير\",\n        \"title\": \"العنوان\",\n        \"paragraph\": \"نص عادي\",\n        \"quote\": \"اقتباس\",\n        \"code\": \"كود\",\n        \"heading1\": \"عنوان 1\",\n        \"heading2\": \"عنوان 2\",\n        \"heading3\": \"عنوان 3\",\n        \"heading4\": \"عنوان 4\",\n        \"heading5\": \"عنوان 5\",\n        \"heading6\": \"عنوان 6\",\n        \"filename\": \"الاسم\",\n        \"optional\": \"اختياري\",\n        \"unorderedlist\": \"قائمة نقطية\",\n        \"orderedlist\": \"قائمة رقمية\",\n        \"outdent\": \"زيادة المسافة البادئة\",\n        \"indent\": \"إنقاض المسافة البادئة\",\n        \"horizontalrule\": \"خط أفقي\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"محرر النص الغني\",\n        \"caption\": \"الشرح\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/cs.js",
    "content": "(function($R)\r\n{\r\n\t$R.lang['cs'] = {\r\n\t\t\"format\": \"Formát\",\r\n\t\t\"image\": \"Obrázek\",\r\n\t\t\"file\": \"Soubor\",\r\n\t\t\"link\": \"Odkaz\",\r\n\t\t\"bold\": \"Tučné\",\r\n\t\t\"italic\": \"Kurzíva\",\r\n\t\t\"deleted\": \"Přeškrtnuté\",\r\n\t\t\"underline\": \"Podtržené\",\r\n\t    \"superscript\": \"Horní index\",\r\n\t    \"subscript\": \"Dolní index\",\r\n\t\t\"bold-abbr\": \"B\",\r\n\t\t\"italic-abbr\": \"I\",\r\n\t\t\"deleted-abbr\": \"S\",\r\n\t\t\"underline-abbr\": \"U\",\r\n\t    \"superscript-abbr\": \"Sup\",\r\n\t    \"subscript-abbr\": \"Sub\",\r\n\t\t\"lists\": \"Seznamy\",\r\n\t\t\"link_insert\": \"Vložit odkaz ...\",\r\n\t\t\"link_edit\": \"Upravit odkaz\",\r\n\t\t\"link_new_tab\": \"Otevírat odkaz v novém okně\",\r\n\t\t\"unlink\": \"Odstranit odkaz\",\r\n\t\t\"cancel\": \"Zrušit\",\r\n\t\t\"close\": \"Zavřít\",\r\n\t\t\"insert\": \"Vložit\",\r\n\t\t\"save\": \"Uložit\",\r\n\t\t\"delete\": \"Smazat\",\r\n\t\t\"text\": \"Text\",\r\n\t\t\"edit\": \"Upravit\",\r\n\t\t\"title\": \"Titulek\",\r\n\t\t\"paragraph\": \"Odstavec\",\r\n\t\t\"quote\": \"Citace\",\r\n\t\t\"code\": \"Kód\",\r\n\t\t\"header1\": \"Nadpis 1\",\r\n\t\t\"header2\": \"Nadpis 2\",\r\n\t\t\"header3\": \"Nadpis 3\",\r\n\t\t\"header4\": \"Nadpis 4\",\r\n\t\t\"header5\": \"Nadpis 5\",\r\n\t\t\"header6\": \"Nadpis 6\",\r\n\t\t\"filename\": \"Název (volitelné)\",\r\n\t\t\"optional\": \"volitelný\",\r\n\t\t\"unorderedlist\": \"Seznam s odrážkami\",\r\n\t\t\"orderedlist\": \"Číslovaný seznam\",\r\n\t\t\"outdent\": \"Zmenšit odsazení\",\r\n\t\t\"indent\": \"Zvětšit odsazení\",\r\n\t\t\"horizontalrule\": \"Vodorovná čára\",\r\n\t    \"upload\": \"Nahrát\",\r\n\t\t\"upload-label\": \"Přesuňte sem soubory nebo klikněte pro výběr\",\r\n        \"upload-change-label\": \"Drop a new image to change\",\r\n\t\t\"accessibility-help-label\": \"Rich textový editor\",\r\n\t\t\"caption\": \"Titulok\",\r\n\t\t\"bulletslist\": \"Odrážek\",\r\n\t\t\"numberslist\": \"Číslováníe\",\r\n\t\t\"image_position\": \"Zarovnání\",\r\n\t\t\"none\": \"Žádné\",\r\n\t\t\"left\": \"Vlevo\",\r\n\t\t\"right\": \"Vpravo\",\r\n\t\t\"center\": \"Center\",\r\n\t    \"undo\": \"Zpět\",\r\n\t    \"redo\": \"Obnovit\"\r\n    };\r\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/da.js",
    "content": "(function($R)\n{\n    $R.lang['da'] = {\n        \"format\": \"Format\",\n        \"image\": \"Billede\",\n        \"file\": \"Fil\",\n        \"link\": \"link\",\n        \"bold\": \"Fed\",\n        \"italic\": \"Kursiv\",\n        \"deleted\": \"Slettet\",\n        \"underline\": \"Understreg\",\n        \"superscript\": \"Hævet\",\n        \"subscript\": \"Sænket\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Lister\",\n        \"link-insert\": \"Indsæt link\",\n        \"link-edit\": \"Redigér link\",\n        \"link-in-new-tab\": \"Åbn link i ny fane\",\n        \"unlink\": \"Fjern link\",\n        \"cancel\": \"Fortryd\",\n        \"close\": \"Luk\",\n        \"insert\": \"Indsæt\",\n        \"save\": \"Gem\",\n        \"delete\": \"Slet\",\n        \"text\": \"Tekst\",\n        \"edit\": \"Redigér\",\n        \"title\": \"Titel\",\n        \"paragraph\": \"Paragraf\",\n        \"quote\": \"Citat\",\n        \"code\": \"Kode\",\n        \"heading1\": \"Overskrift 1\",\n        \"heading2\": \"Overskrift 2\",\n        \"heading3\": \"Overskrift 3\",\n        \"heading4\": \"Overskrift 4\",\n        \"heading5\": \"Overskrift 5\",\n        \"heading6\": \"Overskrift 6\",\n        \"filename\": \"Navn\",\n        \"optional\": \"valgfri\",\n        \"unorderedlist\": \"Usorteret liste\",\n        \"orderedlist\": \"Sorteret liste\",\n        \"outdent\": \"Formindsk indrykning\",\n        \"indent\": \"Forøg indrykning\",\n        \"horizontalrule\": \"Vandret linje\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Slip filer her eller klik for at uploade\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Tekst editor\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Punktliste\",\n        \"numberslist\": \"Nummereret liste\",\n        \"image-position\": \"Position\",\n        \"none\": \"Ingen\",\n        \"left\": \"Venstre\",\n        \"right\": \"Højre\",\n        \"center\": \"Center\",\n        \"undo\": \"Fortryd\",\n        \"redo\": \"Annullér fortryd\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/de.js",
    "content": "(function($R)\n{\n    $R.lang['de'] = {\n        \"format\": \"Format\",\n        \"image\": \"Bild\",\n        \"file\": \"Datei\",\n        \"link\": \"Link\",\n        \"bold\": \"Fett\",\n        \"italic\": \"Kursiv\",\n        \"deleted\": \"Durchgestrichen\",\n        \"underline\": \"Unterstrichen\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Listen\",\n        \"link-insert\": \"Verknüpfung einsetzen\",\n        \"link-edit\": \"Verknüpfung bearbeiten\",\n        \"link-in-new-tab\": \"Verknüpfung in neuer Registerkarte öffnen\",\n        \"unlink\": \"Verknüpfung aufheben\",\n        \"cancel\": \"Abbrechen\",\n        \"close\": \"Schließen\",\n        \"insert\": \"Einsetzen\",\n        \"save\": \"Speichern\",\n        \"delete\": \"löschen\",\n        \"text\": \"Text\",\n        \"edit\": \"Bearbeiten\",\n        \"title\": \"Titel\",\n        \"paragraph\": \"Normaler Text\",\n        \"quote\": \"Zitieren\",\n        \"code\": \"Code\",\n        \"heading1\": \"Überschrift 1\",\n        \"heading2\": \"Überschrift 2\",\n        \"heading3\": \"Überschrift 3\",\n        \"heading4\": \"Überschrift 4\",\n        \"heading5\": \"Überschrift 5\",\n        \"heading6\": \"Überschrift 6\",\n        \"filename\": \"Name\",\n        \"optional\": \"Optional\",\n        \"unorderedlist\": \"Unsortierte Liste\",\n        \"orderedlist\": \"Sortierte Liste\",\n        \"outdent\": \"Negativer einzug\",\n        \"indent\": \"Einzug\",\n        \"horizontalrule\": \"Linie\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Rich-Text-Editor\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/en.js",
    "content": "(function($R)\n{\n    $R.lang['en'] = {\n        \"format\": \"Format\",\n        \"image\": \"Image\",\n        \"file\": \"File\",\n        \"link\": \"Link\",\n        \"bold\": \"Bold\",\n        \"italic\": \"Italic\",\n        \"deleted\": \"Strikethrough\",\n        \"underline\": \"Underline\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Lists\",\n        \"link-insert\": \"Insert Link\",\n        \"link-edit\": \"Edit Link\",\n        \"link-in-new-tab\": \"Open link in new tab\",\n        \"unlink\": \"Unlink\",\n        \"cancel\": \"Cancel\",\n        \"close\": \"Close\",\n        \"insert\": \"Insert\",\n        \"save\": \"Save\",\n        \"delete\": \"Delete\",\n        \"text\": \"Text\",\n        \"edit\": \"Edit\",\n        \"title\": \"Title\",\n        \"paragraph\": \"Normal text\",\n        \"quote\": \"Quote\",\n        \"code\": \"Code\",\n        \"heading1\": \"Heading 1\",\n        \"heading2\": \"Heading 2\",\n        \"heading3\": \"Heading 3\",\n        \"heading4\": \"Heading 4\",\n        \"heading5\": \"Heading 5\",\n        \"heading6\": \"Heading 6\",\n        \"filename\": \"Name\",\n        \"optional\": \"optional\",\n        \"unorderedlist\": \"Unordered List\",\n        \"orderedlist\": \"Ordered List\",\n        \"outdent\": \"Outdent\",\n        \"indent\": \"Indent\",\n        \"horizontalrule\": \"Line\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Rich text editor\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/es.js",
    "content": "(function($R)\n{\n    $R.lang['es'] = {\n        \"format\": \"Formato\",\n        \"image\": \"Imagen\",\n        \"file\": \"Archivo\",\n        \"link\": \"Enlace\",\n        \"bold\": \"Negrita\",\n        \"italic\": \"Cursiva\",\n        \"deleted\": \"Tachado\",\n        \"underline\": \"Subrayado\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"N\",\n        \"italic-abbr\": \"C\",\n        \"deleted-abbr\": \"T\",\n        \"underline-abbr\": \"S\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Listas\",\n        \"link-insert\": \"Insertar enlace\",\n        \"link-edit\": \"Editar enlace\",\n        \"link-in-new-tab\": \"Abrir enlace en nueva pestaña\",\n        \"unlink\": \"Quitar enlace\",\n        \"cancel\": \"Cancelar\",\n        \"close\": \"Cerrar\",\n        \"insert\": \"Insertar\",\n        \"save\": \"Guardar\",\n        \"delete\": \"Borrar\",\n        \"text\": \"Texto\",\n        \"edit\": \"Editar\",\n        \"title\": \"Título\",\n        \"paragraph\": \"Texto normal\",\n        \"quote\": \"Citar\",\n        \"code\": \"Código\",\n        \"heading1\": \"Cabecera 1\",\n        \"heading2\": \"Cabecera 2\",\n        \"heading3\": \"Cabecera 3\",\n        \"heading4\": \"Cabecera 4\",\n        \"heading5\": \"Cabecera 5\",\n        \"heading6\": \"Cabecera 6\",\n        \"filename\": \"Nombre\",\n        \"optional\": \"Opcional\",\n        \"unorderedlist\": \"Lista sin orden\",\n        \"orderedlist\": \"Lista ordenada\",\n        \"outdent\": \"Quitar sangría\",\n        \"indent\": \"Sangría\",\n        \"horizontalrule\": \"Línea\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Editor de texto enriquecido\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/fa.js",
    "content": "(function($R)\n{\n    $R.lang['fa'] = {\n        \"format\": \"فرمت\",\n        \"image\": \"تصویر\",\n        \"file\": \"فایل\",\n        \"link\": \"لینک\",\n        \"bold\": \"ضخیم\",\n        \"italic\": \"کج\",\n        \"deleted\": \"خط خورده\",\n        \"underline\": \"زیرخط دار\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"لیست\",\n        \"link-insert\": \"اضافه کردن لینک\",\n        \"link-edit\": \"ویرایش لینک\",\n        \"link-in-new-tab\": \"باز شدن لینک در صفحه جدید\",\n        \"unlink\": \"غیرفعال کردن لینک\",\n        \"cancel\": \"لغو\",\n        \"close\": \"بستن\",\n        \"insert\": \"اضافه\",\n        \"save\": \"ذخیره\",\n        \"delete\": \"حذف\",\n        \"text\": \"متن\",\n        \"edit\": \"ویرایش\",\n        \"title\": \"عنوان\",\n        \"paragraph\": \"متن معمولی\",\n        \"quote\": \"نقل قول\",\n        \"code\": \"کد\",\n        \"heading1\": \"سربرگ ۱\",\n        \"heading2\": \"سربرگ ۲\",\n        \"heading3\": \"سربرگ ۳\",\n        \"heading4\": \"سربرگ ۴\",\n        \"heading5\": \"سربرگ ۵\",\n        \"heading6\": \"سربرگ ۶\",\n        \"filename\": \"نام\",\n        \"optional\": \"اختیاری\",\n        \"unorderedlist\": \"لیست نامرتب\",\n        \"orderedlist\": \"لیست مرتب\",\n        \"outdent\": \"بیرون آمدگی\",\n        \"indent\": \"تورفتگی\",\n        \"horizontalrule\": \"خط\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"ویرایشگر متن پیشرفته\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/fi.js",
    "content": "(function($R)\n{\n    $R.lang['fi'] = {\n        \"format\": \"Muotoilut\",\n        \"image\": \"Kuva\",\n        \"file\": \"Tiedosto\",\n        \"link\": \"Linkki\",\n        \"bold\": \"Lihavointi\",\n        \"italic\": \"Kursivointi\",\n        \"deleted\": \"Poistettu\",\n        \"underline\": \"Alleviivaa\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Luettelot\",\n        \"link-insert\": \"Lisää linkki\",\n        \"link-edit\": \"Muokkaa linkkiä\",\n        \"link-in-new-tab\": \"Avaa linkki uudessa välilehdessä\",\n        \"unlink\": \"Poista linkki\",\n        \"cancel\": \"Peru\",\n        \"close\": \"Sulkea\",\n        \"insert\": \"Lisää\",\n        \"save\": \"Tallenna\",\n        \"delete\": \"Poista\",\n        \"text\": \"Teksti\",\n        \"edit\": \"Muokata\",\n        \"title\": \"Title\",\n        \"paragraph\": \"Normaaliteksti\",\n        \"quote\": \"Lainaus\",\n        \"code\": \"Koodi\",\n        \"heading1\": \"Otsikko 1\",\n        \"heading2\": \"Otsikko 2\",\n        \"heading3\": \"Otsikko 3\",\n        \"heading4\": \"Otsikko 4\",\n        \"heading5\": \"Otsikko 5\",\n        \"heading6\": \"Otsikko 6\",\n        \"filename\": \"Nimi (valinnainen)\",\n        \"optional\": \"valinnainen\",\n        \"unorderedlist\": \"Luettelo luettelomerkein\",\n        \"orderedlist\": \"Numeroitu luettelo\",\n        \"outdent\": \"Vähennä sisennystä\",\n        \"indent\": \"Lisää sisennystä\",\n        \"horizontalrule\": \"Viiva\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Rich text editor\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/fr.js",
    "content": "(function($R)\n{\n    $R.lang['fr'] = {\n        \"format\": \"Format\",\n        \"image\": \"Image\",\n        \"file\": \"Fichier\",\n        \"link\": \"Lien\",\n        \"bold\": \"Gras\",\n        \"italic\": \"Italique\",\n        \"deleted\": \"Barré\",\n        \"underline\": \"Souligné\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Listes\",\n        \"link-insert\": \"Insérer un lien\",\n        \"link-edit\": \"Editer le lien\",\n        \"link-in-new-tab\": \"Ouvrir le lien dans un nouvel onglet\",\n        \"unlink\": \"Retirer le lien\",\n        \"cancel\": \"Annuler\",\n        \"close\": \"Fermer\",\n        \"insert\": \"Insérer\",\n        \"save\": \"Sauvegarder\",\n        \"delete\": \"Supprimer\",\n        \"text\": \"Texte\",\n        \"edit\": \"Editer\",\n        \"title\": \"Titre\",\n        \"paragraph\": \"Texte normal\",\n        \"quote\": \"Citation\",\n        \"code\": \"Code\",\n        \"heading1\": \"Titre 1\",\n        \"heading2\": \"Titre 2\",\n        \"heading3\": \"Titre 3\",\n        \"heading4\": \"Titre 4\",\n        \"heading5\": \"Titre 5\",\n        \"heading6\": \"Titre 6\",\n        \"filename\": \"Nom\",\n        \"optional\": \"Optionnel\",\n        \"unorderedlist\": \"Liste non-ordonnée\",\n        \"orderedlist\": \"Liste ordonnée\",\n        \"outdent\": \"Réduire le retrait\",\n        \"indent\": \"Augmenter le retrait\",\n        \"horizontalrule\": \"Ligne\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Editeur de texte enrichi\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/he.js",
    "content": "(function($R)\n{\n    $R.lang['he'] = {\n        \"format\": \"פורמט\",\n        \"image\": \"תמונה\",\n        \"file\": \"קובץ\",\n        \"link\": \"קישור\",\n        \"bold\": \"מודגש\",\n        \"italic\": \"נטוי\",\n        \"deleted\": \"מחוק\",\n        \"underline\": \"Underline\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"רשימות\",\n        \"link-insert\": \"הוסף קישור\",\n        \"link-edit\": \"ערוך קישור\",\n        \"link-in-new-tab\": \"פתח קישור בחלון חדש\",\n        \"unlink\": \"הסר קישור\",\n        \"cancel\": \"בטל\",\n        \"close\": \"סגור\",\n        \"insert\": \"הכנס\",\n        \"save\": \"שמור\",\n        \"delete\": \"מחק\",\n        \"text\": \"טקסט\",\n        \"edit\": \"ערוך\",\n        \"title\": \"כותרת\",\n        \"paragraph\": \"טקסט רגיל\",\n        \"quote\": \"ציטוט\",\n        \"code\": \"קוד\",\n        \"heading1\": \"כותרת 1\",\n        \"heading2\": \"כותרת 2\",\n        \"heading3\": \"כותרת 3\",\n        \"heading4\": \"כותרת 4\",\n        \"heading5\": \"כותרת 5\",\n        \"heading6\": \"כותרת 6\",\n        \"filename\": \"שם\",\n        \"optional\": \"אופציונאלי\",\n        \"unorderedlist\": \"רשימת נקודות\",\n        \"orderedlist\": \"רשימה ממוספרת\",\n        \"outdent\": \"קרב לשוליים\",\n        \"indent\": \"הרחק מהשוליים\",\n        \"horizontalrule\": \"קו אופקי\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"עורך טקסט עשיר\",\n        \"caption\": \"כיתוב\",\n        \"bulletslist\": \"נקודות\",\n        \"numberslist\": \"ממוספר\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/hu.js",
    "content": "(function($R)\n{\n    $R.lang['hu'] = {\n        \"format\": \"Formázás\",\n        \"image\": \"Kép\",\n        \"file\": \"Fájl\",\n        \"link\": \"Hivatkozás\",\n        \"bold\": \"Félkövér\",\n        \"italic\": \"Dőlt\",\n        \"deleted\": \"Áthúzott\",\n        \"underline\": \"Aláhúzott\",\n        \"superscript\": \"Felső index\",\n        \"subscript\": \"Alsó index\",\n        \"bold-abbr\": \"F\",\n        \"italic-abbr\": \"D\",\n        \"deleted-abbr\": \"H\",\n        \"underline-abbr\": \"A\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Listák\",\n        \"link-insert\": \"Hivatkozás beszúrása\",\n        \"link-edit\": \"Hivatkozás módosítása\",\n        \"link-in-new-tab\": \"Megnyitás új lapon\",\n        \"unlink\": \"Hivatkozás törlése\",\n        \"cancel\": \"Mégsem\",\n        \"close\": \"Bezárás\",\n        \"insert\": \"Beillesztés\",\n        \"save\": \"Mentés\",\n        \"delete\": \"Törlés\",\n        \"text\": \"Szöveg\",\n        \"edit\": \"Szerkesztés\",\n        \"title\": \"Cím\",\n        \"paragraph\": \"Normál szöveg\",\n        \"quote\": \"Idézet\",\n        \"code\": \"Forráskód\",\n        \"heading1\": \"Címsor 1\",\n        \"heading2\": \"Címsor 2\",\n        \"heading3\": \"Címsor 3\",\n        \"heading4\": \"Címsor 4\",\n        \"heading5\": \"Címsor 5\",\n        \"heading6\": \"Címsor 6\",\n        \"filename\": \"Név\",\n        \"optional\": \"választható\",\n        \"unorderedlist\": \"Rendezett lista\",\n        \"orderedlist\": \"Számozott lista\",\n        \"outdent\": \"Behúzás csökkentése\",\n        \"indent\": \"Behúzás növelése\",\n        \"horizontalrule\": \"Vonal\",\n        \"upload\": \"Feltöltés\",\n        \"upload-label\": \"Át a fájlokat vagy kattintson ide, hogy kiválassza\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Szövegszerkesztő\",\n        \"caption\": \"Felirat\",\n        \"bulletslist\": \"Golyók\",\n        \"numberslist\": \"Számok\",\n        \"image-position\": \"Pozíció\",\n        \"none\": \"Egyik sem\",\n        \"left\": \"Balra\",\n        \"right\": \"Jobb\",\n        \"center\": \"Középre\",\n        \"undo\": \"Kibont\",\n        \"redo\": \"Újra\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/it.js",
    "content": "(function($R)\n{\n    $R.lang['it'] = {\n        \"format\": \"Formato\",\n        \"image\": \"Immagine\",\n        \"file\": \"File\",\n        \"link\": \"Link\",\n        \"bold\": \"Grassetto\",\n        \"italic\": \"Corsivo\",\n        \"deleted\": \"Barrato\",\n        \"underline\": \"Sottolineato\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"G\",\n        \"italic-abbr\": \"C\",\n        \"deleted-abbr\": \"B\",\n        \"underline-abbr\": \"S\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Liste\",\n        \"link-insert\": \"Inserisci link\",\n        \"link-edit\": \"Modifica link\",\n        \"link-in-new-tab\": \"Apri link in un nuovo tab\",\n        \"unlink\": \"Elimina link\",\n        \"cancel\": \"Annulla\",\n        \"close\": \"Chiudi\",\n        \"insert\": \"Inserisci\",\n        \"save\": \"Salva\",\n        \"delete\": \"Cancella\",\n        \"text\": \"Testo\",\n        \"edit\": \"Modifica\",\n        \"title\": \"Titolo\",\n        \"paragraph\": \"Testo Normale\",\n        \"quote\": \"Citazione\",\n        \"code\": \"Codice\",\n        \"heading1\": \"Titolo 1\",\n        \"heading2\": \"Titolo 2\",\n        \"heading3\": \"Titolo 3\",\n        \"heading4\": \"Titolo 4\",\n        \"heading5\": \"Titolo 5\",\n        \"heading6\": \"Titolo 6\",\n        \"filename\": \"Nome\",\n        \"optional\": \"opzionale\",\n        \"unorderedlist\": \"Lista non ordinata\",\n        \"orderedlist\": \"Lista ordinata\",\n        \"outdent\": \"De-indenta\",\n        \"indent\": \"Indenta\",\n        \"horizontalrule\": \"Linea\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Editor di testo\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/ja.js",
    "content": "(function($R)\n{\n    $R.lang['ja'] = {\n        \"format\": \"フォーマットする\",\n        \"image\": \"画像\",\n        \"file\": \"ファイル\",\n        \"link\": \"リンク\",\n        \"bold\": \"太字\",\n        \"italic\": \"イタリック体\",\n        \"deleted\": \"取り消し線\",\n        \"underline\": \"下線\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"リスト\",\n        \"link-insert\": \"リンクを挿入する\",\n        \"link-edit\": \"リンクを編集する\",\n        \"link-in-new-tab\": \"新しいタブでリンクを開く\",\n        \"unlink\": \"リンクを解除する\",\n        \"cancel\": \"取り消す\",\n        \"close\": \"閉じる\",\n        \"insert\": \"挿入する\",\n        \"save\": \"保存する\",\n        \"delete\": \"削除する\",\n        \"text\": \"テキスト\",\n        \"edit\": \"編集する\",\n        \"title\": \"タイトル\",\n        \"paragraph\": \"標準テキスト\",\n        \"quote\": \"引用\",\n        \"code\": \"コード\",\n        \"heading1\": \"見出し 1\",\n        \"heading2\": \"見出し 2\",\n        \"heading3\": \"見出し 3\",\n        \"heading4\": \"見出し 4\",\n        \"heading5\": \"見出し 5\",\n        \"heading6\": \"見出し 6\",\n        \"filename\": \"名前\",\n        \"optional\": \"任意\",\n        \"unorderedlist\": \"番号なしリスト\",\n        \"orderedlist\": \"番号付きリスト\",\n        \"outdent\": \"インデントを戻す\",\n        \"indent\": \"インデントする\",\n        \"horizontalrule\": \"線\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"リッチテキストエディタ\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/ko.js",
    "content": "(function($R)\n{\n    $R.lang['ko'] = {\n        \"format\": \"포맷\",\n        \"image\": \"이미지\",\n        \"file\": \"파일\",\n        \"link\": \"링크\",\n        \"bold\": \"굵게\",\n        \"italic\": \"기울임꼴\",\n        \"deleted\": \"취소선\",\n        \"underline\": \"밑줄\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"목록\",\n        \"link-insert\": \"링크 삽입\",\n        \"link-edit\": \"링크 편집\",\n        \"link-in-new-tab\": \"새 탭에 링크 열기\",\n        \"unlink\": \"링크 끊기\",\n        \"cancel\": \"취소\",\n        \"close\": \"닫기\",\n        \"insert\": \"삽입\",\n        \"save\": \"저장\",\n        \"delete\": \"삭제\",\n        \"text\": \"글\",\n        \"edit\": \"편집\",\n        \"title\": \"제목\",\n        \"paragraph\": \"보통 글\",\n        \"quote\": \"인용\",\n        \"code\": \"코드\",\n        \"heading1\": \"제목 1\",\n        \"heading2\": \"제목 2\",\n        \"heading3\": \"제목 3\",\n        \"heading4\": \"제목 4\",\n        \"heading5\": \"제목 5\",\n        \"heading6\": \"제목 6\",\n        \"filename\": \"이름\",\n        \"optional\": \"선택\",\n        \"unorderedlist\": \"주문 안된 목록\",\n        \"orderedlist\": \"주문 목록\",\n        \"outdent\": \"내어쓰기\",\n        \"indent\": \"들여쓰기\",\n        \"horizontalrule\": \"행\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Rich text 편집기\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/nl.js",
    "content": "(function($R)\n{\n    $R.lang['nl'] = {\n        \"format\": \"Format\",\n        \"image\": \"Afbeelding\",\n        \"file\": \"Bestand\",\n        \"link\": \"Link\",\n        \"bold\": \"Vet\",\n        \"italic\": \"Cursief\",\n        \"deleted\": \"Doorstreept\",\n        \"underline\": \"Onderstreept\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Lijsten\",\n        \"link-insert\": \"Link invoegen\",\n        \"link-edit\": \"Link Bewerken\",\n        \"link-in-new-tab\": \"Open link in nieuw tabblad\",\n        \"unlink\": \"Ontkoppelen\",\n        \"cancel\": \"Annuleren\",\n        \"close\": \"Afsluiten\",\n        \"insert\": \"Invoegen\",\n        \"save\": \"Opslaan\",\n        \"delete\": \"Verwijder\",\n        \"text\": \"Tekst\",\n        \"edit\": \"Bewerken\",\n        \"title\": \"Titel\",\n        \"paragraph\": \"Normale tekst\",\n        \"quote\": \"Citaat\",\n        \"code\": \"Code\",\n        \"heading1\": \"Koptekst 1\",\n        \"heading2\": \"Koptekst 2\",\n        \"heading3\": \"Koptekst 3\",\n        \"heading4\": \"Koptekst 4\",\n        \"heading5\": \"Koptekst 5\",\n        \"heading6\": \"Koptekst 6\",\n        \"filename\": \"Bestandsnaam\",\n        \"optional\": \"Optioneel\",\n        \"unorderedlist\": \"Ongeordende lijst\",\n        \"orderedlist\": \"Geordende lijst\",\n        \"outdent\": \"Uitspringen\",\n        \"indent\": \"Inspringen\",\n        \"horizontalrule\": \"Streep\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"RTF editor\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/no.js",
    "content": "(function($R)\r\n{\r\n    $R.lang['no'] = {\r\n        \"format\": \"Format\",\r\n        \"image\": \"Bilde\",\r\n        \"file\": \"Fil\",\r\n        \"link\": \"Link\",\r\n        \"bold\": \"Fet\",\r\n        \"italic\": \"Kursiv\",\r\n        \"deleted\": \"Gjennomstreking\",\r\n        \"underline\": \"Understreking\",\r\n        \"superscript\": \"Superscript\",\r\n        \"subscript\": \"Subscript\",\r\n        \"bold-abbr\": \"F\",\r\n        \"italic-abbr\": \"K\",\r\n        \"deleted-abbr\": \"S\",\r\n        \"underline-abbr\": \"U\",\r\n        \"superscript-abbr\": \"Sup\",\r\n        \"subscript-abbr\": \"Sub\",\r\n        \"lists\": \"Punkt\",\r\n        \"link-insert\": \"Sett inn link\",\r\n        \"link-edit\": \"Rediger link\",\r\n        \"link-in-new-tab\": \"Åpne link i ny fane\",\r\n        \"unlink\": \"Fjern Understreking\",\r\n        \"cancel\": \"Abryt\",\r\n        \"close\": \"Lukk\",\r\n        \"insert\": \"Sett inn\",\r\n        \"save\": \"Lagre\",\r\n        \"delete\": \"Slett\",\r\n        \"text\": \"Tekst\",\r\n        \"edit\": \"Rediger\",\r\n        \"title\": \"Tittel\",\r\n        \"paragraph\": \"Normal tekst\",\r\n        \"quote\": \"Sitat\",\r\n        \"code\": \"Kode\",\r\n        \"heading1\": \"Overskrift 1\",\r\n        \"heading2\": \"Overskrift 2\",\r\n        \"heading3\": \"Overskrift 3\",\r\n        \"heading4\": \"Overskrift 4\",\r\n        \"heading5\": \"Overskrift 5\",\r\n        \"heading6\": \"Overskrift 6\",\r\n        \"filename\": \"Navn\",\r\n        \"optional\": \"valgfri\",\r\n        \"unorderedlist\": \"Unordered List\",\r\n        \"orderedlist\": \"Punktliste\",\r\n        \"outdent\": \"Reduser innrykk\",\r\n        \"indent\": \"Øk innrykk\",\r\n        \"horizontalrule\": \"Linje\",\r\n        \"upload\": \"Upload\",\r\n        \"upload-label\": \"Drop files here or click to upload\",\r\n        \"upload-change-label\": \"Drop a new image to change\",\r\n        \"accessibility-help-label\": \"Rik-tekst behandler\",\r\n        \"caption\": \"Bildetekst\",\r\n        \"bulletslist\": \"Punkter\",\r\n        \"numberslist\": \"Nummerering\",\r\n        \"image-position\": \"Posisjon\",\r\n        \"none\": \"Ingen\",\r\n        \"left\": \"Venstre\",\r\n        \"right\": \"Høgre\",\r\n        \"center\": \"Senter\",\r\n        \"undo\": \"Undo\",\r\n        \"redo\": \"Redo\"\r\n    };\r\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/pl.js",
    "content": "(function($R)\n{\n    $R.lang['pl'] = {\n        \"format\": \"Formatuj\",\n        \"image\": \"Obrazek\",\n        \"file\": \"Plik\",\n        \"link\": \"Link\",\n        \"bold\": \"Pogrubienie\",\n        \"italic\": \"Kursywa\",\n        \"deleted\": \"Przekreślenie\",\n        \"underline\": \"Podkreślenie\",\n        \"superscript\": \"Indeks górny\",\n        \"subscript\": \"Indeks dolny\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Lista\",\n        \"link-insert\": \"Wstaw link\",\n        \"link-edit\": \"Edytuj link\",\n        \"link-in-new-tab\": \"Otwórz link w nowej karcie\",\n        \"unlink\": \"Usuń link\",\n        \"cancel\": \"Anuluj\",\n        \"close\": \"Zamknij\",\n        \"insert\": \"Wstaw\",\n        \"save\": \"Zapisz\",\n        \"delete\": \"Usuń\",\n        \"text\": \"Text\",\n        \"edit\": \"Edytuj\",\n        \"title\": \"Tytuł\",\n        \"paragraph\": \"Zwykły tekst\",\n        \"quote\": \"Cytat\",\n        \"code\": \"Kod\",\n        \"heading1\": \"Nagłówek 1\",\n        \"heading2\": \"Nagłówek 2\",\n        \"heading3\": \"Nagłówek 3\",\n        \"heading4\": \"Nagłówek 4\",\n        \"heading5\": \"Nagłówek 5\",\n        \"heading6\": \"Nagłówek 6\",\n        \"filename\": \"Nazwa\",\n        \"optional\": \"opcjonalnie\",\n        \"unorderedlist\": \"Lista punktowana\",\n        \"orderedlist\": \"Lista numerowana\",\n        \"outdent\": \"Zmniejsz wcięcie\",\n        \"indent\": \"Zwiększ wcięcie\",\n        \"horizontalrule\": \"Linia pozioma\",\n        \"upload\": \"Przekazać plik\",\n        \"upload-label\": \"Upuść pliki tutaj lub kliknij, aby przesłać\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Edytor tekstu\",\n        \"caption\": \"Podpis\",\n        \"bulletslist\": \"Kule\",\n        \"numberslist\": \"Liczby\",\n        \"image-position\": \"Pozycja\",\n        \"none\": \"Żaden\",\n        \"left\": \"Lewo\",\n        \"right\": \"Prawa\",\n        \"center\": \"Centrum\",\n        \"undo\": \"Cofnij\",\n        \"redo\": \"Ponów\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/pt_br.js",
    "content": "(function($R)\n{\n    $R.lang['pt_br'] = {\n        \"format\": \"Formato\",\n        \"image\": \"Imagem\",\n        \"file\": \"Arquivo\",\n        \"link\": \"Link\",\n        \"bold\": \"Negrito\",\n        \"italic\": \"Itálico\",\n        \"deleted\": \"Tachado\",\n        \"underline\": \"Sublinhado\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"N\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"T\",\n        \"underline-abbr\": \"S\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Listas\",\n        \"link-insert\": \"Inserir link\",\n        \"link-edit\": \"Editar link\",\n        \"link-in-new-tab\": \"Abrir link em nova guia\",\n        \"unlink\": \"Desvincular\",\n        \"cancel\": \"Cancelar\",\n        \"close\": \"Fechar\",\n        \"insert\": \"Inserir\",\n        \"save\": \"Salvar\",\n        \"delete\": \"Excluir\",\n        \"text\": \"Texto\",\n        \"edit\": \"Editar\",\n        \"title\": \"Título\",\n        \"paragraph\": \"Texto normal\",\n        \"quote\": \"Citação\",\n        \"code\": \"Código\",\n        \"header1\": \"Cabeçalho 1\",\n        \"header2\": \"Cabeçalho 2\",\n        \"header3\": \"Cabeçalho 3\",\n        \"header4\": \"Cabeçalho 4\",\n        \"header5\": \"Cabeçalho 5\",\n        \"header6\": \"Cabeçalho 6\",\n        \"filename\": \"Nome\",\n        \"optional\": \"Opcional\",\n        \"unorderedlist\": \"Lista não ordenada\",\n        \"orderedlist\": \"Lista ordenada\",\n        \"outdent\": \"Diminuir recuo\",\n        \"indent\": \"Recuar\",\n        \"horizontalrule\": \"Linha\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Editor de Rich Text\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/ru.js",
    "content": "(function($R)\n{\n    $R.lang['ru'] = {\n        \"format\": \"Формат\",\n        \"image\": \"Картинка\",\n        \"file\": \"Файл\",\n        \"link\": \"Ссылка\",\n        \"bold\": \"Полужирный\",\n        \"italic\": \"Курсив\",\n        \"deleted\": \"Зачеркнутый\",\n        \"underline\": \"Подчеркнутый\",\n        \"superscript\": \"Надстрочный\",\n        \"subscript\": \"Подстрочный\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Списки\",\n        \"link-insert\": \"Вставить ссылку\",\n        \"link-edit\": \"Редактировать ссылку\",\n        \"link-in-new-tab\": \"Открыть ссылку в новом табе\",\n        \"unlink\": \"Удалить ссылку\",\n        \"cancel\": \"Отменить\",\n        \"close\": \"Закрыть\",\n        \"insert\": \"Вставить\",\n        \"save\": \"Сохранить\",\n        \"delete\": \"Удалить\",\n        \"text\": \"Текст\",\n        \"edit\": \"Редактировать\",\n        \"title\": \"Title\",\n        \"paragraph\": \"Обычный текст\",\n        \"quote\": \"Цитата\",\n        \"code\": \"Код\",\n        \"heading1\": \"Заголовок 1\",\n        \"heading2\": \"Заголовок 2\",\n        \"heading3\": \"Заголовок 3\",\n        \"heading4\": \"Заголовок 4\",\n        \"heading5\": \"Заголовок 5\",\n        \"heading6\": \"Заголовок 6\",\n        \"filename\": \"Имя файла\",\n        \"optional\": \"необязательно\",\n        \"unorderedlist\": \"Ненумерованный список\",\n        \"orderedlist\": \"Нумерованный список\",\n        \"outdent\": \"Убрать отступ\",\n        \"indent\": \"Добавить отступ\",\n        \"horizontalrule\": \"Линия\",\n        \"upload\": \"Загрузить\",\n        \"upload-label\": \"Перетащите файлы или нажмите для загрузки\",\n        \"upload-change-label\": \"Перетащите новую картинку\",\n        \"accessibility-help-label\": \"Редактор форматированного текста\",\n        \"caption\": \"Подпись\",\n        \"bulletslist\": \"Маркеры\",\n        \"numberslist\": \"Нумерация\",\n        \"image-position\": \"Обтекание\",\n        \"none\": \"Нет\",\n        \"left\": \"Слева\",\n        \"right\": \"Справа\",\n        \"center\": \"По центру\",\n        \"undo\": \"Отменить\",\n        \"redo\": \"Повторить\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/sk.js",
    "content": "(function($R)\n{\n    $R.lang['sk'] = {\n        \"format\": \"Formát\",\n        \"image\": \"Obrázok\",\n        \"file\": \"Súbor\",\n        \"link\": \"Odkaz\",\n        \"bold\": \"Tučné\",\n        \"italic\": \"Kurzíva\",\n        \"deleted\": \"Preškrtnuté\",\n        \"underline\": \"Podčiarknuté\",\n        \"superscript\": \"Horný index\",\n        \"subscript\": \"Spodný index\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Zoznam\",\n        \"link-insert\": \"Vložiť odkaz\",\n        \"link-edit\": \"Upraviť odkaz\",\n        \"link-in-new-tab\": \"Otvoriť odkaz v novom okne\",\n        \"unlink\": \"Zrušiť odkaz\",\n        \"cancel\": \"Zrušiť\",\n        \"close\": \"Zatvoriť\",\n        \"insert\": \"Vložiť\",\n        \"save\": \"Uložiť\",\n        \"delete\": \"Vymazať\",\n        \"text\": \"Text\",\n        \"edit\": \"Upraviť\",\n        \"title\": \"Názov\",\n        \"paragraph\": \"Odsek\",\n        \"quote\": \"Citácia\",\n        \"code\": \"Kód\",\n        \"heading1\": \"Nadpis 1\",\n        \"heading2\": \"Nadpis 2\",\n        \"heading3\": \"Nadpis 3\",\n        \"heading4\": \"Nadpis 4\",\n        \"heading5\": \"Nadpis 5\",\n        \"heading6\": \"Nadpis 6\",\n        \"filename\": \"Meno\",\n        \"optional\": \"voliteľné\",\n        \"unorderedlist\": \"Nezoradený zoznam\",\n        \"orderedlist\": \"Zoradený zoznam\",\n        \"outdent\": \"Predsadiť\",\n        \"indent\": \"Odsadiť\",\n        \"horizontalrule\": \"Linka\",\n        \"upload\": \"Nahrať\",\n        \"upload-label\": \"Presuňte sem súbory alebo kliknite pre výber\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Rich text editor\",\n        \"caption\": \"Titulok\",\n        \"bulletslist\": \"odrážkový zoznam\",\n        \"numberslist\": \"číslovaný zoznam\",\n        \"image-position\": \"Pozícia\",\n        \"none\": \"Žiadne\",\n        \"left\": \"Vľavo\",\n        \"right\": \"Vpravo\",\n        \"center\": \"Na stred\",\n        \"undo\": \"Späť\",\n        \"redo\": \"Obnoviť\"\n    };\n})(Redactor);\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/sl.js",
    "content": "(function($R)\n{\n    $R.lang['sl'] = {\n        \"format\": \"Oblikovanje\",\n        \"image\": \"Slika\",\n        \"file\": \"Datoteka\",\n        \"link\": \"Povezava\",\n        \"bold\": \"Krepko\",\n        \"italic\": \"Ležeče\",\n        \"deleted\": \"Prečrtano\",\n        \"underline\": \"Podčrtano\",\n        \"superscript\": \"Nadpisano\",\n        \"subscript\": \"Podpisano\",\n        \"bold-abbr\": \"K\",\n        \"italic-abbr\": \"L\",\n        \"deleted-abbr\": \"P\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Nad\",\n        \"subscript-abbr\": \"Pod\",\n        \"lists\": \"Seznami\",\n        \"link-insert\": \"Vstavi povezavo\",\n        \"link-edit\": \"Uredi povezavo\",\n        \"link-in-new-tab\": \"Odpri povezavo v novem zavihku\",\n        \"unlink\": \"Odstrani povezavo\",\n        \"cancel\": \"Prekliči\",\n        \"close\": \"Zapri\",\n        \"insert\": \"Vstavi\",\n        \"save\": \"Shrani\",\n        \"delete\": \"Izbriši\",\n        \"text\": \"Besedilo\",\n        \"edit\": \"Uredi\",\n        \"title\": \"Naslov\",\n        \"paragraph\": \"Navadno besedilo\",\n        \"quote\": \"Navedek\",\n        \"code\": \"Koda\",\n        \"heading1\": \"Naslov 1\",\n        \"heading2\": \"Naslov 2\",\n        \"heading3\": \"Naslov 3\",\n        \"heading4\": \"Naslov 4\",\n        \"heading5\": \"Naslov 5\",\n        \"heading6\": \"Naslov 6\",\n        \"filename\": \"Ime\",\n        \"optional\": \"izbirno\",\n        \"unorderedlist\": \"Označen seznam\",\n        \"orderedlist\": \"Oštevilčen seznam\",\n        \"outdent\": \"Zmanjšaj zamik\",\n        \"indent\": \"Povečaj zamik\",\n        \"horizontalrule\": \"Črta\",\n        \"upload\": \"Naloži\",\n        \"upload-label\": \"Povleci datoteke sem ali klikni za nalaganje\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Urejevalnik obogatenega besedila\",\n        \"caption\": \"Napis\",\n        \"bulletslist\": \"Oznake\",\n        \"numberslist\": \"Številčenje\",\n        \"image-position\": \"Položaj\",\n        \"none\": \"Brez\",\n        \"left\": \"Levo\",\n        \"right\": \"Desno\",\n        \"center\": \"Sredinsko\",\n        \"undo\": \"Razveljavi\",\n        \"redo\": \"Uveljavi\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/sv.js",
    "content": "(function($R)\n{\n    $R.lang['sv'] = {\n        \"format\": \"Format\",\n        \"image\": \"Bild\",\n        \"file\": \"Fil\",\n        \"link\": \"Länk\",\n        \"bold\": \"Fet\",\n        \"italic\": \"Kursiv\",\n        \"deleted\": \"Överstruken\",\n        \"underline\": \"Understruken\",\n        \"superscript\": \"Upphöjd\",\n        \"subscript\": \"Nedsänkt\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Lista\",\n        \"link-insert\": \"Infoga länk\",\n        \"link-edit\": \"Redigera länk\",\n        \"link-in-new-tab\": \"Öppna länk i nytt fönster\",\n        \"unlink\": \"Radera länk\",\n        \"cancel\": \"Avbryt\",\n        \"close\": \"Stäng\",\n        \"insert\": \"Infoga\",\n        \"save\": \"Spara\",\n        \"delete\": \"Radera\",\n        \"text\": \"Text\",\n        \"edit\": \"Redigera\",\n        \"title\": \"Titel\",\n        \"paragraph\": \"Normal text\",\n        \"quote\": \"Citat\",\n        \"code\": \"Kod\",\n        \"heading1\": \"Titel 1\",\n        \"heading2\": \"Titel 2\",\n        \"heading3\": \"Titel 3\",\n        \"heading4\": \"Titel 4\",\n        \"heading5\": \"Titel 5\",\n        \"heading6\": \"Titel 6\",\n        \"filename\": \"Namn\",\n        \"optional\": \"valfritt\",\n        \"unorderedlist\": \"Osorterad lista\",\n        \"orderedlist\": \"Sorterad lista\",\n        \"outdent\": \"Minska utdrag\",\n        \"indent\": \"Öka utdrag\",\n        \"horizontalrule\": \"Linje\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Släpp filer här eller klicka för att ladda upp\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Textredigerare\",\n        \"caption\": \"Undertext\",\n        \"bulletslist\": \"Punkter\",\n        \"numberslist\": \"Nummer\",\n        \"image-position\": \"Position\",\n        \"none\": \"Ingen\",\n        \"left\": \"Vänster\",\n        \"right\": \"Höger\",\n        \"center\": \"Centrerad\",\n        \"undo\": \"Ångra\",\n        \"redo\": \"Gör om\",\n\n        /* Table plugin */\n        \"table\": \"Tabell\",\n        \"insert-table\": \"Infoga tabell\",\n        \"insert-row-above\": \"Infoga rad ovanför\",\n        \"insert-row-below\": \"Infoga rad undertill\",\n        \"insert-column-left\": \"Infoga kolumn till vänster\",\n        \"insert-column-right\": \"Infoga kolumn till höger\",\n        \"add-head\": \"Lägg till rubrikrad\",\n        \"delete-head\": \"Ta bort rubrikrad\",\n        \"delete-column\": \"Ta bort kolumn\",\n        \"delete-row\": \"Ta bort rad\",\n        \"delete-table\": \"Ta bort tabell\",\n\n        /* Fullscreen plugin */\n        \"fullscreen\": \"Fullskärm\",\n\n        /* Font color plugin */\n        \"fontcolor\": \"Textfärg\",\n        \"highlight\": \"Färgöverstrykning\",\n\n        /* Font family plugin */\n        \"fontfamily\": \"Typsnitt\",\n        \"remove-font-family\": \"Återställ typsnitt\",\n\n        /* Font size plugin */\n        \"size\": \"Storlek\",\n        \"remove-size\":  \"Återställ textstorlek\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/tr.js",
    "content": "(function($R)\n{\n    $R.lang['tr'] = {\n        \"format\": \"Format\",\n        \"image\": \"Görsel\",\n        \"file\": \"Dosya\",\n        \"link\": \"Link\",\n        \"bold\": \"Kalın\",\n        \"italic\": \"İtalik\",\n        \"deleted\": \"Üzeri çizgili\",\n        \"underline\": \"Altı çizgili\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"Listeleme\",\n        \"link-insert\": \"Link ekle\",\n        \"link-edit\": \"Linki düzenle\",\n        \"link-in-new-tab\": \"Yeni bir pencerede aç\",\n        \"unlink\": \"Linki Kaldır\",\n        \"cancel\": \"Vazgeç\",\n        \"close\": \"Kapat\",\n        \"insert\": \"Ekle\",\n        \"save\": \"Kaydet\",\n        \"delete\": \"Sil\",\n        \"text\": \"Metin\",\n        \"edit\": \"Düzenle\",\n        \"title\": \"Başlık\",\n        \"paragraph\": \"Normal yazı\",\n        \"quote\": \"Alıntı\",\n        \"code\": \"Kod\",\n        \"heading1\": \"Başlık 1\",\n        \"heading2\": \"Başlık 2\",\n        \"heading3\": \"Başlık 3\",\n        \"heading4\": \"Başlık 4\",\n        \"heading5\": \"Başlık 5\",\n        \"heading6\": \"Başlık 6\",\n        \"filename\": \"İsim\",\n        \"optional\": \"opsiyonel\",\n        \"unorderedlist\": \"Sırasız Liste\",\n        \"orderedlist\": \"Sıralı Liste\",\n        \"outdent\": \"Dışarı Doğru\",\n        \"indent\": \"İçeri Doğru\",\n        \"horizontalrule\": \"Çizgi\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Zenginleştirilmiş yazı editorü\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/zh_cn.js",
    "content": "(function($R)\n{\n    $R.lang['zh_cn'] = {\n        \"format\": \"格式\",\n        \"image\": \"图片\",\n        \"file\": \"文件\",\n        \"link\": \"链接\",\n        \"bold\": \"加粗\",\n        \"italic\": \"斜体\",\n        \"deleted\": \"删除线\",\n        \"underline\": \"底线\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"列表\",\n        \"link-insert\": \"插入链接\",\n        \"link-edit\": \"编辑链接\",\n        \"link-in-new-tab\": \"在新页面中打开\",\n        \"unlink\": \"取消链接\",\n        \"cancel\": \"取消\",\n        \"close\": \"关闭\",\n        \"insert\": \"插入\",\n        \"save\": \"保存\",\n        \"delete\": \"删除\",\n        \"text\": \"文本\",\n        \"edit\": \"编辑\",\n        \"title\": \"标题\",\n        \"paragraph\": \"段落\",\n        \"quote\": \"引用\",\n        \"code\": \"代码\",\n        \"heading1\": \"标题 1\",\n        \"heading2\": \"标题 2\",\n        \"heading3\": \"标题 3\",\n        \"heading4\": \"标题 4\",\n        \"heading5\": \"标题 5\",\n        \"heading6\": \"标题 6\",\n        \"filename\": \"文件名\",\n        \"optional\": \"optional\",\n        \"unorderedlist\": \"无序列表\",\n        \"orderedlist\": \"有序列表\",\n        \"outdent\": \"向左缩进\",\n        \"indent\": \"向右缩进\",\n        \"horizontalrule\": \"水平分隔线\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"富文本编辑器\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_langs/zh_tw.js",
    "content": "(function($R)\n{\n    $R.lang['zh_tw'] = {\n        \"format\": \"樣式\",\n        \"image\": \"插入圖片\",\n        \"file\": \"插入文件\",\n        \"link\": \"連結\",\n        \"bold\": \"將文字變成粗體\",\n        \"italic\": \"將文字變成斜體\",\n        \"deleted\": \"刪除線\",\n        \"underline\": \"底線\",\n        \"superscript\": \"Superscript\",\n        \"subscript\": \"Subscript\",\n        \"bold-abbr\": \"B\",\n        \"italic-abbr\": \"I\",\n        \"deleted-abbr\": \"S\",\n        \"underline-abbr\": \"U\",\n        \"superscript-abbr\": \"Sup\",\n        \"subscript-abbr\": \"Sub\",\n        \"lists\": \"列表\",\n        \"link-insert\": \"插入連結\",\n        \"link-edit\": \"編輯連結\",\n        \"link-in-new-tab\": \"開啟新分頁\",\n        \"unlink\": \"移除連結\",\n        \"cancel\": \"取消\",\n        \"close\": \"關閉\",\n        \"insert\": \"插入\",\n        \"save\": \"儲存\",\n        \"delete\": \"刪除\",\n        \"text\": \"內文\",\n        \"edit\": \"編輯\",\n        \"title\": \"標題\",\n        \"paragraph\": \"段落\",\n        \"quote\": \"引用\",\n        \"code\": \"原始碼\",\n        \"heading1\": \"標題 1\",\n        \"heading2\": \"標題 2\",\n        \"heading3\": \"標題 3\",\n        \"heading4\": \"標題 4\",\n        \"heading5\": \"標題 5\",\n        \"heading6\": \"標題 6\",\n        \"filename\": \"檔案名稱\",\n        \"optional\": \"optional\",\n        \"unorderedlist\": \"項目列表\",\n        \"orderedlist\": \"編號列表\",\n        \"outdent\": \"減少縮排\",\n        \"indent\": \"增加縮排\",\n        \"horizontalrule\": \"插入水平線\",\n        \"upload\": \"Upload\",\n        \"upload-label\": \"Drop files here or click to upload\",\n        \"upload-change-label\": \"Drop a new image to change\",\n        \"accessibility-help-label\": \"Rich text editor\",\n        \"caption\": \"Caption\",\n        \"bulletslist\": \"Bullets\",\n        \"numberslist\": \"Numbers\",\n        \"image-position\": \"Position\",\n        \"none\": \"None\",\n        \"left\": \"Left\",\n        \"right\": \"Right\",\n        \"center\": \"Center\",\n        \"undo\": \"Undo\",\n        \"redo\": \"Redo\"\n    };\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/alignment/alignment.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'alignment', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"align\": \"Align\",\n    \t\t\t\"align-left\": \"Align Left\",\n    \t\t\t\"align-center\": \"Align Center\",\n    \t\t\t\"align-right\": \"Align Right\",\n    \t\t\t\"align-justify\": \"Align Justify\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.lang = app.lang;\n            this.block = app.block;\n            this.toolbar = app.toolbar;\n        },\n        // public\n        start: function()\n        {\n            var dropdown = {};\n\n    \t\tdropdown.left = { title: this.lang.get('align-left'), api: 'plugin.alignment.set', args: 'left' };\n    \t\tdropdown.center = { title: this.lang.get('align-center'), api: 'plugin.alignment.set', args: 'center' };\n    \t\tdropdown.right = { title: this.lang.get('align-right'), api: 'plugin.alignment.set', args: 'right' };\n    \t\tdropdown.justify = { title: this.lang.get('align-justify'), api: 'plugin.alignment.set', args: 'justify' };\n\n            var $button = this.toolbar.addButton('alignment', { title: this.lang.get('align') });\n            $button.setIcon('<i class=\"re-icon-alignment\"></i>');\n\t\t\t$button.setDropdown(dropdown);\n        },\n        set: function(type)\n\t\t{\n    \t\tif (type === 'left' && this.opts.direction === 'ltr')\n    \t\t{\n        \t\treturn this._remove();\n    \t\t}\n\n    \t\tvar args = {\n        \t    style: { 'text-align': type }\n    \t\t};\n\n\t\t\tthis.block.toggle(args);\n\t\t},\n\n\t\t// private\n\t\t_remove: function()\n\t\t{\n\t\t    this.block.remove({ style: 'text-align' });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/beyondgrammar/beyondgrammar.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'beyondgrammar', {\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.editor = app.editor;\n            this.cleaner = app.cleaner;\n        },\n        // messages\n        onoriginalblur: function(e)\n        {\n            var $target = $R.dom(e.target);\n            if ($target.hasClass('pwa-suggest'))\n            {\n                e.preventDefault();\n                this.app.stopBlur = true;\n                return;\n            }\n\n            this.app.stopBlur = false;\n        },\n        onsource: {\n            closed: function()\n            {\n                this.editor.focus();\n                this._activate();\n            }\n        },\n        // public\n        start: function()\n        {\n            this.GrammarChecker = this._getGrammarChecker();\n            if (!this.opts.beyondgrammar || !this.GrammarChecker) return;\n\n            // add cleaner rules\n            this.cleaner.addUnconvertRules('spellcheck', function($wrapper)\n            {\n                $wrapper.find('.pwa-mark').unwrap();\n            });\n\n            // activate\n            this._activate();\n        },\n\n        // private\n        _activate: function()\n        {\n            // editor\n            var $editor = this.editor.getElement();\n            $editor.attr('spellcheck', false);\n\n            var checker = new this.GrammarChecker($editor.get(), this.opts.beyondgrammar.service, this.opts.beyondgrammar.grammar);\n            checker.init().then(function()\n            {\n                //grammar checker is inited and can be activate\n                checker.activate();\n            });\n        },\n        _getGrammarChecker: function()\n        {\n            return (typeof window[\"BeyondGrammar\"] === 'undefined') ? false : window[\"BeyondGrammar\"][\"GrammarChecker\"];\n        }\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/clips/clips.css",
    "content": ".redactor-clips-list {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n.redactor-clips-list li {\n    display: inline-block;\n    margin-right: 4px;\n    margin-bottom: 4px;\n}\n.redactor-clips-list span {\n    white-space: nowrap;\n    background: rgba(0,125,255, .75);\n    color: #fff;\n    display: inline-block;\n    padding: 3px 6px;\n    line-height: 1;\n    border-radius: 4px;\n    cursor: pointer;\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/clips/clips.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'clips', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"clips\": \"Clips\",\n    \t\t\t\"clips-select\": \"Please, select a clip\"\n            }\n        },\n        modals: {\n            'clips': ''\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.lang = app.lang;\n            this.toolbar = app.toolbar;\n            this.insertion = app.insertion;\n        },\n        // messages\n        onmodal: {\n            clips: {\n                open: function($modal)\n                {\n                    this._build($modal);\n                }\n            }\n        },\n\n        // public\n        start: function()\n        {\n            if (!this.opts.clips) return;\n\n            var data = {\n                title: this.lang.get('clips'),\n                api: 'plugin.clips.open'\n            };\n\n            var $button = this.toolbar.addButton('clips', data);\n            $button.setIcon('<i class=\"re-icon-clips\"></i>');\n        },\n        open: function(type)\n        {\n            var options = {\n                title: this.lang.get('clips'),\n                width: '600px',\n                name: 'clips'\n            };\n\n            this.app.api('module.modal.build', options);\n\t\t},\n\n\t\t// private\n\t\t_build: function($modal)\n\t\t{\n    \t\tvar $body = $modal.getBody();\n            var $label = this._buildLabel();\n            var $list = this._buildList();\n\n            this._buildItems($list);\n\n            $body.html('');\n            $body.append($label);\n            $body.append($list);\n\n\t\t},\n\t\t_buildLabel: function()\n\t\t{\n            var $label = $R.dom('<label>');\n            $label.html(this.lang.parse('## clips-select ##:'));\n\n    \t\treturn $label;\n\t\t},\n\t\t_buildList: function()\n\t\t{\n    \t\tvar $list = $R.dom('<ul>');\n            $list.addClass('redactor-clips-list');\n\n            return $list;\n\t\t},\n\t\t_buildItems: function($list)\n\t\t{\n    \t\tvar items = this.opts.clips;\n    \t\tfor (var i = 0; i < items.length; i++)\n            {\n                var $li = $R.dom('<li>');\n                var $item = $R.dom('<span>');\n\n                $item.attr('data-index', i);\n                $item.html(items[i][0]);\n                $item.on('click', this._insert.bind(this));\n\n                $li.append($item);\n                $list.append($li);\n            }\n\t\t},\n\t\t_insert: function(e)\n\t\t{\n            var $item = $R.dom(e.target);\n            var index = $item.attr('data-index');\n            var html = this.opts.clips[index][1];\n\n            this.app.api('module.modal.close');\n            this.insertion.insertRaw(html);\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/counter/counter.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'counter', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"words\": \"words\",\n    \t\t\t\"chars\": \"chars\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.utils = app.utils;\n            this.editor = app.editor;\n            this.statusbar = app.statusbar;\n        },\n        // public\n        start: function()\n        {\n            var $editor = this.editor.getElement();\n            $editor.on('keyup.redactor-plugin-counter', this.count.bind(this));\n\n            this.count();\n        },\n        stop: function()\n        {\n            var $editor = this.editor.getElement();\n            $editor.off('.redactor-plugin-counter');\n\n            this.statusbar.remove('words');\n            this.statusbar.remove('chars');\n        },\n\t\tcount: function()\n\t\t{\n\t\t\tvar words = 0, characters = 0, spaces = 0;\n\t\t\tvar $editor = this.editor.getElement();\n\t\t\tvar html = $editor.html();\n\n\t\t\thtml = this._clean(html)\n\t\t\tif (html !== '')\n\t\t\t{\n\t\t\t\tvar arrWords = html.split(/\\s+/);\n\t\t\t\tvar arrSpaces = html.match(/\\s/g);\n\n\t\t\t\twords = (arrWords) ? arrWords.length : 0;\n\t\t\t\tspaces = (arrSpaces) ? arrSpaces.length : 0;\n\n\t\t\t\tcharacters = html.length;\n\t\t\t}\n\n            var data = { words: words, characters: characters, spaces: spaces };\n\n            // callback\n\t\t\tthis.app.broadcast('counter', data);\n\n            // statusbar\n            this.statusbar.add('words', this.lang.get('words') + ': ' + data.words);\n            this.statusbar.add('chars', this.lang.get('chars') + ': ' + data.characters);\n\t\t},\n\n        // private\n        _clean: function(html)\n        {\n\t\t\thtml = html.replace(/<\\/(.*?)>/gi, ' ');\n\t\t\thtml = html.replace(/<(.*?)>/gi, '');\n\t\t\thtml = html.replace(/\\t/gi, '');\n\t\t\thtml = html.replace(/\\n/gi, ' ');\n\t\t\thtml = html.replace(/\\r/gi, ' ');\n\t\t\thtml = html.replace(/&nbsp;/g, '1');\n\t\t\thtml = html.trim();\n\t\t\thtml = this.utils.removeInvisibleChars(html);\n\n\t\t\treturn html;\n        }\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/definedlinks/definedlinks.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'definedlinks', {\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n\n            this.component = app.component;\n\n            // local\n            this.links = [];\n        },\n        // messages\n        onmodal: {\n            link: {\n                open: function($modal, $form)\n                {\n                    if (!this.opts.definedlinks) return;\n\n                    this.$modal = $modal;\n                    this.$form = $form;\n\n                    this._load();\n                }\n            }\n\t\t},\n\n\t\t// private\n\t\t_load: function()\n\t\t{\n    \t\tif (typeof this.opts.definedlinks === 'object')\n    \t\t{\n                this._build(this.opts.definedlinks);\n    \t\t}\n            else\n            {\n        \t\t$R.ajax.get({\n            \t\turl: this.opts.definedlinks,\n            \t\tsuccess: this._build.bind(this)\n        \t\t});\n    \t\t}\n\t\t},\n\t\t_build: function(data)\n\t\t{\n            var $selector = this.$modal.find('#redactor-defined-links');\n            if ($selector.length === 0)\n            {\n                var $body = this.$modal.getBody();\n                var $item = $R.dom('<div class=\"form-item\" />');\n                var $selector = $R.dom('<select id=\"redactor-defined-links\" />');\n\n                $item.append($selector);\n                $body.prepend($item);\n            }\n\n            this.links = [];\n\n            $selector.html('');\n            $selector.off('change');\n\n            for (var key in data)\n            {\n                if (!data.hasOwnProperty(key) || typeof data[key] !== 'object')\n                {\n                    continue;\n                }\n\n                this.links[key] = data[key];\n\n                var $option = $R.dom('<option>');\n                $option.val(key);\n                $option.html(data[key].name);\n\n                $selector.append($option);\n            }\n\n            $selector.on('change', this._select.bind(this));\n\t\t},\n\t\t_select: function(e)\n\t\t{\n\t\t\tvar formData = this.$form.getData();\n\t\t\tvar key = $R.dom(e.target).val();\n\t\t\tvar data = { text: '', url: '' };\n\n\t\t\tif (key !== '0')\n\t\t\t{\n\t\t\t\tdata.text = this.links[key].name;\n\t\t\t\tdata.url = this.links[key].url;\n\t\t\t}\n\n\t\t\tif (formData.text !== '')\n\t\t\t{\n    \t\t\tdata = { url: data.url };\n\t\t\t}\n\n\t\t\tthis.$form.setData(data);\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/filemanager/filemanager.css",
    "content": "#redactor-filemanager-list {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n#redactor-filemanager-list li {\n    position: relative;\n    line-height: 23px;\n    border-bottom: 1px solid rgba(0, 0, 0, .05);\n}\n#redactor-filemanager-list li:last-child {\n    border-bottom-color: transparent;\n}\n#redactor-filemanager-list a {\n    text-decoration: none;\n    display: block;\n    color: #000;\n    padding: 3px 0 2px 0;\n    font-size: 15px;\n}\n#redactor-filemanager-list a:hover {\n    background: #f8f8f8;\n}\n#redactor-filemanager-list span {\n    font-family: monospace;\n    font-size: 11px;\n    color: #888;\n}\n#redactor-filemanager-list span.r-file-name {\n    margin-left: 8px;\n    top: -2px;\n    position: relative;\n}\n#redactor-filemanager-list span.r-file-size {\n    position: absolute;\n    right: 10px;\n    top: 6px;\n}\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/filemanager/filemanager.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'filemanager', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"choose\": \"Choose\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.opts = app.opts;\n        },\n        // messages\n         onmodal: {\n            file: {\n                open: function($modal, $form)\n                {\n                    if (!this.opts.fileManagerJson) return;\n                    this._load($modal)\n                }\n            }\n        },\n\n\t\t// private\n\t\t_load: function($modal)\n\t\t{\n\t\t\tvar $body = $modal.getBody();\n\n\t\t\tthis.$box = $R.dom('<div>');\n\t\t\tthis.$box.attr('data-title', this.lang.get('choose'));\n\t\t\tthis.$box.addClass('redactor-modal-tab');\n\t\t\tthis.$box.hide();\n\t\t\tthis.$box.css({\n    \t\t\toverflow: 'auto',\n    \t\t\theight: '300px',\n    \t\t\t'line-height': 1\n\t\t\t});\n\n\t\t\t$body.append(this.$box);\n\n\t\t\t$R.ajax.get({\n        \t\turl: this.opts.fileManagerJson,\n        \t\tsuccess: this._parse.bind(this)\n    \t\t});\n\t\t},\n\t\t_parse: function(data)\n\t\t{\n            var $ul = $R.dom('<ul id=\"redactor-filemanager-list\">');\n            for (var key in data)\n            {\n                var obj = data[key];\n                if (typeof obj !== 'object') continue;\n\n                var $li = $R.dom('<li>');\n                var $item = $R.dom('<a>');\n                $item.attr('href', '#');\n                $item.addClass('redactor-file-manager-link');\n                $item.attr('data-params', encodeURI(JSON.stringify(obj)));\n                $item.text(obj.title || obj.name);\n\t\t\t\t$item.on('click', this._insert.bind(this));\n\n                var $name = $R.dom('<span>');\n                $name.addClass('r-file-name');\n                $name.text(obj.name);\n                $item.append($name);\n\n                var $size = $R.dom('<span>');\n                $size.addClass('r-file-size');\n                $size.text('(' + obj.size + ')');\n                $item.append($size);\n\n\t\t\t\t$li.append($item);\n\t\t\t\t$ul.append($li);\n            }\n\n            this.$box.append($ul);\n\t\t},\n\t\t_insert: function(e)\n\t\t{\n\t\t\te.preventDefault();\n\n\t\t\tvar $el = $R.dom(e.target).closest('.redactor-file-manager-link');\n\t\t\tvar data = JSON.parse(decodeURI($el.attr('data-params')));\n\n\t\t\tthis.app.api('module.file.insert', { file: data });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/fileselector/fileselector.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'fileselector', {\n        init: function(app)\n        {\n            // define app\n            this.app = app;\n            this.opts = app.opts;\n\n            // define some services, for example\n            this.caret = app.caret;\n            this.selection = app.selection;\n            this.toolbar = app.toolbar;\n            this.insertion = app.insertion;\n        },\n        start: function () {\n            var buttonData = {\n                title: 'Insert File',\n                api: 'plugin.fileselector.open'\n            };\n            var button = this.toolbar.addButton('fileselector', buttonData);\n            button.setIcon('<i class=\"fa fa-archive\"></i>');\n        },\n        modals: {\n            'fileselector': '<section id=\"redactor-modal-fileselector\">'\n                + '<div class=\"input-group\">'\n                + '<input id=\"fileselector-filter\" type=\"textbox\" placeholder=\"Search\" class=\"form-control\">'\n                + '<span class=\"input-group-btn\">'\n                + '<span class=\"btn btn-default\"><span class=\"fa fa-search\"></span></span>'\n                + '</span>'\n                + '</div>'\n                + '<div id=\"fileselector-container\" class=\"raw-block-400 cms-row raw-margin-top-24\" style=\"overflow: scroll;\">Loading your file collection...</div>'\n                + '</section>'\n        },\n        open: function () {\n            var options = {\n                title: 'File Selector',\n                width: '600px',\n                name: 'fileselector'\n            };\n\n            this.app.api('module.modal.build', options);\n        },\n        onmodal: {\n            fileselector: {\n                opened: function($modal, $form)\n                {\n                    this.load();\n                },\n            },\n        },\n        load: function()\n        {\n            $.ajax({\n                dataType: \"json\",\n                cache: false,\n                headers: {\n                    Cms: _apiKey,\n                    Authorization: 'Bearer '+_apiToken\n                },\n                url: this.opts.fileManagerJson,\n                error: function(data){\n                    console.log(data)\n                },\n                success: $.proxy(function(data)\n                {\n                    $('#fileselector-container').html('');\n\n                    if (data.data.length > 0) {\n                        $.each((data.data), $.proxy(function(key, val)\n                        {\n                            var file = $('<div class=\"list-row raw-left raw100\"><div class=\"raw100 raw-left\"><p><span class=\"fa fa-download\"></span> <a class=\"file-link\" href=\"#\" data-url=\"/public-download/'+val.file_identifier +'\">' + val.file_name + '</a></p></div>');\n                            $('#fileselector-container').append(file);\n                            $(file).click($.proxy(this.insert, this));\n                        }, this));\n                    } else {\n                        $('#fileselector-container').append('You have not yet uploaded any files, visit the files tab to add some.');\n                    }\n\n                    $(\"#fileselector-filter\").bind(\"keyup\", function(){\n                        $(\"#fileselector-container\").find(\".file-link\").each(function(){\n                            if ($(this).html().indexOf($(\"#fileselector-filter\").val()) < 0) {\n                                $(this).parent().parent().parent().hide();\n                            } else {\n                                $(this).parent().parent().parent().show();\n                            }\n                        });\n                    })\n                }, this)\n            });\n        },\n        insert: function(e)\n        {\n            e.preventDefault();\n            this.insertion.insertHtml('<a href=\"' + $(e.target).attr('data-url') + '\">'+ $(e.target).html() +'</a>', false);\n            this.app.api('module.modal.close');\n        },\n    });\n})(Redactor);\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/fontcolor/fontcolor.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'fontcolor', {\n        translations: {\n            en: {\n                \"fontcolor\": \"Text Color\",\n                \"text\": \"Text\",\n                \"highlight\": \"Highlight\"\n            }\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.lang = app.lang;\n            this.inline = app.inline;\n            this.toolbar = app.toolbar;\n            this.selection = app.selection;\n\n            // local\n    \t\tthis.colors = (this.opts.fontcolors) ? this.opts.fontcolors : [\n    \t\t\t'#ffffff', '#000000', '#eeece1', '#1f497d', '#4f81bd', '#c0504d', '#9bbb59', '#8064a2', '#4bacc6', '#f79646', '#ffff00',\n    \t\t\t'#f2f2f2', '#7f7f7f', '#ddd9c3', '#c6d9f0', '#dbe5f1', '#f2dcdb', '#ebf1dd', '#e5e0ec', '#dbeef3', '#fdeada', '#fff2ca',\n    \t\t\t'#d8d8d8', '#595959', '#c4bd97', '#8db3e2', '#b8cce4', '#e5b9b7', '#d7e3bc', '#ccc1d9', '#b7dde8', '#fbd5b5', '#ffe694',\n    \t\t\t'#bfbfbf', '#3f3f3f', '#938953', '#548dd4', '#95b3d7', '#d99694', '#c3d69b', '#b2a2c7', '#b7dde8', '#fac08f', '#f2c314',\n    \t\t\t'#a5a5a5', '#262626', '#494429', '#17365d', '#366092', '#953734', '#76923c', '#5f497a', '#92cddc', '#e36c09', '#c09100',\n    \t\t\t'#7f7f7f', '#0c0c0c', '#1d1b10', '#0f243e', '#244061', '#632423', '#4f6128', '#3f3151', '#31859b',  '#974806', '#7f6000'\n    \t\t];\n        },\n        // messages\n        onfontcolor: {\n            set: function(rule, value)\n            {\n                this._set(rule, value);\n            },\n            remove: function(rule)\n            {\n                this._remove(rule);\n            }\n        },\n\n        // public\n        start: function()\n        {\n            var btnObj = {\n                title: this.lang.get('fontcolor')\n            };\n\n            var $dropdown = this._buildDropdown();\n\n            this.$button = this.toolbar.addButton('fontcolor', btnObj);\n\t\t\tthis.$button.setIcon('<i class=\"re-icon-fontcolor\"></i>');\n\t\t\tthis.$button.setDropdown($dropdown);\n        },\n\n        // private\n        _buildDropdown: function()\n        {\n            var $dropdown = $R.dom('<div class=\"redactor-dropdown-cells\">');\n\n            this.$selector = this._buildSelector();\n\n            this.$selectorText = this._buildSelectorItem('text', this.lang.get('text'));\n            this.$selectorText.addClass('active');\n\n            this.$selectorBack = this._buildSelectorItem('back', this.lang.get('highlight'));\n\n            this.$selector.append(this.$selectorText);\n            this.$selector.append(this.$selectorBack);\n\n            this.$pickerText = this._buildPicker('textcolor');\n            this.$pickerBack = this._buildPicker('backcolor');\n\n            $dropdown.append(this.$selector);\n            $dropdown.append(this.$pickerText);\n            $dropdown.append(this.$pickerBack);\n\n            this._buildSelectorEvents();\n\n            $dropdown.width(242);\n\n            return $dropdown;\n        },\n        _buildSelector: function()\n        {\n            var $selector = $R.dom('<div>');\n            $selector.addClass('redactor-dropdown-selector');\n\n\t\t\treturn $selector;\n        },\n        _buildSelectorItem: function(name, title)\n        {\n            var $item = $R.dom('<span>');\n            $item.attr('rel', name).html(title);\n            $item.addClass('redactor-dropdown-not-close');\n\n            return $item;\n        },\n        _buildSelectorEvents: function()\n        {\n\t\t\tthis.$selectorText.on('mousedown', function(e)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\n                this.$selector.find('span').removeClass('active');\n\t\t\t\tthis.$pickerBack.hide();\n\t\t\t\tthis.$pickerText.show();\n\t\t\t\tthis.$selectorText.addClass('active');\n\n\t\t\t}.bind(this));\n\n\t\t\tthis.$selectorBack.on('mousedown', function(e)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\n                this.$selector.find('span').removeClass('active');\n\t\t\t\tthis.$pickerText.hide();\n\t\t\t\tthis.$pickerBack.show();\n\t\t\t\tthis.$selectorBack.addClass('active');\n\n\t\t\t}.bind(this));\n        },\n        _buildPicker: function(name)\n\t\t{\n\t\t\tvar $box = $R.dom('<div class=\"re-dropdown-box-' + name + '\">');\n\t\t\tvar rule = (name == 'backcolor') ? 'background-color' : 'color';\n\t\t\tvar len = this.colors.length;\n\t\t\tvar self = this;\n\t\t\tvar func = function(e)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar $el = $R.dom(e.target);\n\t\t\t\tself._set($el.data('rule'), $el.attr('rel'));\n\t\t\t};\n\n\t\t\tfor (var z = 0; z < len; z++)\n\t\t\t{\n\t\t\t\tvar color = this.colors[z];\n\n\t\t\t\tvar $swatch = $R.dom('<span>');\n\t\t\t\t$swatch.attr({ 'rel': color, 'data-rule': rule });\n\t\t\t\t$swatch.css({ 'background-color': color, 'font-size': 0, 'border': '2px solid #fff', 'width': '22px', 'height': '22px' });\n\t\t\t\t$swatch.on('mousedown', func);\n\n\t\t\t\t$box.append($swatch);\n\t\t\t}\n\n\t\t\tvar $el = $R.dom('<a>');\n\t\t\t$el.attr({ 'href': '#' });\n\t\t\t$el.css({ 'display': 'block', 'clear': 'both', 'padding': '8px 5px', 'font-size': '12px', 'line-height': 1 });\n\t\t\t$el.html(this.lang.get('none'));\n\n\t\t\t$el.on('click', function(e)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\t\t\t\tself._remove(rule);\n\t\t\t});\n\n\t\t\t$box.append($el);\n\n\t\t\tif (name == 'backcolor') $box.hide();\n\n            return $box;\n\t\t},\n\t\t_set: function(rule, value)\n\t\t{\n    \t\tvar style = {};\n    \t\tstyle[rule] = value;\n\n    \t\tvar args = {\n        \t    tag: 'span',\n        \t    style: style,\n        \t    type: 'toggle'\n    \t\t};\n\n\t\t\tthis.inline.format(args);\n\t\t},\n\t\t_remove: function(rule)\n\t\t{\n\t\t\tthis.inline.remove({ style: rule });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/fontfamily/fontfamily.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'fontfamily', {\n        translations: {\n            en: {\n                \"fontfamily\": \"Font\",\n                \"remove-font-family\":  \"Remove Font Family\"\n            }\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.lang = app.lang;\n            this.inline = app.inline;\n            this.toolbar = app.toolbar;\n\n            // local\n    \t\tthis.fonts = (this.opts.fontfamily) ? this.opts.fontfamily : ['Arial', 'Helvetica', 'Georgia', 'Times New Roman', 'Monospace'];\n        },\n        // public\n        start: function()\n        {\n            var dropdown = {};\n\t\t\tfor (var i = 0; i < this.fonts.length; i++)\n\t\t\t{\n    \t\t\tvar font = this.fonts[i];\n\t\t\t\tdropdown[i] = {\n    \t\t\t\ttitle: font.replace(/'/g, ''),\n    \t\t\t\tapi: 'plugin.fontfamily.set',\n    \t\t\t\targs: font\n                };\n\t\t\t}\n\n\t\t\tdropdown.remove = {\n    \t\t\ttitle: this.lang.get('remove-font-family'),\n    \t\t\tapi: 'plugin.fontfamily.remove'\n            };\n\n            var $button = this.toolbar.addButton('fontfamily', { title: this.lang.get('fontfamily') });\n            $button.setIcon('<i class=\"re-icon-fontfamily\"></i>');\n\t\t\t$button.setDropdown(dropdown);\n        },\n        set: function(value)\n\t\t{\n    \t\tvar args = {\n        \t    tag: 'span',\n        \t    style: { 'font-family': value },\n        \t    type: 'toggle'\n    \t\t};\n\n\t\t\tthis.inline.format(args);\n\t\t},\n\t\tremove: function()\n\t\t{\n\t\t\tthis.inline.remove({ style: 'font-family' });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/fontsize/fontsize.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'fontsize', {\n        translations: {\n            en: {\n                \"size\": \"Size\",\n                \"remove-size\":  \"Remove Font Size\"\n            }\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.inline = app.inline;\n            this.toolbar = app.toolbar;\n\n            // local\n    \t\tthis.sizes = [10, 11, 12, 14, 16, 18, 20, 24, 28, 30];\n        },\n        // public\n        start: function()\n        {\n            var dropdown = {};\n\t\t\tfor (var i = 0; i < this.sizes.length; i++)\n\t\t\t{\n    \t\t\tvar size = this.sizes[i];\n\t\t\t\tdropdown[i] = {\n    \t\t\t\ttitle: size + 'px',\n    \t\t\t\tapi: 'plugin.fontsize.set',\n    \t\t\t\targs: size\n                };\n\t\t\t}\n\n\t\t\tdropdown.remove = {\n    \t\t\ttitle: this.lang.get('remove-size'),\n    \t\t\tapi: 'plugin.fontsize.remove'\n            };\n\n            var $button = this.toolbar.addButton('fontsize', { title: this.lang.get('size') });\n            $button.setIcon('<i class=\"re-icon-fontsize\"></i>');\n\t\t\t$button.setDropdown(dropdown);\n        },\n        set: function(size)\n\t\t{\n    \t\tvar args = {\n        \t    tag: 'span',\n        \t    style: { 'font-size': size + 'px' },\n        \t    type: 'toggle'\n    \t\t};\n\n\t\t\tthis.inline.format(args);\n\t\t},\n\t\tremove: function()\n\t\t{\n\t\t\tthis.inline.remove({ style: 'font-size' });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/fullscreen/fullscreen.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'fullscreen', {\n        translations: {\n            en: {\n    \t\t\t\"fullscreen\": \"Fullscreen\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.lang = app.lang;\n            this.$win = app.$win;\n            this.$doc = app.$doc;\n            this.$body = app.$body;\n            this.editor = app.editor;\n            this.toolbar = app.toolbar;\n            this.container = app.container;\n            this.selection = app.selection;\n\n            // local\n            this.isOpen = false;\n            this.docScroll = 0;\n        },\n        // public\n        start: function()\n        {\n            var data = {\n                title: this.lang.get('fullscreen'),\n                api: 'plugin.fullscreen.toggle'\n            };\n\n            var button = this.toolbar.addButton('fullscreen', data);\n            button.setIcon('<i class=\"re-icon-expand\"></i>');\n\n            this.$target = (this.toolbar.isTarget()) ? this.toolbar.getTargetElement() : this.$body;\n\n\t\t\tif (this.opts.fullscreen) this.toggle();\n\n        },\n        toggle: function()\n\t\t{\n\t\t\treturn (this.isOpen) ? this.close() : this.open();\n\t\t},\n\t\topen: function()\n\t\t{\n    \t\tthis.docScroll = this.$doc.scrollTop();\n\n            this._createPlacemarker();\n            this.selection.save();\n\n            var $container = this.container.getElement();\n            var $editor = this.editor.getElement();\n            var $html = (this.toolbar.isTarget()) ? $R.dom('body, html') : this.$target;\n\n            if (this.opts.toolbarExternal) this._buildInternalToolbar();\n\n            this.$target.prepend($container);\n\t\t\tthis.$target.addClass('redactor-body-fullscreen');\n\n            $container.addClass('redactor-box-fullscreen');\n            if (this.isTarget) $container.addClass('redactor-box-fullscreen-target');\n\n            $html.css('overflow', 'hidden');\n\n            if (this.opts.maxHeight) $editor.css('max-height', '');\n            if (this.opts.minHeight) $editor.css('min-height', '');\n\n            this._resize();\n            this.$win.on('resize.redactor-plugin-fullscreen', this._resize.bind(this));\n\t\t\tthis.$doc.scrollTop(0);\n\n            var button = this.toolbar.getButton('fullscreen');\n            button.setIcon('<i class=\"re-icon-retract\"></i>');\n\n            this.selection.restore();\n\t\t\tthis.isOpen = true;\n\t\t\tthis.opts.zindex = 1051;\n\t\t},\n\t\tclose: function()\n\t\t{\n    \t\tthis.isOpen = false;\n\t\t\tthis.opts.zindex = false;\n            this.selection.save();\n\n            var $container = this.container.getElement();\n            var $editor = this.editor.getElement();\n            var $html = $R.dom('body, html');\n\n            if (this.opts.toolbarExternal) this._buildExternalToolbar();\n\n            this.$target.removeClass('redactor-body-fullscreen');\n    \t\tthis.$win.off('resize.redactor-plugin-fullscreen');\n            $html.css('overflow', '');\n\n\t\t\t$container.removeClass('redactor-box-fullscreen redactor-box-fullscreen-target');\n\t\t\t$editor.css('height', 'auto');\n\n\t\t\tif (this.opts.minHeight) $editor.css('minHeight', this.opts.minHeight);\n\t\t\tif (this.opts.maxHeight) $editor.css('maxHeight', this.opts.maxHeight);\n\n            var button = this.toolbar.getButton('fullscreen');\n            button.setIcon('<i class=\"re-icon-expand\"></i>');\n\n    \t\tthis._removePlacemarker($container);\n            this.selection.restore();\n            this.$doc.scrollTop(this.docScroll);\n\t\t},\n\n\t\t// private\n\t\t_resize: function()\n\t\t{\n            var $editor = this.editor.getElement();\n    \t\tvar height = this.$win.height();\n\n    \t\t$editor.height(height);\n\t\t},\n\t\t_buildInternalToolbar: function()\n\t\t{\n\t\t\tvar $wrapper = this.toolbar.getWrapper();\n\t\t\tvar $toolbar = this.toolbar.getElement();\n\n\t\t\t$wrapper.addClass('redactor-toolbar-wrapper');\n\t\t\t$wrapper.append($toolbar);\n\n\t\t\t$toolbar.removeClass('redactor-toolbar-external');\n\t\t\t$container.prepend($wrapper);\n\t\t},\n\t\t_buildExternalToolbar: function()\n\t\t{\n\t\t\tvar $wrapper = this.toolbar.getWrapper();\n\t\t\tvar $toolbar = this.toolbar.getElement();\n\n            this.$external = $R.dom(this.opts.toolbarExternal);\n\n            $toolbar.addClass('redactor-toolbar-external');\n            this.$external.append($toolbar);\n\n            $wrapper.remove();\n\t\t},\n\t\t_createPlacemarker: function()\n\t\t{\n    \t\tvar $container = this.container.getElement();\n\n    \t\tthis.$placemarker = $R.dom('<span />');\n    \t\t$container.after(this.$placemarker);\n\t\t},\n\t\t_removePlacemarker: function($container)\n\t\t{\n    \t\tthis.$placemarker.before($container);\n            this.$placemarker.remove();\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/handle/handle.css",
    "content": "#redactor-handle-list {\n    font-family: \"Trebuchet MS\", 'Helvetica Neue', Helvetica, Tahoma, sans-serif;\n    display: none;\n    position: absolute;\n    z-index: 1053;\n    background-color: #fff;\n    box-shadow: 0 4px 14px rgba(0, 0, 0, .2);\n    border-radius: 2px;\n    width: 264px;\n    max-height: 250px;\n    margin: 0;\n    overflow: auto;\n    font-size: 14px;\n    padding: 0;\n}\n#redactor-handle-list a {\n    display: block;\n    text-decoration: none;\n    padding: 10px 8px;\n    white-space: nowrap;\n    color: #000;\n    border-bottom: 1px solid rgba(0, 0, 0, .05);\n}\n#redactor-handle-list a:hover {\n    color: #fff !important;\n    background-color: #449aef !important;\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/handle/handle.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'handle', {\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.$doc = app.$doc;\n            this.$body = app.$body;\n            this.editor = app.editor;\n            this.marker = app.marker;\n            this.keycodes = app.keycodes;\n            this.container = app.container;\n            this.selection = app.selection;\n\n            // local\n            this.handleTrigger = (typeof this.opts.handleTrigger !== 'undefined') ? this.opts.handleTrigger : '@';\n            this.handleStart = (typeof this.opts.handleStart !== 'undefined') ? this.opts.handleStart : 0;\n            this.handleStr = '';\n            this.handleLen = this.handleStart;\n        },\n        // public\n        start: function()\n        {\n            if (!this.opts.handle) return;\n\n            var $editor = this.editor.getElement();\n\t\t\t$editor.on('keyup.redactor-plugin-handle', this._handle.bind(this));\n\t\t},\n\t\tstop: function()\n\t\t{\n            var $editor = this.editor.getElement();\n\n\t\t\t$editor.off('.redactor-plugin-handle');\n            this.$doc.off('.redactor-plugin-handle');\n\n            var $list = $R.dom('#redactor-handle-list');\n            $list.remove();\n\t\t},\n\n\t\t// private\n\t\t_handle: function(e)\n\t\t{\n    \t\tvar key = e.which;\n\t\t\tvar ctrl = e.ctrlKey || e.metaKey;\n\t\t\tvar arrows = [37, 38, 39, 40];\n\n            if (key === this.keycodes.BACKSPACE)\n            {\n                if (this._isShown() && (this.handleLen > this.handleStart))\n                {\n                    this.handleLen = this.handleLen - 2;\n                    if (this.handleLen <= this.handleStart)\n                    {\n                        this._hide();\n                    }\n                }\n                else\n                {\n                    return;\n                }\n            }\n\n\t\t\tif (key === this.keycodes.DELETE\n\t\t\t    || key === this.keycodes.ESC\n\t\t\t    || key === this.keycodes.SHIFT\n\t\t\t    || ctrl\n\t\t\t    || (arrows.indexOf(key) !== -1)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n            var re = new RegExp('^' + this.handleTrigger);\n            this.handleStr = this.selection.getTextBeforeCaret(this.handleLen + 1);\n\n            // detect\n            if (re.test(this.handleStr))\n            {\n                this.handleStr = this.handleStr.replace(this.handleTrigger, '');\n                this.handleLen++;\n\n                this._load();\n            }\n\t\t},\n\t\t_load: function()\n\t\t{\n    \t\t$R.ajax.post({\n        \t\turl: this.opts.handle,\n        \t\tdata: 'handle=' + this.handleStr,\n        \t\tsuccess: this._parse.bind(this)\n    \t\t});\n\t\t},\n\t\t_parse: function(json)\n\t\t{\n    \t\tif (json === '') return;\n\n            var data = (typeof json === 'object') ? json : JSON.parse(json);\n\n            this._build();\n            this._buildData(data);\n\t\t},\n\t\t_build: function()\n\t\t{\n            this.$list = $R.dom('#redactor-handle-list');\n            if (this.$list.length === 0)\n            {\n                this.$list = $R.dom('<div id=\"redactor-handle-list\">');\n                this.$body.append(this.$list);\n            }\n        },\n        _buildData: function(data)\n        {\n            this.data = data;\n\n            this._update();\n            this._show();\n        },\n        _update: function()\n        {\n            this.$list.html('');\n\n            for (var key in this.data)\n            {\n                var $item = $R.dom('<a href=\"#\">');\n                $item.html(this.data[key].item);\n                $item.attr('data-key', key);\n                $item.on('click', this._replace.bind(this));\n\n                this.$list.append($item);\n            }\n\n            // position\n    \t\tvar $container = this.container.getElement();\n            var containerOffset = $container.offset();\n            var pos = this.selection.getPosition();\n\n            this.$list.css({\n                top: (pos.top + pos.height + this.$doc.scrollTop()) + 'px',\n                left: pos.left + 'px'\n            });\n        },\n        _isShown: function()\n        {\n            return (this.$list && this.$list.hasClass('open'));\n        },\n        _show: function()\n        {\n            this.$list.addClass('open');\n            this.$list.show();\n\n            this.$doc.off('.redactor-plugin-handle');\n            this.$doc.on('click.redactor-plugin-handle keydown.redactor-plugin-handle', this._hide.bind(this));\n        },\n        _hide: function(e)\n        {\n            var hidable = false;\n            var key = (e && e.which);\n\n            if (!e) hidable = true;\n            else if (e.type === 'click' || key === this.keycodes.ESC || key === this.keycodes.ENTER || key === this.keycodes.SPACE) hidable = true;\n\n            if (hidable)\n            {\n                this.$list.removeClass('open');\n                this.$list.hide();\n                this._reset();\n            }\n        },\n        _reset: function()\n        {\n            this.handleStr = '';\n            this.handleLen = this.handleStart;\n        },\n\t\t_replace: function(e)\n\t\t{\n    \t\te.preventDefault();\n\n    \t\tvar $item = $R.dom(e.target);\n    \t\tvar key = $item.attr('data-key');\n    \t\tvar replacement = this.data[key].replacement;\n\n    \t\tvar marker = this.marker.insert('start');\n    \t\tvar $marker = $R.dom(marker);\n            var current = marker.previousSibling;\n            var currentText = current.textContent;\n            var re = new RegExp('@' + this.handleStr + '$');\n\n        \tcurrentText = currentText.replace(re, '');\n        \tcurrent.textContent = currentText;\n\n            $marker.before(replacement);\n\n \t\t\tthis.selection.restoreMarkers();\n\n            return;\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/imagemanager/imagemanager.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'imagemanager', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"choose\": \"Choose\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.opts = app.opts;\n        },\n        // messages\n        onmodal: {\n            image: {\n                open: function($modal, $form)\n                {\n                    if (!this.opts.imageManagerJson) return;\n                    this._load($modal)\n                }\n            }\n        },\n\n\t\t// private\n\t\t_load: function($modal)\n\t\t{\n\t\t\tvar $body = $modal.getBody();\n\n\t\t\tthis.$box = $R.dom('<div>');\n\t\t\tthis.$box.attr('data-title', this.lang.get('choose'));\n\t\t\tthis.$box.addClass('redactor-modal-tab');\n\t\t\tthis.$box.hide();\n\t\t\tthis.$box.css({\n    \t\t\toverflow: 'auto',\n    \t\t\theight: '300px',\n    \t\t\t'line-height': 1\n\t\t\t});\n\n\t\t\t$body.append(this.$box);\n\n\t\t\t$R.ajax.get({\n        \t\turl: this.opts.imageManagerJson,\n        \t\tsuccess: this._parse.bind(this)\n    \t\t});\n\t\t},\n\t\t_parse: function(data)\n\t\t{\n            for (var key in data)\n            {\n                var obj = data[key];\n                if (typeof obj !== 'object') continue;\n\n                var $img = $R.dom('<img>');\n                var url = (obj.thumb) ? obj.thumb : obj.url;\n\n                $img.attr('src', url);\n                $img.attr('data-params', encodeURI(JSON.stringify(obj)));\n                $img.css({\n                    width: '96px',\n                    height: '72px',\n                    margin: '0 4px 2px 0',\n                    cursor: 'pointer'\n                });\n\n                $img.on('click', this._insert.bind(this));\n\n\t\t\t\tthis.$box.append($img);\n            }\n\t\t},\n\t\t_insert: function(e)\n\t\t{\n    \t\te.preventDefault();\n\n\t\t\tvar $el = $R.dom(e.target);\n\t\t\tvar data = JSON.parse(decodeURI($el.attr('data-params')));\n\n\t\t\tthis.app.api('module.image.insert', { image: data });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/imageselector/imageselector.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'imageselector', {\n        init: function(app)\n        {\n            // define app\n            this.app = app;\n            this.opts = app.opts;\n\n            // define some services, for example\n            this.caret = app.caret;\n            this.selection = app.selection;\n            this.toolbar = app.toolbar;\n            this.insertion = app.insertion;\n        },\n        start: function () {\n            var buttonData = {\n                title: 'Insert Image',\n                api: 'plugin.imageselector.open'\n            };\n            var button = this.toolbar.addButton('imageselector', buttonData);\n            button.setIcon('<i class=\"fa fa-image\"></i>');\n        },\n        modals: {\n            'imageselector': '<section id=\"redactor-modal-imageselector\">'\n            + '<div class=\"input-group\">'\n            + '<input id=\"imageselector-filter\" type=\"textbox\" placeholder=\"Search\" class=\"form-control\">'\n            + '<span class=\"input-group-btn\">'\n            + '<span class=\"btn btn-default\"><span class=\"fa fa-search\"></span></span>'\n            + '</span>'\n            + '</div>'\n            + '<div id=\"imageselector-container\" class=\"raw-block-400 cms-row raw-margin-top-24\" style=\"overflow: scroll;\">Loading your image collection...</div>'\n            + '</section>'\n        },\n        open: function () {\n            var options = {\n                title: 'Image Selector',\n                width: '600px',\n                name: 'imageselector'\n            };\n\n            this.app.api('module.modal.build', options);\n        },\n        onmodal: {\n            imageselector: {\n                opened: function($modal, $form)\n                {\n                    this.load();\n                },\n            },\n        },\n        load: function()\n        {\n            $.ajax({\n                dataType: \"json\",\n                cache: false,\n                headers: {\n                    Cms: _apiKey,\n                    Authorization: 'Bearer '+_apiToken\n                },\n                url: this.opts.imageManagerJson,\n                error: function(data){\n                    console.log(data)\n                },\n                success: $.proxy(function(data)\n                {\n                    $('#imageselector-container').html('');\n\n                    if (data.data.length > 0) {\n                        $.each((data.data), $.proxy(function(key, val)\n                        {\n                            var thumbtitle = '';\n\n                            if (typeof val.title_tag != 'undefined' && val.title_tag != null) {\n                                thumbtitle = val.title_tag;\n                            }\n\n                            var img = $('<div class=\"raw25 float-left thumbnail-box\"><div class=\"img cms-thumbnail-img\" style=\"background-image: url(\\'' + val.js_url + '\\')\" data-img-name=\"'+ val.js_url +'\" src=\"' + val.js_url + '\" rel=\"' + val.js_url + '\" title=\"' + thumbtitle + '\"></div></div>');\n                            $('#imageselector-container').append(img);\n                            $(img).click($.proxy(this.insert, this));\n                        }, this));\n                    } else {\n                        $('#imageselector-container').append('You have not yet uploaded any images, visit the images tab to add some.');\n                    }\n\n                    $(\"#imageselector-filter\").bind(\"keyup\", function(){\n                        $(\".cms-thumbnail-img\").each(function(){\n                            console.log($(this).attr('title'))\n                            if ($(this).attr('title').indexOf($(\"#imageselector-filter\").val()) < 0) {\n                                $(this).parent().hide();\n                            } else {\n                                $(this).parent().show();\n                            }\n                        });\n                    })\n\n                }, this)\n            });\n        },\n        insert: function(e)\n        {\n            e.preventDefault();\n            this.insertion.insertHtml('<img src=\"' + $(e.target).attr('rel') + '\" alt=\"' + $(e.target).attr('title') + '\" title=\"' + $(e.target).attr('title') + '\">');\n            this.app.api('module.modal.close');\n        },\n    });\n})(Redactor);\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/inlinestyle/inlinestyle.css",
    "content": ".redactor-dropdown-inline .redactor-dropdown-item-marked span {\n\tfont-size: 14px;\n\tbackground-color: #fdb833;\n\tcolor: #000;\n\ttext-decoration: none;\n}\n.redactor-dropdown-inline .redactor-dropdown-item-code span {\n\tfont-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n\tfont-size: 13px;\n\tbackground: rgba(0, 0, 0, .05);\n}\n.redactor-dropdown-inline .redactor-dropdown-item-variable span {\n\tfont-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n\tfont-size: 13px;\n\tcolor: rgba(0, 0, 0, .5);\n}\n.redactor-dropdown-inline .redactor-dropdown-item-shortcut span {\n\tfont-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n\tfont-size: 12px;\n\tpadding: 0.25em;\n\twhite-space: nowrap;\n\tborder: 1px solid #e5e7e9;\n}\n.redactor-dropdown-inline .redactor-dropdown-item-sup span,\n.redactor-dropdown-inline .redactor-dropdown-item-sub span {\n\tposition: relative;\n\tfont-size: 12px;\n}\n.redactor-dropdown-inline .redactor-dropdown-item-sup span {\n\ttop: -3px;\n}\n.redactor-dropdown-inline .redactor-dropdown-item-sub span {\n\ttop: 3px;\n}\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/inlinestyle/inlinestyle.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'inlinestyle', {\n        translations: {\n            en: {\n                \"style\": \"Style\"\n            }\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.toolbar = app.toolbar;\n\n            // local\n    \t\tthis.styles = {\n    \t\t\t\"marked\": {\n    \t\t\t\ttitle: \"Marked\",\n    \t\t\t\targs: 'mark'\n    \t\t\t},\n    \t\t\t\"code\": {\n    \t\t\t\ttitle: \"Code\",\n    \t\t\t\targs: 'code'\n    \t\t\t},\n    \t\t\t\"variable\": {\n    \t\t\t\ttitle: \"Variable\",\n    \t\t\t\targs: 'var'\n    \t\t\t},\n    \t\t\t\"shortcut\": {\n    \t\t\t\ttitle: \"Shortcut\",\n    \t\t\t\targs: 'kbd'\n    \t\t\t},\n    \t\t\t\"sup\": {\n    \t\t\t\ttitle: \"Superscript\",\n    \t\t\t\targs: 'sup'\n    \t\t\t},\n    \t\t\t\"sub\": {\n    \t\t\t\ttitle: \"Subscript\",\n    \t\t\t\targs: 'sub'\n    \t\t\t}\n    \t\t};\n        },\n        start: function()\n        {\n            var dropdown = {};\n\t\t\tfor (var key in this.styles)\n\t\t\t{\n    \t\t\tvar style = this.styles[key];\n\t\t\t\tdropdown[key] = {\n    \t\t\t\ttitle: style.title,\n    \t\t\t\tapi: 'module.inline.format',\n    \t\t\t\targs: style.args\n                };\n\t\t\t}\n\n            var $button = this.toolbar.addButtonAfter('format', 'inline', { title: this.lang.get('style') });\n\n            $button.setIcon('<i class=\"re-icon-inline\"></i>');\n\t\t\t$button.setDropdown(dropdown);\n        }\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/limiter/limiter.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'limiter', {\n        init: function(app)\n        {\n            this.app = app;\n            this.utils = app.utils;\n            this.opts = app.opts;\n            this.editor = app.editor;\n            this.keycodes = app.keycodes;\n        },\n        // events\n        onpasting: function(html)\n        {\n            if (!this.opts.limiter) return;\n\n            html = this.utils.removeInvisibleChars(html);\n\n            var text = this._getText();\n            var len = html.length + text.length;\n\n\t\t\tthis.opts.input = !(len >= this.opts.limiter);\n        },\n        // public\n        start: function()\n        {\n\t\t\tif (!this.opts.limiter) return;\n            this._count();\n\n            var $editor = this.editor.getElement();\n            $editor.on('keydown.redactor-plugin-limiter', this._limit.bind(this));\n\t\t},\n\t\tstop: function()\n\t\t{\n            var $editor = this.editor.getElement();\n            $editor.off('.redactor-plugin-limiter');\n\n            this.opts.input = true;\n\t\t},\n\n\t\t// private\n\t\t_limit: function(e)\n\t\t{\n    \t\tvar key = e.which;\n\t\t\tvar ctrl = e.ctrlKey || e.metaKey;\n\t\t\tvar arrows = [37, 38, 39, 40];\n\n\t\t\tif (key === this.keycodes.BACKSPACE\n\t\t\t   \t|| key === this.keycodes.DELETE\n\t\t\t    || key === this.keycodes.ESC\n\t\t\t    || key === this.keycodes.SHIFT\n\t\t\t    || (ctrl && key === 65)\n\t\t\t    || (ctrl && key === 88)\n\t\t\t    || (ctrl && key === 82)\n\t\t\t    || (ctrl && key === 116)\n\t\t\t    || (arrows.indexOf(key) !== -1)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n            this._count(e);\n\t\t},\n\t\t_count: function(e)\n\t\t{\n            var text = this._getText();\n\t\t\tvar count = text.length;\n\t\t\tif (count >= this.opts.limiter)\n\t\t\t{\n                if (e) e.preventDefault();\n                this.opts.input = false;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n    \t\t\tthis.opts.input = true;\n\t\t\t}\n\t\t},\n\t\t_getText: function()\n\t\t{\n            var $editor = this.editor.getElement();\n\t\t\tvar text = $editor.text();\n\n\t\t\treturn this.utils.removeInvisibleChars(text);\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/properties/properties.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'properties', {\n        modals: {\n            'properties':\n                '<form action=\"\"> \\\n                    <div class=\"form-item\"> \\\n                        <label>Id</label> \\\n                        <input type=\"text\" name=\"id\"> \\\n                    </div> \\\n                    <div class=\"form-item\"> \\\n                        <label>Class</label> \\\n                        <input type=\"text\" name=\"classname\"> \\\n                    </div> \\\n                </form>'\n        },\n        translations: {\n    \t\ten: {\n    \t\t\t\"properties\": \"Properties\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.lang = app.lang;\n            this.$body = app.$body;\n            this.toolbar = app.toolbar;\n            this.inspector = app.inspector;\n            this.selection = app.selection;\n\n            // local\n    \t\tthis.labelStyle = {\n        \t\t'font-family': 'monospace',\n    \t\t\t'position': 'absolute',\n    \t\t\t'padding': '2px 5px',\n    \t\t\t'line-height': 1,\n    \t\t\t'border-radius': '3px',\n    \t\t\t'font-size': '11px',\n    \t\t\t'color': 'rgba(255, 255, 255, .9)'\n    \t\t};\n        },\n        // messages\n        onmodal: {\n            properties: {\n                open: function($modal, $form)\n                {\n                    if (this.$block)\n                    {\n                        var blockData = this._getData(this.$block);\n                        $form.setData(blockData);\n                    }\n                },\n                opened: function($modal, $form)\n                {\n                    $form.getField('id').focus();\n                },\n                save: function($modal, $form)\n                {\n                    var data = $form.getData();\n                    this._save(data);\n                }\n            }\n        },\n        onbutton: {\n            properties: {\n                observe: function(button)\n                {\n                    this._observeButton(button);\n                }\n            }\n        },\n\n        // public\n        start: function()\n        {\n            var data = {\n                title: this.lang.get('properties'),\n                api: 'plugin.properties.open',\n                observe: 'properties'\n            };\n\n            var $button = this.toolbar.addButton('properties', data);\n            $button.setIcon('<i class=\"re-icon-properties\"></i>');\n\n            this._createLabel();\n        },\n        stop: function()\n        {\n            this._removeLabel();\n        },\n        open: function()\n\t\t{\n           var block = this.selection.getBlock();\n           if (!block) return;\n\n           this.$block = $R.dom(block);\n\n           var options = {\n                title: this.lang.get('properties'),\n                width: '500px',\n                name: 'properties',\n                handle: 'save',\n                commands: {\n                    save: { title: this.lang.get('save') },\n                    cancel: { title: this.lang.get('cancel') }\n                }\n            };\n\n            this.app.api('module.modal.build', options);\n\t\t},\n\n\t\t// private\n\t\t_save: function(data)\n\t\t{\n    \t\tthis.app.api('module.modal.close');\n\n    \t\tif (data.id === '') this.$block.removeAttr('id');\n    \t\telse this.$block.attr('id', data.id);\n\n    \t\tif (data.classname === '') this.$block.removeAttr('class');\n    \t\telse this.$block.attr('class', data.classname);\n\t\t},\n\t\t_getData: function(block)\n\t\t{\n    \t    var $block = $R.dom(block);\n    \t    var data = {\n        \t    id: $block.attr('id'),\n        \t    classname: $block.attr('class')\n    \t    };\n\n    \t    return data;\n\t\t},\n\t\t_showData: function(block, data)\n\t\t{\n    \t\tvar str = '';\n    \t\tif (data.id) str += '#' + data.id + ' ';\n    \t\tif (data.classname) str += '.' + data.classname;\n\n\n            if (str !== '')\n            {\n                var $block = $R.dom(block);\n                var pos = $block.offset();\n\n                this.$label.css({\n                    top: (pos.top - 12) + 'px',\n                    left: pos.left + 'px',\n                    'z-index': (this.opts.zindex) ? (this.opts.zindex + 3) : 'auto'\n                });\n                this.$label.html(str);\n                this.$label.show();\n            }\n            else\n            {\n                this.$label.hide();\n            }\n\t\t},\n\t\t_createLabel: function()\n\t\t{\n            this.$label = $R.dom('<span />');\n            this.$label.hide();\n\t\t\tthis.$label.css(this.labelStyle).css('background', 'rgba(229, 57, 143, .7)');\n\n\t\t\tthis.$body.append(this.$label);\n\t\t},\n\t\t_removeLabel: function()\n\t\t{\n            if (this.$label) this.$label.remove();\n\t\t},\n\t\t_observeButton: function(button)\n\t\t{\n    \t\tvar block = this.selection.getBlock();\n    \t\tvar data = this.inspector.parse(block);\n\n    \t\tif (block && !data.isComponent())\n    \t\t{\n        \t\tvar blockData = this._getData(block);\n\n                this._showData(block, blockData);\n        \t    button.enable();\n    \t\t}\n    \t\telse\n    \t\t{\n        \t    button.disable();\n        \t    if (this.$label) this.$label.hide();\n    \t\t}\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/specialchars/specialchars.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'specialchars', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"specialchars\": \"Special Characters\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.toolbar = app.toolbar;\n            this.insertion = app.insertion;\n\n            // local\n            this.chars = [\n\n                '&lsquo;', '&rsquo;', '&ldquo;', '&rdquo;', '&ndash;', '&mdash;', '&divide;', '&hellip;', '&trade;', '&bull;',\n            \t'&rarr;', '&asymp;', '$', '&euro;', '&cent;', '&pound;', '&yen;', '&iexcl;',\n            \t'&curren;', '&brvbar;', '&sect;', '&uml;', '&copy;', '&ordf;', '&laquo;', '&raquo;', '&not;', '&reg;', '&macr;',\n            \t'&deg;', '&sup1;', '&sup2;', '&sup3;', '&acute;', '&micro;', '&para;', '&middot;', '&cedil;',  '&ordm;',\n            \t'&frac14;', '&frac12;', '&frac34;', '&iquest;', '&Agrave;', '&Aacute;', '&Acirc;', '&Atilde;', '&Auml;', '&Aring;',\n            \t'&AElig;', '&Ccedil;', '&Egrave;', '&Eacute;', '&Ecirc;', '&Euml;', '&Igrave;', '&Iacute;', '&Icirc;', '&Iuml;',\n            \t'&ETH;', '&Ntilde;', '&Ograve;', '&Oacute;', '&Ocirc;', '&Otilde;', '&Ouml;', '&times;', '&Oslash;', '&Ugrave;',\n            \t'&Uacute;', '&Ucirc;', '&Uuml;', '&Yacute;', '&THORN;', '&szlig;', '&agrave;', '&aacute;', '&acirc;', '&atilde;',\n            \t'&auml;', '&aring;', '&aelig;', '&ccedil;', '&egrave;', '&eacute;', '&ecirc;', '&euml;', '&igrave;', '&iacute;',\n            \t'&icirc;', '&iuml;', '&eth;', '&ntilde;', '&ograve;', '&oacute;', '&ocirc;', '&otilde;', '&ouml;',\n            \t'&oslash;', '&ugrave;', '&uacute;', '&ucirc;', '&uuml;', '&yacute;', '&thorn;', '&yuml;', '&OElig;', '&oelig;',\n            \t'&#372;', '&#374', '&#373', '&#375;'\n            ];\n        },\n        // public\n        start: function()\n        {\n            var btnObj = {\n                title: this.lang.get('specialchars')\n            };\n\n            var $dropdown = this._buildDropdown();\n\n            this.$button = this.toolbar.addButton('specialchars', btnObj);\n\t\t\tthis.$button.setIcon('<i class=\"re-icon-specialcharacters\"></i>');\n\t\t\tthis.$button.setDropdown($dropdown);\n        },\n\n        // private\n        _set: function(character)\n        {\n            this.insertion.insertChar(character);\n        },\n        _buildDropdown: function()\n\t\t{\n    \t\tvar self = this;\n            var $dropdown = $R.dom('<div class=\"redactor-dropdown-cells\">');\n            var func = function(e)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar $el = $R.dom(e.target);\n\t\t\t\tself._set($el.data('char'));\n\t\t\t};\n\n            for (var i = 0; i < this.chars.length; i++)\n            {\n                var $el = $R.dom('<a>');\n                $el.attr({ 'href': '#', 'data-char': this.chars[i] });\n                $el.css({ 'line-height': '32px', 'width': '32px', 'height': '32px' });\n                $el.html(this.chars[i]);\n                $el.on('mousedown', func);\n\n                $dropdown.append($el);\n            }\n\n            return $dropdown;\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/stockimagemanager/stockimagemanager.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'stockimagemanager', {\n        init: function(app)\n        {\n            // define app\n            this.app = app;\n            this.opts = app.opts;\n\n            // define some services, for example\n            this.caret = app.caret;\n            this.selection = app.selection;\n            this.toolbar = app.toolbar;\n            this.insertion = app.insertion;\n        },\n        start: function () {\n            var buttonData = {\n                title: 'Insert Stock Image',\n                api: 'plugin.stockimagemanager.open'\n            };\n            var button = this.toolbar.addButton('stockimagemanager', buttonData);\n            button.setIcon('<i class=\"fa fa-camera-retro\"></i>');\n        },\n        modals: {\n            'stockimagemanager': '<section id=\"redactor-modal-stockimagemanager\">'\n                + '<div class=\"input-group stockimagemanager-search-box\">'\n                + '<input id=\"stockimagemanager-filter\" type=\"textbox\" placeholder=\"Search\" class=\"form-control\">'\n                + '<span class=\"input-group-btn\">'\n                + '<button class=\"btn btn-default\" type=\"button\" id=\"stockimagemanager-search\"><span class=\"fa fa-search\"></span></button>'\n                + '</span>'\n                + '</div>'\n                + '<div id=\"stockimagemanager-container\" class=\"raw-block-300 cms-row raw-margin-top-24 raw-margin-bottom-24\" style=\"overflow: scroll;\"></div>'\n                + '<div id=\"stockimagemanager-links\" class=\"raw-block-20 cms-row\"><button id=\"stockImgPrevBtn\" class=\"btn btn-default float-left\">Prev</button><button id=\"stockImgNextBtn\" class=\"pull-right btn btn-default\">Next</button></div>'\n                + '<div><a href=\"https://pixabay.com/\"><img class=\"raw100 raw-margin-top-24\" src=\"https://pixabay.com/static/img/public/leaderboard_a.png\" alt=\"Pixabay\"> </a></div>'\n                + '</section>'\n        },\n        open: function () {\n            var options = {\n                title: 'Stock Image Manager',\n                width: '600px',\n                name: 'stockimagemanager'\n            };\n\n            this.app.api('module.modal.build', options);\n        },\n        onmodal: {\n            stockimagemanager: {\n                opened: function($modal, $form)\n                {\n                    // this.modal.load('stockimagemanager', 'Insert Stock Images', 600);\n\n                    // this.modal.show();\n\n                    this.load();\n                },\n            },\n        },\n        load: function()\n        {\n            if (_pixabayKey == '') {\n                $(\"#stockImgPrevBtn, #stockImgNextBtn, .stockimagemanager-search-box\").hide();\n                $('#stockimagemanager-container').html('<p class=\"text-center\">In order to have an easy supply of stock images visit <a target=\"_blank\" href=\"https://pixabay.com/api/docs/\">Pixabay</a> to get an API key for your application.</p><p class=\"text-center\">Then add the following to your .env file:<br> PIXABAY=yourApiKey</p>');\n            } else {\n                var _module = this;\n                _module.search('null');\n                $(\"#stockimagemanager-search\").bind(\"click\", function(){\n                    var _val = $(\"#stockimagemanager-filter\").val();\n                    if (_val == '') {\n                        _val = 'null';\n                    };\n                    _module.search(_val);\n                });\n                $(\"#stockImgPrevBtn, #stockImgNextBtn\").bind(\"click\", function() {\n                    var _val = $(\"#stockimagemanager-filter\").val();\n                    if (_val == '') {\n                        _val = 'null';\n                    };\n                    _module.search(_val, $(this).attr('data-page'));\n                });\n            }\n        },\n        search: function(_term, _page) {\n            if (typeof _page == 'undefined') {\n                _page = 1;\n            };\n            if (typeof _term != 'undefined' && _term != 'null' && _term != null) {\n                _searchTerm = \"&q=\" + encodeURIComponent(_term);\n            } else {\n                _searchTerm = '';\n            }\n\n            $('#stockimagemanager-container').html('loading...');\n\n            $.ajax({\n                dataType: \"json\",\n                cache: false,\n                url: this.opts.stockImageManagerJson + \"?key=\" + _pixabayKey + _searchTerm + \"&order=popular&page=\" + _page,\n                error: function(data){\n                    console.log(data)\n                },\n                success: $.proxy(function(data)\n                {\n                    if (Math.floor(data.totalHits / 20) == _page) {\n                        $(\"#stockImgNextBtn\").hide();\n                    } else  {\n                        $(\"#stockImgNextBtn\").show();\n                    }\n\n                    if (_page == 1) {\n                        $(\"#stockImgPrevBtn\").hide();\n                    } else  {\n                        $(\"#stockImgPrevBtn\").show();\n                    }\n\n                    $(\"#stockImgNextBtn\").attr('data-page', parseInt(_page) + 1);\n                    $(\"#stockImgPrevBtn\").attr('data-page', parseInt(_page) - 1);\n\n                    $('#stockimagemanager-container').html(\"\");\n                    $.each((data.hits), $.proxy(function(key, val)\n                    {\n                        var img = $('<div class=\"raw25 float-left thumbnail-box\"><img class=\"img-responsive\" data-img-name=\"'+ val.previewURL +'\" data-url=\"' + val.webformatURL + '\" src=\"' + val.previewURL + '\" rel=\"' + val.previewURL + '\" style=\"cursor: pointer;\" /></div>');\n                        $('#stockimagemanager-container').append(img);\n                        $(img).click($.proxy(this.insert, this));\n                    }, this));\n\n                }, this)\n            });\n        },\n        insert: function(e)\n        {\n            var _imageURL = '';\n            var _this = this;\n            $.ajax({\n                type: 'POST',\n                dataType: \"json\",\n                cache: false,\n                data: {\n                    _token: _token,\n                    location: $(e.target).attr('data-url')\n                },\n                url: _url + '/cms/api/images/store',\n                error: function(data){\n                    console.log(data)\n                },\n                success: $.proxy(function(data) {\n                    e.preventDefault();\n                    _this.insertion.insertHtml('<img src=\"' + data.data.js_url + '\" />');\n                    _this.app.api('module.modal.close');\n                }, this)\n            });\n        },\n    });\n})(Redactor);\n\n\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/table/table.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'table', {\n        translations: {\n            en: {\n        \t\t\"table\": \"Table\",\n        \t\t\"insert-table\": \"Insert table\",\n        \t\t\"insert-row-above\": \"Insert row above\",\n        \t\t\"insert-row-below\": \"Insert row below\",\n        \t\t\"insert-column-left\": \"Insert column left\",\n        \t\t\"insert-column-right\": \"Insert column right\",\n        \t\t\"add-head\": \"Add head\",\n        \t\t\"delete-head\": \"Delete head\",\n        \t\t\"delete-column\": \"Delete column\",\n        \t\t\"delete-row\": \"Delete row\",\n        \t\t\"delete-table\": \"Delete table\"\n        \t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.opts = app.opts;\n            this.caret = app.caret;\n            this.editor = app.editor;\n            this.toolbar = app.toolbar;\n            this.component = app.component;\n            this.inspector = app.inspector;\n            this.insertion = app.insertion;\n            this.selection = app.selection;\n        },\n        // messages\n        ondropdown: {\n            table: {\n                observe: function(dropdown)\n                {\n                    this._observeDropdown(dropdown);\n                }\n            }\n        },\n        onbottomclick: function()\n        {\n            this.insertion.insertToEnd(this.editor.getLastNode(), 'table');\n        },\n\n        // public\n        start: function()\n        {\n\t\t\tvar dropdown = {\n    \t\t\tobserve: 'table',\n    \t\t\t'insert-table': {\n    \t\t\t\ttitle: this.lang.get('insert-table'),\n    \t\t\t\tapi: 'plugin.table.insert'\n    \t\t\t},\n    \t\t\t'insert-row-above': {\n                    title: this.lang.get('insert-row-above'),\n    \t\t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.addRowAbove'\n    \t\t\t},\n    \t\t\t'insert-row-below': {\n        \t\t\ttitle: this.lang.get('insert-row-below'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.addRowBelow'\n    \t\t\t},\n    \t\t\t'insert-column-left': {\n        \t\t\ttitle: this.lang.get('insert-column-left'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.addColumnLeft'\n    \t\t\t},\n    \t\t\t'insert-column-right': {\n        \t\t\ttitle: this.lang.get('insert-column-right'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.addColumnRight'\n    \t\t\t},\n    \t\t\t'add-head': {\n        \t\t\ttitle: this.lang.get('add-head'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.addHead'\n    \t\t\t},\n    \t\t\t'delete-head': {\n        \t\t\ttitle: this.lang.get('delete-head'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.deleteHead'\n    \t\t\t},\n    \t\t\t'delete-column': {\n        \t\t\ttitle: this.lang.get('delete-column'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.deleteColumn'\n    \t\t\t},\n    \t\t\t'delete-row': {\n        \t\t\ttitle: this.lang.get('delete-row'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.deleteRow'\n    \t\t\t},\n    \t\t\t'delete-table': {\n        \t\t\ttitle: this.lang.get('delete-table'),\n        \t\t\tclassname: 'redactor-table-item-observable',\n                    api: 'plugin.table.deleteTable'\n    \t\t\t}\n\t\t\t};\n            var obj = {\n                title: this.lang.get('table')\n            };\n\n\t\t\tvar $button = this.toolbar.addButtonBefore('link', 'table', obj);\n\t\t\t$button.setIcon('<i class=\"re-icon-table\"></i>');\n\t\t\t$button.setDropdown(dropdown);\n        },\n\t\tinsert: function()\n\t\t{\n            var rows = 2;\n\t\t\tvar columns = 3;\n\t\t\tvar $component = this.component.create('table');\n\n\t\t\tfor (var i = 0; i < rows; i++)\n\t\t\t{\n\t\t\t    $component.addRow(columns);\n\t\t\t}\n\n\t\t\t$component =  this.insertion.insertHtml($component);\n\t\t\tthis.caret.setStart($component);\n\t\t},\n        addRowAbove: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n                var $row = $component.addRowTo(current, 'before');\n\n                this.caret.setStart($row);\n            }\n        },\n        addRowBelow: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n                var $row = $component.addRowTo(current, 'after');\n\n                this.caret.setStart($row);\n            }\n        },\n        addColumnLeft: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n\n                this.selection.save();\n                $component.addColumnTo(current, 'left');\n                this.selection.restore();\n            }\n        },\n        addColumnRight: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n\n                this.selection.save();\n                $component.addColumnTo(current, 'right');\n                this.selection.restore();\n            }\n        },\n        addHead: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                this.selection.save();\n                $component.addHead();\n                this.selection.restore();\n            }\n        },\n        deleteHead: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n                var $head = $R.dom(current).closest('thead');\n                if ($head.length !== 0)\n                {\n                    $component.removeHead();\n                    this.caret.setStart($component);\n                }\n                else\n                {\n                    this.selection.save();\n                    $component.removeHead();\n                    this.selection.restore();\n                }\n            }\n        },\n        deleteColumn: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n\n                var $currentCell = $R.dom(current).closest('td, th');\n                var nextCell = $currentCell.nextElement().get();\n                var prevCell = $currentCell.prevElement().get();\n\n                $component.removeColumn(current);\n\n                if (nextCell) this.caret.setStart(nextCell);\n                else if (prevCell) this.caret.setEnd(prevCell);\n                else this.deleteTable();\n            }\n        },\n        deleteRow: function()\n        {\n            var $component = this._getComponent();\n            if ($component)\n            {\n                var current = this.selection.getCurrent();\n\n                var $currentRow = $R.dom(current).closest('tr');\n                var nextRow = $currentRow.nextElement().get();\n                var prevRow = $currentRow.prevElement().get();\n\n                $component.removeRow(current);\n\n                if (nextRow) this.caret.setStart(nextRow);\n                else if (prevRow) this.caret.setEnd(prevRow);\n                else this.deleteTable();\n            }\n        },\n        deleteTable: function()\n        {\n            var table = this._getTable();\n            if (table)\n            {\n                this.component.remove(table);\n            }\n        },\n\n        // private\n        _getTable: function()\n        {\n            var current = this.selection.getCurrent();\n            var data = this.inspector.parse(current);\n            if (data.isTable())\n            {\n                return data.getTable();\n            }\n        },\n        _getComponent: function()\n        {\n            var current = this.selection.getCurrent();\n            var data = this.inspector.parse(current);\n            if (data.isTable())\n            {\n                var table = data.getTable();\n\n                return this.component.create('table', table);\n            }\n        },\n        _observeDropdown: function(dropdown)\n        {\n            var table = this._getTable();\n            var items = dropdown.getItemsByClass('redactor-table-item-observable');\n            var tableItem = dropdown.getItem('insert-table');\n            if (table)\n            {\n                this._observeItems(items, 'enable');\n                tableItem.disable();\n            }\n            else\n            {\n                this._observeItems(items, 'disable');\n                tableItem.enable();\n            }\n        },\n        _observeItems: function(items, type)\n        {\n            for (var i = 0; i < items.length; i++)\n            {\n                items[i][type]();\n            }\n        }\n    });\n})(Redactor);\n(function($R)\n{\n    $R.add('class', 'table.component', {\n        mixins: ['dom', 'component'],\n        init: function(app, el)\n        {\n            this.app = app;\n\n            // init\n            return (el && el.cmnt !== undefined) ? el : this._init(el);\n        },\n\n        // public\n        addHead: function()\n        {\n\t\t\tthis.removeHead();\n\n\t\t\tvar columns = this.$element.find('tr').first().children('td, th').length;\n\t\t\tvar $head = $R.dom('<thead>');\n            var $row = this._buildRow(columns, '<th>');\n\n            $head.append($row);\n            this.$element.prepend($head);\n        },\n        addRow: function(columns)\n        {\n            var $row = this._buildRow(columns);\n            this.$element.append($row);\n\n            return $row;\n        },\n        addRowTo: function(current, type)\n        {\n            return this._addRowTo(current, type);\n        },\n        addColumnTo: function(current, type)\n        {\n            var $current = $R.dom(current);\n            var $currentRow = $current.closest('tr');\n            var $currentCell = $current.closest('td, th');\n\n            var index = 0;\n            $currentRow.find('td, th').each(function(node, i)\n\t\t\t{\n\t\t\t\tif (node === $currentCell.get()) index = i;\n\t\t\t});\n\n\t\t\tthis.$element.find('tr').each(function(node)\n\t\t\t{\n    \t\t\tvar $node = $R.dom(node);\n\t\t\t\tvar origCell = $node.find('td, th').get(index);\n\t\t\t\tvar $origCell = $R.dom(origCell);\n\n\t\t\t\tvar $td = $origCell.clone();\n\t\t\t\t$td.html('');\n\n\t\t\t\tif (type === 'right') $origCell.after($td);\n\t\t\t\telse                  $origCell.before($td);\n\t\t\t});\n        },\n        removeHead: function()\n        {\n\t\t\tvar $head = this.$element.find('thead');\n\t\t\tif ($head.length !== 0) $head.remove();\n        },\n        removeRow: function(current)\n        {\n            var $current = $R.dom(current);\n            var $currentRow = $current.closest('tr');\n\n            $currentRow.remove();\n        },\n        removeColumn: function(current)\n        {\n            var $current = $R.dom(current);\n            var $currentRow = $current.closest('tr');\n            var $currentCell = $current.closest('td, th');\n\n            var index = 0;\n            $currentRow.find('td, th').each(function(node, i)\n\t\t\t{\n\t\t\t\tif (node === $currentCell.get()) index = i;\n\t\t\t});\n\n\t\t\tthis.$element.find('tr').each(function(node)\n\t\t\t{\n    \t\t\tvar $node = $R.dom(node);\n\t\t\t\tvar origCell = $node.find('td, th').get(index);\n\t\t\t\tvar $origCell = $R.dom(origCell);\n\n\t\t\t\t$origCell.remove();\n\t\t\t});\n        },\n\n        // private\n        _init: function(el)\n        {\n            var wrapper, element;\n            if (typeof el !== 'undefined')\n            {\n                var $node = $R.dom(el);\n                var node = $node.get();\n                var $figure = $node.closest('figure');\n                if ($figure.length !== 0)\n                {\n                    wrapper = $figure;\n                    element = $figure.find('table').get();\n                }\n                else if (node.tagName === 'TABLE')\n                {\n                    element = node;\n                }\n            }\n\n            this._buildWrapper(wrapper);\n            this._buildElement(element);\n            this._initWrapper();\n        },\n        _addRowTo: function(current, position)\n        {\n            var $current = $R.dom(current);\n            var $currentRow = $current.closest('tr');\n            if ($currentRow.length !== 0)\n            {\n                var columns = $currentRow.children('td, th').length;\n                var $newRow = this._buildRow(columns);\n\n                $currentRow[position]($newRow);\n\n                return $newRow;\n            }\n        },\n        _buildRow: function(columns, tag)\n        {\n            tag = tag || '<td>';\n\n            var $row = $R.dom('<tr>');\n            for (var i = 0; i < columns; i++)\n            {\n                var $cell = $R.dom(tag);\n                $cell.attr('contenteditable', true);\n\n                $row.append($cell);\n            }\n\n            return $row;\n        },\n        _buildElement: function(node)\n        {\n            if (node)\n            {\n                this.$element = $R.dom(node);\n            }\n            else\n            {\n                this.$element = $R.dom('<table>');\n                this.append(this.$element);\n            }\n        },\n        _buildWrapper: function(node)\n        {\n            node = node || '<figure>';\n\n            this.parse(node);\n        },\n        _initWrapper: function()\n        {\n            this.addClass('redactor-component');\n            this.attr({\n                'data-redactor-type': 'table',\n                'tabindex': '-1',\n                'contenteditable': false\n            });\n        }\n    });\n\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/textdirection/textdirection.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'textdirection', {\n        translations: {\n    \t\ten: {\n    \t\t\t\"change-text-direction\": \"RTL-LTR\",\n    \t\t\t\"left-to-right\": \"Left to Right\",\n    \t\t\t\"right-to-left\": \"Right to Left\"\n    \t\t}\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.block = app.block;\n            this.toolbar = app.toolbar;\n        },\n        // public\n        start: function()\n        {\n            var dropdown = {};\n\n    \t\tdropdown.ltr = { title: this.lang.get('left-to-right'), api: 'plugin.textdirection.set', args: 'ltr' };\n    \t\tdropdown.rtl = { title: this.lang.get('right-to-left'), api: 'plugin.textdirection.set', args: 'rtl' };\n\n            var $button = this.toolbar.addButton('textdirection', { title: this.lang.get('change-text-direction') });\n            $button.setIcon('<i class=\"re-icon-textdirection\"></i>');\n\t\t\t$button.setDropdown(dropdown);\n        },\n        set: function(type)\n\t\t{\n    \t\tif (type === 'rtl') this.block.add({ attr: { dir: 'rtl' }});\n            else this.block.remove({ attr: 'dir' });\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/textexpander/textexpander.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'textexpander', {\n        init: function(app)\n        {\n            this.app = app;\n            this.opts = app.opts;\n            this.utils = app.utils;\n            this.editor = app.editor;\n            this.marker = app.marker;\n            this.keycodes = app.keycodes;\n            this.selection = app.selection;\n        },\n        // public\n        start: function()\n        {\n            if (!this.opts.textexpander) return;\n\n            var $editor = this.editor.getElement();\n\t\t\t$editor.on('keyup.redactor-plugin-textexpander', this._expand.bind(this));\n\t\t},\n\t\tstop: function()\n\t\t{\n            var $editor = this.editor.getElement();\n\t\t\t$editor.off('.redactor-plugin-textexpander');\n\t\t},\n\n\t\t// private\n\t\t_expand: function(e)\n\t\t{\n            var key = e.which;\n\t\t\tif (key === this.keycodes.SPACE)\n\t\t\t{\n    \t\t\tvar len = this.opts.textexpander.length;\n                for (var i = 0; i < len; i++)\n                {\n                    var str = this.opts.textexpander[i];\n    \t\t\t    var re = new RegExp(this.utils.escapeRegExp(str[0]) + '\\\\s$');\n                    var rangeText = this.selection.getTextBeforeCaret(str[0].length + 1).replace(/\\s$/, '');\n\n    \t\t\t    if (str[0] === rangeText)\n    \t\t\t    {\n        \t\t\t    return this._replaceSelection(re, str[1]);\n    \t\t\t    }\n\n                }\n\t\t\t}\n\t\t},\n\t\t_replaceSelection: function(re, replacement)\n\t\t{\n    \t\tvar marker = this.marker.insert('start');\n            var current = marker.previousSibling;\n            var currentText = current.textContent;\n\n            currentText = currentText.replace(/&nbsp;/, ' ');\n        \tcurrentText = currentText.replace(re, replacement);\n        \tcurrent.textContent = currentText;\n\n \t\t\tthis.selection.restoreMarkers();\n\n            return;\n\t\t}\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/variable/variable.css",
    "content": ".redactor-variables-list {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n.redactor-variables-list li {\n    display: inline-block;\n    margin-right: 4px;\n    margin-bottom: 4px;\n}\n.redactor-variables-list span {\n    white-space: nowrap;\n    background: rgba(0,125,255, .75);\n    color: #fff;\n    display: inline-block;\n    padding: 3px 6px;\n    line-height: 1;\n    border-radius: 4px;\n    cursor: pointer;\n}\n.redactor-variables-list span.redactor-variables-item-selected {\n    background: #ee698a;\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/variable/variable.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'variable', {\n        translations: {\n            en: {\n                \"change\": \"Change\",\n                \"variable\": \"Variable\",\n                \"variable-select\": \"Please, select a variable\"\n            }\n        },\n        modals: {\n            'variable': ''\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.opts = app.opts;\n            this.toolbar = app.toolbar;\n            this.component = app.component;\n            this.insertion = app.insertion;\n            this.inspector = app.inspector;\n            this.selection = app.selection;\n        },\n\n        // messages\n        onmodal: {\n            variable: {\n                open: function($modal, $form)\n                {\n                    this._build($modal);\n                }\n            }\n        },\n        oncontextbar: function(e, contextbar)\n        {\n            var data = this.inspector.parse(e.target)\n            if (data.isComponentType('variable'))\n            {\n                var node = data.getComponent();\n                var buttons = {\n                    \"change\": {\n                        title: this.lang.get('change'),\n                        api: 'plugin.variable.open',\n                        args: node\n                    },\n                    \"remove\": {\n                        title: this.lang.get('delete'),\n                        api: 'plugin.variable.remove',\n                        args: node\n                    }\n                };\n\n                contextbar.set(e, node, buttons, 'bottom');\n            }\n\n\n        },\n\n        // public\n        start: function()\n        {\n            var obj = {\n                title: this.lang.get('variable'),\n                api: 'plugin.variable.open'\n            };\n\n            var $button = this.toolbar.addButton('variable', obj);\n            $button.setIcon('<i class=\"re-icon-variable\"></i>');\n        },\n        open: function()\n\t\t{\n            var options = {\n                title: this.lang.get('variable'),\n                width: '600px',\n                name: 'variable'\n            };\n\n            this.$currentItem = this._getCurrent();\n            this.app.api('module.modal.build', options);\n\t\t},\n\t\tinsert: function($item)\n\t\t{\n    \t\tthis.app.api('module.modal.close');\n\n            var type = $item.attr('data-type');\n            var $variable = this.component.create('variable');\n            $variable.html(type);\n\n            this.insertion.insertRaw($variable);\n\t\t},\n        remove: function(node)\n        {\n            this.component.remove(node);\n        },\n\n        // private\n\t\t_getCurrent: function()\n\t\t{\n    \t\tvar current = this.selection.getCurrent();\n    \t\tvar data = this.inspector.parse(current);\n    \t\tif (data.isComponentType('variable'))\n    \t\t{\n        \t\treturn this.component.build(data.getComponent());\n    \t\t}\n\t\t},\n\t\t_build: function($modal)\n\t\t{\n            var $body = $modal.getBody();\n            var $label = this._buildLabel();\n            var $list = this._buildList();\n\n            this._buildItems($list);\n\n            $body.html('');\n            $body.append($label);\n            $body.append($list);\n\t\t},\n\t\t_buildLabel: function()\n\t\t{\n            var $label = $R.dom('<label>');\n            $label.html(this.lang.parse('## variable-select ##:'));\n\n    \t\treturn $label;\n\t\t},\n\t\t_buildList: function()\n\t\t{\n    \t\tvar $list = $R.dom('<ul>');\n            $list.addClass('redactor-variables-list');\n\n            return $list;\n\t\t},\n\t\t_buildItems: function($list)\n\t\t{\n    \t\tvar selectedType = this._getCurrentType();\n    \t\tvar items = this.opts.variables;\n    \t\tfor (var i = 0; i < items.length; i++)\n            {\n                var type = items[i].trim();\n                var $li = $R.dom('<li>');\n                var $item = $R.dom('<span>');\n\n                $item.attr('data-type', type);\n                $item.html(type);\n                $item.on('click', this._toggle.bind(this));\n\n                if (selectedType === type)\n                {\n                    $item.addClass('redactor-variables-item-selected');\n                }\n\n                $li.append($item);\n                $list.append($li);\n            }\n\t\t},\n\t\t_getCurrentType: function()\n\t\t{\n    \t\tif (this.$currentItem)\n    \t\t{\n        \t\tvar variableData = this.$currentItem.getData();\n\n        \t\treturn variableData.type;\n            }\n\n    \t\treturn false;\n\t\t},\n\t\t_toggle: function(e)\n\t\t{\n            var $item = $R.dom(e.target);\n\n            this.app.api('plugin.variable.insert', $item);\n\t\t}\n    });\n})(Redactor);\n(function($R)\n{\n    $R.add('class', 'variable.component', {\n        mixins: ['dom', 'component'],\n        init: function(app, el)\n        {\n            this.app = app;\n            this.utils = app.utils;\n\n            // init\n            return (el && el.cmnt !== undefined) ? el : this._init(el);\n        },\n        // public\n        getData: function()\n        {\n            return {\n                type: this._getType()\n            };\n        },\n\n        // private\n        _init: function(el)\n        {\n            el = el || '<span>';\n\n            this.parse(el);\n            this._initWrapper();\n        },\n        _getType: function()\n        {\n            var text = this.text().trim();\n\n            return this.utils.removeInvisibleChars(text);\n        },\n        _initWrapper: function()\n        {\n            this.addClass('redactor-component');\n            this.attr({\n                'data-redactor-type': 'variable',\n                'tabindex': '-1',\n                'contenteditable': false\n            });\n        }\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/video/video.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'video', {\n        translations: {\n            en: {\n                \"video\": \"Video\",\n                \"video-html-code\": \"Video Embed Code or Youtube/Vimeo Link\"\n            }\n        },\n        modals: {\n            'video':\n                '<form action=\"\"> \\\n                    <div class=\"form-item\"> \\\n                        <label for=\"modal-video-input\">## video-html-code ## <span class=\"req\">*</span></label> \\\n                        <textarea id=\"modal-video-input\" name=\"video\" style=\"height: 160px;\"></textarea> \\\n                    </div> \\\n                </form>'\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.opts = app.opts;\n            this.toolbar = app.toolbar;\n            this.component = app.component;\n            this.insertion = app.insertion;\n            this.inspector = app.inspector;\n        },\n        // messages\n        onmodal: {\n            video: {\n                opened: function($modal, $form)\n                {\n                    $form.getField('video').focus();\n                },\n                insert: function($modal, $form)\n                {\n                    var data = $form.getData();\n                    this._insert(data);\n                }\n            }\n        },\n        oncontextbar: function(e, contextbar)\n        {\n            var data = this.inspector.parse(e.target)\n            if (data.isComponentType('video'))\n            {\n                var node = data.getComponent();\n                var buttons = {\n                    \"remove\": {\n                        title: this.lang.get('delete'),\n                        api: 'plugin.video.remove',\n                        args: node\n                    }\n                };\n\n                contextbar.set(e, node, buttons, 'bottom');\n            }\n\n        },\n\n        // public\n        start: function()\n        {\n            var obj = {\n                title: this.lang.get('video'),\n                api: 'plugin.video.open'\n            };\n\n            var $button = this.toolbar.addButtonAfter('image', 'video', obj);\n            $button.setIcon('<i class=\"re-icon-video\"></i>');\n        },\n        open: function()\n\t\t{\n            var options = {\n                title: this.lang.get('video'),\n                width: '600px',\n                name: 'video',\n                handle: 'insert',\n                commands: {\n                    insert: { title: this.lang.get('insert') },\n                    cancel: { title: this.lang.get('cancel') }\n                }\n            };\n\n            this.app.api('module.modal.build', options);\n\t\t},\n        remove: function(node)\n        {\n            this.component.remove(node);\n        },\n\n        // private\n\t\t_insert: function(data)\n\t\t{\n    \t\tthis.app.api('module.modal.close');\n\n    \t\tif (data.video.trim() === '')\n    \t\t{\n        \t    return;\n    \t\t}\n\n            // parsing\n            data.video = this._matchData(data.video);\n\n            // inserting\n            if (this._isVideoIframe(data.video))\n            {\n                var $video = this.component.create('video', data.video);\n                this.insertion.insertHtml($video);\n            }\n\t\t},\n\n\t\t_isVideoIframe: function(data)\n\t\t{\n            return (data.match(/<iframe|<video/gi) !== null);\n\t\t},\n\t\t_matchData: function(data)\n\t\t{\n\t\t\tvar iframeStart = '<iframe style=\"width: 500px; height: 281px;\" src=\"';\n\t\t\tvar iframeEnd = '\" frameborder=\"0\" allowfullscreen></iframe>';\n\n            if (this._isVideoIframe(data))\n\t\t\t{\n\t\t\t\tvar allowed = ['iframe', 'video', 'source'];\n\t\t\t\tvar tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi;\n\n\t\t\t    data = data.replace(tags, function ($0, $1)\n\t\t\t    {\n\t\t\t        return (allowed.indexOf($1.toLowerCase()) === -1) ? '' : $0;\n\t\t\t    });\n\t\t\t}\n\n\t\t\tif (data.match(this.opts.regex.youtube))\n\t\t\t{\n\t\t\t\tdata = data.replace(this.opts.regex.youtube, iframeStart + '//www.youtube.com/embed/$1' + iframeEnd);\n\t\t\t}\n\t\t\telse if (data.match(this.opts.regex.vimeo))\n\t\t\t{\n\t\t\t\tdata = data.replace(this.opts.regex.vimeo, iframeStart + '//player.vimeo.com/video/$2' + iframeEnd);\n\t\t\t}\n\n\n\t\t\treturn data;\n\t\t}\n    });\n})(Redactor);\n(function($R)\n{\n    $R.add('class', 'video.component', {\n        mixins: ['dom', 'component'],\n        init: function(app, el)\n        {\n            this.app = app;\n\n            // init\n            return (el && el.cmnt !== undefined) ? el : this._init(el);\n        },\n\n        // private\n        _init: function(el)\n        {\n            if (typeof el !== 'undefined')\n            {\n                var $node = $R.dom(el);\n                var $wrapper = $node.closest('figure');\n                if ($wrapper.length !== 0)\n                {\n                    this.parse($wrapper);\n                }\n                else\n                {\n                    this.parse('<figure>');\n                    this.append(el);\n                }\n            }\n            else\n            {\n                this.parse('<figure>');\n            }\n\n\n            this._initWrapper();\n        },\n        _initWrapper: function()\n        {\n            this.addClass('redactor-component');\n            this.attr({\n                'data-redactor-type': 'video',\n                'tabindex': '-1',\n                'contenteditable': false\n            });\n        }\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_plugins/widget/widget.js",
    "content": "(function($R)\n{\n    $R.add('plugin', 'widget', {\n        translations: {\n            en: {\n                \"widget\": \"Widget\",\n                \"widget-html-code\": \"Widget HTML Code\"\n            }\n        },\n        modals: {\n            'widget':\n                '<form action=\"\"> \\\n                    <div class=\"form-item\"> \\\n                        <label for=\"modal-widget-input\">## widget-html-code ## <span class=\"req\">*</span></label> \\\n                        <textarea id=\"modal-widget-input\" name=\"widget\" style=\"height: 200px;\"></textarea> \\\n                    </div> \\\n                </form>'\n        },\n        init: function(app)\n        {\n            this.app = app;\n            this.lang = app.lang;\n            this.opts = app.opts;\n            this.toolbar = app.toolbar;\n            this.component = app.component;\n            this.insertion = app.insertion;\n            this.inspector = app.inspector;\n            this.selection = app.selection;\n        },\n        // messages\n        onmodal: {\n            widget: {\n                opened: function($modal, $form)\n                {\n                    $form.getField('widget').focus();\n\n                    if (this.$currentItem)\n                    {\n                        var code = decodeURI(this.$currentItem.attr('data-widget-code'));\n                        $form.getField('widget').val(code);\n                    }\n                },\n                insert: function($modal, $form)\n                {\n                    var data = $form.getData();\n                    this._insert(data);\n                }\n            }\n        },\n        oncontextbar: function(e, contextbar)\n        {\n            var data = this.inspector.parse(e.target)\n            if (!data.isFigcaption() && data.isComponentType('widget'))\n            {\n                var node = data.getComponent();\n                var buttons = {\n                    \"edit\": {\n                        title: this.lang.get('edit'),\n                        api: 'plugin.widget.open',\n                        args: node\n                    },\n                    \"remove\": {\n                        title: this.lang.get('delete'),\n                        api: 'plugin.widget.remove',\n                        args: node\n                    }\n                };\n\n                contextbar.set(e, node, buttons, 'bottom');\n            }\n        },\n        onbutton: {\n            widget: {\n                observe: function(button)\n                {\n                    this._observeButton(button);\n                }\n            }\n        },\n\n        // public\n        start: function()\n        {\n            var obj = {\n                title: this.lang.get('widget'),\n                api: 'plugin.widget.open',\n                observe: 'widget'\n            };\n\n            var $button = this.toolbar.addButton('widget', obj);\n            $button.setIcon('<i class=\"re-icon-widget\"></i>');\n        },\n        open: function()\n\t\t{\n            this.$currentItem = this._getCurrent();\n\n            var options = {\n                title: this.lang.get('widget'),\n                width: '600px',\n                name: 'widget',\n                handle: 'insert',\n                commands: {\n                    insert: { title: (this.$currentItem) ? this.lang.get('save') : this.lang.get('insert') },\n                    cancel: { title: this.lang.get('cancel') }\n                }\n            };\n\n            this.app.api('module.modal.build', options);\n\t\t},\n        remove: function(node)\n        {\n            this.component.remove(node);\n        },\n\n        // private\n\t\t_getCurrent: function()\n\t\t{\n    \t\tvar current = this.selection.getCurrent();\n    \t\tvar data = this.inspector.parse(current);\n    \t\tif (data.isComponentType('widget'))\n    \t\t{\n        \t\treturn this.component.build(data.getComponent());\n    \t\t}\n\t\t},\n\t\t_insert: function(data)\n\t\t{\n    \t\tthis.app.api('module.modal.close');\n\n    \t\tif (data.widget.trim() === '')\n    \t\t{\n        \t    return;\n    \t\t}\n\n    \t\tvar html = (this._isHtmlString(data.widget)) ? data.widget : document.createTextNode(data.widget);\n            var $component = this.component.create('widget', html);\n            $component.attr('data-widget-code', encodeURI(data.widget.trim()));\n    \t\tthis.insertion.insertHtml($component);\n\n\t\t},\n        _isHtmlString: function(html)\n        {\n            return !(typeof html === 'string' && !/^\\s*<(\\w+|!)[^>]*>/.test(html));\n        },\n\t\t_observeButton: function(button)\n\t\t{\n    \t\tvar current = this.selection.getCurrent();\n    \t\tvar data = this.inspector.parse(current);\n\n    \t\tif (data.isComponentType('table')) button.disable();\n    \t\telse button.enable();\n\t\t}\n    });\n})(Redactor);\n(function($R)\n{\n    $R.add('class', 'widget.component', {\n        mixins: ['dom', 'component'],\n        init: function(app, el)\n        {\n            this.app = app;\n\n            // init\n            return (el && el.cmnt !== undefined) ? el : this._init(el);\n        },\n        getData: function()\n        {\n            return {\n                html: this._getHtml()\n            };\n        },\n\n        // private\n        _init: function(el)\n        {\n            if (typeof el !== 'undefined')\n            {\n                var $node = $R.dom(el);\n                var $figure = $node.closest('figure');\n                if ($figure.length !== 0)\n                {\n                    this.parse($figure);\n                }\n                else\n                {\n                    this.parse('<figure>');\n                    this.html(el);\n                }\n            }\n            else\n            {\n                this.parse('<figure>');\n            }\n\n\n            this._initWrapper();\n        },\n        _getHtml: function()\n        {\n            var $wrapper = $R.dom('<div>');\n            $wrapper.html(this.html());\n            $wrapper.find('.redactor-component-caret').remove();\n\n            return $wrapper.html();\n        },\n        _initWrapper: function()\n        {\n            this.addClass('redactor-component');\n            this.attr({\n                'data-redactor-type': 'widget',\n                'tabindex': '-1',\n                'contenteditable': false\n            });\n        }\n    });\n})(Redactor);"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/accessibility.scss",
    "content": ".redactor-voice-label {\n\tdisplay: none;\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/animation.scss",
    "content": "@keyframes fadeIn {\n    from { opacity: 0; }\n    to   { opacity: 1; }\n}\n@keyframes fadeOut {\n    from { opacity: 1; }\n    to   { opacity: 0; }\n}\n\n.redactor-animate-hide { display: none !important; }\n.redactor-fadeIn  { opacity: 0; animation: fadeIn .5s ease-in-out; }\n.redactor-fadeOut { opacity: 1; animation: fadeOut .5s ease-in-out; }"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/base.scss",
    "content": "// Zindex\n.redactor-box,\n.redactor-box textarea {\n\tz-index: auto;\n}\n\n// Base\n.redactor-box {\n    position: relative;\n\tbox-sizing: border-box;\n\n    &.redactor-styles-on {\n        margin: 0;\n        padding: 0;\n        background: #fff;\n        border: 1px solid rgba(0, 0, 0, .075);\n        border-radius: 3px;\n        box-shadow: none;\n    }\n    &.redactor-inline {\n        position: static;\n    }\n}\n.redactor-focus,\n.redactor-focus:focus {\n    &.redactor-styles-on {\n        border-color: #82b7ec !important;\n    }\n}\n.redactor-over:hover {\n    &.redactor-styles-on {\n       border-color: #ee698a !important;\n    }\n}\n.redactor-source-view,\n.redactor-source-view.redactor-styles-on {\n   border-color: #000 !important;\n}\n\n// Editor\n.redactor-in {\n    position: relative;\n    overflow: auto;\n    white-space: normal;\n    box-sizing: border-box;\n    &:focus {\n        outline: none;\n    }\n}\n.redactor-inline .redactor-in {\n    overflow: hidden;\n}\n.redactor-in *,\n.redactor-read-only * {\n    outline: none !important;\n}\n.redactor-in {\n    h1,\n    h2,\n    h3,\n    h4,\n    h5,\n    h6,\n    p,\n\tblockquote {\n        &:empty {\n    \t\tmin-height: $base-line-ems;\n\t\t}\n\t}\n\tstrong, b, em, i, span, sup, sub, u, ins {\n    \t&:empty {\n            display: inline-block;\n            min-width: 1px;\n            min-height: 1rem;\n\t\t}\n\t}\n\ttable {\n    \tempty-cells: show;\n\t}\n    li {\n        figure {\n            width: auto;\n            display: inline-block;\n            margin: 0;\n            vertical-align: top;\n        }\n    }\n    figcaption,\n    figure code,\n    figure pre,\n    table td,\n    table th {\n        &:focus {\n            outline: none;\n        }\n    }\n    figure[data-redactor-type=line] {\n        margin-top: 1em;\n        padding: 6px 0;\n        vertical-align: baseline;\n        hr {\n            margin: 0;\n            height: 3px;\n            border: none;\n            background: rgba(0, 0, 0, .1);\n        }\n    }\n}\n\n// Components\n.redactor-component {\n    position: relative;\n}\n\n.redactor-component[data-redactor-type=\"widget\"]:before,\n.redactor-component[data-redactor-type=\"video\"]:before {\n    width: 100%;\n    height: 100%;\n    content: \"\";\n    display: block;\n    position: absolute;\n    z-index: 1;\n}\n.redactor-component[data-redactor-type=image],\n.redactor-component[data-redactor-type=widget] {\n    clear: both;\n}\n.redactor-component[data-redactor-type=variable] {\n    white-space: nowrap;\n    background: rgba(#007dff, .75);\n    color: #fff;\n    display: inline-block;\n    padding: 3px 6px;\n    line-height: 1;\n    border-radius: 4px;\n    cursor: pointer;\n}\n.redactor-component-active {\n    outline: 5px solid rgba(#007dff, .5) !important;\n}\n.redactor-component-active[data-redactor-type=image] {\n    outline: none !important;\n    & img {\n        outline: 5px solid rgba(#007dff, .5) !important;\n    }\n}\n.redactor-component-active[data-redactor-type=variable] {\n    outline: none !important;\n    background: #ee698a;\n}\n.redactor-component-active[data-redactor-type=video] {\n    outline: none !important;\n    & iframe {\n        outline: 5px solid rgba(#007dff, .5) !important;\n    }\n}\n.redactor-blur.redactor-styles-on  {\n    & .redactor-component-active {\n        outline: 5px solid #ddd !important;\n        &[data-redactor-type=image] {\n            outline: none !important;\n            & img {\n                outline: 5px solid #ddd !important;\n            }\n        }\n        &[data-redactor-type=video] {\n            outline: none !important;\n            & iframe {\n                outline: 5px solid #ddd !important;\n            }\n        }\n        &[data-redactor-type=variable] {\n            outline: none !important;\n            background: #ddd;\n        }\n    }\n}\n.redactor-component-caret {\n    position: absolute;\n    left: -9999px;\n}\n\n// Utils\n.redactor-textnodes-wrapper {\n    display: inline-block;\n}\n\n// Image\n#redactor-image-resizer {\n    position: absolute;\n    background-color: rgba(#007dff, .9);\n    width: 13px;\n    height: 13px;\n    border: 1px solid #fff;\n    cursor: move;\n    cursor: nwse-resize;\n\n\n}\n\n// File\n.redactor-file-item {\n    display: inline-block;\n    line-height: 1;\n    padding: 4px 12px;\n    border-radius: 16px;\n    border: 1px solid rgba(0, 0, 0, .2);\n}\n.redactor-file-remover {\n    margin-left: 2px;\n    position: relative;\n    right: -3px;\n    display: inline-block;\n    padding: 0 3px;\n    cursor: pointer;\n    opacity: .5;\n    &:hover {\n        opacity: 1;\n    }\n}\n\n// Overlay\n#redactor-overlay {\n    position: fixed;\n    z-index: $z-index-overlay;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background-color: $overlay-background-color;\n\n    & > .redactor-close {\n        position: fixed;\n        top: 1rem;\n        right: 1rem;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/context.scss",
    "content": ".redactor-context-toolbar {\n    position: absolute;\n    top: 0;\n    left: 0;\n    z-index: $z-index-contextbar;\n\tbackground-color: rgba(#000, .95);\n\tcolor: #555;\n    border-radius: 4px;\n    padding: 6px 18px 7px 18px;\n    line-height: 1.5;\n    font-family: $monospace-font-family;\n\n    & a {\n        font-size: 12px;\n        color: #ccc;\n        text-decoration: none;\n        display: inline-block;\n        padding: 2px 0 1px 12px;\n    }\n    & a:first-child {\n        padding-left: 0;\n    }\n    & a i {\n        position: relative;\n        top: 3px;\n        font-size: 16px;\n    }\n    & a:before {\n        content: '';\n        padding-left: 10px;\n        border-left: 1px solid rgba(255, 255, 255, .3);\n    }\n    & a:hover {\n        color: #fff;\n    }\n    & a:first-child:before {\n        padding-left: 0;\n        border-left: none;\n    }\n}\n.redactor-context-toolbar[dir=\"rtl\"] {\n    a {\n        padding: 2px 12px 1px 0;\n    }\n    a:first-child {\n        padding-right: 0;\n    }\n    a:before {\n        padding-left: 0px;\n        padding-right: 10px;\n        border-right: 1px solid rgba(255,255,255,.3);\n        border-left: none;\n    }\n    a:first-child:before {\n        padding-right: 0;\n        border-right: none;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/dropdown.scss",
    "content": ".redactor-dropdown {\n    font-family: $base-font-family;\n    display: none;\n    position: absolute;\n    z-index: $z-index-dropdown;\n    background-color: #fff;\n    box-shadow: 0 4px 14px rgba(0, 0, 0, .2);\n    border-radius: 2px;\n    width: 264px;\n    max-height: 250px;\n    margin: 0;\n    margin-top: -1px;\n    overflow: auto;\n    font-size: 15px;\n    padding: 0;\n    & a span {\n        display: inline-block;\n        line-height: 1;\n        padding: 2px 4px;\n        border-radius: 3px;\n    }\n    & a {\n        display: block;\n        text-decoration: none;\n        padding: 10px 8px;\n        white-space: nowrap;\n        border-bottom: 1px solid rgba(0, 0, 0, .05);\n    }\n    & a:last-child {\n        border-bottom-color: transparent;\n    }\n    & a {\n        color: #000;\n        &:hover {\n            color: #fff !important;\n            background-color: #449aef !important;\n        }\n        &.redactor-dropdown-item-disabled {\n            color: rgba(0, 0, 0, .4);\n            background: #fff;\n        }\n    }\n}\n.redactor-dropdown-cells {\n    margin: 10px auto;\n    & a,\n    & span {\n        float: left;\n        cursor: pointer;\n        box-sizing: border-box;\n        text-align: center;\n        padding: 0;\n        margin: 0;\n        font-size: 14px;\n    }\n}\n.redactor-dropdown-selector {\n    display: flex;\n    text-align: center;\n\n    & span {\n        flex-grow: 1;\n        font-size: 12px;\n        padding: 8px;\n        cursor: pointer;\n        &:hover {\n            background: #eee;\n        }\n        &.active {\n            cursor: text;\n            color: rgba(0, 0, 0, .3);\n            background: #eee;\n        }\n    }\n}\n\n// Block Format\n.redactor-dropdown-format {\n\t& .redactor-dropdown-item-blockquote {\n\t\tcolor: rgba(0, 0, 0, .4);\n\t\tfont-style: italic;\n\t}\n\t& .redactor-dropdown-item-pre {\n\t\tfont-family: monospace, sans-serif;\n\t}\n\t& .redactor-dropdown-item-h1 {\n\t\tfont-size: 40px;\n\t\tfont-weight: bold;\n\t\tline-height: 32px;\n\t}\n\t& .redactor-dropdown-item-h2 {\n\t\tfont-size: 32px;\n\t\tfont-weight: bold;\n\t\tline-height: 32px;\n\t}\n\t& .redactor-dropdown-item-h3 {\n\t\tfont-size: 24px;\n\t\tfont-weight: bold;\n\t\tline-height: 24px;\n\t}\n\t& .redactor-dropdown-item-h4 {\n\t\tfont-size: 21px;\n\t\tfont-weight: bold;\n\t\tline-height: 24px;\n\t}\n\t& .redactor-dropdown-item-h5 {\n\t\tfont-size: 18px;\n\t\tfont-weight: bold;\n\t\tline-height: 24px;\n\t}\n\t& .redactor-dropdown-item-h6 {\n\t\tfont-size: 14px;\n\t\ttext-transform: uppercase;\n\t\tfont-weight: bold;\n\t\tline-height: 24px;\n\t}\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/fullscreen.scss",
    "content": ".redactor-box-fullscreen {\n\tz-index: $z-index-fullscreen;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n}\n.redactor-box-fullscreen-target {\n    position: absolute !important;\n}\n.redactor-body-fullscreen .redactor-dropdown,\n.redactor-body-fullscreen .redactor-context-toolbar {\n    z-index: $z-index-fullscreen-dropdown;\n}\n.redactor-body-fullscreen #redactor-overlay {\n    z-index: $z-index-fullscreen-overlay;\n}\n.redactor-body-fullscreen #redactor-modal {\n    z-index: $z-index-fullscreen-modal;\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/icons.scss",
    "content": "@font-face {\n  font-family: 'Redactor';\n  src: url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format('truetype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n[class^=\"re-icon-\"], [class*=\" re-icon-\"] {\n  /* use !important to prevent issues with browser extensions that change fonts */\n  font-family: 'Redactor' !important;\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.re-icon-aligncenter:before {\n  content: \"\\e900\";\n}\n.re-icon-alignment:before,\n.re-icon-alignleft:before {\n  content: \"\\e901\";\n}\n.re-icon-alignright:before {\n  content: \"\\e902\";\n}\n.re-icon-bold:before {\n  content: \"\\e903\";\n}\n.re-icon-bookmark:before {\n  content: \"\\e904\";\n}\n.re-icon-clips:before {\n  content: \"\\e905\";\n}\n.re-icon-codesnippets:before {\n  content: \"\\e906\";\n}\n.re-icon-deleted:before {\n  content: \"\\e907\";\n}\n.re-icon-expand:before {\n  content: \"\\e908\";\n}\n.re-icon-file:before {\n  content: \"\\e909\";\n}\n.re-icon-fontcolor:before {\n  content: \"\\e90a\";\n}\n.re-icon-fontfamily:before {\n  content: \"\\e90b\";\n}\n.re-icon-fontsize:before {\n  content: \"\\e90c\";\n}\n.re-icon-format:before {\n  content: \"\\e90d\";\n}\n.re-icon-html:before {\n  content: \"\\e90e\";\n}\n.re-icon-imagecenter:before {\n  content: \"\\e90f\";\n}\n.re-icon-imageleft:before {\n  content: \"\\e910\";\n}\n.re-icon-imageright:before {\n  content: \"\\e911\";\n}\n.re-icon-image:before {\n  content: \"\\e912\";\n}\n.re-icon-indent:before {\n  content: \"\\e913\";\n}\n.re-icon-inline:before {\n  content: \"\\e914\";\n}\n.re-icon-italic:before {\n  content: \"\\e915\";\n}\n.re-icon-line:before,\n.re-icon-horizontalrule:before {\n  content: \"\\e916\";\n}\n.re-icon-link:before {\n  content: \"\\e917\";\n}\n.re-icon-ol:before,\n.re-icon-ordered:before {\n  content: \"\\e918\";\n}\n.re-icon-outdent:before {\n  content: \"\\e919\";\n}\n.re-icon-properties:before {\n  content: \"\\e91a\";\n}\n.re-icon-readmore:before {\n  content: \"\\e91b\";\n}\n.re-icon-redo:before {\n  content: \"\\e91c\";\n}\n.re-icon-retract:before {\n  content: \"\\e91d\";\n}\n.re-icon-specialcharacters:before {\n  content: \"\\e91e\";\n}\n.re-icon-sub:before {\n  content: \"\\e91f\";\n}\n.re-icon-sup:before {\n  content: \"\\e920\";\n}\n.re-icon-table:before {\n  content: \"\\e921\";\n}\n.re-icon-textdirection:before {\n  content: \"\\e922\";\n}\n.re-icon-toggle:before {\n  content: \"\\e923\";\n}\n.re-icon-underline:before {\n  content: \"\\e924\";\n}\n.re-icon-undo:before {\n  content: \"\\e925\";\n}\n.re-icon-ul:before,\n.re-icon-lists:before,\n.re-icon-unordered:before {\n  content: \"\\e926\";\n}\n.re-icon-variable:before {\n  content: \"\\e927\";\n}\n.re-icon-video:before {\n  content: \"\\e928\";\n}\n.re-icon-widget:before {\n  content: \"\\e929\";\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/mixins.scss",
    "content": "// Power Function\n@function pow($number, $exponent) {\n  $value: 1;\n\n  @if $exponent > 0 {\n    @for $i from 1 through $exponent {\n      $value: $value * $number;\n    }\n  }\n\n  @return $value;\n}\n\n// Strip Units\n@function strip-unit($num) {\n  @return $num / ($num * 0 + 1);\n}\n\n// Clearfix\n@mixin clearfix {\n\t&:after {\n\t\tcontent: \"\";\n\t\tdisplay: table;\n\t\tclear: both;\n\t}\n}\n// Scale Font Size\n@mixin font-scaled-size-up($scale) {\n    font-size: 1em * pow($font-scale, $scale);\n}\n@mixin font-scaled-size-down($scale) {\n    font-size: 1em / pow($font-scale, $scale);\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/modal.scss",
    "content": "#redactor-modal {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tbottom: 0;\n\tright: 0;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\tz-index: $z-index-modal;\n\tfont-family: $base-font-family;\n\tline-height: 24px;\n}\n.redactor-modal {\n\tposition: relative;\n\tmargin: 16px auto;\n\tpadding: 0;\n\tbackground: #fff;\n\tbox-shadow: 0 0 0 1px rgba(0, 0, 0, .07), 0 2px 15px rgba(80, 80, 80, .25);\n    border-radius: 3px;\n\tcolor: #000;\n\n    & form {\n        margin: 0;\n        padding: 0;\n        box-sizing: border-box;\n    }\n\t& input,\n\t& select,\n\t& textarea {\n        box-sizing: border-box;\n        display: block;\n        width: 100%;\n    \tfont-family: inherit;\n    \tfont-size: 16px;\n    \theight: 40px;\n        outline: none;\n        vertical-align: middle;\n    \tbackground-color: #fff;\n        border: 1px solid #cacfd4;\n        border-radius: 0.1875em;\n        box-shadow: none;\n        padding: 0 .5em;\n\t}\n    & textarea {\n        padding: .5em;\n        height: auto;\n        line-height: 1.5;\n        vertical-align: top;\n    }\n    & select {\n        -webkit-appearance: none;\n        background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"12\" viewBox=\"0 0 9 12\"><path fill=\"rgba(0, 0, 0, .4);\" d=\"M0.722,4.823L-0.01,4.1,4.134-.01,4.866,0.716Zm7.555,0L9.01,4.1,4.866-.01l-0.732.726ZM0.722,7.177L-0.01,7.9,4.134,12.01l0.732-.726Zm7.555,0L9.01,7.9,4.866,12.01l-0.732-.726Z\"/></svg>');\n        background-repeat: no-repeat;\n        background-position: right .65em center;\n        padding-right: 28px;\n    }\n    & select[multiple] {\n        background-image: none;\n        height: auto;\n        padding: .5em .75em;\n    }\n    & input[type=\"file\"] {\n        width: auto;\n        border: none;\n        padding: 0;\n        height: auto;\n        background: none;\n        box-shadow: none;\n        display: inline-block;\n    }\n    & input[type=\"radio\"],\n    & input[type=\"checkbox\"] {\n        display: inline-block;\n        width: auto;\n        height: auto;\n        padding: 0;\n        vertical-align: middle;\n        position: relative;\n        bottom: 0.15rem;\n        font-size: 115%;\n        margin-right: 3px;\n    }\n    & .form-item {\n        margin-bottom: 20px;\n    }\n    & .form-item:last-child {\n        margin-bottom: 0;\n    }\n    & fieldset {\n        border: 1px solid rgba(0, 0, 0, .1);\n        border-radius: 3px;\n        padding: 16px;\n        padding-bottom: 20px;\n        margin-bottom: 20px;\n        & .form-item {\n            margin-bottom: 12px;\n        }\n    }\n    & label {\n        display: block;\n        color: #555;\n        margin-bottom: 0.25em;\n        font-size: 14px;\n        & .desc,\n        & .success,\n        & .error {\n        \ttext-transform: none;\n        \tfont-weight: normal;\n        }\n    }\n    & label.checkbox {\n        font-size: 16px;\n        line-height: 1.5;\n    \tcursor: pointer;\n    \tcolor: inherit;\n\t}\n    & .form-checkboxes {\n        & label.checkbox {\n            display: inline-block;\n            margin-right: 1em;\n        }\n    }\n    & input,\n    & textarea,\n    & select {\n        &:hover {\n        \toutline: none;\n        \tbackground-color: #fff;\n        \tborder-color: #969fa9;\n            box-shadow: none;\n        }\n        &:focus {\n            transition: all linear .2s;\n        \toutline: none;\n        \tbackground-color: #fff;\n        \tborder-color: rgba(#007dff, .5);\n            box-shadow:  0 0 3px rgba(#007dff, .5);\n        }\n        &.error {\n    \t    background-color: rgba(#ff3265, .1);\n        \tborder: 1px solid lighten(#ff3265, 15%);\n        \t&:focus {\n                border-color: #ff3265;\n                box-shadow: 0 0 1px #ff3265;\n        \t}\n    \t}\n        &.success  {\n        \tbackground-color: rgba(#2fc4b6, .1);\n        \tborder: 1px solid lighten(#2fc4b6, 15%);\n        \t&:focus {\n                border-color: #2fc4b6;\n                box-shadow: 0 0 1px #2fc4b6;\n        \t}\n        }\n        &:disabled,\n        &.disabled {\n            &,\n            &:hover {\n            \tresize: none;\n            \topacity: .6;\n            \tcursor: default;\n            \tfont-style: italic;\n            \tcolor: rgba(0, 0, 0, .5);\n            \tborder: 1px solid #cacfd4;\n            \tbox-shadow: none;\n            \tbackground-color: #fff;\n        \t}\n    \t}\n    }\n    & .req {\n        position: relative;\n        top: 1px;\n    \tfont-weight: bold;\n    \tcolor: #ff3265;\n    \tfont-size: 110%;\n    }\n    & .desc {\n        color: rgba(#333, .5);\n        font-size: 12px;\n    }\n    & span.desc {\n        margin-left: 0.25em;\n    }\n    & div.desc {\n        margin-top: 0.25em;\n    }\n    & span.success,\n    & span.error {\n        font-size: 12px;\n        margin-left: 0.25em;;\n    }\n    & div.desc {\n        margin-bottom: -0.5em;\n    }\n    & .redactor-close {\n    \tposition: absolute;\n    \ttop: 16px;\n    \tright: 12px;\n        font-size: 30px;\n        line-height: 30px;\n        padding: 0px 4px;\n        color: #000;\n        opacity: .3;\n        cursor: pointer;\n        &:hover {\n            opacity: 1;\n        }\n        &:before {\n            content: '\\00d7';\n        }\n    }\n    & button {\n\n        display: inline-flex;\n        align-items: center;\n\n        text-decoration: none;\n        text-align: center;\n\n    \tfont-family: inherit;\n    \tfont-size: 15px;\n    \tfont-weight: 500;\n\n    \tcolor: #007dff;\n    \tbackground-color: #fff;\n    \tborder-radius: 3px;\n    \tborder: 2px solid #007dff;\n\n    \tmin-height: 40px;\n    \toutline: none;\n\n    \tpadding: 0.5em 1.25em;\n    \tcursor: pointer;\n\n    \tline-height: 1.2;\n    \tvertical-align: middle;\n    \t-webkit-appearance: none;\n    }\n    & button:hover {\n        outline: none;\n    \ttext-decoration: none;\n    \tbackground: none;\n    \tcolor: rgba(#007dff, .6);\n        border-color: rgba(#007dff, .5);\n    }\n    & button.redactor-button-secondary {\n        border-color: #2a2e34;\n        color: #2a2e34;\n        &:hover {\n    \t    color: rgba(#2a2e34, .6);\n            border-color: rgba(#2a2e34, .5);\n        }\n    }\n    & button.redactor-button-danger,\n    & button.redactor-button-unstyled {\n        background: none;\n        border-color: transparent;\n        color: rgba(#2a2e34, .6);\n        &:hover {\n            background: none;\n            border-color: transparent;\n            color: #ff3265;\n            text-decoration: underline;\n        }\n    }\n\n    & .redactor-modal-group:after {\n\t\tcontent: \"\";\n\t\tdisplay: table;\n\t\tclear: both;\n\t}\n\t& .redactor-modal-side {\n\t\tfloat: left;\n\t\twidth: 30%;\n\t\tmargin-right: 4%;\n\n\t\t& img {\n    \t\tmax-width: 100%;\n    \t\theight: auto;\n    \t\tdisplay: block;\n\t\t}\n\t}\n\t& .redactor-modal-area {\n\t\tfloat: left;\n\t\twidth: 66%;\n\t}\n}\n.redactor-modal[dir=\"rtl\"] {\n    .redactor-close {\n        left: 12px;\n        right: auto;\n    }\n    textarea {\n        direction: ltr;\n        text-align: left;\n    }\n    .redactor-modal-footer button.redactor-button-unstyled {\n        float:left;\n        margin-left: 0;\n    }\n}\n.redactor-modal-header {\n\tpadding: 20px;\n\tfont-size: 18px;\n\tline-height: 24px;\n\tfont-weight: bold;\n\tcolor: #000;\n\tborder-bottom: 1px solid rgba(0, 0, 0, .05);\n    &:empty {\n        display: none;\n    }\n}\n.redactor-modal-body {\n    padding: 32px 48px;\n    padding-bottom: 40px;\n}\n.redactor-modal-footer {\n    padding: 24px;\n    border-top: 1px solid rgba(0, 0, 0, .05);\n    overflow: hidden;\n    & button {\n        margin-right: 4px;\n    }\n    & button.redactor-button-unstyled {\n        margin-right: 0;\n        float: right;\n    }\n    &:empty {\n        display: none;\n    }\n}\n.redactor-modal-tabs {\n\n    display: flex;\n    border-bottom: 2px solid rgba(0, 0, 0, .05);\n    margin-bottom: 1em;\n\n    & a {\n        font-size: 15px;\n        padding: 2px 0;\n        text-decoration: none;\n        color: rgba(0, 0, 0, .5);\n        border-bottom: 2px solid transparent;\n        margin-bottom: -2px;\n        margin-right: 14px;\n    }\n    & a:hover {\n        transition: all linear .2s;\n    }\n    & a:hover,\n    & a.active {\n        font-weight: 500;\n        color: #007dff;\n        border-bottom-color: #007dff;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/placeholder.scss",
    "content": ".redactor-placeholder:before {\n    position: absolute;\n    content: attr(placeholder);\n    color: rgba(0, 0, 0, .4);\n    font-weight: normal;\n}\n.redactor-in figcaption[placeholder]:empty:before {\n    content: attr(placeholder);\n    color: rgba(0, 0, 0, .4);\n    font-weight: normal;\n}\n.redactor-in figcaption[placeholder]:empty:focus:before {\n    content: \"\";\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/progress.scss",
    "content": "@mixin striped-redactor($color: rgba(255, 255, 255, .2), $angle: 45deg) {\n\tbackground-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n\tbackground-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n\tbackground-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n@mixin animation-redactor($animation) {\n\t-webkit-animation: $animation;\n\t-o-animation: $animation;\n\tanimation: $animation;\n}\n\n#redactor-progress {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\tz-index: 1000000;\n\theight: 10px;\n}\n#redactor-progress span {\n\n\t@include striped-redactor;\n\t@include animation-redactor(progress-bar-stripes 2s linear infinite);\n\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: #007dff;\n\tbackground-size: 40px 40px;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n\tfrom { background-position: 40px 0; }\n\tto { background-position: 0 0; }\n}\n@-o-keyframes progress-bar-stripes {\n\tfrom { background-position: 40px 0; }\n\tto { background-position: 0 0; }\n}\n@keyframes progress-bar-stripes {\n\tfrom { background-position: 40px 0; }\n\tto { background-position: 0 0; }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/redactor.scss",
    "content": "/*\n    Redactor 3\n\n    http://imperavi.com/redactor/\n\n    Copyright (c) 2009-2018, Imperavi LLC.\n    License: http://imperavi.com/redactor/license/\n*/\n\n@import \"variables.scss\";\n@import \"mixins.scss\";\n@import \"animation.scss\";\n@import \"icons.scss\";\n@import \"base.scss\";\n@import \"source.scss\";\n@import \"placeholder.scss\";\n@import \"statusbar.scss\";\n@import \"toolbar.scss\";\n@import \"toolbar-air.scss\";\n@import \"accessibility.scss\";\n@import \"context.scss\";\n@import \"dropdown.scss\";\n@import \"modal.scss\";\n@import \"styles.scss\";\n@import \"upload.scss\";\n@import \"structure.scss\";\n@import \"progress.scss\";\n@import \"fullscreen.scss\";"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/source.scss",
    "content": ".redactor-source,\n.redactor-source:hover,\n.redactor-source:focus {\n    text-align: left;\n\tbox-sizing: border-box;\n    font-family: $monospace-font-family;\n    width: 100%;\n    display: block;\n\tmargin: 0;\n\tborder: none;\n\tbox-shadow: none;\n\tborder-radius: 0;\n\tbackground: #252525;\n\tcolor: #ccc;\n\tfont-size: 15px;\n\toutline: none;\n\tpadding: 10px 18px 20px 18px;\n\tline-height: 1.5;\n\tresize: vertical;\n}\n.redactor-box[dir=\"rtl\"] {\n    .redactor-source {\n        direction: ltr;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/statusbar.scss",
    "content": ".redactor-statusbar {\n    font-family: $monospace-font-family;\n    margin: 0;\n    padding: 8px 10px;\n    position: relative;\n    overflow: hidden;\n    list-style: none;\n    background: #f8f8f8;\n    box-sizing: border-box;\n    border: none;\n\n    & li {\n        float: left;\n        font-size: 12px;\n        color: rgba(0, 0, 0, .5);\n        padding: 0 10px;\n        line-height: 16px;\n        border-right: 1px solid rgba(0, 0, 0, .1);\n    }\n    & li:last-child {\n        border-right-color: transparent;\n    }\n    & a {\n        color: rgba(0, 0, 0, .5);\n        text-decoration: underline;\n    }\n    & a:hover {\n        color: #f03c69;\n        text-decoration: underline;\n    }\n\n    &:empty {\n        display: none;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/structure.scss",
    "content": ".redactor-structure {\n\n\th1, h2, h3, h4, h5, h6, div {\n\t\tposition: relative;\n\t\t&:before {\n\t\t\twidth: 24px;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 10px;\n\t\t\tfont-weight: normal;\n\t\t\topacity: .3;\n\t\t\tleft: -26px;\n\t\t\ttop: 50%;\n\t\t\tmargin-top: -7px;\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\th1:before  { content: \"h1\";  }\n\th2:before  { content: \"h2\";  }\n\th3:before  { content: \"h3\";  }\n\th4:before  { content: \"h4\";  }\n\th5:before  { content: \"h5\";  }\n\th6:before  { content: \"h6\";  }\n\tdiv:before { content: \"div\"; }\n\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/styles.scss",
    "content": ".redactor-styles {\n\n    // ui\n    margin: 0;\n    padding: 16px 18px;\n\n    // content\n    color: $color-text;\n    font-family: $base-font-family;\n    font-size: $font-size;\n    line-height: $base-line;\n    box-sizing: border-box;\n\n    *,\n    *:before,\n    *:after {\n        box-sizing: inherit;\n    }\n\n    &[dir=\"rtl\"] {\n\t\tdirection: rtl;\n\t\tunicode-bidi: embed;\n\n\t\tul,\n\t\tol {\n\t\t\tli {\n\t\t\t\ttext-align: right;\n\t\t\t}\n\t\t}\n\t\tul,\n\t\tol,\n\t\tul ul,\n\t\tol ol,\n\t\tul ol,\n\t\tol ul {\n\t\t\tmargin: 0 $base-line-ems 0 0;\n\t\t}\n\t\tfigcaption {\n    \t\ttext-align: right;\n\t\t}\n\t}\n    a,\n    a:hover {\n        color: $color-link;\n    }\n\tp,\n\tdl,\n\tblockquote,\n\thr,\n\tpre,\n\ttable,\n\tfigure,\n\taddress {\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tmargin-bottom: $text-margin-bottom;\n\t}\n    ul,\n    ol {\n        padding: 0;\n\n        &,\n        & ul,\n        & ol {\n            margin: 0 0 0 $base-line-ems;\n        }\n    }\n\tul li,\n\tol li {\n\t\ttext-align: left;\n\t}\n\tol ol li {\n\t\tlist-style-type: lower-alpha;\n\t}\n\tol ol ol li {\n\t\tlist-style-type: lower-roman;\n\t}\n    ul,\n\tol {\n    \tmargin-bottom: $text-margin-bottom;\n\t}\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: $headings-font-weight;\n\t\tcolor: $color-headings;\n\t\ttext-rendering: optimizeLegibility;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tmargin-bottom: $headings-margin-bottom;\n\t\tline-height: $headings-base-line;\n\t}\n\th1 { @include font-scaled-size-up(4); }\n    h2 { @include font-scaled-size-up(3); }\n    h3 { @include font-scaled-size-up(2); }\n    h4 { @include font-scaled-size-up(1); }\n    h5 { font-size: 1em; }\n    h6 {\n        @include font-scaled-size-down(1);\n        text-transform: uppercase;\n        letter-spacing: .035em;\n    }\n\tblockquote {\n    \tfont-style: italic;\n    \tcolor: rgba(0, 0, 0, .5);\n        border: none;\n\t}\n    table {\n        width: 100%;\n    }\n\ttime, small, var, code, kbd, mark {\n        display: inline-block;\n        font-family: $monospace-font-family;\n        font-size: 87.5%;\n        line-height: 1;\n        color: rgba($color-text, .9);\n    }\n    var, cite {\n        opacity: .6;\n    }\n    var {\n        font-style: normal;\n    }\n    dfn,\n    abbr {\n        text-transform: uppercase;\n        &[title] {\n            text-decoration: none;\n            border-bottom: 1px dotted rgba(0, 0, 0, .5);\n            cursor: help;\n        }\n    }\n    code, kbd {\n        position: relative;\n        top: -1px;\n        padding: 0.25em;\n        padding-bottom: 0.2em;\n        border-radius: 2px;\n    }\n    code {\n        background-color: $color-silver;\n    }\n    mark {\n        border-radius: 2px;\n        padding: 0.125em 0.25em;\n        background-color: $color-warning;\n    }\n    kbd {\n        border: 1px solid $color-lightgray;\n    }\n    sub,\n    sup {\n        font-size: 75%;\n        line-height: 0;\n        position: relative;\n        vertical-align: baseline;\n    }\n    sub {\n        bottom: -0.25em;\n    }\n    sup {\n        top: -0.5em;\n    }\n    // Preformatted\n    pre  {\n        font-family: $monospace-font-family;\n        font-size: .9em;\n    }\n    pre,\n    pre code {\n        background-color: $color-aluminum;\n        padding: 0;\n        top: 0;\n        display: block;\n        line-height: $base-line;\n        color: rgba($color-text, .85);\n        overflow: none;\n        white-space: pre-wrap;\n    }\n    pre {\n        padding: 1rem;\n    }\n\t// tables\n\ttable {\n\t\tborder-collapse: collapse;\n\t\tmax-width: 100%;\n\t\twidth: 100%;\n\n\t\tcaption {\n\t\t\ttext-transform: uppercase;\n\t\t\tpadding: 0;\n\t\t\tcolor: rgba(0, 0, 0, .5);\n\t\t\tfont-size: 11px;\n\t\t}\n\n\t\tth,\n\t\ttd {\n\t\t\tborder: 1px solid #eee;\n\t\t\tpadding: 16px;\n\t\t\tpadding-bottom: 15px;\n\t\t}\n\n\t\ttfoot th,\n\t\ttfoot td {\n\t\t\tcolor: rgba(0, 0, 0, .5);\n\t\t}\n\t}\n\t// Responsive media\n\timg,\n\tvideo,\n\taudio,\n\tembed,\n\tobject {\n\t\tmax-width: 100%;\n\t}\n\timg,\n\tvideo,\n\tembed,\n\tobject {\n\t\theight: auto !important;\n\t}\n\timg {\n\t\tvertical-align: middle;\n\t\t-ms-interpolation-mode: bicubic;\n\t}\n    // Figure\n    figcaption {\n        display: block;\n    \topacity: .6;\n\t\tfont-size: 12px;\n\t\tfont-style: italic;\n\t\ttext-align: left;\n\t}\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/toolbar-air.scss",
    "content": ".redactor-toolbar-wrapper-air {\n    position: absolute;\n    z-index: $z-index-toolbar-wrraper-air;\n}\n.redactor-air {\n\tpadding: 6px 3px 2px 8px;\n\tmax-width: 576px;\n\tmin-width: 200px;\n\tborder-radius: 4px;\n    background: rgba(0, 0, 0, .97);\n}\n.redactor-air a {\n    background: rgba(#252525, .95);\n    box-shadow: none;\n\tcolor: rgba(#fff, .9);\n}\n.redactor-air a:hover {\n\tbackground: #3d79f2;\n}\n.redactor-air a.redactor-button-active {\n\tbackground-color: rgba(255, 255, 255, .15);\n\tcolor: #fff;\n}\n.redactor-air a.redactor-button-disabled {\n\t&:hover {\n\t\tcolor: #fff;\n\t}\n}\n.redactor-air-helper {\n    position: absolute;\n    right: 0;\n    top: 0;\n    line-height: 1;\n    font-size: 15px;\n    color: #000;\n    background: rgba(255, 255, 255, .85);\n    border-bottom-left-radius: 4px;\n    padding: 7px 10px 6px 10px;\n    cursor: pointer;\n    &:hover {\n        background: #fff;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/toolbar.scss",
    "content": ".redactor-toolbar-wrapper {\n    position: relative;\n}\n.redactor-toolbar,\n.redactor-air {\n    z-index: $z-index-toolbar;\n    font-family: $base-font-family;\n    position: relative;\n\tmargin: 0 !important;\n\tpadding: 0;\n\tlist-style: none !important;\n\tline-height: 1 !important;\n\tbackground: none;\n\tborder: none;\n\tbox-sizing: border-box;\n}\n.redactor-box.redactor-styles-on {\n    & .redactor-toolbar {\n\t    padding: 18px 16px 0 16px;\n\t}\n}\n.redactor-toolbar a,\n.redactor-air a {\n    display: inline-block;\n    box-sizing: border-box;\n\tfont-size: 14px;\n\ttext-align: center;\n\tpadding: 10px 15px 9px 15px;\n\tcursor: pointer;\n\toutline: none;\n\tborder: none;\n\tvertical-align: middle;\n\ttext-decoration: none;\n\tzoom: 1;\n\tposition: relative;\n\tcolor: rgba(0, 0, 0, .85);\n\tborder-radius: 2px;\n    background: rgba(255, 255, 255, .97);\n    box-shadow: 0 1px 2px rgba(0, 0, 0, .22);\n    margin-right: 5px;\n    margin-bottom: 4px;\n}\n.redactor-toolbar,\n.redactor-air {\n    a.re-button-icon {\n\t    font-size: 16px;\n        padding: 9px 15px 6px 15px;\n    }\n}\n.redactor-toolbar,\n.redactor-air {\n    a:hover {\n\t    outline: none;\n        color: #fff;\n        background: #449aef;\n    }\n}\n.redactor-toolbar a.redactor-button-active {\n    background: rgba(245, 245, 245, .95);\n    color: rgba(0, 0, 0, .4);\n}\n.redactor-toolbar,\n.redactor-air {\n    a.redactor-button-disabled {\n        opacity: 0.3;\n    \t&:hover {\n    \t\tcolor: #333;\n    \t\toutline: none;\n    \t\tbackground-color: transparent !important;\n    \t\tcursor: default;\n    \t}\n    }\n}\n.redactor-source-view {\n    & .redactor-toolbar {\n        background: #252525;\n    }\n    & .redactor-toolbar a {\n        background: #000;\n        color: #fff;\n        &:hover {\n            background: #449aef;\n        }\n    }\n    & .redactor-toolbar a.redactor-button-disabled {\n    \t&:hover {\n\t\t    color: #fff !important;\n    \t\tbackground-color: #000 !important;\n        }\n    }\n}\n.re-button-tooltip {\n\tdisplay: none;\n\tposition: absolute;\n\twhite-space: nowrap;\n    top: 0;\n    z-index: $z-index-toolbar-button-tooltip;\n    background: rgba(0, 0, 0, .9);\n    border-radius: 3px;\n    padding: 5px 9px;\n    color: rgba(255, 255, 255, .8);\n    font-size: 12px;\n    line-height: 1;\n    font-family: $monospace-font-family;\n\n    &:after {\n    \tbottom: 100%;\n    \tleft: 50%;\n    \tborder: solid transparent;\n    \tcontent: \" \";\n    \theight: 0;\n    \twidth: 0;\n    \tposition: absolute;\n    \tpointer-events: none;\n    \tborder-color: none;\n    \tborder-bottom-color: rgba(0, 0, 0, .9);\n    \tborder-width: 4px;\n    \tmargin-left: -4px;\n    }\n}"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/upload.scss",
    "content": ".upload-box {\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\tbox-sizing: border-box;\n\tborder: 5px dashed rgba(#007dff, .15);\n\tposition: relative;\n\twidth: 100%;\n\tmin-height: 220px;\n\tbackground: #fff;\n\tcursor: pointer;\n\toverflow: hidden;\n\ttext-align: center;\n}\n.upload-placeholder {\n\tfont-size: 15px;\n\tline-height: 1.5;\n\tcolor: rgba(0, 0, 0, .3);\n\tfont-style: italic;\n}\n\n.upload-hover { background-color: rgba(#007dff, .075);   }\n.upload-error { background-color: rgba(#ff3265, .075);   }\n\n.upload-box-hover { outline: 5px dashed rgba(#007dff, .3); }\n.upload-box-error { outline: 5px dashed rgba(#ff3265, .3);  }"
  },
  {
    "path": "src/Assets/src/vendor/redactor/_scss/variables.scss",
    "content": "// Z-INDEX\n// ---------------------------------------------------------------------------\n$z-index-toolbar: 100 !default;\n$z-index-toolbar-wrraper-air: 100 !default;\n$z-index-overlay: 1051 !default;\n$z-index-contextbar: 1051 !default;\n$z-index-dropdown: 1051 !default;\n$z-index-modal: 1051 !default;\n$z-index-fullscreen: 1051 !default;\n$z-index-toolbar-button-tooltip: 1052 !default;\n$z-index-fullscreen-dropdown: 1052 !default;\n$z-index-fullscreen-overlay: 1098 !default;\n$z-index-fullscreen-modal: 1099 !default;\n\n\n// TEXT\n// ---------------------------------------------------------------------------\n$base-font-family: \"Trebuchet MS\", 'Helvetica Neue', Helvetica, Tahoma, sans-serif !default;\n$monospace-font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace !default;\n\n// Scale\n$font-scale: 1.2 !default;\n\n// Font Size\n$font-size: 1em !default;\n\n// Baseline\n$base-line: 1.5 !default;\n$base-line-ems: $base-line * 1em !default;\n\n// Margin\n$text-margin-bottom: $font-size !default;\n\n// HEADINGS\n// ---------------------------------------------------------------------------\n\n// Baseline\n$headings-base-line: 1.2 !default;\n\n// Weight\n$headings-font-weight: bold !default;\n\n// Margin\n$headings-margin-bottom: 0.5em !default;\n\n\n// COLORS\n// ---------------------------------------------------------------------------\n\n// Text\n$color-text: #333 !default;\n$color-headings: #111 !default;\n\n// Links\n$color-link: #3397ff !default;\n$color-link-hover: #ff3265 !default;\n\n// States\n$color-error: #ff3265 !default;\n$color-success: #2fc4b6 !default;\n$color-warning: #fdb833 !default;\n$color-focus: #007dff !default;\n\n// Grayscale\n$color-black: #101012 !default;\n$color-darkgray: #707580 !default;\n$color-midgray: #969fa9 !default;\n$color-gray: #cacfd4 !default;\n$color-lightgray: #e5e7e9 !default;\n$color-silver: #eff1f2 !default;\n$color-aluminum: #f6f7f8 !default;\n\n// TABLES\n// ---------------------------------------------------------------------------\n\n// Padding\n$table-padding-tb: 1em !default;\n$table-padding-rl: 1em !default;\n\n// Border\n$table-border: 1px solid $color-silver !default;\n\n// Striped\n$table-background-striped: $color-aluminum !default;\n\n// OVERLAY\n// ---------------------------------------------------------------------------\n$overlay-background-color: rgba($color-black, .18) !default;"
  },
  {
    "path": "src/Assets/src/vendor/redactor/redactor.css",
    "content": "/*\n    Redactor 3\n\n    http://imperavi.com/redactor/\n\n    Copyright (c) 2009-2018, Imperavi LLC.\n    License: http://imperavi.com/redactor/license/\n*/\n@keyframes fadeIn {\n  from {\n    opacity: 0; }\n  to {\n    opacity: 1; } }\n\n@keyframes fadeOut {\n  from {\n    opacity: 1; }\n  to {\n    opacity: 0; } }\n\n.redactor-animate-hide {\n  display: none !important; }\n\n.redactor-fadeIn {\n  opacity: 0;\n  animation: fadeIn .5s ease-in-out; }\n\n.redactor-fadeOut {\n  opacity: 1;\n  animation: fadeOut .5s ease-in-out; }\n\n@font-face {\n  font-family: 'Redactor';\n  src: url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\");\n  font-weight: normal;\n  font-style: normal; }\n\n[class^=\"re-icon-\"], [class*=\" re-icon-\"] {\n  /* use !important to prevent issues with browser extensions that change fonts */\n  font-family: 'Redactor' !important;\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale; }\n\n.re-icon-aligncenter:before {\n  content: \"\\e900\"; }\n\n.re-icon-alignment:before,\n.re-icon-alignleft:before {\n  content: \"\\e901\"; }\n\n.re-icon-alignright:before {\n  content: \"\\e902\"; }\n\n.re-icon-bold:before {\n  content: \"\\e903\"; }\n\n.re-icon-bookmark:before {\n  content: \"\\e904\"; }\n\n.re-icon-clips:before {\n  content: \"\\e905\"; }\n\n.re-icon-codesnippets:before {\n  content: \"\\e906\"; }\n\n.re-icon-deleted:before {\n  content: \"\\e907\"; }\n\n.re-icon-expand:before {\n  content: \"\\e908\"; }\n\n.re-icon-file:before {\n  content: \"\\e909\"; }\n\n.re-icon-fontcolor:before {\n  content: \"\\e90a\"; }\n\n.re-icon-fontfamily:before {\n  content: \"\\e90b\"; }\n\n.re-icon-fontsize:before {\n  content: \"\\e90c\"; }\n\n.re-icon-format:before {\n  content: \"\\e90d\"; }\n\n.re-icon-html:before {\n  content: \"\\e90e\"; }\n\n.re-icon-imagecenter:before {\n  content: \"\\e90f\"; }\n\n.re-icon-imageleft:before {\n  content: \"\\e910\"; }\n\n.re-icon-imageright:before {\n  content: \"\\e911\"; }\n\n.re-icon-image:before {\n  content: \"\\e912\"; }\n\n.re-icon-indent:before {\n  content: \"\\e913\"; }\n\n.re-icon-inline:before {\n  content: \"\\e914\"; }\n\n.re-icon-italic:before {\n  content: \"\\e915\"; }\n\n.re-icon-line:before,\n.re-icon-horizontalrule:before {\n  content: \"\\e916\"; }\n\n.re-icon-link:before {\n  content: \"\\e917\"; }\n\n.re-icon-ol:before,\n.re-icon-ordered:before {\n  content: \"\\e918\"; }\n\n.re-icon-outdent:before {\n  content: \"\\e919\"; }\n\n.re-icon-properties:before {\n  content: \"\\e91a\"; }\n\n.re-icon-readmore:before {\n  content: \"\\e91b\"; }\n\n.re-icon-redo:before {\n  content: \"\\e91c\"; }\n\n.re-icon-retract:before {\n  content: \"\\e91d\"; }\n\n.re-icon-specialcharacters:before {\n  content: \"\\e91e\"; }\n\n.re-icon-sub:before {\n  content: \"\\e91f\"; }\n\n.re-icon-sup:before {\n  content: \"\\e920\"; }\n\n.re-icon-table:before {\n  content: \"\\e921\"; }\n\n.re-icon-textdirection:before {\n  content: \"\\e922\"; }\n\n.re-icon-toggle:before {\n  content: \"\\e923\"; }\n\n.re-icon-underline:before {\n  content: \"\\e924\"; }\n\n.re-icon-undo:before {\n  content: \"\\e925\"; }\n\n.re-icon-ul:before,\n.re-icon-lists:before,\n.re-icon-unordered:before {\n  content: \"\\e926\"; }\n\n.re-icon-variable:before {\n  content: \"\\e927\"; }\n\n.re-icon-video:before {\n  content: \"\\e928\"; }\n\n.re-icon-widget:before {\n  content: \"\\e929\"; }\n\n.redactor-box,\n.redactor-box textarea {\n  z-index: auto; }\n\n.redactor-box {\n  position: relative;\n  box-sizing: border-box; }\n  .redactor-box.redactor-styles-on {\n    margin: 0;\n    padding: 0;\n    background: #fff;\n    border: 1px solid rgba(0, 0, 0, 0.075);\n    border-radius: 3px;\n    box-shadow: none; }\n  .redactor-box.redactor-inline {\n    position: static; }\n\n.redactor-focus.redactor-styles-on,\n.redactor-focus:focus.redactor-styles-on {\n  border-color: #82b7ec !important; }\n\n.redactor-over:hover.redactor-styles-on {\n  border-color: #ee698a !important; }\n\n.redactor-source-view,\n.redactor-source-view.redactor-styles-on {\n  border-color: #000 !important; }\n\n.redactor-in {\n  position: relative;\n  overflow: auto;\n  white-space: normal;\n  box-sizing: border-box; }\n  .redactor-in:focus {\n    outline: none; }\n\n.redactor-inline .redactor-in {\n  overflow: hidden; }\n\n.redactor-in *,\n.redactor-read-only * {\n  outline: none !important; }\n\n.redactor-in h1:empty,\n.redactor-in h2:empty,\n.redactor-in h3:empty,\n.redactor-in h4:empty,\n.redactor-in h5:empty,\n.redactor-in h6:empty,\n.redactor-in p:empty,\n.redactor-in blockquote:empty {\n  min-height: 1.5em; }\n\n.redactor-in strong:empty, .redactor-in b:empty, .redactor-in em:empty, .redactor-in i:empty, .redactor-in span:empty, .redactor-in sup:empty, .redactor-in sub:empty, .redactor-in u:empty, .redactor-in ins:empty {\n  display: inline-block;\n  min-width: 1px;\n  min-height: 1rem; }\n\n.redactor-in table {\n  empty-cells: show; }\n\n.redactor-in li figure {\n  width: auto;\n  display: inline-block;\n  margin: 0;\n  vertical-align: top; }\n\n.redactor-in figcaption:focus,\n.redactor-in figure code:focus,\n.redactor-in figure pre:focus,\n.redactor-in table td:focus,\n.redactor-in table th:focus {\n  outline: none; }\n\n.redactor-in figure[data-redactor-type=line] {\n  margin-top: 1em;\n  padding: 6px 0;\n  vertical-align: baseline; }\n  .redactor-in figure[data-redactor-type=line] hr {\n    margin: 0;\n    height: 3px;\n    border: none;\n    background: rgba(0, 0, 0, 0.1); }\n\n.redactor-component {\n  position: relative; }\n\n.redactor-component[data-redactor-type=\"widget\"]:before,\n.redactor-component[data-redactor-type=\"video\"]:before {\n  width: 100%;\n  height: 100%;\n  content: \"\";\n  display: block;\n  position: absolute;\n  z-index: 1; }\n\n.redactor-component[data-redactor-type=image],\n.redactor-component[data-redactor-type=widget] {\n  clear: both; }\n\n.redactor-component[data-redactor-type=variable] {\n  white-space: nowrap;\n  background: rgba(0, 125, 255, 0.75);\n  color: #fff;\n  display: inline-block;\n  padding: 3px 6px;\n  line-height: 1;\n  border-radius: 4px;\n  cursor: pointer; }\n\n.redactor-component-active {\n  outline: 5px solid rgba(0, 125, 255, 0.5) !important; }\n\n.redactor-component-active[data-redactor-type=image] {\n  outline: none !important; }\n  .redactor-component-active[data-redactor-type=image] img {\n    outline: 5px solid rgba(0, 125, 255, 0.5) !important; }\n\n.redactor-component-active[data-redactor-type=variable] {\n  outline: none !important;\n  background: #ee698a; }\n\n.redactor-component-active[data-redactor-type=video] {\n  outline: none !important; }\n  .redactor-component-active[data-redactor-type=video] iframe {\n    outline: 5px solid rgba(0, 125, 255, 0.5) !important; }\n\n.redactor-blur.redactor-styles-on .redactor-component-active {\n  outline: 5px solid #ddd !important; }\n  .redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=image] {\n    outline: none !important; }\n    .redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=image] img {\n      outline: 5px solid #ddd !important; }\n  .redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=video] {\n    outline: none !important; }\n    .redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=video] iframe {\n      outline: 5px solid #ddd !important; }\n  .redactor-blur.redactor-styles-on .redactor-component-active[data-redactor-type=variable] {\n    outline: none !important;\n    background: #ddd; }\n\n.redactor-component-caret {\n  position: absolute;\n  left: -9999px; }\n\n.redactor-textnodes-wrapper {\n  display: inline-block; }\n\n#redactor-image-resizer {\n  position: absolute;\n  background-color: rgba(0, 125, 255, 0.9);\n  width: 13px;\n  height: 13px;\n  border: 1px solid #fff;\n  cursor: move;\n  cursor: nwse-resize; }\n\n.redactor-file-item {\n  display: inline-block;\n  line-height: 1;\n  padding: 4px 12px;\n  border-radius: 16px;\n  border: 1px solid rgba(0, 0, 0, 0.2); }\n\n.redactor-file-remover {\n  margin-left: 2px;\n  position: relative;\n  right: -3px;\n  display: inline-block;\n  padding: 0 3px;\n  cursor: pointer;\n  opacity: .5; }\n  .redactor-file-remover:hover {\n    opacity: 1; }\n\n#redactor-overlay {\n  position: fixed;\n  z-index: 1051;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: rgba(16, 16, 18, 0.18); }\n  #redactor-overlay > .redactor-close {\n    position: fixed;\n    top: 1rem;\n    right: 1rem; }\n\n.redactor-source,\n.redactor-source:hover,\n.redactor-source:focus {\n  text-align: left;\n  box-sizing: border-box;\n  font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n  width: 100%;\n  display: block;\n  margin: 0;\n  border: none;\n  box-shadow: none;\n  border-radius: 0;\n  background: #252525;\n  color: #ccc;\n  font-size: 15px;\n  outline: none;\n  padding: 10px 18px 20px 18px;\n  line-height: 1.5;\n  resize: vertical; }\n\n.redactor-box[dir=\"rtl\"] .redactor-source {\n  direction: ltr; }\n\n.redactor-placeholder:before {\n  position: absolute;\n  content: attr(placeholder);\n  color: rgba(0, 0, 0, 0.4);\n  font-weight: normal; }\n\n.redactor-in figcaption[placeholder]:empty:before {\n  content: attr(placeholder);\n  color: rgba(0, 0, 0, 0.4);\n  font-weight: normal; }\n\n.redactor-in figcaption[placeholder]:empty:focus:before {\n  content: \"\"; }\n\n.redactor-statusbar {\n  font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n  margin: 0;\n  padding: 8px 10px;\n  position: relative;\n  overflow: hidden;\n  list-style: none;\n  background: #f8f8f8;\n  box-sizing: border-box;\n  border: none; }\n  .redactor-statusbar li {\n    float: left;\n    font-size: 12px;\n    color: rgba(0, 0, 0, 0.5);\n    padding: 0 10px;\n    line-height: 16px;\n    border-right: 1px solid rgba(0, 0, 0, 0.1); }\n  .redactor-statusbar li:last-child {\n    border-right-color: transparent; }\n  .redactor-statusbar a {\n    color: rgba(0, 0, 0, 0.5);\n    text-decoration: underline; }\n  .redactor-statusbar a:hover {\n    color: #f03c69;\n    text-decoration: underline; }\n  .redactor-statusbar:empty {\n    display: none; }\n\n.redactor-toolbar-wrapper {\n  position: relative; }\n\n.redactor-toolbar,\n.redactor-air {\n  z-index: 100;\n  font-family: \"Trebuchet MS\", \"Helvetica Neue\", Helvetica, Tahoma, sans-serif;\n  position: relative;\n  margin: 0 !important;\n  padding: 0;\n  list-style: none !important;\n  line-height: 1 !important;\n  background: none;\n  border: none;\n  box-sizing: border-box; }\n\n.redactor-box.redactor-styles-on .redactor-toolbar {\n  padding: 18px 16px 0 16px; }\n\n.redactor-toolbar a,\n.redactor-air a {\n  display: inline-block;\n  box-sizing: border-box;\n  font-size: 14px;\n  text-align: center;\n  padding: 10px 15px 9px 15px;\n  cursor: pointer;\n  outline: none;\n  border: none;\n  vertical-align: middle;\n  text-decoration: none;\n  zoom: 1;\n  position: relative;\n  color: rgba(0, 0, 0, 0.85);\n  border-radius: 2px;\n  background: rgba(255, 255, 255, 0.97);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.22);\n  margin-right: 5px;\n  margin-bottom: 4px; }\n\n.redactor-toolbar a.re-button-icon,\n.redactor-air a.re-button-icon {\n  font-size: 16px;\n  padding: 9px 15px 6px 15px; }\n\n.redactor-toolbar a:hover,\n.redactor-air a:hover {\n  outline: none;\n  color: #fff;\n  background: #449aef; }\n\n.redactor-toolbar a.redactor-button-active {\n  background: rgba(245, 245, 245, 0.95);\n  color: rgba(0, 0, 0, 0.4); }\n\n.redactor-toolbar a.redactor-button-disabled,\n.redactor-air a.redactor-button-disabled {\n  opacity: 0.3; }\n  .redactor-toolbar a.redactor-button-disabled:hover,\n  .redactor-air a.redactor-button-disabled:hover {\n    color: #333;\n    outline: none;\n    background-color: transparent !important;\n    cursor: default; }\n\n.redactor-source-view .redactor-toolbar {\n  background: #252525; }\n\n.redactor-source-view .redactor-toolbar a {\n  background: #000;\n  color: #fff; }\n  .redactor-source-view .redactor-toolbar a:hover {\n    background: #449aef; }\n\n.redactor-source-view .redactor-toolbar a.redactor-button-disabled:hover {\n  color: #fff !important;\n  background-color: #000 !important; }\n\n.re-button-tooltip {\n  display: none;\n  position: absolute;\n  white-space: nowrap;\n  top: 0;\n  z-index: 1052;\n  background: rgba(0, 0, 0, 0.9);\n  border-radius: 3px;\n  padding: 5px 9px;\n  color: rgba(255, 255, 255, 0.8);\n  font-size: 12px;\n  line-height: 1;\n  font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace; }\n  .re-button-tooltip:after {\n    bottom: 100%;\n    left: 50%;\n    border: solid transparent;\n    content: \" \";\n    height: 0;\n    width: 0;\n    position: absolute;\n    pointer-events: none;\n    border-color: none;\n    border-bottom-color: rgba(0, 0, 0, 0.9);\n    border-width: 4px;\n    margin-left: -4px; }\n\n.redactor-toolbar-wrapper-air {\n  position: absolute;\n  z-index: 100; }\n\n.redactor-air {\n  padding: 6px 3px 2px 8px;\n  max-width: 576px;\n  min-width: 200px;\n  border-radius: 4px;\n  background: rgba(0, 0, 0, 0.97); }\n\n.redactor-air a {\n  background: rgba(37, 37, 37, 0.95);\n  box-shadow: none;\n  color: rgba(255, 255, 255, 0.9); }\n\n.redactor-air a:hover {\n  background: #3d79f2; }\n\n.redactor-air a.redactor-button-active {\n  background-color: rgba(255, 255, 255, 0.15);\n  color: #fff; }\n\n.redactor-air a.redactor-button-disabled:hover {\n  color: #fff; }\n\n.redactor-air-helper {\n  position: absolute;\n  right: 0;\n  top: 0;\n  line-height: 1;\n  font-size: 15px;\n  color: #000;\n  background: rgba(255, 255, 255, 0.85);\n  border-bottom-left-radius: 4px;\n  padding: 7px 10px 6px 10px;\n  cursor: pointer; }\n  .redactor-air-helper:hover {\n    background: #fff; }\n\n.redactor-voice-label {\n  display: none; }\n\n.redactor-context-toolbar {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1051;\n  background-color: rgba(0, 0, 0, 0.95);\n  color: #555;\n  border-radius: 4px;\n  padding: 6px 18px 7px 18px;\n  line-height: 1.5;\n  font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace; }\n  .redactor-context-toolbar a {\n    font-size: 12px;\n    color: #ccc;\n    text-decoration: none;\n    display: inline-block;\n    padding: 2px 0 1px 12px; }\n  .redactor-context-toolbar a:first-child {\n    padding-left: 0; }\n  .redactor-context-toolbar a i {\n    position: relative;\n    top: 3px;\n    font-size: 16px; }\n  .redactor-context-toolbar a:before {\n    content: '';\n    padding-left: 10px;\n    border-left: 1px solid rgba(255, 255, 255, 0.3); }\n  .redactor-context-toolbar a:hover {\n    color: #fff; }\n  .redactor-context-toolbar a:first-child:before {\n    padding-left: 0;\n    border-left: none; }\n\n.redactor-context-toolbar[dir=\"rtl\"] a {\n  padding: 2px 12px 1px 0; }\n\n.redactor-context-toolbar[dir=\"rtl\"] a:first-child {\n  padding-right: 0; }\n\n.redactor-context-toolbar[dir=\"rtl\"] a:before {\n  padding-left: 0px;\n  padding-right: 10px;\n  border-right: 1px solid rgba(255, 255, 255, 0.3);\n  border-left: none; }\n\n.redactor-context-toolbar[dir=\"rtl\"] a:first-child:before {\n  padding-right: 0;\n  border-right: none; }\n\n.redactor-dropdown {\n  font-family: \"Trebuchet MS\", \"Helvetica Neue\", Helvetica, Tahoma, sans-serif;\n  display: none;\n  position: absolute;\n  z-index: 1051;\n  background-color: #fff;\n  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.2);\n  border-radius: 2px;\n  width: 264px;\n  max-height: 250px;\n  margin: 0;\n  margin-top: -1px;\n  overflow: auto;\n  font-size: 15px;\n  padding: 0; }\n  .redactor-dropdown a span {\n    display: inline-block;\n    line-height: 1;\n    padding: 2px 4px;\n    border-radius: 3px; }\n  .redactor-dropdown a {\n    display: block;\n    text-decoration: none;\n    padding: 10px 8px;\n    white-space: nowrap;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.05); }\n  .redactor-dropdown a:last-child {\n    border-bottom-color: transparent; }\n  .redactor-dropdown a {\n    color: #000; }\n    .redactor-dropdown a:hover {\n      color: #fff !important;\n      background-color: #449aef !important; }\n    .redactor-dropdown a.redactor-dropdown-item-disabled {\n      color: rgba(0, 0, 0, 0.4);\n      background: #fff; }\n\n.redactor-dropdown-cells {\n  margin: 10px auto; }\n  .redactor-dropdown-cells a,\n  .redactor-dropdown-cells span {\n    float: left;\n    cursor: pointer;\n    box-sizing: border-box;\n    text-align: center;\n    padding: 0;\n    margin: 0;\n    font-size: 14px; }\n\n.redactor-dropdown-selector {\n  display: flex;\n  text-align: center; }\n  .redactor-dropdown-selector span {\n    flex-grow: 1;\n    font-size: 12px;\n    padding: 8px;\n    cursor: pointer; }\n    .redactor-dropdown-selector span:hover {\n      background: #eee; }\n    .redactor-dropdown-selector span.active {\n      cursor: text;\n      color: rgba(0, 0, 0, 0.3);\n      background: #eee; }\n\n.redactor-dropdown-format .redactor-dropdown-item-blockquote {\n  color: rgba(0, 0, 0, 0.4);\n  font-style: italic; }\n\n.redactor-dropdown-format .redactor-dropdown-item-pre {\n  font-family: monospace, sans-serif; }\n\n.redactor-dropdown-format .redactor-dropdown-item-h1 {\n  font-size: 40px;\n  font-weight: bold;\n  line-height: 32px; }\n\n.redactor-dropdown-format .redactor-dropdown-item-h2 {\n  font-size: 32px;\n  font-weight: bold;\n  line-height: 32px; }\n\n.redactor-dropdown-format .redactor-dropdown-item-h3 {\n  font-size: 24px;\n  font-weight: bold;\n  line-height: 24px; }\n\n.redactor-dropdown-format .redactor-dropdown-item-h4 {\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 24px; }\n\n.redactor-dropdown-format .redactor-dropdown-item-h5 {\n  font-size: 18px;\n  font-weight: bold;\n  line-height: 24px; }\n\n.redactor-dropdown-format .redactor-dropdown-item-h6 {\n  font-size: 14px;\n  text-transform: uppercase;\n  font-weight: bold;\n  line-height: 24px; }\n\n#redactor-modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n  z-index: 1051;\n  font-family: \"Trebuchet MS\", \"Helvetica Neue\", Helvetica, Tahoma, sans-serif;\n  line-height: 24px; }\n\n.redactor-modal {\n  position: relative;\n  margin: 16px auto;\n  padding: 0;\n  background: #fff;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.07), 0 2px 15px rgba(80, 80, 80, 0.25);\n  border-radius: 3px;\n  color: #000; }\n  .redactor-modal form {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box; }\n  .redactor-modal input,\n  .redactor-modal select,\n  .redactor-modal textarea {\n    box-sizing: border-box;\n    display: block;\n    width: 100%;\n    font-family: inherit;\n    font-size: 16px;\n    height: 40px;\n    outline: none;\n    vertical-align: middle;\n    background-color: #fff;\n    border: 1px solid #cacfd4;\n    border-radius: 0.1875em;\n    box-shadow: none;\n    padding: 0 .5em; }\n  .redactor-modal textarea {\n    padding: .5em;\n    height: auto;\n    line-height: 1.5;\n    vertical-align: top; }\n  .redactor-modal select {\n    -webkit-appearance: none;\n    background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"12\" viewBox=\"0 0 9 12\"><path fill=\"rgba(0, 0, 0, .4);\" d=\"M0.722,4.823L-0.01,4.1,4.134-.01,4.866,0.716Zm7.555,0L9.01,4.1,4.866-.01l-0.732.726ZM0.722,7.177L-0.01,7.9,4.134,12.01l0.732-.726Zm7.555,0L9.01,7.9,4.866,12.01l-0.732-.726Z\"/></svg>');\n    background-repeat: no-repeat;\n    background-position: right .65em center;\n    padding-right: 28px; }\n  .redactor-modal select[multiple] {\n    background-image: none;\n    height: auto;\n    padding: .5em .75em; }\n  .redactor-modal input[type=\"file\"] {\n    width: auto;\n    border: none;\n    padding: 0;\n    height: auto;\n    background: none;\n    box-shadow: none;\n    display: inline-block; }\n  .redactor-modal input[type=\"radio\"],\n  .redactor-modal input[type=\"checkbox\"] {\n    display: inline-block;\n    width: auto;\n    height: auto;\n    padding: 0;\n    vertical-align: middle;\n    position: relative;\n    bottom: 0.15rem;\n    font-size: 115%;\n    margin-right: 3px; }\n  .redactor-modal .form-item {\n    margin-bottom: 20px; }\n  .redactor-modal .form-item:last-child {\n    margin-bottom: 0; }\n  .redactor-modal fieldset {\n    border: 1px solid rgba(0, 0, 0, 0.1);\n    border-radius: 3px;\n    padding: 16px;\n    padding-bottom: 20px;\n    margin-bottom: 20px; }\n    .redactor-modal fieldset .form-item {\n      margin-bottom: 12px; }\n  .redactor-modal label {\n    display: block;\n    color: #555;\n    margin-bottom: 0.25em;\n    font-size: 14px; }\n    .redactor-modal label .desc,\n    .redactor-modal label .success,\n    .redactor-modal label .error {\n      text-transform: none;\n      font-weight: normal; }\n  .redactor-modal label.checkbox {\n    font-size: 16px;\n    line-height: 1.5;\n    cursor: pointer;\n    color: inherit; }\n  .redactor-modal .form-checkboxes label.checkbox {\n    display: inline-block;\n    margin-right: 1em; }\n  .redactor-modal input:hover,\n  .redactor-modal textarea:hover,\n  .redactor-modal select:hover {\n    outline: none;\n    background-color: #fff;\n    border-color: #969fa9;\n    box-shadow: none; }\n  .redactor-modal input:focus,\n  .redactor-modal textarea:focus,\n  .redactor-modal select:focus {\n    transition: all linear .2s;\n    outline: none;\n    background-color: #fff;\n    border-color: rgba(0, 125, 255, 0.5);\n    box-shadow: 0 0 3px rgba(0, 125, 255, 0.5); }\n  .redactor-modal input.error,\n  .redactor-modal textarea.error,\n  .redactor-modal select.error {\n    background-color: rgba(255, 50, 101, 0.1);\n    border: 1px solid #ff7f9e; }\n    .redactor-modal input.error:focus,\n    .redactor-modal textarea.error:focus,\n    .redactor-modal select.error:focus {\n      border-color: #ff3265;\n      box-shadow: 0 0 1px #ff3265; }\n  .redactor-modal input.success,\n  .redactor-modal textarea.success,\n  .redactor-modal select.success {\n    background-color: rgba(47, 196, 182, 0.1);\n    border: 1px solid #65dacf; }\n    .redactor-modal input.success:focus,\n    .redactor-modal textarea.success:focus,\n    .redactor-modal select.success:focus {\n      border-color: #2fc4b6;\n      box-shadow: 0 0 1px #2fc4b6; }\n  .redactor-modal input:disabled, .redactor-modal input:disabled:hover, .redactor-modal input.disabled, .redactor-modal input.disabled:hover,\n  .redactor-modal textarea:disabled,\n  .redactor-modal textarea:disabled:hover,\n  .redactor-modal textarea.disabled,\n  .redactor-modal textarea.disabled:hover,\n  .redactor-modal select:disabled,\n  .redactor-modal select:disabled:hover,\n  .redactor-modal select.disabled,\n  .redactor-modal select.disabled:hover {\n    resize: none;\n    opacity: .6;\n    cursor: default;\n    font-style: italic;\n    color: rgba(0, 0, 0, 0.5);\n    border: 1px solid #cacfd4;\n    box-shadow: none;\n    background-color: #fff; }\n  .redactor-modal .req {\n    position: relative;\n    top: 1px;\n    font-weight: bold;\n    color: #ff3265;\n    font-size: 110%; }\n  .redactor-modal .desc {\n    color: rgba(51, 51, 51, 0.5);\n    font-size: 12px; }\n  .redactor-modal span.desc {\n    margin-left: 0.25em; }\n  .redactor-modal div.desc {\n    margin-top: 0.25em; }\n  .redactor-modal span.success,\n  .redactor-modal span.error {\n    font-size: 12px;\n    margin-left: 0.25em; }\n  .redactor-modal div.desc {\n    margin-bottom: -0.5em; }\n  .redactor-modal .redactor-close {\n    position: absolute;\n    top: 16px;\n    right: 12px;\n    font-size: 30px;\n    line-height: 30px;\n    padding: 0px 4px;\n    color: #000;\n    opacity: .3;\n    cursor: pointer; }\n    .redactor-modal .redactor-close:hover {\n      opacity: 1; }\n    .redactor-modal .redactor-close:before {\n      content: '\\00d7'; }\n  .redactor-modal button {\n    display: inline-flex;\n    align-items: center;\n    text-decoration: none;\n    text-align: center;\n    font-family: inherit;\n    font-size: 15px;\n    font-weight: 500;\n    color: #007dff;\n    background-color: #fff;\n    border-radius: 3px;\n    border: 2px solid #007dff;\n    min-height: 40px;\n    outline: none;\n    padding: 0.5em 1.25em;\n    cursor: pointer;\n    line-height: 1.2;\n    vertical-align: middle;\n    -webkit-appearance: none; }\n  .redactor-modal button:hover {\n    outline: none;\n    text-decoration: none;\n    background: none;\n    color: rgba(0, 125, 255, 0.6);\n    border-color: rgba(0, 125, 255, 0.5); }\n  .redactor-modal button.redactor-button-secondary {\n    border-color: #2a2e34;\n    color: #2a2e34; }\n    .redactor-modal button.redactor-button-secondary:hover {\n      color: rgba(42, 46, 52, 0.6);\n      border-color: rgba(42, 46, 52, 0.5); }\n  .redactor-modal button.redactor-button-danger,\n  .redactor-modal button.redactor-button-unstyled {\n    background: none;\n    border-color: transparent;\n    color: rgba(42, 46, 52, 0.6); }\n    .redactor-modal button.redactor-button-danger:hover,\n    .redactor-modal button.redactor-button-unstyled:hover {\n      background: none;\n      border-color: transparent;\n      color: #ff3265;\n      text-decoration: underline; }\n  .redactor-modal .redactor-modal-group:after {\n    content: \"\";\n    display: table;\n    clear: both; }\n  .redactor-modal .redactor-modal-side {\n    float: left;\n    width: 30%;\n    margin-right: 4%; }\n    .redactor-modal .redactor-modal-side img {\n      max-width: 100%;\n      height: auto;\n      display: block; }\n  .redactor-modal .redactor-modal-area {\n    float: left;\n    width: 66%; }\n\n.redactor-modal[dir=\"rtl\"] .redactor-close {\n  left: 12px;\n  right: auto; }\n\n.redactor-modal[dir=\"rtl\"] textarea {\n  direction: ltr;\n  text-align: left; }\n\n.redactor-modal[dir=\"rtl\"] .redactor-modal-footer button.redactor-button-unstyled {\n  float: left;\n  margin-left: 0; }\n\n.redactor-modal-header {\n  padding: 20px;\n  font-size: 18px;\n  line-height: 24px;\n  font-weight: bold;\n  color: #000;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05); }\n  .redactor-modal-header:empty {\n    display: none; }\n\n.redactor-modal-body {\n  padding: 32px 48px;\n  padding-bottom: 40px; }\n\n.redactor-modal-footer {\n  padding: 24px;\n  border-top: 1px solid rgba(0, 0, 0, 0.05);\n  overflow: hidden; }\n  .redactor-modal-footer button {\n    margin-right: 4px; }\n  .redactor-modal-footer button.redactor-button-unstyled {\n    margin-right: 0;\n    float: right; }\n  .redactor-modal-footer:empty {\n    display: none; }\n\n.redactor-modal-tabs {\n  display: flex;\n  border-bottom: 2px solid rgba(0, 0, 0, 0.05);\n  margin-bottom: 1em; }\n  .redactor-modal-tabs a {\n    font-size: 15px;\n    padding: 2px 0;\n    text-decoration: none;\n    color: rgba(0, 0, 0, 0.5);\n    border-bottom: 2px solid transparent;\n    margin-bottom: -2px;\n    margin-right: 14px; }\n  .redactor-modal-tabs a:hover {\n    transition: all linear .2s; }\n  .redactor-modal-tabs a:hover,\n  .redactor-modal-tabs a.active {\n    font-weight: 500;\n    color: #007dff;\n    border-bottom-color: #007dff; }\n\n.redactor-styles {\n  margin: 0;\n  padding: 16px 18px;\n  color: #333;\n  font-family: \"Trebuchet MS\", \"Helvetica Neue\", Helvetica, Tahoma, sans-serif;\n  font-size: 1em;\n  line-height: 1.5;\n  box-sizing: border-box; }\n  .redactor-styles *,\n  .redactor-styles *:before,\n  .redactor-styles *:after {\n    box-sizing: inherit; }\n  .redactor-styles[dir=\"rtl\"] {\n    direction: rtl;\n    unicode-bidi: embed; }\n    .redactor-styles[dir=\"rtl\"] ul li,\n    .redactor-styles[dir=\"rtl\"] ol li {\n      text-align: right; }\n    .redactor-styles[dir=\"rtl\"] ul,\n    .redactor-styles[dir=\"rtl\"] ol,\n    .redactor-styles[dir=\"rtl\"] ul ul,\n    .redactor-styles[dir=\"rtl\"] ol ol,\n    .redactor-styles[dir=\"rtl\"] ul ol,\n    .redactor-styles[dir=\"rtl\"] ol ul {\n      margin: 0 1.5em 0 0; }\n    .redactor-styles[dir=\"rtl\"] figcaption {\n      text-align: right; }\n  .redactor-styles a,\n  .redactor-styles a:hover {\n    color: #3397ff; }\n  .redactor-styles p,\n  .redactor-styles dl,\n  .redactor-styles blockquote,\n  .redactor-styles hr,\n  .redactor-styles pre,\n  .redactor-styles table,\n  .redactor-styles figure,\n  .redactor-styles address {\n    padding: 0;\n    margin: 0;\n    margin-bottom: 1em; }\n  .redactor-styles ul,\n  .redactor-styles ol {\n    padding: 0; }\n    .redactor-styles ul,\n    .redactor-styles ul ul,\n    .redactor-styles ul ol,\n    .redactor-styles ol,\n    .redactor-styles ol ul,\n    .redactor-styles ol ol {\n      margin: 0 0 0 1.5em; }\n  .redactor-styles ul li,\n  .redactor-styles ol li {\n    text-align: left; }\n  .redactor-styles ol ol li {\n    list-style-type: lower-alpha; }\n  .redactor-styles ol ol ol li {\n    list-style-type: lower-roman; }\n  .redactor-styles ul,\n  .redactor-styles ol {\n    margin-bottom: 1em; }\n  .redactor-styles h1,\n  .redactor-styles h2,\n  .redactor-styles h3,\n  .redactor-styles h4,\n  .redactor-styles h5,\n  .redactor-styles h6 {\n    font-weight: bold;\n    color: #111;\n    text-rendering: optimizeLegibility;\n    margin: 0;\n    padding: 0;\n    margin-bottom: 0.5em;\n    line-height: 1.2; }\n  .redactor-styles h1 {\n    font-size: 2.0736em; }\n  .redactor-styles h2 {\n    font-size: 1.728em; }\n  .redactor-styles h3 {\n    font-size: 1.44em; }\n  .redactor-styles h4 {\n    font-size: 1.2em; }\n  .redactor-styles h5 {\n    font-size: 1em; }\n  .redactor-styles h6 {\n    font-size: 0.83333em;\n    text-transform: uppercase;\n    letter-spacing: .035em; }\n  .redactor-styles blockquote {\n    font-style: italic;\n    color: rgba(0, 0, 0, 0.5);\n    border: none; }\n  .redactor-styles table {\n    width: 100%; }\n  .redactor-styles time, .redactor-styles small, .redactor-styles var, .redactor-styles code, .redactor-styles kbd, .redactor-styles mark {\n    display: inline-block;\n    font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n    font-size: 87.5%;\n    line-height: 1;\n    color: rgba(51, 51, 51, 0.9); }\n  .redactor-styles var, .redactor-styles cite {\n    opacity: .6; }\n  .redactor-styles var {\n    font-style: normal; }\n  .redactor-styles dfn,\n  .redactor-styles abbr {\n    text-transform: uppercase; }\n    .redactor-styles dfn[title],\n    .redactor-styles abbr[title] {\n      text-decoration: none;\n      border-bottom: 1px dotted rgba(0, 0, 0, 0.5);\n      cursor: help; }\n  .redactor-styles code, .redactor-styles kbd {\n    position: relative;\n    top: -1px;\n    padding: 0.25em;\n    padding-bottom: 0.2em;\n    border-radius: 2px; }\n  .redactor-styles code {\n    background-color: #eff1f2; }\n  .redactor-styles mark {\n    border-radius: 2px;\n    padding: 0.125em 0.25em;\n    background-color: #fdb833; }\n  .redactor-styles kbd {\n    border: 1px solid #e5e7e9; }\n  .redactor-styles sub,\n  .redactor-styles sup {\n    font-size: 75%;\n    line-height: 0;\n    position: relative;\n    vertical-align: baseline; }\n  .redactor-styles sub {\n    bottom: -0.25em; }\n  .redactor-styles sup {\n    top: -0.5em; }\n  .redactor-styles pre {\n    font-family: Consolas, Menlo, Monaco, \"Courier New\", monospace;\n    font-size: .9em; }\n  .redactor-styles pre,\n  .redactor-styles pre code {\n    background-color: #f6f7f8;\n    padding: 0;\n    top: 0;\n    display: block;\n    line-height: 1.5;\n    color: rgba(51, 51, 51, 0.85);\n    overflow: none;\n    white-space: pre-wrap; }\n  .redactor-styles pre {\n    padding: 1rem; }\n  .redactor-styles table {\n    border-collapse: collapse;\n    max-width: 100%;\n    width: 100%; }\n    .redactor-styles table caption {\n      text-transform: uppercase;\n      padding: 0;\n      color: rgba(0, 0, 0, 0.5);\n      font-size: 11px; }\n    .redactor-styles table th,\n    .redactor-styles table td {\n      border: 1px solid #eee;\n      padding: 16px;\n      padding-bottom: 15px; }\n    .redactor-styles table tfoot th,\n    .redactor-styles table tfoot td {\n      color: rgba(0, 0, 0, 0.5); }\n  .redactor-styles img,\n  .redactor-styles video,\n  .redactor-styles audio,\n  .redactor-styles embed,\n  .redactor-styles object {\n    max-width: 100%; }\n  .redactor-styles img,\n  .redactor-styles video,\n  .redactor-styles embed,\n  .redactor-styles object {\n    height: auto !important; }\n  .redactor-styles img {\n    vertical-align: middle;\n    -ms-interpolation-mode: bicubic; }\n  .redactor-styles figcaption {\n    display: block;\n    opacity: .6;\n    font-size: 12px;\n    font-style: italic;\n    text-align: left; }\n\n.upload-box {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  box-sizing: border-box;\n  border: 5px dashed rgba(0, 125, 255, 0.15);\n  position: relative;\n  width: 100%;\n  min-height: 220px;\n  background: #fff;\n  cursor: pointer;\n  overflow: hidden;\n  text-align: center; }\n\n.upload-placeholder {\n  font-size: 15px;\n  line-height: 1.5;\n  color: rgba(0, 0, 0, 0.3);\n  font-style: italic; }\n\n.upload-hover {\n  background-color: rgba(0, 125, 255, 0.075); }\n\n.upload-error {\n  background-color: rgba(255, 50, 101, 0.075); }\n\n.upload-box-hover {\n  outline: 5px dashed rgba(0, 125, 255, 0.3); }\n\n.upload-box-error {\n  outline: 5px dashed rgba(255, 50, 101, 0.3); }\n\n.redactor-structure h1, .redactor-structure h2, .redactor-structure h3, .redactor-structure h4, .redactor-structure h5, .redactor-structure h6, .redactor-structure div {\n  position: relative; }\n  .redactor-structure h1:before, .redactor-structure h2:before, .redactor-structure h3:before, .redactor-structure h4:before, .redactor-structure h5:before, .redactor-structure h6:before, .redactor-structure div:before {\n    width: 24px;\n    position: absolute;\n    font-size: 10px;\n    font-weight: normal;\n    opacity: .3;\n    left: -26px;\n    top: 50%;\n    margin-top: -7px;\n    text-align: right; }\n\n.redactor-structure h1:before {\n  content: \"h1\"; }\n\n.redactor-structure h2:before {\n  content: \"h2\"; }\n\n.redactor-structure h3:before {\n  content: \"h3\"; }\n\n.redactor-structure h4:before {\n  content: \"h4\"; }\n\n.redactor-structure h5:before {\n  content: \"h5\"; }\n\n.redactor-structure h6:before {\n  content: \"h6\"; }\n\n.redactor-structure div:before {\n  content: \"div\"; }\n\n#redactor-progress {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  z-index: 1000000;\n  height: 10px; }\n\n#redactor-progress span {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n  display: block;\n  width: 100%;\n  height: 100%;\n  background-color: #007dff;\n  background-size: 40px 40px; }\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0; }\n  to {\n    background-position: 0 0; } }\n\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0; }\n  to {\n    background-position: 0 0; } }\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0; }\n  to {\n    background-position: 0 0; } }\n\n.redactor-box-fullscreen {\n  z-index: 1051;\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%; }\n\n.redactor-box-fullscreen-target {\n  position: absolute !important; }\n\n.redactor-body-fullscreen .redactor-dropdown,\n.redactor-body-fullscreen .redactor-context-toolbar {\n  z-index: 1052; }\n\n.redactor-body-fullscreen #redactor-overlay {\n  z-index: 1098; }\n\n.redactor-body-fullscreen #redactor-modal {\n  z-index: 1099; }\n"
  },
  {
    "path": "src/Assets/src/vendor/redactor/redactor.js",
    "content": "/*\n    Redactor\n    Version 3.1.1\n    Updated: August 12, 2018\n\n    http://imperavi.com/redactor/\n\n    Copyright (c) 2009-2018, Imperavi Ltd.\n    License: http://imperavi.com/redactor/license/\n*/\n(function() {\nvar Ajax = {};\n\nAjax.settings = {};\nAjax.post = function(options) { return new AjaxRequest('post', options); };\nAjax.get = function(options) { return new AjaxRequest('get', options); };\n\nvar AjaxRequest = function(method, options)\n{\n    var defaults = {\n        method: method,\n        url: '',\n        before: function() {},\n        success: function() {},\n        error: function() {},\n        data: false,\n        async: true,\n        headers: {}\n    };\n\n    this.p = this.extend(defaults, options);\n    this.p = this.extend(this.p, Ajax.settings);\n    this.p.method = this.p.method.toUpperCase();\n\n    this.prepareData();\n\n    this.xhr = new XMLHttpRequest();\n    this.xhr.open(this.p.method, this.p.url, this.p.async);\n\n    this.setHeaders();\n\n    var before = (typeof this.p.before === 'function') ? this.p.before(this.xhr) : true;\n    if (before !== false)\n    {\n        this.send();\n    }\n};\n\nAjaxRequest.prototype = {\n    extend: function(obj1, obj2)\n    {\n        if (obj2) for (var name in obj2) { obj1[name] = obj2[name]; }\n        return obj1;\n    },\n    prepareData: function()\n    {\n        if (this.p.method === 'POST' && !this.isFormData()) this.p.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n        if (typeof this.p.data === 'object' && !this.isFormData()) this.p.data = this.toParams(this.p.data);\n        if (this.p.method === 'GET') this.p.url = (this.p.data) ? this.p.url + '?' + this.p.data : this.p.url;\n    },\n    setHeaders: function()\n    {\n        this.xhr.setRequestHeader('X-Requested-With', this.p.headers['X-Requested-With'] || 'XMLHttpRequest');\n        for (var name in this.p.headers)\n        {\n            this.xhr.setRequestHeader(name, this.p.headers[name]);\n        }\n    },\n    isFormData: function()\n    {\n        return (typeof window.FormData !== 'undefined' && this.p.data instanceof window.FormData);\n    },\n    isComplete: function()\n    {\n        return !(this.xhr.status < 200 || this.xhr.status >= 300 && this.xhr.status !== 304);\n    },\n    send: function()\n    {\n        if (this.p.async)\n        {\n            this.xhr.onload = this.loaded.bind(this);\n            this.xhr.send(this.p.data);\n        }\n        else\n        {\n            this.xhr.send(this.p.data);\n            this.loaded.call(this);\n        }\n    },\n    loaded: function()\n    {\n        if (this.isComplete())\n        {\n            var response = this.xhr.response;\n            var json = this.parseJson(response);\n            response = (json) ? json : response;\n\n            if (typeof this.p.success === 'function') this.p.success(response, this.xhr);\n        }\n        else\n        {\n            if (typeof this.p.error === 'function') this.p.error(this.xhr.statusText);\n        }\n    },\n    parseJson: function(str)\n    {\n        try {\n            var o = JSON.parse(str);\n            if (o && typeof o === 'object')\n            {\n                return o;\n            }\n\n        } catch (e) {}\n\n        return false;\n    },\n    toParams: function (obj)\n    {\n        return Object.keys(obj).map(\n            function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]); }\n        ).join('&');\n    }\n};\nvar DomCache = [0];\nvar DomExpando = 'data' + new Date();\nvar DomDisplayCache = {};\n\nvar Dom = function(selector, context)\n{\n    return this.parse(selector, context);\n};\n\nDom.ready = function(fn)\n{\n    if (document.readyState != 'loading') fn();\n    else document.addEventListener('DOMContentLoaded', fn);\n};\n\nDom.prototype = {\n    get dom()\n    {\n        return true;\n    },\n    get length()\n    {\n        return this.nodes.length;\n    },\n    parse: function(selector, context)\n    {\n        var nodes;\n        var reHtmlTest = /^\\s*<(\\w+|!)[^>]*>/;\n\n        if (!selector)\n        {\n            nodes = [];\n        }\n        else if (selector.dom)\n        {\n            this.nodes = selector.nodes;\n            return selector;\n        }\n        else if (typeof selector !== 'string')\n        {\n            if (selector.nodeType && selector.nodeType === 11)\n            {\n                nodes = selector.childNodes;\n            }\n            else\n            {\n                nodes = (selector.nodeType || selector === window) ? [selector] : selector;\n            }\n        }\n        else if (reHtmlTest.test(selector))\n        {\n            nodes = this.create(selector);\n        }\n        else\n        {\n            nodes = this._query(selector, context);\n        }\n\n        this.nodes = this._slice(nodes);\n    },\n    create: function(html)\n    {\n        if (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/.test(html))\n        {\n            return [document.createElement(RegExp.$1)];\n        }\n\n        var elements = [];\n        var container = document.createElement('div');\n        var children = container.childNodes;\n\n        container.innerHTML = html;\n\n        for (var i = 0, l = children.length; i < l; i++)\n        {\n            elements.push(children[i]);\n        }\n\n        return elements;\n    },\n\n    // add\n    add: function(nodes)\n    {\n        this.nodes = this.nodes.concat(this._toArray(nodes));\n    },\n\n    // get\n    get: function(index)\n    {\n        return this.nodes[(index || 0)] || false;\n    },\n    getAll: function()\n    {\n        return this.nodes;\n    },\n    eq: function(index)\n    {\n        return new Dom(this.nodes[index]);\n    },\n    first: function()\n    {\n        return new Dom(this.nodes[0]);\n    },\n    last: function()\n    {\n        return new Dom(this.nodes[this.nodes.length - 1]);\n    },\n    contents: function()\n    {\n        return this.get().childNodes;\n    },\n\n    // loop\n    each: function(callback)\n    {\n        var len = this.nodes.length;\n        for (var i = 0; i < len; i++)\n        {\n            callback.call(this, (this.nodes[i].dom) ? this.nodes[i].get() : this.nodes[i], i);\n        }\n\n        return this;\n    },\n\n    // traversing\n    is: function(selector)\n    {\n        return (this.filter(selector).length > 0);\n    },\n    filter: function (selector)\n    {\n        var callback;\n        if (selector === undefined)\n        {\n            return this;\n        }\n        else if (typeof selector === 'function')\n        {\n            callback = selector;\n        }\n        else\n        {\n            callback = function(node)\n            {\n                if (selector instanceof Node)\n                {\n                    return (selector === node);\n                }\n                else if (selector && selector.dom)\n                {\n                    return ((selector.nodes).indexOf(node) !== -1);\n                }\n                else\n                {\n                    node.matches = node.matches || node.msMatchesSelector || node.webkitMatchesSelector;\n                    return (node.nodeType === 1) ? node.matches(selector || '*') : false;\n                }\n            };\n        }\n\n        return new Dom(this.nodes.filter(callback));\n    },\n    not: function(filter)\n    {\n        return this.filter(function(node)\n        {\n            return !new Dom(node).is(filter || true);\n        });\n    },\n    find: function(selector)\n    {\n        var nodes = [];\n        this.each(function(node)\n        {\n            var ns = this._query(selector || '*', node);\n            for (var i = 0; i < ns.length; i++)\n            {\n                nodes.push(ns[i]);\n            }\n        });\n\n        return new Dom(nodes);\n    },\n    children: function(selector)\n    {\n        var nodes = [];\n        this.each(function(node)\n        {\n            if (node.children)\n            {\n                var ns = node.children;\n                for (var i = 0; i < ns.length; i++)\n                {\n                    nodes.push(ns[i]);\n                }\n            }\n        });\n\n        return new Dom(nodes).filter(selector);\n    },\n    parent: function(selector)\n    {\n        var nodes = [];\n        this.each(function(node)\n        {\n            if (node.parentNode) nodes.push(node.parentNode);\n        });\n\n        return new Dom(nodes).filter(selector);\n    },\n    parents: function(selector, context)\n    {\n        context = this._getContext(context);\n\n        var nodes = [];\n        this.each(function(node)\n        {\n            var parent = node.parentNode;\n            while (parent && parent !== context)\n            {\n                if (selector)\n                {\n                    if (new Dom(parent).is(selector)) { nodes.push(parent); }\n                }\n                else\n                {\n                    nodes.push(parent);\n                }\n\n                parent = parent.parentNode;\n            }\n        });\n\n        return new Dom(nodes);\n    },\n    closest: function(selector, context)\n    {\n        context = this._getContext(context);\n        selector = (selector.dom) ? selector.get() : selector;\n\n        var nodes = [];\n        var isNode = (selector && selector.nodeType);\n        this.each(function(node)\n        {\n            do {\n                if ((isNode && node === selector) || new Dom(node).is(selector)) return nodes.push(node);\n            } while ((node = node.parentNode) && node !== context);\n        });\n\n        return new Dom(nodes);\n    },\n    next: function(selector)\n    {\n         return this._getSibling(selector, 'nextSibling');\n    },\n    nextElement: function(selector)\n    {\n        return this._getSibling(selector, 'nextElementSibling');\n    },\n    prev: function(selector)\n    {\n        return this._getSibling(selector, 'previousSibling');\n    },\n    prevElement: function(selector)\n    {\n        return this._getSibling(selector, 'previousElementSibling');\n    },\n\n    // css\n    css: function(name, value)\n    {\n        if (value === undefined && (typeof name !== 'object'))\n        {\n            var node = this.get();\n            if (name === 'width' || name === 'height')\n            {\n                return (node.style) ? this._getHeightOrWidth(name, node, false) + 'px' : undefined;\n            }\n            else\n            {\n                return (node.style) ? getComputedStyle(node, null)[name] : undefined;\n            }\n        }\n\n        // set\n        return this.each(function(node)\n        {\n            var obj = {};\n            if (typeof name === 'object') obj = name;\n            else obj[name] = value;\n\n            for (var key in obj)\n            {\n                if (node.style) node.style[key] = obj[key];\n            }\n        });\n    },\n\n    // attr\n    attr: function(name, value, data)\n    {\n        data = (data) ? 'data-' : '';\n\n        if (value === undefined && (typeof name !== 'object'))\n        {\n            var node = this.get();\n            if (node && node.nodeType !== 3)\n            {\n                return (name === 'checked') ? node.checked : this._getBooleanFromStr(node.getAttribute(data + name));\n            }\n            else return;\n        }\n\n        // set\n        return this.each(function(node)\n        {\n            var obj = {};\n            if (typeof name === 'object') obj = name;\n            else obj[name] = value;\n\n            for (var key in obj)\n            {\n                if (node.nodeType !== 3)\n                {\n                    if (key === 'checked') node.checked = obj[key];\n                    else node.setAttribute(data + key, obj[key]);\n                }\n            }\n        });\n    },\n    data: function(name, value)\n    {\n        if (name === undefined)\n        {\n            var reDataAttr = /^data\\-(.+)$/;\n            var attrs = this.get().attributes;\n\n            var data = {};\n            var replacer = function (g) { return g[1].toUpperCase(); };\n\n            for (var key in attrs)\n            {\n                if (reDataAttr.test(attrs[key].nodeName))\n                {\n                    var dataName = attrs[key].nodeName.match(reDataAttr)[1];\n                    var val = attrs[key].value;\n                    dataName = dataName.replace(/-([a-z])/g, replacer);\n\n                    if (this._isObjectString(val)) val = this._toObject(val);\n                    else val = (this._isNumber(val)) ? parseFloat(val) : this._getBooleanFromStr(val);\n\n                    data[dataName] = val;\n                }\n            }\n\n            return data;\n        }\n\n        return this.attr(name, value, true);\n    },\n    val: function(value)\n    {\n        if (value === undefined)\n        {\n            var el = this.get();\n            if (el.type && el.type === 'checkbox') return el.checked;\n            else return el.value;\n        }\n\n        return this.each(function(node)\n        {\n            node.value = value;\n        });\n    },\n    removeAttr: function(value)\n    {\n        return this.each(function(node)\n        {\n            var rmAttr = function(name) { if (node.nodeType !== 3) node.removeAttribute(name); };\n            value.split(' ').forEach(rmAttr);\n        });\n    },\n    removeData: function(value)\n    {\n        return this.each(function(node)\n        {\n            var rmData = function(name) { if (node.nodeType !== 3) node.removeAttribute('data-' + name); };\n            value.split(' ').forEach(rmData);\n        });\n    },\n\n    // dataset/dataget\n    dataset: function(key, value)\n    {\n        return this.each(function(node)\n        {\n            DomCache[this.dataindex(node)][key] = value;\n        });\n    },\n    dataget: function(key)\n    {\n        return DomCache[this.dataindex(this.get())][key];\n    },\n    dataindex: function(el)\n    {\n        var cacheIndex = el[DomExpando];\n        var nextCacheIndex = DomCache.length;\n\n        if (!cacheIndex)\n        {\n            cacheIndex = el[DomExpando] = nextCacheIndex;\n            DomCache[cacheIndex] = {};\n        }\n\n        return cacheIndex;\n    },\n\n    // class\n    addClass: function(value)\n    {\n        return this._eachClass(value, 'add');\n    },\n    removeClass: function(value)\n    {\n        return this._eachClass(value, 'remove');\n    },\n    toggleClass: function(value)\n    {\n        return this._eachClass(value, 'toggle');\n    },\n    hasClass: function(value)\n    {\n        return this.nodes.some(function(node)\n        {\n            return (node.classList) ? node.classList.contains(value) : false;\n        });\n    },\n\n    // html & text\n    empty: function()\n    {\n        return this.each(function(node)\n        {\n            node.innerHTML = '';\n        });\n    },\n    html: function(html)\n    {\n        return (html === undefined) ? (this.get().innerHTML || '') : this.empty().append(html);\n    },\n    text: function(text)\n    {\n        return (text === undefined) ? (this.get().textContent || '') : this.each(function(node) { node.textContent = text; });\n    },\n\n    // manipulation\n    after: function(html)\n    {\n        return this._inject(html, function(frag, node)\n        {\n            if (typeof frag === 'string')\n            {\n                node.insertAdjacentHTML('afterend', frag);\n            }\n            else\n            {\n                var elms = (frag instanceof Node) ? [frag] : this._toArray(frag).reverse();\n                for (var i = 0; i < elms.length; i++)\n                {\n                    node.parentNode.insertBefore(elms[i], node.nextSibling);\n                }\n            }\n\n            return node;\n\n        });\n    },\n    before: function(html)\n    {\n        return this._inject(html, function(frag, node)\n        {\n            if (typeof frag === 'string')\n            {\n                node.insertAdjacentHTML('beforebegin', frag);\n            }\n            else\n            {\n                var elms = (frag instanceof Node) ? [frag] : this._toArray(frag);\n                for (var i = 0; i < elms.length; i++)\n                {\n                    node.parentNode.insertBefore(elms[i], node);\n                }\n            }\n\n            return node;\n        });\n    },\n    append: function(html)\n    {\n        return this._inject(html, function(frag, node)\n        {\n            if (typeof frag === 'string' || typeof frag === 'number')\n            {\n                node.insertAdjacentHTML('beforeend', frag);\n            }\n            else\n            {\n                var elms = (frag instanceof Node) ? [frag] : this._toArray(frag);\n                for (var i = 0; i < elms.length; i++)\n                {\n                    node.appendChild(elms[i]);\n                }\n            }\n\n            return node;\n        });\n    },\n    prepend: function(html)\n    {\n        return this._inject(html, function(frag, node)\n        {\n            if (typeof frag === 'string' || typeof frag === 'number')\n            {\n                node.insertAdjacentHTML('afterbegin', frag);\n            }\n            else\n            {\n                var elms = (frag instanceof Node) ? [frag] : this._toArray(frag).reverse();\n                for (var i = 0; i < elms.length; i++)\n                {\n                    node.insertBefore(elms[i], node.firstChild);\n                }\n            }\n\n            return node;\n        });\n    },\n    wrap: function(html)\n    {\n        return this._inject(html, function(frag, node)\n        {\n            var wrapper = (typeof frag === 'string' || typeof frag === 'number') ? this.create(frag)[0] : (frag instanceof Node) ? frag : this._toArray(frag)[0];\n\n            if (node.parentNode)\n            {\n                node.parentNode.insertBefore(wrapper, node);\n            }\n\n            wrapper.appendChild(node);\n\n            return new Dom(wrapper);\n\n        });\n    },\n    unwrap: function()\n    {\n        return this.each(function(node)\n        {\n            var $node = new Dom(node);\n\n            return $node.replaceWith($node.contents());\n        });\n    },\n    replaceWith: function(html)\n    {\n        return this._inject(html, function(frag, node)\n        {\n            var docFrag = document.createDocumentFragment();\n            var elms = (typeof frag === 'string' || typeof frag === 'number') ? this.create(frag) : (frag instanceof Node) ? [frag] : this._toArray(frag);\n\n            for (var i = 0; i < elms.length; i++)\n            {\n                docFrag.appendChild(elms[i]);\n            }\n\n            var result = docFrag.childNodes[0];\n            node.parentNode.replaceChild(docFrag, node);\n\n            return result;\n\n        });\n    },\n    remove: function()\n    {\n        return this.each(function(node)\n        {\n            if (node.parentNode) node.parentNode.removeChild(node);\n        });\n    },\n    clone: function(events)\n    {\n        var nodes = [];\n        this.each(function(node)\n        {\n            var copy = this._clone(node);\n            if (events) copy = this._cloneEvents(node, copy);\n            nodes.push(copy);\n        });\n\n        return new Dom(nodes);\n    },\n\n    // show/hide\n    show: function()\n    {\n        return this.each(function(node)\n        {\n            if (node.style)\n            {\n                if (this._getRealDisplay(node) !== 'none') return;\n\n                var old = node.getAttribute('displayOld');\n                node.style.display = old || '';\n\n                if (this._getRealDisplay(node) === 'none')\n                {\n                    var nodeName = node.nodeName, body = document.body, display;\n\n                    if (DomDisplayCache[nodeName])\n                    {\n                        display = DomDisplayCache[nodeName];\n                    }\n                    else\n                    {\n                        var testElem = document.createElement(nodeName);\n                        body.appendChild(testElem);\n                        display = this._getRealDisplay(testElem);\n\n                        if (display === 'none') display = 'block';\n\n                        body.removeChild(testElem);\n                        DomDisplayCache[nodeName] = display;\n                    }\n\n                    node.setAttribute('displayOld', display);\n                    node.style.display = display;\n                }\n            }\n        }.bind(this));\n    },\n    hide: function()\n    {\n        return this.each(function(node)\n        {\n            if (node.style)\n            {\n                if (!node.getAttribute('displayOld') && node.style.display !== '')\n                {\n                    node.setAttribute(\"displayOld\", node.style.display);\n                }\n\n                node.style.display = 'none';\n            }\n        });\n    },\n\n    // dimensions\n    scrollTop: function(value)\n    {\n        var node = this.get();\n        var isWindow = (node === window);\n        var isDocument = (node.nodeType === 9);\n        var el = (isDocument) ? (document.scrollingElement || document.body.parentNode || document.body || document.documentElement) : node;\n\n        if (value !== undefined)\n        {\n            if (isWindow) window.scrollTo(0, value);\n            else el.scrollTop = value;\n            return;\n        }\n\n        if (isDocument)\n        {\n            return (typeof window.pageYOffset != 'undefined') ? window.pageYOffset : ((document.documentElement.scrollTop) ? document.documentElement.scrollTop : ((document.body.scrollTop) ? document.body.scrollTop : 0));\n        }\n        else\n        {\n            return (isWindow) ? window.pageYOffset : el.scrollTop;\n        }\n    },\n    offset: function()\n    {\n        return this._getDim('Offset');\n    },\n    position: function()\n    {\n        return this._getDim('Position');\n    },\n    width: function(value, adjust)\n    {\n        return this._getSize('width', 'Width', value, adjust);\n    },\n    height: function(value, adjust)\n    {\n        return this._getSize('height', 'Height', value, adjust);\n    },\n    outerWidth: function()\n    {\n        return this._getInnerOrOuter('width', 'outer');\n    },\n    outerHeight: function()\n    {\n        return this._getInnerOrOuter('height', 'outer');\n    },\n    innerWidth: function()\n    {\n        return this._getInnerOrOuter('width', 'inner');\n    },\n    innerHeight: function()\n    {\n        return this._getInnerOrOuter('height', 'inner');\n    },\n\n    // events\n    click: function()\n    {\n        return this._triggerEvent('click');\n    },\n    focus: function()\n    {\n        return this._triggerEvent('focus');\n    },\n    trigger: function(names)\n    {\n        return this.each(function(node)\n        {\n            var events = names.split(' ');\n            for (var i = 0; i < events.length; i++)\n            {\n                var ev;\n                var opts = { bubbles: true, cancelable: true };\n\n                try {\n                    ev = new window.CustomEvent(events[i], opts);\n                } catch(e) {\n                    ev = document.createEvent('CustomEvent');\n                    ev.initCustomEvent(events[i], true, true);\n                }\n\n                node.dispatchEvent(ev);\n            }\n        });\n    },\n    on: function(names, handler, one)\n    {\n        return this.each(function(node)\n        {\n            var events = names.split(' ');\n            for (var i = 0; i < events.length; i++)\n            {\n                var event = this._getEventName(events[i]);\n                var namespace = this._getEventNamespace(events[i]);\n\n                handler = (one) ? this._getOneHandler(handler, names) : handler;\n                node.addEventListener(event, handler);\n\n                node._e = node._e || {};\n                node._e[namespace] = node._e[namespace] || {};\n                node._e[namespace][event] = node._e[namespace][event] || [];\n                node._e[namespace][event].push(handler);\n            }\n\n        });\n    },\n    one: function(events, handler)\n    {\n        return this.on(events, handler, true);\n    },\n    off: function(names, handler)\n    {\n        var testEvent = function(name, key, event) { return (name === event); };\n        var testNamespace = function(name, key, event, namespace) { return (key === namespace); };\n        var testEventNamespace = function(name, key, event, namespace) { return (name === event && key === namespace); };\n        var testPositive = function() { return true; };\n\n        if (names === undefined)\n        {\n            // ALL\n            return this.each(function(node)\n            {\n                this._offEvent(node, false, false, handler, testPositive);\n            });\n        }\n\n        return this.each(function(node)\n        {\n            var events = names.split(' ');\n\n            for (var i = 0; i < events.length; i++)\n            {\n                var event = this._getEventName(events[i]);\n                var namespace = this._getEventNamespace(events[i]);\n\n                // 1) event without namespace\n                if (namespace === '_events') this._offEvent(node, event, namespace, handler, testEvent);\n                // 2) only namespace\n                else if (!event && namespace !== '_events') this._offEvent(node, event, namespace, handler, testNamespace);\n                // 3) event + namespace\n                else this._offEvent(node, event, namespace, handler, testEventNamespace);\n            }\n        });\n    },\n\n    // form\n    serialize: function(asObject)\n    {\n        var obj = {};\n        var elms = this.get().elements;\n        for (var i = 0; i < elms.length; i++)\n        {\n            var el = elms[i];\n            if (/(checkbox|radio)/.test(el.type) && !el.checked) continue;\n            if (!el.name || el.disabled || el.type === 'file') continue;\n\n            if (el.type === 'select-multiple')\n            {\n                for (var z = 0; z < el.options.length; z++)\n                {\n                    var opt = el.options[z];\n                    if (opt.selected) obj[el.name] = opt.value;\n                }\n            }\n\n            obj[el.name] = el.value;\n        }\n\n        return (asObject) ? obj : this._toParams(obj);\n    },\n    ajax: function(success, error)\n    {\n        if (typeof AjaxRequest !== 'undefined')\n        {\n            var method = this.attr('method') || 'post';\n            var options = {\n                url: this.attr('action'),\n                data: this.serialize(),\n                success: success,\n                error: error\n            };\n\n            return new AjaxRequest(method, options);\n        }\n    },\n\n    // private\n    _queryContext: function(selector, context)\n    {\n        context = this._getContext(context);\n\n        return (context.nodeType !== 3 && typeof context.querySelectorAll === 'function') ? context.querySelectorAll(selector) : [];\n    },\n    _query: function(selector, context)\n    {\n        if (context)\n        {\n            return this._queryContext(selector, context);\n        }\n        else if (/^[.#]?[\\w-]*$/.test(selector))\n        {\n            if (selector[0] === '#')\n            {\n                var element = document.getElementById(selector.slice(1));\n                return element ? [element] : [];\n            }\n\n            if (selector[0] === '.')\n            {\n                return document.getElementsByClassName(selector.slice(1));\n            }\n\n            return document.getElementsByTagName(selector);\n        }\n\n        return document.querySelectorAll(selector);\n    },\n    _getContext: function(context)\n    {\n        context = (typeof context === 'string') ? document.querySelector(context) : context;\n\n        return (context && context.dom) ? context.get() : (context || document);\n    },\n    _inject: function(html, fn)\n    {\n        var len = this.nodes.length;\n        var nodes = [];\n        while (len--)\n        {\n            var res = (typeof html === 'function') ? html.call(this, this.nodes[len]) : html;\n            var el = (len === 0) ? res : this._clone(res);\n            var node = fn.call(this, el, this.nodes[len]);\n\n            if (node)\n            {\n                if (node.dom) nodes.push(node.get());\n                else nodes.push(node);\n            }\n        }\n\n        return new Dom(nodes);\n    },\n    _cloneEvents: function(node, copy)\n    {\n        var events = node._e;\n        if (events)\n        {\n            copy._e = events;\n            for (var name in events._events)\n            {\n                for (var i = 0; i < events._events[name].length; i++)\n                {\n                    copy.addEventListener(name, events._events[name][i]);\n                }\n            }\n        }\n\n        return copy;\n    },\n    _clone: function(node)\n    {\n        if (typeof node === 'undefined') return;\n        if (typeof node === 'string') return node;\n        else if (node instanceof Node) return node.cloneNode(true);\n        else if ('length' in node)\n        {\n            return [].map.call(this._toArray(node), function(el) { return el.cloneNode(true); });\n        }\n\n        return node;\n    },\n    _slice: function(obj)\n    {\n        return (!obj || obj.length === 0) ? [] : (obj.length) ? [].slice.call(obj.nodes || obj) : [obj];\n    },\n    _eachClass: function(value, type)\n    {\n        return this.each(function(node)\n        {\n            if (value)\n            {\n                var setClass = function(name) { if (node.classList) node.classList[type](name); };\n                value.split(' ').forEach(setClass);\n            }\n        });\n    },\n    _triggerEvent: function(name)\n    {\n        var node = this.get();\n        if (node && node.nodeType !== 3) node[name]();\n        return this;\n    },\n    _getOneHandler: function(handler, events)\n    {\n        var self = this;\n        return function()\n        {\n            handler.apply(this, arguments);\n            self.off(events);\n        };\n    },\n    _getEventNamespace: function(event)\n    {\n        var arr = event.split('.');\n        var namespace = (arr[1]) ? arr[1] : '_events';\n        return (arr[2]) ? namespace + arr[2] : namespace;\n    },\n    _getEventName: function(event)\n    {\n        return event.split('.')[0];\n    },\n    _offEvent: function(node, event, namespace, handler, condition)\n    {\n        for (var key in node._e)\n        {\n            for (var name in node._e[key])\n            {\n                if (condition(name, key, event, namespace))\n                {\n                    var handlers = node._e[key][name];\n                    for (var i = 0; i < handlers.length; i++)\n                    {\n                        if (typeof handler !== 'undefined' && handlers[i].toString() !== handler.toString())\n                        {\n                            continue;\n                        }\n\n                        node.removeEventListener(name, handlers[i]);\n                        node._e[key][name].splice(i, 1);\n\n                        if (node._e[key][name].length === 0) delete node._e[key][name];\n                        if (Object.keys(node._e[key]).length === 0) delete node._e[key];\n                    }\n                }\n            }\n        }\n    },\n    _getInnerOrOuter: function(method, type)\n    {\n        return this[method](undefined, type);\n    },\n    _getDocSize: function(node, type)\n    {\n        var body = node.body, html = node.documentElement;\n        return Math.max(body['scroll' + type], body['offset' + type], html['client' + type], html['scroll' + type], html['offset' + type]);\n    },\n    _getSize: function(type, captype, value, adjust)\n    {\n        if (value === undefined)\n        {\n            var el = this.get();\n            if (el.nodeType === 3)      value = 0;\n            else if (el.nodeType === 9) value = this._getDocSize(el, captype);\n            else if (el === window)     value = window['inner' + captype];\n            else                        value = this._getHeightOrWidth(type, el, adjust || 'normal');\n\n            return Math.round(value);\n        }\n\n        return this.each(function(node)\n        {\n            value = parseFloat(value);\n            value = value + this._adjustResultHeightOrWidth(type, node, adjust || 'normal');\n\n            new Dom(node).css(type, value + 'px');\n\n        }.bind(this));\n    },\n    _getHeightOrWidth: function(type, el, adjust)\n    {\n        var name = type.charAt(0).toUpperCase() + type.slice(1);\n        var style = getComputedStyle(el, null);\n        var $el = new Dom(el);\n        var result = 0;\n        var $targets = $el.parents().filter(function(node)\n        {\n            return (getComputedStyle(node, null).display === 'none') ? node : false;\n        });\n\n        if (style.display === 'none') $targets.add(el);\n        if ($targets.length !== 0)\n        {\n            var fixStyle = 'visibility: hidden !important; display: block !important;';\n            var tmp = [];\n\n            $targets.each(function(node)\n            {\n                var $node = new Dom(node);\n                var thisStyle = $node.attr('style');\n                if (thisStyle !== null) tmp.push(thisStyle);\n                $node.attr('style', (thisStyle !== null) ? thisStyle + ';' + fixStyle : fixStyle);\n            });\n\n            result = $el.get()['offset' + name] - this._adjustResultHeightOrWidth(type, el, adjust);\n\n            $targets.each(function(node, i)\n            {\n                var $node = new Dom(node);\n                if (tmp[i] === undefined) $node.removeAttr('style');\n                else $node.attr('style', tmp[i]);\n            });\n        }\n        else\n        {\n            result = el['offset' + name] - this._adjustResultHeightOrWidth(type, el, adjust);\n        }\n\n        return result;\n    },\n    _adjustResultHeightOrWidth: function(type, el, adjust)\n    {\n        if (!el || adjust === false) return 0;\n\n        var fix = 0;\n        var style = getComputedStyle(el, null);\n        var isBorderBox = (style.boxSizing === \"border-box\");\n\n        if (type === 'height')\n        {\n            if (adjust === 'inner' || (adjust === 'normal' && isBorderBox))\n            {\n                fix += (parseFloat(style.borderTopWidth) || 0) + (parseFloat(style.borderBottomWidth) || 0);\n            }\n\n            if (adjust === 'outer') fix -= (parseFloat(style.marginTop) || 0) + (parseFloat(style.marginBottom) || 0);\n        }\n        else\n        {\n            if (adjust === 'inner' || (adjust === 'normal' && isBorderBox))\n            {\n                fix += (parseFloat(style.borderLeftWidth) || 0) + (parseFloat(style.borderRightWidth) || 0);\n            }\n\n            if (adjust === 'outer') fix -= (parseFloat(style.marginLeft) || 0) + (parseFloat(style.marginRight) || 0);\n        }\n\n        return fix;\n    },\n    _getDim: function(type)\n    {\n        var node = this.get();\n        return (node.nodeType === 3) ? { top: 0, left: 0 } : this['_get' + type](node);\n    },\n    _getPosition: function(node)\n    {\n        return { top: node.offsetTop, left: node.offsetLeft };\n    },\n    _getOffset: function(node)\n    {\n        var rect = node.getBoundingClientRect();\n        var doc = node.ownerDocument;\n\t\tvar docElem = doc.documentElement;\n\t\tvar win = doc.defaultView;\n\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n    },\n    _getSibling: function(selector, method)\n    {\n        selector = (selector && selector.dom) ? selector.get() : selector;\n\n        var isNode = (selector && selector.nodeType);\n        var sibling;\n\n        this.each(function(node)\n        {\n            while (node = node[method])\n            {\n                if ((isNode && node === selector) || new Dom(node).is(selector))\n                {\n                    sibling = node;\n                    return;\n                }\n            }\n        });\n\n        return new Dom(sibling);\n    },\n    _toArray: function(obj)\n    {\n        if (obj instanceof NodeList)\n        {\n            var arr = [];\n            for (var i = 0; i < obj.length; i++)\n            {\n                arr[i] = obj[i];\n            }\n\n            return arr;\n        }\n        else if (obj === undefined) return [];\n        else\n        {\n            return (obj.dom) ? obj.nodes : obj;\n        }\n    },\n    _toParams: function(obj)\n    {\n        var params = '';\n        for (var key in obj)\n        {\n            params += '&' + this._encodeUri(key) + '=' + this._encodeUri(obj[key]);\n        }\n\n        return params.replace(/^&/, '');\n    },\n    _toObject: function(str)\n    {\n        return (new Function(\"return \" + str))();\n    },\n    _encodeUri: function(str)\n    {\n        return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/\\*/g, '%2A').replace(/%20/g, '+');\n    },\n    _isNumber: function(str)\n    {\n        return !isNaN(str) && !isNaN(parseFloat(str));\n    },\n    _isObjectString: function(str)\n    {\n        return (str.search(/^{/) !== -1);\n    },\n    _getBooleanFromStr: function(str)\n    {\n        if (str === 'true') return true;\n        else if (str === 'false') return false;\n\n        return str;\n    },\n    _getRealDisplay: function(elem)\n    {\n        if (elem.currentStyle) return elem.currentStyle.display;\n        else if (window.getComputedStyle)\n        {\n            var computedStyle = window.getComputedStyle(elem, null);\n            return computedStyle.getPropertyValue('display');\n        }\n    }\n};\n// Unique ID\nvar uuid = 0;\n\n// Wrapper\nvar $R = function(selector, options)\n{\n    return RedactorApp(selector, options, [].slice.call(arguments, 2));\n};\n\n// Globals\n$R.version = '3.1.1';\n$R.options = {};\n$R.modules = {};\n$R.services = {};\n$R.classes = {};\n$R.plugins = {};\n$R.mixins = {};\n$R.modals = {};\n$R.lang = {};\n$R.dom = function(selector, context) { return new Dom(selector, context); };\n$R.ajax = Ajax;\n$R.Dom = Dom;\n$R.keycodes = {\n\tBACKSPACE: 8,\n\tDELETE: 46,\n\tUP: 38,\n\tDOWN: 40,\n\tENTER: 13,\n\tSPACE: 32,\n\tESC: 27,\n\tTAB: 9,\n\tCTRL: 17,\n\tMETA: 91,\n\tSHIFT: 16,\n\tALT: 18,\n\tRIGHT: 39,\n\tLEFT: 37\n};\n$R.env = {\n    'plugin': 'plugins',\n    'module': 'modules',\n    'service': 'services',\n    'class': 'classes',\n    'mixin': 'mixins'\n};\n\n// jQuery Wrapper\n/*eslint-env jquery*/\nif (typeof jQuery !== 'undefined')\n{\n    (function($) { $.fn.redactor = function(options) { return RedactorApp(this.toArray(), options, [].slice.call(arguments, 1)); }; })(jQuery);\n}\n\n// Class\nvar RedactorApp = function(selector, options, args)\n{\n    var namespace = 'redactor';\n    var nodes = (Array.isArray(selector)) ? selector : (selector && selector.nodeType) ? [selector] : document.querySelectorAll(selector);\n    var isApi = (typeof options === 'string' || typeof options === 'function');\n    var value = [];\n    var instance;\n\n    for (var i = 0; i < nodes.length; i++)\n    {\n        var el = nodes[i];\n        var $el = $R.dom(el);\n\n        instance = $el.dataget(namespace);\n        if (!instance && !isApi)\n        {\n            // Initialization\n            $el.dataset(namespace, (instance = new App(el, options, uuid)));\n            uuid++;\n        }\n\n        // API\n        if (instance && isApi)\n        {\n            var isDestroy = (options === 'destroy');\n            options = (isDestroy) ? 'stop' : options;\n\n            var methodValue;\n            if (typeof options === 'function')\n            {\n                methodValue = options.apply(instance, args);\n            }\n            else\n            {\n                args.unshift(options);\n                methodValue = instance.api.apply(instance, args);\n            }\n            if (methodValue !== undefined) value.push(methodValue);\n\n            if (isDestroy) $el.dataset(namespace, false);\n        }\n    }\n\n    return (value.length === 0 || value.length === 1) ? ((value.length === 0) ? instance : value[0]) : value;\n};\n\n// add\n$R.add = function(type, name, obj)\n{\n    if (typeof $R.env[type] === 'undefined') return;\n\n    // translations\n    if (obj.translations)\n    {\n        $R.lang = $R.extend(true, {}, $R.lang, obj.translations);\n    }\n\n    // modals\n    if (obj.modals)\n    {\n        $R.modals = $R.extend(true, {}, $R.modals, obj.modals);\n    }\n\n    // mixin\n    if (type === 'mixin')\n    {\n        $R[$R.env[type]][name] = obj;\n    }\n    else\n    {\n        // prototype\n        var F = function() {};\n        F.prototype = obj;\n\n        // mixins\n        if (obj.mixins)\n        {\n            for (var i = 0; i < obj.mixins.length; i++)\n            {\n                $R.inherit(F, $R.mixins[obj.mixins[i]]);\n            }\n        }\n\n        $R[$R.env[type]][name] = F;\n    }\n};\n\n// add lang\n$R.addLang = function(lang, obj)\n{\n    if (typeof $R.lang[lang] === 'undefined')\n    {\n        $R.lang[lang] = {};\n    }\n\n    $R.lang[lang] = $R.extend($R.lang[lang], obj);\n};\n\n// create\n$R.create = function(name)\n{\n    var arr = name.split('.');\n    var args = [].slice.call(arguments, 1);\n\n    var type = 'classes';\n    if (typeof $R.env[arr[0]] !== 'undefined')\n    {\n        type = $R.env[arr[0]];\n        name = arr.slice(1).join('.');\n    }\n\n    // construct\n    var instance = new $R[type][name]();\n\n    // init\n    if (instance.init)\n    {\n        var res = instance.init.apply(instance, args);\n\n        return (res) ? res : instance;\n    }\n\n    return instance;\n};\n\n// inherit\n$R.inherit = function(current, parent)\n{\n    var F = function () {};\n    F.prototype = parent;\n    var f = new F();\n\n    for (var prop in current.prototype)\n    {\n        if (current.prototype.__lookupGetter__(prop)) f.__defineGetter__(prop, current.prototype.__lookupGetter__(prop));\n        else f[prop] = current.prototype[prop];\n    }\n\n    current.prototype = f;\n    current.prototype.super = parent;\n\n    return current;\n};\n\n// error\n$R.error = function(exception)\n{\n    throw exception;\n};\n\n// extend\n$R.extend = function()\n{\n    var extended = {};\n    var deep = false;\n    var i = 0;\n    var length = arguments.length;\n\n    if (Object.prototype.toString.call( arguments[0] ) === '[object Boolean]')\n    {\n        deep = arguments[0];\n        i++;\n    }\n\n    var merge = function(obj)\n    {\n        for (var prop in obj)\n        {\n            if (Object.prototype.hasOwnProperty.call(obj, prop))\n            {\n                if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') extended[prop] = $R.extend(true, extended[prop], obj[prop]);\n                else extended[prop] = obj[prop];\n            }\n        }\n    };\n\n    for (; i < length; i++ )\n    {\n        var obj = arguments[i];\n        merge(obj);\n    }\n\n    return extended;\n};\n$R.opts = {\n    animation: true,\n    lang: 'en',\n    direction: 'ltr',\n    spellcheck: true,\n    structure: false,\n    scrollTarget: false,\n    styles: true,\n    stylesClass: 'redactor-styles',\n    placeholder: false,\n\n    source: true,\n    showSource: false,\n\n    inline: false,\n\n    breakline: false,\n    markup: 'p',\n    enterKey: true,\n\n    clickToEdit: false,\n    clickToSave: false,\n    clickToCancel: false,\n\n    focus: false,\n    focusEnd: false,\n\n    minHeight: false, // string, '100px'\n    maxHeight: false, // string, '100px'\n    maxWidth: false, // string, '700px'\n\n    plugins: [], // array\n    callbacks: {},\n\n    // pre & tab\n    preClass: false, // string\n    preSpaces: 4, // or false\n    tabindex: false, // int\n    tabAsSpaces: false, // true or number of spaces\n    tabKey: true,\n\n    // autosave\n    autosave: false, // false or url\n    autosaveName: false,\n    autosaveData: false,\n\n    // toolbar\n    toolbar: true,\n    toolbarFixed: true,\n    toolbarFixedTarget: document,\n    toolbarFixedTopOffset: 0, // pixels\n    toolbarExternal: false, // ID selector\n    toolbarContext: true,\n\n    // air\n    air: false,\n\n    // formatting\n    formatting: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n    formattingAdd: false,\n    formattingHide: false,\n\n    // buttons\n    buttons: ['html', 'format', 'bold', 'italic', 'deleted', 'lists', 'image', 'file', 'link'],\n    // + 'line', 'redo', 'undo', 'underline', 'ol', 'ul', 'indent', 'outdent'\n    buttonsTextLabeled: false,\n    buttonsAdd: [],\n    buttonsAddFirst: [],\n    buttonsAddAfter: false,\n    buttonsAddBefore: false,\n    buttonsHide: [],\n    buttonsHideOnMobile: [],\n\n    // image\n    imageUpload: false,\n    imageUploadParam: 'file',\n    imageData: false,\n    imageEditable: true,\n    imageCaption: true,\n    imagePosition: false,\n    imageResizable: false,\n    imageFloatMargin: '10px',\n    imageFigure: true,\n\n    // file\n    fileUpload: false,\n    fileUploadParam: 'file',\n    fileData: false,\n    fileAttachment: false,\n\n    // upload opts\n    uploadData: false,\n    dragUpload: true,\n    multipleUpload: true,\n    clipboardUpload: true,\n    uploadBase64: false,\n\n    // link\n    linkTarget: false,\n    linkTitle: false,\n    linkNewTab: false,\n    linkNofollow: false,\n    linkSize: 30,\n    linkValidation: true,\n\n    // clean\n    cleanOnEnter: true,\n    cleanInlineOnEnter: false,\n    paragraphize: true,\n    removeScript: true,\n    removeNewLines: false,\n    removeComments: true,\n    replaceTags: {\n        'b': 'strong',\n        'i': 'em',\n        'strike': 'del'\n    },\n\n    // paste\n    pastePlainText: false,\n    pasteLinkTarget: false,\n    pasteImages: true,\n    pasteLinks: true,\n    pasteClean: true,\n    pasteKeepStyle: [],\n    pasteKeepClass: [],\n    pasteKeepAttrs: ['td', 'th'],\n    pasteBlockTags: ['pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'table', 'tbody', 'thead', 'tfoot', 'th', 'tr', 'td', 'ul', 'ol', 'li', 'blockquote', 'p', 'figure', 'figcaption'],\n    pasteInlineTags: ['a', 'img', 'br', 'strong', 'ins', 'code', 'del', 'span', 'samp', 'kbd', 'sup', 'sub', 'mark', 'var', 'cite', 'small', 'b', 'u', 'em', 'i', 'abbr'],\n\n    // active buttons\n    activeButtons: {\n        b: 'bold',\n        strong: 'bold',\n        i: 'italic',\n        em: 'italic',\n        del: 'deleted',\n        strike: 'deleted',\n        u: 'underline'\n    },\n    activeButtonsAdd: {},\n    activeButtonsObservers: {},\n\n    // autoparser\n    autoparse: true,\n    autoparseStart: true,\n    autoparsePaste: true,\n    autoparseLinks: true,\n    autoparseImages: true,\n    autoparseVideo: true,\n\n    // shortcodes\n    shortcodes: {\n        'p.': { format: 'p' },\n        'quote.': { format: 'blockquote' },\n        'pre.': { format: 'pre' },\n        'h1.': { format: 'h1' },\n        'h2.': { format: 'h2' },\n        'h3.': { format: 'h3' },\n        'h4.': { format: 'h4' },\n        'h5.': { format: 'h5' },\n        'h6.': { format: 'h6' },\n        '1.': { format: 'ol' },\n        '*.': { format: 'ul' }\n    },\n    shortcodesAdd: false, // object\n\n    // shortcuts\n    shortcuts: {\n        'ctrl+shift+m, meta+shift+m': { api: 'module.inline.clearformat' },\n        'ctrl+b, meta+b': { api: 'module.inline.format', args: 'b' },\n        'ctrl+i, meta+i': { api: 'module.inline.format', args: 'i' },\n        'ctrl+u, meta+u': { api: 'module.inline.format', args: 'u' },\n        'ctrl+h, meta+h': { api: 'module.inline.format', args: 'sup' },\n        'ctrl+l, meta+l': { api: 'module.inline.format', args: 'sub' },\n        'ctrl+k, meta+k': { api: 'module.link.open' },\n        'ctrl+alt+0, meta+alt+0': { api: 'module.block.format', args: 'p' },\n        'ctrl+alt+1, meta+alt+1': { api: 'module.block.format', args: 'h1' },\n        'ctrl+alt+2, meta+alt+2': { api: 'module.block.format', args: 'h2' },\n        'ctrl+alt+3, meta+alt+3': { api: 'module.block.format', args: 'h3' },\n        'ctrl+alt+4, meta+alt+4': { api: 'module.block.format', args: 'h4' },\n        'ctrl+alt+5, meta+alt+5': { api: 'module.block.format', args: 'h5' },\n        'ctrl+alt+6, meta+alt+6': { api: 'module.block.format', args: 'h6' },\n        'ctrl+shift+7, meta+shift+7': { api: 'module.list.toggle', args: 'ol' },\n        'ctrl+shift+8, meta+shift+8': { api: 'module.list.toggle', args: 'ul' }\n    },\n    shortcutsAdd: false, // object\n\n    // misc\n    grammarly: true,\n\n    // private\n    bufferLimit: 100,\n    emptyHtml: '<p></p>',\n    markerChar: '\\ufeff',\n    imageTypes: ['image/png', 'image/jpeg', 'image/gif'],\n    inlineTags: ['a', 'span', 'strong', 'strike', 'b', 'u', 'em', 'i', 'code', 'del', 'ins', 'samp', 'kbd', 'sup', 'sub', 'mark', 'var', 'cite', 'small', 'abbr'],\n    blockTags: ['pre', 'ul', 'ol', 'li', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',  'dl', 'dt', 'dd', 'div', 'table', 'tbody', 'thead', 'tfoot', 'tr', 'th', 'td', 'blockquote', 'output', 'figcaption', 'figure', 'address', 'section', 'header', 'footer', 'aside', 'article', 'iframe'],\n    regex: {\n        youtube: /https?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:youtu\\.be\\/|youtube\\.com\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w.-]*(?:['\"][^<>]*>|<\\/a>))[?=&+%\\w.-]*/gi,\n        vimeo: /(http|https)?:\\/\\/(?:www.|player.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_-]+)?/gi,\n        imageurl: /((https?|www)[^\\s]+\\.)(jpe?g|png|gif)(\\?[^\\s-]+)?/gi,\n        url: /(https?:\\/\\/(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})/gi\n    },\n    input: true,\n    zindex: false,\n    modes: {\n        \"inline\": {\n            pastePlainText: true,\n            pasteImages: false,\n            enterKey: false,\n            toolbar: false,\n            autoparse: false,\n            source: false,\n            showSource: false,\n            styles: false,\n            air: false\n        },\n        \"original\": {\n            styles: false\n        }\n    }\n};\n$R.lang['en'] = {\n    \"format\": \"Format\",\n    \"image\": \"Image\",\n    \"file\": \"File\",\n    \"link\": \"Link\",\n    \"bold\": \"Bold\",\n    \"italic\": \"Italic\",\n    \"deleted\": \"Strikethrough\",\n    \"underline\": \"Underline\",\n    \"superscript\": \"Superscript\",\n    \"subscript\": \"Subscript\",\n    \"bold-abbr\": \"B\",\n    \"italic-abbr\": \"I\",\n    \"deleted-abbr\": \"S\",\n    \"underline-abbr\": \"U\",\n    \"superscript-abbr\": \"Sup\",\n    \"subscript-abbr\": \"Sub\",\n    \"lists\": \"Lists\",\n    \"link-insert\": \"Insert Link\",\n    \"link-edit\": \"Edit Link\",\n    \"link-in-new-tab\": \"Open link in new tab\",\n    \"unlink\": \"Unlink\",\n    \"cancel\": \"Cancel\",\n    \"close\": \"Close\",\n    \"insert\": \"Insert\",\n    \"save\": \"Save\",\n    \"delete\": \"Delete\",\n    \"text\": \"Text\",\n    \"edit\": \"Edit\",\n    \"title\": \"Title\",\n    \"paragraph\": \"Normal text\",\n    \"quote\": \"Quote\",\n    \"code\": \"Code\",\n    \"heading1\": \"Heading 1\",\n    \"heading2\": \"Heading 2\",\n    \"heading3\": \"Heading 3\",\n    \"heading4\": \"Heading 4\",\n    \"heading5\": \"Heading 5\",\n    \"heading6\": \"Heading 6\",\n    \"filename\": \"Name\",\n    \"optional\": \"optional\",\n    \"unorderedlist\": \"Unordered List\",\n    \"orderedlist\": \"Ordered List\",\n    \"outdent\": \"Outdent\",\n    \"indent\": \"Indent\",\n    \"horizontalrule\": \"Line\",\n    \"upload\": \"Upload\",\n    \"upload-label\": \"Drop files here or click to upload\",\n    \"accessibility-help-label\": \"Rich text editor\",\n    \"caption\": \"Caption\",\n    \"bulletslist\": \"Bullets\",\n    \"numberslist\": \"Numbers\",\n    \"image-position\": \"Position\",\n    \"none\": \"None\",\n    \"left\": \"Left\",\n    \"right\": \"Right\",\n    \"center\": \"Center\",\n    \"undo\": \"Undo\",\n    \"redo\": \"Redo\"\n};\n$R.buttons = {\n    html: {\n        title: 'HTML',\n        icon: true,\n        api: 'module.source.toggle'\n    },\n    undo: {\n        title: '## undo ##',\n        icon: true,\n        api: 'module.buffer.undo'\n    },\n    redo: {\n        title: '## redo ##',\n        icon: true,\n        api: 'module.buffer.redo'\n    },\n    format: {\n        title: '## format ##',\n        icon: true,\n        dropdown: {\n            p: {\n                title: '## paragraph ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'p'\n                }\n            },\n            blockquote: {\n                title: '## quote ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'blockquote'\n                }\n            },\n            pre: {\n                title: '## code ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'pre'\n                }\n            },\n            h1: {\n                title: '## heading1 ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'h1'\n                }\n            },\n            h2: {\n                title: '## heading2 ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'h2'\n                }\n            },\n            h3: {\n                title: '## heading3 ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'h3'\n                }\n            },\n            h4: {\n                title: '## heading4 ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'h4'\n                }\n            },\n            h5: {\n                title: '## heading5 ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'h5'\n                }\n            },\n            h6: {\n                title: '## heading6 ##',\n                api: 'module.block.format',\n                args: {\n                    tag: 'h6'\n                }\n            }\n        }\n    },\n    bold: {\n        title: '## bold-abbr ##',\n        icon: true,\n        tooltip: '## bold ##',\n        api: 'module.inline.format',\n        args: {\n            tag: 'b'\n        }\n    },\n    italic: {\n        title: '## italic-abbr ##',\n        icon: true,\n        tooltip: '## italic ##',\n        api: 'module.inline.format',\n        args: {\n            tag: 'i'\n        }\n    },\n    deleted: {\n        title: '## deleted-abbr ##',\n        icon: true,\n        tooltip: '## deleted ##',\n        api: 'module.inline.format',\n        args: {\n            tag: 'del'\n        }\n    },\n    underline: {\n        title: '## underline-abbr ##',\n        icon: true,\n        tooltip: '## underline ##',\n        api: 'module.inline.format',\n        args: {\n            tag: 'u'\n        }\n    },\n    sup: {\n        title: '## superscript-abbr ##',\n        icon: true,\n        tooltip: '## superscript ##',\n        api: 'module.inline.format',\n        args: {\n            tag: 'sup'\n        }\n    },\n    sub: {\n        title: '## subscript-abbr ##',\n        icon: true,\n        tooltip: '## subscript ##',\n        api: 'module.inline.format',\n        args: {\n            tag: 'sub'\n        }\n    },\n    lists: {\n        title: '## lists ##',\n        icon: true,\n        observe: 'list',\n        dropdown: {\n            observe: 'list',\n            unorderedlist: {\n                title: '&bull; ## unorderedlist ##',\n                api: 'module.list.toggle',\n                args: 'ul'\n            },\n            orderedlist: {\n                title: '1. ## orderedlist ##',\n                api: 'module.list.toggle',\n                args: 'ol'\n            },\n            outdent: {\n                title: '< ## outdent ##',\n                api: 'module.list.outdent'\n            },\n            indent: {\n                title: '> ## indent ##',\n                api: 'module.list.indent'\n            }\n        }\n    },\n    ul: {\n        title: '&bull; ## bulletslist ##',\n        icon: true,\n        api: 'module.list.toggle',\n        observe: 'list',\n        args: 'ul'\n    },\n    ol: {\n        title: '1. ## numberslist ##',\n        icon: true,\n        api: 'module.list.toggle',\n        observe: 'list',\n        args: 'ol'\n    },\n    outdent: {\n        title: '## outdent ##',\n        icon: true,\n        api: 'module.list.outdent',\n        observe: 'list'\n    },\n    indent: {\n        title: '## indent ##',\n        icon: true,\n        api: 'module.list.indent',\n        observe: 'list'\n    },\n    image: {\n        title: '## image ##',\n        icon: true,\n        api: 'module.image.open'\n    },\n    file: {\n        title: '## file ##',\n        icon: true,\n        api: 'module.file.open'\n    },\n    link: {\n        title: '## link ##',\n        icon: true,\n        observe: 'link',\n        dropdown: {\n            observe: 'link',\n            link: {\n                title: '## link-insert ##',\n                api: 'module.link.open'\n            },\n            unlink: {\n                title: '## unlink ##',\n                api: 'module.link.unlink'\n            }\n        }\n    },\n    line: {\n        title: '## horizontalrule ##',\n        icon: true,\n        api: 'module.line.insert'\n    }\n};\nvar App = function(element, options, uuid)\n{\n    this.module = {};\n    this.plugin = {};\n    this.instances = {};\n\n    // start/stop\n    this.started = false;\n    this.stopped = false;\n\n    // environment\n    this.uuid = uuid;\n    this.rootElement = element;\n    this.rootOpts = options;\n    this.dragInside = false;\n    this.dragComponentInside = false;\n    this.keycodes = $R.keycodes;\n    this.namespace = 'redactor';\n    this.$win = $R.dom(window);\n    this.$doc = $R.dom(document);\n    this.$body = $R.dom('body');\n    this.editorReadOnly = false;\n\n    // core services\n    this.opts = $R.create('service.options', options, element);\n    this.lang = $R.create('service.lang', this);\n\n    // build\n    this.buildServices();\n    this.buildModules();\n    this.buildPlugins();\n\n    // start\n    this.start();\n};\n\nApp.prototype = {\n    start: function()\n    {\n        // start\n        this.stopped = false;\n        this.broadcast('start');\n        this.broadcast('startcode');\n\n        if (this.opts.clickToEdit)\n        {\n            this.broadcast('startclicktoedit');\n        }\n        else\n        {\n            this.broadcast('enable');\n            if (this.opts.showSource) this.broadcast('startcodeshow');\n            this.broadcast('enablefocus');\n        }\n\n        // started\n        this.broadcast('started');\n        this.started = true;\n    },\n    stop: function()\n    {\n        this.started = false;\n        this.stopped = true;\n\n        this.broadcast('stop');\n        this.broadcast('disable');\n        this.broadcast('stopped');\n    },\n\n    // started & stopped\n    isStarted: function()\n    {\n        return this.started;\n    },\n    isStopped: function()\n    {\n        return this.stopped;\n    },\n\n    // build\n    buildServices: function()\n    {\n        var core = ['options', 'lang'];\n        var bindable = ['uuid', 'keycodes', 'opts', 'lang', '$win', '$doc', '$body'];\n        var services = [];\n        for (var name in $R.services)\n        {\n            if (core.indexOf(name) === -1)\n            {\n                this[name] = $R.create('service.' + name, this);\n                services.push(name);\n                bindable.push(name);\n            }\n        }\n\n        // binding\n        for (var i = 0; i < services.length; i++)\n        {\n            var service = services[i];\n            for (var z = 0; z < bindable.length; z++)\n            {\n                var inj = bindable[z];\n                if (service !== inj)\n                {\n                    this[service][inj] = this[inj];\n                }\n            }\n        }\n    },\n    buildModules: function()\n    {\n        for (var name in $R.modules)\n        {\n            this.module[name] = $R.create('module.' + name, this);\n            this.instances[name] = this.module[name];\n        }\n    },\n    buildPlugins: function()\n    {\n        var plugins = this.opts.plugins;\n        for (var i = 0; i < plugins.length; i++)\n        {\n            var name = plugins[i];\n            if (typeof $R.plugins[name] !== 'undefined')\n            {\n                this.plugin[name] = $R.create('plugin.' + name, this);\n                this.instances[name] = this.plugin[name];\n            }\n        }\n    },\n\n    // draginside\n    isDragInside: function()\n    {\n        return this.dragInside;\n    },\n    setDragInside: function(dragInside)\n    {\n        this.dragInside = dragInside;\n    },\n    isDragComponentInside: function()\n    {\n        return this.dragComponentInside;\n    },\n    setDragComponentInside: function(dragInside)\n    {\n        this.dragComponentInside = dragInside;\n    },\n    getDragComponentInside: function()\n    {\n        return this.dragComponentInside;\n    },\n\n    // readonly\n    isReadOnly: function()\n    {\n        return this.editorReadOnly;\n    },\n    enableReadOnly: function()\n    {\n        this.editorReadOnly = true;\n        this.broadcast('enablereadonly');\n        this.component.clearActive();\n        this.toolbar.disableButtons();\n    },\n    disableReadOnly: function()\n    {\n        this.editorReadOnly = false;\n        this.broadcast('disablereadonly');\n        this.toolbar.enableButtons();\n    },\n\n    // messaging\n    callMessageHandler: function(instance, name, args)\n    {\n        var arr = name.split('.');\n        if (arr.length === 1)\n        {\n            if (typeof instance['on' + name] === 'function')\n            {\n                instance['on' + name].apply(instance, args);\n            }\n        }\n        else\n        {\n            arr[0] = 'on' + arr[0];\n\n            var func = this.utils.checkProperty(instance, arr);\n            if (typeof func === 'function')\n            {\n                func.apply(instance, args);\n            }\n        }\n    },\n    broadcast: function(name)\n    {\n        var args = [].slice.call(arguments, 1);\n        for (var moduleName in this.instances)\n        {\n            this.callMessageHandler(this.instances[moduleName], name, args);\n        }\n\n        // callback\n        return this.callback.trigger(name, args);\n    },\n\n    // callback\n    on: function(name, func)\n    {\n        this.callback.add(name, func);\n    },\n    off: function(name, func)\n    {\n        this.callback.remove(name, func);\n    },\n\n    // api\n    api: function(name)\n    {\n        if (!this.isStarted() && name !== 'start') return;\n        if (this.isReadOnly() && name !== 'disableReadOnly') return;\n\n        this.broadcast('state');\n\n        var args = [].slice.call(arguments, 1);\n        var arr = name.split('.');\n\n        var isApp = (arr.length === 1);\n        var isCallback = (arr[0] === 'on' || arr[0] === 'off');\n        var isService = (!isCallback && arr.length === 2);\n        var isPlugin = (arr[0] === 'plugin');\n        var isModule = (arr[0] === 'module');\n\n        // app\n        if (isApp)\n        {\n            if (typeof this[arr[0]] === 'function')\n            {\n                return this.callInstanceMethod(this, arr[0], args);\n            }\n        }\n        // callback\n        else if (isCallback)\n        {\n            return (arr[0] === 'on') ? this.on(arr[1], args[0]) : this.off(arr[1], args[0] || undefined);\n        }\n        // service\n        else if (isService)\n        {\n            if (this.isInstanceExists(this, arr[0]))\n            {\n                return this.callInstanceMethod(this[arr[0]], arr[1], args);\n            }\n            else\n            {\n                $R.error(new Error('Service \"' + arr[0] + '\" not found'));\n            }\n        }\n        // plugin\n        else if (isPlugin)\n        {\n            if (this.isInstanceExists(this.plugin, arr[1]))\n            {\n                return this.callInstanceMethod(this.plugin[arr[1]], arr[2], args);\n            }\n            else\n            {\n                $R.error(new Error('Plugin \"' + arr[1] + '\" not found'));\n            }\n        }\n        // module\n        else if (isModule)\n        {\n            if (this.isInstanceExists(this.module, arr[1]))\n            {\n                return this.callInstanceMethod(this.module[arr[1]], arr[2], args);\n            }\n            else\n            {\n                $R.error(new Error('Module \"' + arr[1] + '\" not found'));\n            }\n        }\n\n    },\n    isInstanceExists: function(obj, name)\n    {\n        return (typeof obj[name] !== 'undefined');\n    },\n    callInstanceMethod: function(instance, method, args)\n    {\n        if (typeof instance[method] === 'function')\n        {\n            return instance[method].apply(instance, args);\n        }\n    }\n};\n$R.add('mixin', 'formatter', {\n\n    // public\n    buildArgs: function(args)\n    {\n        this.args = {\n            'class': args['class'] || false,\n            'style': args['style'] || false,\n            'attr': args['attr'] || false\n        };\n\n        if (!this.args['class'] && !this.args['style'] && !this.args['attr'])\n        {\n            this.args = false;\n        }\n    },\n    applyArgs: function(nodes, selection)\n    {\n        if (this.args)\n        {\n            nodes = this[this.type](this.args, false, nodes, selection);\n        }\n        else\n        {\n            nodes = this._clearAll(nodes, selection);\n        }\n\n        return nodes;\n    },\n    clearClass: function(tags, nodes)\n    {\n        this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags, true);\n        $elements.removeAttr('class');\n\n        nodes = this._unwrapSpanWithoutAttr($elements.getAll());\n\n        this.selection.restore();\n\n        return nodes;\n    },\n    clearStyle: function(tags, nodes)\n    {\n        this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags, true);\n        $elements.removeAttr('style');\n\n        nodes = this._unwrapSpanWithoutAttr($elements.getAll());\n\n        this.selection.restore();\n\n        return nodes;\n    },\n    clearAttr: function(tags, nodes)\n    {\n        this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags, true);\n        this._removeAllAttr($elements);\n\n        nodes = this._unwrapSpanWithoutAttr($elements.getAll());\n\n        this.selection.restore();\n\n        return nodes;\n    },\n    set: function(args, tags, nodes, selection)\n    {\n        if (selection !== false) this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags);\n\n        if (args['class'])\n        {\n            $elements.removeAttr('class');\n            $elements.addClass(args['class']);\n        }\n\n        if (args['style'])\n        {\n            $elements.removeAttr('style');\n            $elements.css(args['style']);\n            $elements.each(function(node)\n            {\n                var $node = $R.dom(node);\n                $node.attr('data-redactor-style-cache', $node.attr('style'));\n            });\n        }\n\n        if (args['attr'])\n        {\n            this._removeAllAttr($elements);\n            $elements.attr(args['attr']);\n        }\n\n        if (selection !== false) this.selection.restore();\n\n        return $elements.getAll();\n    },\n    toggle: function(args, tags, nodes, selection)\n    {\n        if (selection !== false) this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags);\n\n        if (args['class'])\n        {\n            $elements.toggleClass(args['class']);\n            $elements.each(function(node)\n            {\n                if (node.className === '') node.removeAttribute('class');\n            });\n        }\n\n        var params;\n        if (args['style'])\n        {\n            params = args['style'];\n            $elements.each(function(node)\n            {\n                var $node = $R.dom(node);\n                for (var key in params)\n                {\n                    var newVal = params[key];\n                    var oldVal = $node.css(key);\n\n                    oldVal = (this.utils.isRgb(oldVal)) ? this.utils.rgb2hex(oldVal) : oldVal.replace(/\"/g, '');\n                    newVal = (this.utils.isRgb(newVal)) ? this.utils.rgb2hex(newVal) : newVal.replace(/\"/g, '');\n\n                    oldVal = this.utils.hex2long(oldVal);\n                    newVal = this.utils.hex2long(newVal);\n\n                    var compareNew = (typeof newVal === 'string') ? newVal.toLowerCase() : newVal;\n                    var compareOld = (typeof oldVal === 'string') ? oldVal.toLowerCase() : oldVal;\n\n                    if (compareNew === compareOld) $node.css(key, '');\n                    else $node.css(key, newVal);\n                }\n\n                this._convertStyleQuotes($node);\n                if (this.utils.removeEmptyAttr(node, 'style'))\n                {\n                    $node.removeAttr('data-redactor-style-cache');\n                }\n                else\n                {\n                    $node.attr('data-redactor-style-cache', $node.attr('style'));\n                }\n\n            }.bind(this));\n        }\n\n        if (args['attr'])\n        {\n            params = args['attr'];\n            $elements.each(function(node)\n            {\n                var $node = $R.dom(node);\n                for (var key in params)\n                {\n                    if ($node.attr(key)) $node.removeAttr(key);\n                    else $node.attr(key, params[key]);\n                }\n            });\n\n        }\n\n        if (selection !== false) this.selection.restore();\n\n        return $elements.getAll();\n    },\n    add: function(args, tags, nodes, selection)\n    {\n        if (selection !== false) this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags);\n\n        if (args['class'])\n        {\n            $elements.addClass(args['class']);\n        }\n\n        if (args['style'])\n        {\n            var params = args['style'];\n            $elements.each(function(node)\n            {\n                var $node = $R.dom(node);\n                $node.css(params);\n                $node.attr('data-redactor-style-cache', $node.attr('style'));\n\n                this._convertStyleQuotes($node);\n\n            }.bind(this));\n        }\n\n        if (args['attr'])\n        {\n            $elements.attr(args['attr']);\n        }\n\n        if (selection !== false) this.selection.restore();\n\n        return $elements.getAll();\n    },\n    remove: function(args, tags, nodes, selection)\n    {\n        if (selection !== false) this.selection.save();\n\n        var $elements = (nodes) ? $R.dom(nodes) : this.getElements(tags);\n\n        if (args['class'])\n        {\n            $elements.removeClass(args['class']);\n            $elements.each(function(node)\n            {\n                if (node.className === '') node.removeAttribute('class');\n            });\n        }\n\n        if (args['style'])\n        {\n            var name = args['style'];\n            $elements.each(function(node)\n            {\n                var $node = $R.dom(node);\n                $node.css(name, '');\n\n                if (this.utils.removeEmptyAttr(node, 'style'))\n                {\n                    $node.removeAttr('data-redactor-style-cache');\n                }\n                else\n                {\n                    $node.attr('data-redactor-style-cache', $node.attr('style'));\n                }\n\n            }.bind(this));\n        }\n\n        if (args['attr'])\n        {\n            $elements.removeAttr(args['attr']);\n        }\n\n        nodes = this._unwrapSpanWithoutAttr($elements.getAll());\n\n        if (selection !== false) this.selection.restore();\n\n        return nodes;\n    },\n\n    // private\n    _removeAllAttr: function($elements)\n    {\n        $elements.each(function(node)\n        {\n            for (var i = node.attributes.length; i-->0;)\n            {\n                var nodeAttr = node.attributes[i];\n                var name = nodeAttr.name;\n                if (name !== 'style' && name !== 'class')\n                {\n                    node.removeAttributeNode(nodeAttr);\n                }\n            }\n        });\n    },\n    _convertStyleQuotes: function($node)\n    {\n        var style = $node.attr('style');\n        if (style) $node.attr('style', style.replace(/\"/g, '\\''));\n    },\n    _clearAll: function(nodes, selection)\n    {\n        if (selection !== false) this.selection.save();\n\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var node = nodes[i];\n            while (node.attributes.length > 0)\n            {\n                node.removeAttribute(node.attributes[0].name);\n            }\n        }\n\n        nodes = this._unwrapSpanWithoutAttr(nodes);\n\n        if (selection !== false) this.selection.restore();\n\n        return nodes;\n    },\n    _unwrapSpanWithoutAttr: function(nodes)\n    {\n        var finalNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var node = nodes[i];\n            var len = node.attributes.length;\n            if (len <= 0 && node.nodeType !== 3 && node.tagName === 'SPAN')\n            {\n                $R.dom(node).unwrap();\n            }\n            else\n            {\n                finalNodes.push(node);\n            }\n        }\n\n        return finalNodes;\n    }\n});\n$R.add('mixin', 'dom', $R.Dom.prototype);\n$R.add('mixin', 'component', {\n    get cmnt()\n    {\n        return true;\n    }\n});\n$R.add('service', 'options', {\n    init: function(options, element)\n    {\n        var $el = $R.dom(element);\n        var opts = $R.extend({}, $R.opts, (element) ? $el.data() : {}, $R.options);\n        opts = $R.extend(true, opts, options);\n\n        return opts;\n    }\n});\n$R.add('service', 'lang', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n\n        // build\n        this.vars = this._build(this.opts.lang);\n    },\n\n    // public\n    rebuild: function(lang)\n    {\n        this.opts.lang = lang;\n        this.vars = this._build(lang);\n    },\n    extend: function(obj)\n    {\n        this.vars = $R.extend(this.vars, obj);\n    },\n    parse: function(str)\n    {\n        if (str === undefined)\n        {\n            return '';\n        }\n\n        var matches = str.match(/## (.*?) ##/g);\n        if (matches)\n        {\n            for (var i = 0; i < matches.length; i++)\n            {\n                var key = matches[i].replace(/^##\\s/g, '').replace(/\\s##$/g, '');\n                str = str.replace(matches[i], this.get(key));\n            }\n        }\n\n        return str;\n    },\n    get: function(name)\n    {\n        var str = '';\n        if (typeof this.vars[name] !== 'undefined')\n        {\n            str = this.vars[name];\n        }\n        else if (this.opts.lang !== 'en' && typeof $R.lang['en'][name] !== 'undefined')\n        {\n            str = $R.lang['en'][name];\n        }\n\n        return str;\n    },\n\n    // private\n    _build: function(lang)\n    {\n        var vars = $R.lang['en'];\n        if (lang !== 'en')\n        {\n            vars = ($R.lang[lang] !== undefined) ? $R.lang[lang] : vars;\n        }\n\n        return vars;\n    }\n});\n$R.add('service', 'callback', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n\n        // local\n        this.callbacks = {};\n\n        // build\n        if (this.opts.callbacks)\n        {\n            this._set(this.opts.callbacks, '');\n        }\n    },\n    stop: function()\n    {\n        this.callbacks = {};\n    },\n    add: function(name, handler)\n    {\n        if (!this.callbacks[name]) this.callbacks[name] = [];\n        this.callbacks[name].push(handler);\n    },\n    remove: function(name, handler)\n    {\n        if (handler === undefined)\n        {\n            delete this.callbacks[name];\n        }\n        else\n        {\n            for (var i = 0; i < this.callbacks[name].length; i++)\n            {\n                this.callbacks[name].splice(i, 1);\n            }\n\n            if (Object.keys(this.callbacks[name]).length === 0) delete this.callbacks[name];\n        }\n    },\n    trigger: function(name, args)\n    {\n        var value = this._loop(name, args, this.callbacks);\n        return (typeof value === 'undefined' && args && args[0] !== false) ? args[0] : value;\n    },\n\n    // private\n    _set: function(obj, name)\n    {\n        for (var key in obj)\n        {\n            var path = (name === '') ? key : name + '.' + key;\n            if (typeof obj[key] === 'object')\n            {\n                this._set(obj[key], path);\n            }\n            else\n            {\n                this.callbacks[path] = [];\n                this.callbacks[path].push(obj[key]);\n            }\n        }\n    },\n    _loop: function(name, args, obj)\n    {\n        var value;\n        for (var key in obj)\n        {\n            if (name === key)\n            {\n                for (var i = 0; i < obj[key].length; i++)\n                {\n                    value = obj[key][i].apply(this.app, args);\n                }\n            }\n        }\n\n        return value;\n    }\n});\n$R.add('service', 'animate', {\n    init: function(app)\n    {\n        this.animationOpt = app.opts.animation;\n    },\n    start: function(element, animation, options, callback)\n    {\n        var defaults = {\n            duration: false,\n            iterate: false,\n            delay: false,\n            timing: false,\n            prefix: 'redactor-'\n        };\n\n        defaults = (typeof options === 'function') ? defaults : $R.extend(defaults, options);\n        callback = (typeof options === 'function') ? options : callback;\n\n        // play\n        return new $R.AnimatePlay(element, animation, defaults, callback, this.animationOpt);\n    },\n    stop: function(element)\n    {\n        this.$el = $R.dom(element);\n        this.$el.removeClass('redactor-animated');\n\n        var effect = this.$el.attr('redactor-animate-effect');\n        this.$el.removeClass(effect);\n\n        this.$el.removeAttr('redactor-animate-effect');\n        var hide = this.$el.attr('redactor-animate-hide');\n        if (hide)\n        {\n            this.$el.addClass(hide).removeAttr('redactor-animate-hide');\n        }\n\n        this.$el.off('animationend webkitAnimationEnd');\n    }\n});\n\n$R.AnimatePlay = function(element, animation, defaults, callback, animationOpt)\n{\n    this.hidableEffects = ['fadeOut', 'flipOut', 'slideUp', 'zoomOut', 'slideOutUp', 'slideOutRight', 'slideOutLeft'];\n    this.prefixes = ['', '-webkit-'];\n\n    this.$el = $R.dom(element);\n    this.$body = $R.dom('body');\n    this.callback = callback;\n    this.animation = (!animationOpt) ? this.buildAnimationOff(animation) : animation;\n    this.defaults = defaults;\n\n    if (this.animation === 'slideUp')\n    {\n        this.$el.height(this.$el.height());\n    }\n\n    // animate\n    return (this.isInanimate()) ? this.inanimate() : this.animate();\n};\n\n$R.AnimatePlay.prototype = {\n    buildAnimationOff: function(animation)\n    {\n        return (this.isHidable(animation)) ? 'hide' : 'show';\n    },\n    buildHideClass: function()\n    {\n        return 'redactor-animate-hide';\n    },\n    isInanimate: function()\n    {\n        return (this.animation === 'show' || this.animation === 'hide');\n    },\n    isAnimated: function()\n    {\n        return this.$el.hasClass('redactor-animated');\n    },\n    isHidable: function(effect)\n    {\n        return (this.hidableEffects.indexOf(effect) !== -1);\n    },\n    inanimate: function()\n    {\n        this.defaults.timing = 'linear';\n\n        var hide;\n        if (this.animation === 'show')\n        {\n            hide = this.buildHideClass();\n            this.$el.attr('redactor-animate-hide', hide);\n            this.$el.removeClass(hide);\n        }\n        else\n        {\n            hide = this.$el.attr('redactor-animate-hide');\n            this.$el.addClass(hide).removeAttr('redactor-animate-hide');\n        }\n\n        if (typeof this.callback === 'function') this.callback(this);\n\n        return this;\n    },\n    animate: function()\n    {\n        var delay = (this.defaults.delay) ? this.defaults.delay : 0;\n        setTimeout(function()\n        {\n            this.$body.addClass('no-scroll-x');\n            this.$el.addClass('redactor-animated');\n            if (!this.$el.attr('redactor-animate-hide'))\n            {\n                var hide = this.buildHideClass();\n                this.$el.attr('redactor-animate-hide', hide);\n                this.$el.removeClass(hide);\n            }\n\n            this.$el.addClass(this.defaults.prefix + this.animation);\n            this.$el.attr('redactor-animate-effect', this.defaults.prefix + this.animation);\n\n            this.set(this.defaults.duration + 's', this.defaults.iterate, this.defaults.timing);\n            this.complete();\n\n        }.bind(this), delay * 1000);\n\n        return this;\n    },\n    set: function(duration, iterate, timing)\n    {\n        var len = this.prefixes.length;\n\n        while (len--)\n        {\n            if (duration !== false || duration === '') this.$el.css(this.prefixes[len] + 'animation-duration', duration);\n            if (iterate !== false || iterate === '') this.$el.css(this.prefixes[len] + 'animation-iteration-count', iterate);\n            if (timing !== false || timing === '') this.$el.css(this.prefixes[len] + 'animation-timing-function', timing);\n        }\n    },\n    clean: function()\n    {\n        this.$body.removeClass('no-scroll-x');\n        this.$el.removeClass('redactor-animated');\n        this.$el.removeClass(this.defaults.prefix + this.animation);\n        this.$el.removeAttr('redactor-animate-effect');\n\n        this.set('', '', '');\n    },\n    complete: function()\n    {\n        this.$el.one('animationend webkitAnimationEnd', function()\n        {\n            if (this.$el.hasClass(this.defaults.prefix + this.animation)) this.clean();\n            if (this.isHidable(this.animation))\n            {\n                var hide = this.$el.attr('redactor-animate-hide');\n                this.$el.addClass(hide).removeAttr('redactor-animate-hide');\n            }\n\n            if (this.animation === 'slideUp') this.$el.height('');\n            if (typeof this.callback === 'function') this.callback(this.$el);\n\n        }.bind(this));\n    }\n};\n$R.add('service', 'caret', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n\n    // set\n    setStart: function(el)\n    {\n        this._setCaret('Start', el);\n    },\n    setEnd: function(el)\n    {\n        this._setCaret('End', el);\n    },\n    setBefore: function(el)\n    {\n        this._setCaret('Before', el);\n    },\n    setAfter: function(el)\n    {\n        this._setCaret('After', el);\n    },\n\n    // is\n    isStart: function(el)\n    {\n        return this._isStartOrEnd(el, 'First');\n    },\n    isEnd: function(el)\n    {\n        return this._isStartOrEnd(el, 'Last');\n    },\n\n    // set side\n    setAtEnd: function(node)\n    {\n        var data = this.inspector.parse(node);\n        var tag = data.getTag();\n        var range = document.createRange();\n        if (this._isInPage(node))\n        {\n            if (tag === 'a')\n            {\n                var textNode = this.utils.createInvisibleChar();\n                node.appendChild(textNode);\n\n                range.setStartBefore(textNode);\n                range.collapse(true);\n            }\n            else\n            {\n                range.selectNodeContents(node);\n                range.collapse(false);\n            }\n\n            this.selection.setRange(range);\n        }\n    },\n    setAtStart: function(node)\n    {\n\t\tvar range = document.createRange();\n\t\tvar data = this.inspector.parse(node);\n        if (this._isInPage(node))\n        {\n            range.setStart(node, 0);\n            range.collapse(true);\n\n            if (data.isInline() || this.utils.isEmpty(node))\n            {\n                var textNode = this.utils.createInvisibleChar();\n                range.insertNode(textNode);\n                range.selectNodeContents(textNode);\n                range.collapse(false);\n            }\n\n            this.selection.setRange(range);\n        }\n    },\n    setAtBefore: function(node)\n    {\n        var data = this.inspector.parse(node);\n        var range = document.createRange();\n        if (this._isInPage(node))\n        {\n            range.setStartBefore(node);\n            range.collapse(true);\n\n            if (data.isInline())\n            {\n                var textNode = this.utils.createInvisibleChar();\n                node.parentNode.insertBefore(textNode, node);\n                range.selectNodeContents(textNode);\n                range.collapse(false);\n            }\n\n            this.selection.setRange(range);\n        }\n    },\n    setAtAfter: function(node)\n    {\n\n        var range = document.createRange();\n        if (this._isInPage(node))\n        {\n            range.setStartAfter(node);\n            range.collapse(true);\n\n            var textNode = this.utils.createInvisibleChar();\n            range.insertNode(textNode);\n            range.selectNodeContents(textNode);\n            range.collapse(false);\n\n            this.selection.setRange(range);\n        }\n    },\n    setAtPrev: function(node)\n    {\n        var prev = node.previousSibling;\n        if (prev)\n        {\n            prev = (prev.nodeType === 3 && this._isEmptyTextNode(prev)) ? prev.previousElementSibling : prev;\n            if (prev) this.setEnd(prev);\n        }\n    },\n    setAtNext: function(node)\n    {\n        var next = node.nextSibling;\n        if (next)\n        {\n            next = (next.nodeType === 3 && this._isEmptyTextNode(next)) ? next.nextElementSibling : next;\n            if (next) this.setStart(next);\n        }\n    },\n\n    // private\n    _setCaret: function(type, el)\n    {\n        var data = this.inspector.parse(el);\n        var node = data.getNode();\n\n        if (node)\n        {\n            this.component.clearActive();\n            this['_set' + type](node, data, data.getTag());\n        }\n    },\n    _setStart: function(node, data, tag)\n    {\n        // 1. text\n        if (data.isText())\n        {\n            this.editor.focus();\n            return this.setAtStart(node);\n        }\n        // 2. ul, ol\n        else if (tag === 'ul' || tag === 'ol')\n        {\n            node = data.findFirstNode('li');\n\n            var item = this.utils.getFirstElement(node);\n            var dataItem = this.inspector.parse(item);\n            if (item && dataItem.isComponent())\n            {\n                return this.setStart(dataItem.getComponent());\n            }\n        }\n        // 3. dl\n        else if (tag === 'dl')\n        {\n            node = data.findFirstNode('dt');\n        }\n        // 4. br / hr\n        else if (tag === 'br' || tag === 'hr')\n        {\n            return this.setBefore(node);\n        }\n        // 5. th, td\n        else if (tag === 'td' || tag === 'th')\n        {\n            var el = data.getFirstElement(node);\n            if (el)\n            {\n                return this.setStart(el);\n            }\n        }\n        // 6. table\n        else if (tag === 'table' || tag === 'tr')\n        {\n            return this.setStart(data.findFirstNode('th, td'));\n        }\n        // 7. figure code\n        else if (data.isComponentType('code') && !data.isFigcaption())\n        {\n            var code = data.findLastNode('pre, code');\n\n            this.editor.focus();\n            return this.setAtStart(code);\n        }\n        // 8. table component\n        else if (tag === 'figure' && data.isComponentType('table'))\n        {\n            var table = data.getTable();\n            var tableData = this.inspector.parse(table);\n\n            return this.setStart(tableData.findFirstNode('th, td'));\n        }\n        // 9. non editable components\n        else if (!data.isComponentType('table') && data.isComponent() && !data.isFigcaption())\n        {\n            return this.component.setActive(node);\n        }\n\n        this.editor.focus();\n\n        // set\n        if (!this._setInline(node, 'Start'))\n        {\n            this.setAtStart(node);\n        }\n    },\n    _setEnd: function(node, data, tag)\n    {\n        // 1. text\n        if (data.isText())\n        {\n            this.editor.focus();\n            return this.setAtEnd(node);\n        }\n        // 2. ul, ol\n        else if (tag === 'ul' || tag === 'ol')\n        {\n            node = data.findLastNode('li');\n\n            var item = this.utils.getLastElement(node);\n            var dataItem = this.inspector.parse(item);\n            if (item && dataItem.isComponent())\n            {\n                return this.setEnd(dataItem.getComponent());\n            }\n        }\n        // 3. dl\n        else if (tag === 'dl')\n        {\n            node = data.findLastNode('dd');\n        }\n        // 4. br / hr\n        else if (tag === 'br' || tag === 'hr')\n        {\n            return this.setAfter(node);\n        }\n        // 5. th, td\n        else if (tag === 'td' || tag === 'th')\n        {\n            var el = data.getLastElement();\n            if (el)\n            {\n                return this.setEnd(el);\n            }\n        }\n        // 6. table\n        else if (tag === 'table' || tag === 'tr')\n        {\n            return this.setEnd(data.findLastNode('th, td'));\n        }\n        // 7. figure code\n        else if (data.isComponentType('code') && !data.isFigcaption())\n        {\n            var code = data.findLastNode('pre, code');\n\n            this.editor.focus();\n            return this.setAtEnd(code);\n        }\n        // 8. table component\n        else if (tag === 'figure' && data.isComponentType('table'))\n        {\n            var table = data.getTable();\n            var tableData = this.inspector.parse(table);\n\n            return this.setEnd(tableData.findLastNode('th, td'));\n        }\n        // 9. non editable components\n        else if (!data.isComponentType('table') && data.isComponent() && !data.isFigcaption())\n        {\n            return this.component.setActive(node);\n        }\n\n        this.editor.focus();\n\n        // set\n        if (!this._setInline(node, 'End'))\n        {\n            // is element empty\n            if (this.utils.isEmpty(node))\n            {\n                return this.setStart(node);\n            }\n\n            this.setAtEnd(node);\n        }\n    },\n    _setBefore: function(node, data, tag)\n    {\n        // text\n        if (node.nodeType === 3)\n        {\n            return this.setAtBefore(node);\n        }\n        // inline\n        else if (data.isInline())\n        {\n            return this.setAtBefore(node);\n        }\n        // td / th\n        else if (data.isFirstTableCell())\n        {\n            return this.setAtPrev(data.getComponent());\n        }\n        else if (tag === 'td' || tag === 'th')\n        {\n            return this.setAtPrev(node);\n        }\n        // li\n        else if (data.isFirstListItem())\n        {\n            return this.setAtPrev(data.getList());\n        }\n        // figcaption\n        else if (data.isFigcaption())\n        {\n            return this.setStart(data.getComponent());\n        }\n        // component\n        else if (!data.isComponentType('table') && data.isComponent())\n        {\n            return this.setAtPrev(data.getComponent());\n        }\n        // block\n        else if (data.isBlock())\n        {\n            return this.setAtPrev(node);\n        }\n\n        this.editor.focus();\n        this.setAtBefore(node);\n\n    },\n    _setAfter: function(node, data, tag)\n    {\n        // text\n        if (node.nodeType === 3)\n        {\n            return this.setAtAfter(node);\n        }\n        // inline\n        else if (data.isInline())\n        {\n            return this.setAtAfter(node);\n        }\n        // td / th\n        else if (data.isLastTableCell())\n        {\n            return this.setAtNext(data.getComponent());\n        }\n        else if (tag === 'td' || tag === 'th')\n        {\n            return this.setAtNext(node);\n        }\n        // li\n        else if (data.isFirstListItem())\n        {\n            return this.setAtNext(data.getList());\n        }\n        // component\n        else if (!data.isComponentType('table') && data.isComponent())\n        {\n            return this.setAtNext(data.getComponent());\n        }\n        // block\n        else if (data.isBlock())\n        {\n            return this.setAtNext(node);\n        }\n\n        this.editor.focus();\n        this.setAtAfter(node);\n    },\n    _setInline: function(node, type)\n    {\n        // is first element inline (FF only)\n        var inline = this._hasInlineChild(node, (type === 'Start') ? 'first' : 'last');\n        if (inline)\n        {\n            if (type === 'Start')\n            {\n                this.setStart(inline);\n            }\n            else\n            {\n                this.setEnd(inline);\n            }\n\n            return true;\n        }\n    },\n    _isStartOrEnd: function(el, type)\n    {\n        var node = this.utils.getNode(el);\n        if (!node) return false;\n\n        var data = this.inspector.parse(node);\n        node = this._getStartEndNode(node, data, type);\n\n        if (node && (node.nodeType !== 3 && node.tagName !== 'LI'))\n        {\n            var html = (node.nodeType === 3) ? node.textContent : node.innerHTML;\n            html = this.utils.trimSpaces(html);\n            if (html === '') return true;\n        }\n\n        if (!data.isFigcaption() && data.isComponent() && !data.isComponentEditable())\n        {\n            return true;\n        }\n\n        var offset = this.offset.get(node, true);\n        if (offset)\n        {\n            return (type === 'First') ? (offset.start === 0) : (offset.end === this.offset.size(node, true));\n        }\n        else\n        {\n            return false;\n        }\n    },\n    _isInPage: function(node)\n    {\n        if (node && node.nodeType)\n        {\n            return (node === document.body) ? false : document.body.contains(node);\n        }\n        else\n        {\n            return false;\n        }\n    },\n    _hasInlineChild: function(el, pos)\n    {\n        var data = this.inspector.parse(el);\n        var node = (pos === 'first') ? data.getFirstNode() : data.getLastNode();\n        var $node = $R.dom(node);\n\n        if (node && node.nodeType !== 3\n            && this.inspector.isInlineTag(node.tagName)\n            && !$node.hasClass('redactor-component')\n             && !$node.hasClass('non-editable'))\n        {\n            return node;\n        }\n    },\n    _isEmptyTextNode: function(node)\n    {\n        var text = node.textContent.trim().replace(/\\n/, '');\n        text = this.utils.removeInvisibleChars(text);\n\n        return (text === '');\n    },\n    _getStartEndNode: function(node, data, type)\n    {\n        if (data.isFigcaption())\n        {\n            node = data.getFigcaption();\n        }\n        else if (data.isTable())\n        {\n            node = data['find' + type + 'Node']('th, td');\n        }\n        else if (data.isList())\n        {\n            node = data['find' + type + 'Node']('li');\n        }\n        else if (data.isComponentType('code'))\n        {\n            node = data.findLastNode('pre, code');\n        }\n\n        return node;\n    }\n});\n$R.add('service', 'selection', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    // is\n    is: function()\n    {\n        var sel = this.get();\n        if (sel)\n        {\n            var node = sel.anchorNode;\n            var data = this.inspector.parse(node);\n\n            return (data.isInEditor() || data.isEditor());\n        }\n\n        return false;\n    },\n    isCollapsed: function()\n    {\n        var sel = this.get();\n        var range = this.getRange();\n\n        if (sel && sel.isCollapsed) return true;\n        else if (range && range.toString().length === 0) return true;\n\n        return false;\n    },\n    isBackwards: function()\n    {\n        var backwards = false;\n        var sel = this.get();\n\n        if (sel && !sel.isCollapsed)\n        {\n            var range = document.createRange();\n            range.setStart(sel.anchorNode, sel.anchorOffset);\n            range.setEnd(sel.focusNode, sel.focusOffset);\n            backwards = range.collapsed;\n            range.detach();\n        }\n\n        return backwards;\n    },\n    isIn: function(el)\n    {\n        var node = $R.dom(el).get();\n        var current = this.getCurrent();\n\n        return (current && node) ? node.contains(current) : false;\n    },\n    isText: function()\n    {\n        var sel = this.get();\n        if (sel)\n        {\n            var el = sel.anchorNode;\n            var block = this.getBlock(el);\n            var blocks = this.getBlocks();\n\n            // td, th or hasn't block\n            if ((block && this.inspector.isTableCellTag(block.tagName)) || (block === false && blocks.length === 0))\n            {\n                return true;\n            }\n        }\n\n        return false;\n    },\n    isAll: function(el)\n    {\n        var node = this.utils.getNode(el);\n        if (!node) return false;\n\n        var isEditor = this.editor.isEditor(node);\n        var data = this.inspector.parse(node);\n\n        // component\n        if (!data.isFigcaption() && this.component.isNonEditable(node) && this.component.isActive(node))\n        {\n            return true;\n        }\n\n        if (isEditor)\n        {\n            var $editor = this.editor.getElement();\n            var output = $editor.html().replace(/<p><\\/p>$/i, '');\n            var htmlLen = this.getHtml(false).length;\n            var outputLen = output.length;\n\n            if (htmlLen !== outputLen)\n            {\n                return false;\n            }\n        }\n\n        // editor empty or collapsed\n        if ((isEditor && this.editor.isEmpty()) || this.isCollapsed())\n        {\n            return false;\n        }\n\n        // all\n        var offset = this.offset.get(node, true);\n        var size = this.offset.size(node, true);\n\n        // pre, table, or pre/code in figure\n        if (!isEditor && data.isComponentType('code'))\n        {\n            size = this.getText().trim().length;\n        }\n\n        if (offset && offset.start === 0 && offset.end === size)\n        {\n            return true;\n        }\n\n        return false;\n    },\n\n    // has\n    hasNonEditable: function()\n    {\n        var selected = this.getHtml();\n        var $wrapper = $R.dom('<div>').html(selected);\n\n        return (!this.isCollapsed() && $wrapper.find('.non-editable').length !== 0);\n    },\n\n    // set\n    setRange: function(range)\n    {\n        var sel = window.getSelection();\n        sel.removeAllRanges();\n        sel.addRange(range);\n    },\n    setAll: function(el)\n    {\n        var node = this.utils.getNode(el);\n        if (!node) return;\n\n        var data = this.inspector.parse(node);\n\n        this.component.clearActive();\n\n        this.editor.focus();\n        this.editor.saveScroll();\n        this.editor.disableNonEditables();\n\n        if (node && node.tagName === 'TABLE')\n        {\n            var first = data.findFirstNode('td, th');\n            var last = data.findLastNode('td, th');\n\n            $R.dom(first).prepend(this.marker.build('start'));\n            $R.dom(last).append(this.marker.build('end'));\n\n            this.restoreMarkers();\n        }\n        else if (!data.isFigcaption() && this.component.isNonEditable(node))\n        {\n            this.component.setActive(node);\n        }\n        else\n        {\n            if (data.isComponentType('code'))\n            {\n                node = data.getComponentCodeElement();\n                node.focus();\n            }\n\n            var range = document.createRange();\n            range.selectNodeContents(node);\n\n            this.setRange(range);\n        }\n\n        this.editor.enableNonEditables();\n        this.editor.restoreScroll();\n    },\n\n    // get\n    get: function()\n    {\n        var sel = window.getSelection();\n        return (sel.rangeCount > 0) ? sel : null;\n    },\n    getRange: function()\n    {\n        var sel = this.get();\n        return (sel) ? ((sel.getRangeAt(0)) ? sel.getRangeAt(0) : null) : null;\n    },\n    getTextBeforeCaret: function(num)\n    {\n        num = (typeof num === 'undefined') ? 1 : num;\n\n        var el = this.editor.getElement().get();\n        var range = this.getRange();\n        var text = false;\n        if (range)\n        {\n            range = range.cloneRange();\n            range.collapse(true);\n            range.setStart(el, 0);\n            text = range.toString().slice(-num);\n        }\n\n        return text;\n    },\n    getTextAfterCaret: function(num)\n    {\n        num = (typeof num === 'undefined') ? 1 : num;\n\n        var el = this.editor.getElement().get();\n        var range = this.getRange();\n        var text = false;\n        if (range)\n        {\n            var clonedRange = range.cloneRange();\n            clonedRange.selectNodeContents(el);\n            clonedRange.setStart(range.endContainer, range.endOffset);\n\n            text = clonedRange.toString().slice(0, num);\n        }\n\n        return text;\n    },\n    getPosition: function()\n    {\n        var range = this.getRange();\n        var pos = { top: 0, left: 0, width: 0, height: 0 };\n        if (window.getSelection && range.getBoundingClientRect)\n        {\n            range = range.cloneRange();\n            var offset = (range.startOffset-1);\n            range.setStart(range.startContainer, (offset < 0) ? 0 : offset);\n            var rect = range.getBoundingClientRect();\n            pos = { top: rect.top, left: rect.left, width: (rect.right - rect.left) , height: (rect.bottom - rect.top) };\n        }\n\n        return pos;\n    },\n    getCurrent: function()\n    {\n        var node = false;\n        var sel = this.get();\n        var component = this.component.getActive();\n\n        if (component)\n        {\n            node = component;\n        }\n        else if (sel && this.is())\n        {\n            var data = this.inspector.parse(sel.anchorNode);\n            node = (!data.isEditor()) ? sel.anchorNode : false;\n        }\n\n        return node;\n    },\n    getParent: function()\n    {\n        var node = false;\n        var current = this.getCurrent();\n        if (current)\n        {\n            var parent = current.parentNode;\n            var data = this.inspector.parse(parent);\n\n            node = (!data.isEditor()) ? parent : false;\n        }\n\n        return node;\n    },\n    getElement: function(el)\n    {\n        var node = el || this.getCurrent();\n        while (node)\n        {\n            var data = this.inspector.parse(node);\n            if (data.isElement() && data.isInEditor())\n            {\n                return node;\n            }\n\n            node = node.parentNode;\n        }\n\n        return false;\n    },\n    getInline: function(el)\n    {\n        var node = el || this.getCurrent();\n        var inline = false;\n        while (node)\n        {\n            if (this._isInlineNode(node))\n            {\n                inline = node;\n            }\n\n            node = node.parentNode;\n        }\n\n        return inline;\n    },\n    getInlineFirst: function(el)\n    {\n        var node = el || this.getCurrent();\n        while (node)\n        {\n            if (this._isInlineNode(node))\n            {\n                return node;\n            }\n\n            node = node.parentNode;\n        }\n\n        return false;\n    },\n    getInlineAll: function(el)\n    {\n        var node = el || this.getCurrent();\n        var inlines = [];\n        while (node)\n        {\n            if (this._isInlineNode(node))\n            {\n                inlines.push(node);\n            }\n\n            node = node.parentNode;\n        }\n\n        return inlines;\n    },\n    getBlock: function(el)\n    {\n        var node = el || this.getCurrent();\n        while (node)\n        {\n            var data = this.inspector.parse(node);\n            var isBlock = this.inspector.isBlockTag(node.tagName);\n\n            if (isBlock && data.isInEditor(node))\n            {\n                return node;\n            }\n\n            node = node.parentNode;\n        }\n\n        return false;\n    },\n    getInlinesAllSelected: function(options)\n    {\n        if (this.isAll()) return [];\n\n        var inlines = this.getInlines({ all: true });\n        var textNodes = this.getNodes({ textnodes: true, inline: false });\n        var selected = this.getText().replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n        var finalNodes = [];\n\n        if (textNodes.length !== 0)\n        {\n            return finalNodes;\n        }\n\n        if (selected === '')\n        {\n            finalNodes = inlines;\n        }\n        else if (inlines.length > 1)\n        {\n            for (var i = 0; i < inlines.length; i++)\n            {\n                if (this._isTextSelected(inlines[i], selected))\n                {\n                    finalNodes.push(inlines[i]);\n                }\n            }\n        }\n        else if (inlines.length === 1)\n        {\n            if (this._isTextSelected(inlines[0], selected))\n            {\n                finalNodes = inlines;\n            }\n        }\n\n        finalNodes = (options && options.tags) ? this._filterNodesByTags(finalNodes, options.tags) : finalNodes;\n\n        return finalNodes;\n    },\n    getInlines: function(options)\n    {\n        var nodes = this.getNodes();\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var node;\n            if (options && options.all)\n            {\n                node = nodes[i];\n                while (node)\n                {\n                    if (this._isInlineNode(node) && !this._isInNodesArray(filteredNodes, node))\n                    {\n                        filteredNodes.push(node);\n                    }\n\n                    node = node.parentNode;\n                }\n            }\n            else\n            {\n                node = this.getInline(nodes[i]);\n                if (node && !this._isInNodesArray(filteredNodes, node))\n                {\n                    filteredNodes.push(node);\n                }\n            }\n        }\n\n        // filter\n        filteredNodes = (options && options.tags) ? this._filterNodesByTags(filteredNodes, options.tags) : filteredNodes;\n        filteredNodes = (options && options.inside) ? this._filterInlinesInside(filteredNodes, options) : filteredNodes;\n\n        return filteredNodes;\n    },\n    getBlocks: function(options)\n    {\n        var nodes = this.getNodes();\n        var block = this.getBlock();\n        nodes = (nodes.length === 0 && block) ? [block] : nodes;\n\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var node = this.getBlock(nodes[i]);\n            if (node && !this._isInNodesArray(filteredNodes, node))\n            {\n                filteredNodes.push(node);\n            }\n        }\n\n        // filter\n        filteredNodes = (options && options.tags) ? this._filterNodesByTags(filteredNodes, options.tags) : filteredNodes;\n        filteredNodes = (options && options.first) ? this._filterBlocksFirst(filteredNodes, options) : filteredNodes;\n\n        return filteredNodes;\n    },\n    getElements: function(options)\n    {\n        var nodes = this.getNodes({ textnodes: false });\n        var block = this.getBlock();\n        nodes = (nodes.length === 0 && block) ? [block] : nodes;\n\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            if (!this._isInNodesArray(filteredNodes, nodes[i]))\n            {\n                filteredNodes.push(nodes[i]);\n            }\n        }\n\n        // filter\n        filteredNodes = (options && options.tags) ? this._filterNodesByTags(filteredNodes, options.tags) : filteredNodes;\n\n        return filteredNodes;\n    },\n    getNodes: function(options)\n    {\n        var nodes = [];\n        var activeComponent = this.component.getActive();\n        if (activeComponent)\n        {\n            nodes = this._getNodesComponent(activeComponent);\n        }\n        else if (this.isCollapsed())\n        {\n            var current = this.getCurrent();\n            nodes = (current) ? [current] : [];\n        }\n        else if (this.is() && !activeComponent)\n        {\n            nodes = this._getRangeSelectedNodes();\n        }\n\n        // filter\n        nodes = this._filterServicesNodes(nodes);\n        nodes = this._filterEditor(nodes);\n\n        // options\n        nodes = (options && options.tags) ? this._filterNodesByTags(nodes, options.tags) : nodes;\n        nodes = (options && options.textnodes) ? this._filterNodesTexts(nodes, options) : nodes;\n        nodes = (options && !options.textnodes) ? this._filterNodesElements(nodes) : nodes;\n\n        return nodes;\n    },\n\n    // text & html\n    getText: function()\n    {\n        var sel = this.get();\n        return (sel) ? this.utils.removeInvisibleChars(sel.toString()) : '';\n    },\n    getHtml: function(clean)\n    {\n        var html = '';\n        var sel = this.get();\n        if (sel)\n        {\n            var container = document.createElement('div');\n            var len = sel.rangeCount;\n            for (var i = 0; i < len; ++i)\n            {\n                container.appendChild(sel.getRangeAt(i).cloneContents());\n            }\n\n            html = container.innerHTML;\n            html = (clean !== false) ? this.cleaner.output(html) : html;\n            html = html.replace(/<p><\\/p>$/i, '');\n        }\n\n        return html;\n    },\n\n    // clear\n    clear: function()\n    {\n        this.component.clearActive();\n        this.get().removeAllRanges();\n    },\n\n    // collapse\n    collapseToStart: function()\n    {\n        var sel = this.get();\n        if (sel && !sel.isCollapsed) sel.collapseToStart();\n    },\n    collapseToEnd: function()\n    {\n        var sel = this.get();\n        if (sel && !sel.isCollapsed) sel.collapseToEnd();\n    },\n\n    // save\n    saveActiveComponent: function()\n    {\n        var activeComponent = this.component.getActive();\n        if (activeComponent)\n        {\n            this.savedComponent = activeComponent;\n            return true;\n        }\n\n        return false;\n    },\n    restoreActiveComponent: function()\n    {\n        if (this.savedComponent)\n        {\n            this.component.setActive(this.savedComponent);\n            return true;\n        }\n\n        return false;\n    },\n    save: function()\n    {\n        this._clearSaved();\n\n        var el = this.getElement();\n        if (el && (el.tagName === 'TD' || el.tagName === 'TH') && el.innerHTML === '')\n        {\n            this.savedElement = el;\n        }\n        else if (!this.saveActiveComponent())\n        {\n            this.saved = this.offset.get();\n        }\n    },\n    restore: function()\n    {\n        if (!this.saved && !this.savedComponent && !this.savedElement) return;\n\n        this.editor.saveScroll();\n\n        if (this.savedElement)\n        {\n            this.caret.setStart(this.savedElement);\n        }\n        else if (!this.restoreActiveComponent())\n        {\n            this.offset.set(this.saved);\n        }\n\n        this._clearSaved();\n        this.editor.restoreScroll();\n    },\n    saveMarkers: function()\n    {\n        this._clearSaved();\n\n        if (!this.saveActiveComponent())\n        {\n            this.marker.insert();\n        }\n    },\n    restoreMarkers: function()\n    {\n        this.editor.saveScroll();\n\n        if (!this.restoreActiveComponent())\n        {\n            this.marker.restore();\n        }\n\n        this._clearSaved();\n        this.editor.restoreScroll();\n    },\n\n    // private\n    _getNextNode: function(node)\n    {\n        if (node.hasChildNodes()) return node.firstChild;\n\n        while (node && !node.nextSibling)\n        {\n            node = node.parentNode;\n        }\n\n        if (!node) return null;\n\n        return node.nextSibling;\n    },\n    _getNodesComponent: function(component)\n    {\n        var current = this.getCurrent();\n        var data = this.inspector.parse(current);\n\n        return (data.isFigcaption()) ? [data.getFigcaption()] : [component];\n    },\n    _getRangeSelectedNodes: function()\n    {\n        var nodes = [];\n        var range = this.getRange();\n        var node = range.startContainer;\n        var startNode = range.startContainer;\n        var endNode = range.endContainer;\n        var $editor = this.editor.getElement();\n\n        // editor\n        if (startNode === $editor.get() && this.isAll())\n        {\n            nodes = this.utils.getChildNodes($editor);\n        }\n        // single node\n        else if (node == endNode)\n        {\n            nodes = [node];\n        }\n        else\n        {\n            while (node && node != endNode)\n            {\n                nodes.push(node = this._getNextNode(node));\n            }\n\n            node = range.startContainer;\n            while (node && node != range.commonAncestorContainer)\n            {\n                nodes.unshift(node);\n                node = node.parentNode;\n            }\n        }\n\n        return nodes;\n    },\n    _isInNodesArray: function(nodes, node)\n    {\n        return (nodes.indexOf(node) !== -1);\n    },\n    _filterEditor: function(nodes)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var data = this.inspector.parse(nodes[i]);\n            if (data.isInEditor())\n            {\n                filteredNodes.push(nodes[i]);\n            }\n        }\n\n        return filteredNodes;\n    },\n    _filterServicesNodes: function(nodes)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var $el = $R.dom(nodes[i]);\n            var skip = false;\n\n            if (nodes[i] && nodes[i].nodeType === 3 && this.utils.isEmpty(nodes[i])) skip = true;\n            if ($el.hasClass('redactor-script-tag')\n                || $el.hasClass('redactor-component-caret')\n                || $el.hasClass('redactor-selection-marker')\n                || $el.hasClass('non-editable')) skip = true;\n\n            if (!skip)\n            {\n                filteredNodes.push(nodes[i]);\n            }\n        }\n\n        return filteredNodes;\n    },\n    _filterNodesTexts: function(nodes, options)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            if (nodes[i].nodeType === 3 || (options.keepbr && nodes[i].tagName === 'BR'))\n            {\n                var inline = this.getInline(nodes[i]);\n                var isInline = (inline && options && options.inline === false);\n                if (!isInline)\n                {\n                    filteredNodes.push(nodes[i]);\n                }\n            }\n        }\n\n        return filteredNodes;\n    },\n    _filterNodesElements: function(nodes)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            if (nodes[i].nodeType !== 3)\n            {\n                filteredNodes.push(nodes[i]);\n            }\n        }\n\n        return filteredNodes;\n    },\n    _filterNodesByTags: function(nodes, tags, passtexts)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            if (passtexts && nodes[i].nodeType === 3)\n            {\n                filteredNodes.push(nodes[i]);\n            }\n            else if (nodes[i].nodeType !== 3)\n            {\n                var nodeTag = nodes[i].tagName.toLowerCase();\n                if (tags.indexOf(nodeTag.toLowerCase()) !== -1)\n                {\n                    filteredNodes.push(nodes[i]);\n                }\n            }\n        }\n\n        return filteredNodes;\n    },\n    _filterBlocksFirst: function(nodes)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var $node = $R.dom(nodes[i]);\n            var parent = $node.parent().get();\n            var isFirst = ($node.parent().hasClass('redactor-in'));\n            var isCellParent = (parent && (parent.tagName === 'TD' || parent.tagName === 'TH'));\n            if (isFirst || isCellParent)\n            {\n                filteredNodes.push(nodes[i]);\n            }\n        }\n\n        return filteredNodes;\n    },\n    _filterInlinesInside: function(nodes)\n    {\n        var filteredNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            if (window.getSelection().containsNode(nodes[i], true))\n            {\n                filteredNodes.push(nodes[i]);\n            }\n        }\n\n        return filteredNodes;\n    },\n    _isTextSelected: function(node, selected)\n    {\n        var text = this.utils.removeInvisibleChars(node.textContent);\n\n        return (\n            selected === text\n            || text.search(selected) !== -1\n            || selected.search(new RegExp('^' + text)) !== -1\n            || selected.search(new RegExp(text + '$')) !== -1\n        );\n    },\n    _isInlineNode: function(node)\n    {\n        var data = this.inspector.parse(node);\n\n        return (this.inspector.isInlineTag(node.tagName) && data.isInEditor());\n    },\n    _clearSaved: function()\n    {\n        this.saved = false;\n        this.savedComponent = false;\n        this.savedElement = false;\n    }\n});\n$R.add('service', 'element', {\n    init: function(app)\n    {\n        this.app = app;\n        this.rootElement = app.rootElement;\n\n        // local\n        this.$element = {};\n        this.type = 'inline';\n    },\n    start: function()\n    {\n        this._build();\n        this._buildType();\n    },\n\n    // public\n    isType: function(type)\n    {\n        return (type === this.type);\n    },\n    getType: function()\n    {\n        return this.type;\n    },\n    getElement: function()\n    {\n        return this.$element;\n    },\n\n    // private\n    _build: function()\n    {\n        this.$element = $R.dom(this.rootElement);\n    },\n    _buildType: function()\n    {\n        var tag = this.$element.get().tagName;\n\n        this.type = (tag === 'TEXTAREA') ? 'textarea' : this.type;\n        this.type = (tag === 'DIV') ? 'div' : this.type;\n        this.type = (this.opts.inline) ? 'inline' : this.type;\n    }\n});\n$R.add('service', 'editor', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.scrolltop = false;\n        this.pasting = false;\n    },\n\n    // start\n    start: function()\n    {\n        this._build();\n    },\n\n    // focus\n    focus: function()\n    {\n        if (!this.isFocus() && !this._isContenteditableFocus())\n        {\n            this.saveScroll();\n            this.$editor.focus();\n            this.restoreScroll();\n        }\n    },\n    startFocus: function()\n    {\n        this.caret.setStart(this.getFirstNode());\n    },\n    endFocus: function()\n    {\n        this.caret.setEnd(this.getLastNode());\n    },\n\n    // pasting\n    isPasting: function()\n    {\n        return this.pasting;\n    },\n    enablePasting: function()\n    {\n        this.pasting = true;\n    },\n    disablePasting: function()\n    {\n        this.pasting = false;\n    },\n\n    // scroll\n    saveScroll: function()\n    {\n        this.scrolltop = this._getScrollTarget().scrollTop();\n    },\n    restoreScroll: function()\n    {\n        if (this.scrolltop !== false)\n        {\n            this._getScrollTarget().scrollTop(this.scrolltop);\n            this.scrolltop = false;\n        }\n    },\n\n    // non editables\n    disableNonEditables: function()\n    {\n        this.$noneditables = this.$editor.find('[contenteditable=false]');\n        this.$noneditables.attr('contenteditable', true);\n    },\n    enableNonEditables: function()\n    {\n        if (this.$noneditables)\n        {\n            setTimeout(function() { this.$noneditables.attr('contenteditable', false); }.bind(this), 1);\n        }\n    },\n\n    // nodes\n    getFirstNode: function()\n    {\n        return this.$editor.contents()[0];\n    },\n    getLastNode: function()\n    {\n        var nodes = this.$editor.contents();\n\n        return nodes[nodes.length-1];\n    },\n\n    // utils\n    isSourceMode: function()\n    {\n        var $source = this.source.getElement();\n\n        return $source.hasClass('redactor-source-open');\n    },\n    isEditor: function(el)\n    {\n        var node = $R.dom(el).get();\n\n        return (node === this.$editor.get());\n    },\n    isEmpty: function(keeplists)\n    {\n        return this.utils.isEmptyHtml(this.$editor.html(), false, keeplists);\n    },\n    isFocus: function()\n    {\n        var $active = $R.dom(document.activeElement);\n        var isComponentSelected = (this.$editor.find('.redactor-component-active').length !== 0);\n\n        return (isComponentSelected || $active.closest('.redactor-in-' + this.uuid).length !== 0);\n    },\n    setEmpty: function()\n    {\n        this.$editor.html(this.opts.emptyHtml);\n    },\n\n    // element\n    getElement: function()\n    {\n        return this.$editor;\n    },\n\n    // private\n    _build: function()\n    {\n        var $element = this.element.getElement();\n        var editableElement = (this.element.isType('textarea')) ? '<div>' : $element.get();\n\n        this.$editor = $R.dom(editableElement);\n    },\n    _getScrollTarget: function()\n    {\n        return (this.opts.scrollTarget) ? $R.dom(this.opts.scrollTarget) : this.$doc;\n    },\n    _isContenteditableFocus: function()\n    {\n        var block = this.selection.getBlock();\n        var $blockParent = (block) ? $R.dom(block).closest('[contenteditable=true]').not('.redactor-in') : [];\n\n        return ($blockParent.length !== 0);\n    }\n});\n$R.add('service', 'container', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    // public\n    start: function()\n    {\n        this._build();\n    },\n    getElement: function()\n    {\n        return this.$container;\n    },\n\n    // private\n    _build: function()\n    {\n        var tag = (this.element.isType('inline')) ? '<span>' : '<div>';\n        this.$container = $R.dom(tag);\n    }\n});\n$R.add('service', 'source', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.$source = {};\n        this.content = '';\n    },\n    // public\n    start: function()\n    {\n        this._build();\n        this._buildName();\n        this._buildStartedContent();\n    },\n    getElement: function()\n    {\n        return this.$source;\n    },\n    getCode: function()\n    {\n        return this.$source.val();\n    },\n    getName: function()\n    {\n        return this.$source.attr('name');\n    },\n    getStartedContent: function()\n    {\n        return this.content;\n    },\n    setCode: function(html)\n    {\n        return this.insertion.set(html, true, false);\n    },\n    isNameGenerated: function()\n    {\n        return (this.name);\n    },\n\n    // private\n    _build: function()\n    {\n        var $element = this.element.getElement();\n        var isTextarea = this.element.isType('textarea');\n        var sourceElement = (isTextarea) ? $element.get() : '<textarea>';\n\n        this.$source = $R.dom(sourceElement);\n    },\n    _buildName: function()\n    {\n        var $element = this.element.getElement();\n\n        this.name = $element.attr('name');\n        this.$source.attr('name', (this.name) ? this.name : 'content-' + this.uuid);\n    },\n    _buildStartedContent: function()\n    {\n        var $element = this.element.getElement();\n        var content = (this.element.isType('textarea')) ? $element.val() : $element.html();\n\n        this.content = content.trim();\n    }\n});\n$R.add('service', 'statusbar', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.$statusbar = {};\n        this.items = [];\n    },\n    // public\n    start: function()\n    {\n        this.$statusbar = $R.dom('<ul>');\n        this.$statusbar.attr('dir', this.opts.direction);\n    },\n    add: function(name, html)\n    {\n        return this.update(name, html);\n    },\n    update: function(name, html)\n    {\n        var $item;\n        if (typeof this.items[name] !== 'undefined')\n        {\n            $item = this.items[name];\n        }\n        else\n        {\n            $item = $R.dom('<li>');\n            this.$statusbar.append($item);\n            this.items[name] = $item;\n        }\n\n        return $item.html(html);\n    },\n    get: function(name)\n    {\n        return (this.items[name]) ? this.items[name] : false;\n    },\n    remove: function(name)\n    {\n        if (this.items[name])\n        {\n            this.items[name].remove();\n            delete this.items[name];\n        }\n    },\n    getItems: function()\n    {\n        return this.items;\n    },\n    removeItems: function()\n    {\n        this.items = {};\n        this.$statusbar.html('');\n    },\n    getElement: function()\n    {\n        return this.$statusbar;\n    }\n});\n$R.add('service', 'toolbar', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.buttons = [];\n        this.dropdownOpened = false;\n        this.buttonsObservers = {};\n    },\n    // public\n    start: function()\n    {\n        if (this.is())\n        {\n            this.opts.activeButtons = (this.opts.activeButtonsAdd) ? this._extendActiveButtons() : this.opts.activeButtons;\n            this.create();\n        }\n    },\n    stopObservers: function()\n    {\n        this.buttonsObservers = {};\n    },\n    create: function()\n    {\n        this.$wrapper = $R.dom('<div>');\n        this.$toolbar = $R.dom('<div>');\n    },\n    observe: function()\n    {\n        if (!this.is()) return;\n\n        this.setButtonsInactive();\n\n        var button, observer;\n\n        // observers\n        for (var name in this.buttonsObservers)\n        {\n            observer = this.buttonsObservers[name];\n            button = this.getButton(name);\n            this.app.broadcast('button.' + observer + '.observe', button);\n        }\n\n        // inline buttons\n        var buttons = this.opts.activeButtons;\n        var inlines = this.selection.getInlinesAllSelected();\n        var current = this.selection.getInline();\n        if (this.selection.isCollapsed() && current)\n        {\n            inlines.push(current);\n        }\n\n        var tags = this._inlinesToTags(inlines);\n        for (var key in buttons)\n        {\n            if (tags.indexOf(key) !== -1)\n            {\n                button = this.getButton(buttons[key]);\n                button.setActive();\n            }\n\n        }\n    },\n\n    // is\n    is: function()\n    {\n        return !(!this.opts.toolbar || (this.detector.isMobile() && this.opts.air));\n    },\n    isAir: function()\n    {\n        return (this.is()) ? this.$toolbar.hasClass('redactor-air') : false;\n    },\n    isFixed: function()\n    {\n        return (this.is()) ? this.$toolbar.hasClass('redactor-toolbar-fixed') : false;\n    },\n    isContextBar: function()\n    {\n        var $bar = this.$body.find('#redactor-context-toolbar-' + this.uuid);\n        return $bar.hasClass('open');\n    },\n    isTarget: function()\n    {\n        return (this.opts.toolbarFixedTarget !== document);\n    },\n\n    // get\n    getElement: function()\n    {\n        return this.$toolbar;\n    },\n    getWrapper: function()\n    {\n        return this.$wrapper;\n    },\n    getDropdown: function()\n    {\n        return this.dropdownOpened;\n    },\n    getTargetElement: function()\n    {\n        return $R.dom(this.opts.toolbarFixedTarget);\n    },\n    getButton: function(name)\n    {\n        var $btn = this._findButton('.re-' + name);\n\n        return ($btn.length !== 0) ? $btn.dataget('data-button-instance') : false;\n    },\n    getButtonByIndex: function(index)\n    {\n        var $btn = this.$toolbar.find('.re-button').eq(index);\n\n        return ($btn.length !== 0) ? $btn.dataget('data-button-instance') : false;\n    },\n    getButtons: function()\n    {\n        var buttons = [];\n        this._findButtons().each(function(node)\n        {\n            var $node = $R.dom(node);\n            buttons.push($node.dataget('data-button-instance'));\n        });\n\n        return buttons;\n    },\n    getButtonsKeys: function()\n    {\n        var keys = [];\n        this._findButtons().each(function(node)\n        {\n            var $node = $R.dom(node);\n            keys.push($node.attr('data-re-name'));\n        });\n\n        return keys;\n    },\n\n    // add\n    addButton: function(name, btnObj, position, $el, start)\n    {\n        position = position || 'end';\n\n        var index = this._getButtonIndex(name);\n        var $button = $R.create('toolbar.button', this.app, name, btnObj);\n\n        if (btnObj.observe)\n        {\n            this.opts.activeButtonsObservers[name] = { observe: btnObj.observe, button: $button };\n        }\n\n        // api added\n        if (start !== true)\n        {\n            if (index === 0) position = 'first';\n            else if (index !== -1)\n            {\n                var $elm = this.getButtonByIndex(index-1);\n                if ($elm)\n                {\n                    position = 'after';\n                    $el = $elm;\n                }\n            }\n        }\n\n        if (this.is())\n        {\n            if (position === 'first') this.$toolbar.prepend($button);\n            else if (position === 'after') $el.after($button);\n            else if (position === 'before') $el.before($button);\n            else this.$toolbar.append($button);\n        }\n\n        return $button;\n    },\n    addButtonFirst: function(name, btnObj)\n    {\n        return this.addButton(name, btnObj, 'first');\n    },\n    addButtonAfter: function(after, name, btnObj)\n    {\n        var $btn = this.getButton(after);\n\n        return ($btn) ? this.addButton(name, btnObj, 'after', $btn) : this.addButton(name, btnObj);\n    },\n    addButtonBefore: function(before, name, btnObj)\n    {\n        var $btn = this.getButton(before);\n\n        return ($btn) ? this.addButton(name, btnObj, 'before', $btn) : this.addButton(name, btnObj);\n    },\n    addButtonObserver: function(name, observer)\n    {\n        this.buttonsObservers[name] = observer;\n    },\n\n    // set\n    setButtons: function(buttons)\n    {\n        this.buttons = buttons;\n    },\n    setDropdown: function(dropdown)\n    {\n        this.dropdownOpened = dropdown;\n    },\n    setButtonsInactive: function()\n    {\n        var $buttons = this.getButtons();\n        for (var i = 0; i < $buttons.length; i++)\n        {\n            $buttons[i].setInactive();\n        }\n    },\n    setButtonsActive: function()\n    {\n        var $buttons = this.getButtons();\n        for (var i = 0; i < $buttons.length; i++)\n        {\n            $buttons[i].setActive();\n        }\n    },\n\n    // disable & enable\n    disableButtons: function()\n    {\n        var $buttons = this.getButtons();\n        for (var i = 0; i < $buttons.length; i++)\n        {\n            $buttons[i].disable();\n        }\n    },\n    enableButtons: function()\n    {\n        var $buttons = this.getButtons();\n        for (var i = 0; i < $buttons.length; i++)\n        {\n            $buttons[i].enable();\n        }\n\n    },\n\n    // private\n    _getButtonIndex: function(name)\n    {\n        var index = this.buttons.indexOf(name);\n\n        return (index === -1) ? false : index;\n    },\n    _findButton: function(selector)\n    {\n        return (this.is()) ? this.$toolbar.find(selector) : $R.dom();\n    },\n    _findButtons: function()\n    {\n        return (this.is()) ? this.$toolbar.find('.re-button') : $R.dom();\n    },\n    _extendActiveButtons: function()\n    {\n        return $R.extend({}, this.opts.activeButtons, this.opts.activeButtonsAdd);\n    },\n    _inlinesToTags: function(inlines)\n    {\n        var tags = [];\n        for (var i = 0; i < inlines.length; i++)\n        {\n            tags.push(inlines[i].tagName.toLowerCase());\n        }\n\n        return tags;\n    }\n});\n$R.add('class', 'toolbar.button', {\n    mixins: ['dom'],\n    init: function(app, name, btnObj)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.lang = app.lang;\n        this.$body = app.$body;\n        this.toolbar = app.toolbar;\n        this.detector = app.detector;\n\n        // local\n        this.obj = btnObj;\n        this.name = name;\n        this.dropdown = false;\n        this.tooltip = false;\n\n        // init\n        this._init();\n    },\n    // is\n    isActive: function()\n    {\n        return this.hasClass('redactor-button-active');\n    },\n    isDisabled: function()\n    {\n        return this.hasClass('redactor-button-disabled');\n    },\n\n    // has\n    hasIcon: function()\n    {\n        return (this.obj.icon && !this.opts.buttonsTextLabeled);\n    },\n\n    // set\n    setDropdown: function(dropdown)\n    {\n        this.obj.dropdown = dropdown;\n        this.obj.message = false;\n        this.dropdown = $R.create('toolbar.dropdown', this.app, this.name, this.obj.dropdown);\n        this.attr('data-dropdown', true);\n    },\n    setMessage: function(message, args)\n    {\n        this.obj.message = message;\n        this.obj.args = args;\n        this.obj.dropdown = false;\n    },\n    setApi: function(api, args)\n    {\n        this.obj.api = api;\n        this.obj.args = args;\n        this.obj.dropdown = false;\n    },\n    setTitle: function(title)\n    {\n        this.obj.title = this.lang.parse(title);\n        this.obj.tooltip = this.obj.title;\n\n        this.attr({ 'alt': this.obj.tooltip, 'aria-label': this.obj.tooltip });\n        if (!this.attr('data-re-icon')) this.html(this.obj.title);\n    },\n    setTooltip: function(tooltip)\n    {\n        this.obj.tooltip = this.lang.parse(tooltip);\n        this.attr({ 'alt': this.obj.tooltip, 'aria-label': this.obj.tooltip });\n    },\n    setIcon: function(icon)\n    {\n        if (this.opts.buttonsTextLabeled) return;\n\n        this.obj.icon = true;\n        this.$icon = $R.dom(icon);\n\n        this.html('');\n        this.append(this.$icon);\n        this.attr('data-re-icon', true);\n        this.addClass('re-button-icon');\n        this.setTooltip(this.obj.title);\n        this._buildTooltip();\n    },\n    setActive: function()\n    {\n        this.addClass('redactor-button-active');\n    },\n    setInactive: function()\n    {\n        this.removeClass('redactor-button-active');\n    },\n\n    // hide\n    hideTooltip: function()\n    {\n        this.$body.find('.re-button-tooltip').remove();\n    },\n\n    // get\n    getDropdown: function()\n    {\n        return this.dropdown;\n    },\n\n    // enable & disable\n    disable: function()\n    {\n        this.addClass('redactor-button-disabled');\n    },\n    enable: function()\n    {\n        this.removeClass('redactor-button-disabled');\n    },\n\n    // toggle\n    toggle: function(e)\n    {\n        if (e) e.preventDefault();\n        if (this.isDisabled()) return;\n\n        if (this.obj.dropdown)\n        {\n            this.dropdown.toggle(e);\n        }\n        else if (this.obj.api)\n        {\n            // broadcast\n            this.app.api(this.obj.api, this.obj.args, this.name);\n        }\n        else if (this.obj.message)\n        {\n            // broadcast\n            this.app.broadcast(this.obj.message, this.obj.args, this.name);\n        }\n\n        this.hideTooltip();\n    },\n\n    // private\n    _init: function()\n    {\n        // parse\n        this._parseTitle();\n        this._parseTooltip();\n\n        // build\n        this._build();\n        this._buildCallback();\n        this._buildAttributes();\n        this._buildObserver();\n\n        if (this.hasIcon())\n        {\n            this._buildIcon();\n            this._buildTooltip();\n        }\n        else\n        {\n            this.html(this.obj.title);\n        }\n    },\n    _parseTooltip: function()\n    {\n        this.obj.tooltip = (this.obj.tooltip) ? this.lang.parse(this.obj.tooltip) : this.obj.title;\n    },\n    _parseTitle: function()\n    {\n        this.obj.title = this.lang.parse(this.obj.title);\n    },\n    _build: function()\n    {\n        this.parse('<a>');\n        this.addClass('re-button re-' + this.name);\n        this.attr('data-re-name', this.name);\n        this.dataset('data-button-instance', this);\n\n        if (this.obj.dropdown) this.setDropdown(this.obj.dropdown);\n    },\n    _buildCallback: function()\n    {\n        this.on('click', this.toggle.bind(this));\n    },\n    _buildAttributes: function()\n    {\n        var attrs = {\n            'href': '#',\n            'alt': this.obj.tooltip,\n            'rel': this.name,\n            'role': 'button',\n            'aria-label': this.obj.tooltip,\n            'tabindex': '-1'\n        };\n\n        this.attr(attrs);\n    },\n    _buildObserver: function()\n    {\n        if (typeof this.obj.observe !== 'undefined')\n        {\n            this.toolbar.addButtonObserver(this.name, this.obj.observe);\n        }\n    },\n    _buildIcon: function()\n    {\n        var icon = this.obj.icon;\n        var isHtml = (/(<([^>]+)>)/ig.test(icon));\n\n        this.$icon = (isHtml) ? $R.dom(icon) : $R.dom('<i>');\n        if (!isHtml) this.$icon.addClass('re-icon-' + this.name);\n\n        this.append(this.$icon);\n        this.attr('data-re-icon', true);\n        this.addClass('re-button-icon');\n    },\n    _buildTooltip: function()\n    {\n        if (this.detector.isDesktop())\n        {\n            this.tooltip = $R.create('toolbar.button.tooltip', this.app, this);\n        }\n    }\n});\n$R.add('class', 'toolbar.button.tooltip', {\n    mixins: ['dom'],\n    init: function(app, $button)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.$body = app.$body;\n        this.toolbar = app.toolbar;\n\n        // local\n        this.$button = $button;\n        this.created = false;\n\n        // init\n        this._init();\n    },\n    open: function()\n    {\n        if (this.$button.hasClass('redactor-button-disabled') || this.$button.hasClass('redactor-button-active')) return;\n\n        this.created = true;\n        this.parse('<span>');\n        this.addClass('re-button-tooltip');\n        this.$body.append(this);\n        this.html(this.$button.attr('alt'));\n\n        var offset = this.$button.offset();\n        var position = 'absolute';\n        var height = this.$button.height();\n        var width = this.$button.width();\n        var arrowOffset = 4;\n\n        this.css({\n            top: (offset.top + height + arrowOffset) + 'px',\n            left: (offset.left + width/2 - this.width()/2) + 'px',\n            position: position\n        });\n\n        this.show();\n    },\n    close: function()\n    {\n        if (!this.created || this.$button.hasClass('redactor-button-disabled')) return;\n\n        this.remove();\n        this.created = false;\n    },\n\n    // private\n    _init: function()\n    {\n        this.$button.on('mouseover', this.open.bind(this));\n        this.$button.on('mouseout', this.close.bind(this));\n    }\n});\n$R.add('class', 'toolbar.dropdown', {\n    mixins: ['dom'],\n    init: function(app, name, items)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.$win = app.$win;\n        this.$doc = app.$doc;\n        this.$body = app.$body;\n        this.animate = app.animate;\n        this.toolbar = app.toolbar;\n\n        // local\n        this.name = name;\n        this.started = false;\n        this.items = items;\n        this.$items = [];\n    },\n    // public\n    toggle: function(e)\n    {\n        if (!this.started)\n        {\n            this._build();\n        }\n\n        // toggle\n        if (this.isOpened() && this.isActive())\n        {\n            this.close(false);\n        }\n        else\n        {\n            this.open(e);\n        }\n    },\n    isOpened: function()\n    {\n        var $dropdown = this.$body.find('.redactor-dropdown-' + this.uuid + '.open');\n\n        return ($dropdown.length !== 0 && $dropdown.attr('data-re-name') === this.name);\n    },\n    isActive: function()\n    {\n        var $dropdown = this.$body.find('#redactor-dropdown-' + this.uuid + '-' + this.name + '.open');\n        return ($dropdown.length !== 0);\n    },\n    getName: function()\n    {\n        return this.attr('data-re-name');\n    },\n    getItem: function(name)\n    {\n        return this.$items[name];\n    },\n    getItemsByClass: function(classname)\n    {\n        var result = [];\n        for (var key in this.$items)\n        {\n            if (typeof this.$items[key] === 'object' && this.$items[key].hasClass(classname))\n            {\n                result.push(this.$items[key]);\n            }\n        }\n\n        return result;\n    },\n    open: function(e)\n    {\n        this._closeAll();\n\n        this.$btn = this.toolbar.getButton(this.name);\n        this.app.broadcast('dropdown.open', e, this, this.$btn);\n        this.toolbar.setDropdown(this);\n\n        this.show();\n        this.removeClass('redactor-animate-hide');\n        this.addClass('open');\n        this._observe();\n\n        this.$btn.hideTooltip();\n        this.$btn.setActive();\n\n        this.$doc.on('keyup.redactor.dropdown-' + this.uuid, this._handleKeyboard.bind(this));\n        this.$doc.on('click.redactor.dropdown-' + this.uuid + ' touchstart.redactor.dropdown-' + this.uuid, this.close.bind(this));\n\n        this.updatePosition();\n        this.app.broadcast('dropdown.opened', e, this, this.$btn);\n\n    },\n    close: function(e, animate)\n    {\n        if (e)\n        {\n            var $el = $R.dom(e.target);\n            if (this._isButton(e) || $el.hasClass('redactor-dropdown-not-close') || $el.hasClass('redactor-dropdown-item-disabled'))\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n\n        this.app.broadcast('dropdown.close', this, this.$btn);\n        this.toolbar.setDropdown(false);\n\n        this.$btn.setInactive();\n        if (animate === false)\n        {\n            this._close();\n        }\n        else\n        {\n            this.animate.start(this, 'fadeOut', this._close.bind(this));\n        }\n    },\n    updatePosition: function()\n    {\n        var isFixed = this.toolbar.isFixed();\n        var pos = this.$btn.offset();\n        pos.top = (isFixed) ? this.$btn.position().top : pos.top;\n\n        var btnHeight = this.$btn.height();\n        var btnWidth = this.$btn.width();\n        var position = (isFixed) ? 'fixed' : 'absolute';\n        var topOffset = 2;\n        var leftOffset = 0;\n        var left = (pos.left + leftOffset);\n        var width = parseFloat(this.css('width'));\n        var leftFix = (this.$win.width() < (left + width)) ? (width - btnWidth) : 0;\n\n        this.css({ position: position, top: (pos.top + btnHeight + topOffset) + 'px', left: (left - leftFix) + 'px' });\n    },\n\n    // private\n    _build: function()\n    {\n        this.parse('<div>');\n        this.attr('dir', this.opts.direction);\n        this.attr('id', 'redactor-dropdown-' + this.uuid + '-' + this.name);\n        this.attr('data-re-name', this.name);\n\n        this.addClass('redactor-dropdown redactor-dropdown-' + this.uuid + ' redactor-dropdown-' + this.name);\n        this.dataset('data-dropdown-instance', this);\n        var isDom = (this.items.dom || typeof this.items === 'string');\n\n        if (isDom) this._buildDom();\n        else this._buildItems();\n\n        this.$body.append(this);\n        this.started = true;\n    },\n    _buildDom: function()\n    {\n        this.html('').append($R.dom(this.items));\n    },\n    _buildItems: function()\n    {\n        this.items = (this.name === 'format') ? this._buildFormattingItems() : this.items;\n\n        for (var key in this.items)\n        {\n            var obj = this.items[key];\n\n            if (key === 'observe')\n            {\n                this.attr('data-observe', this.items[key]);\n            }\n            else\n            {\n                var $item = $R.create('toolbar.dropdown.item', this.app, key, obj, this);\n\n                this.$items[key] = $item;\n                this.append($item);\n            }\n        }\n    },\n    _buildFormattingItems: function()\n    {\n        // build the format set\n        for (var key in this.items)\n        {\n            if (this.opts.formatting.indexOf(key) === -1) delete this.items[key];\n        }\n\n        // remove from the format set\n        if (this.opts.formattingHide)\n        {\n            for (var key in this.items)\n            {\n                if (this.opts.formattingHide.indexOf(key) !== -1) delete this.items[key];\n            }\n        }\n\n        // add to the format set\n        if (this.opts.formattingAdd)\n        {\n            for (var key in this.opts.formattingAdd)\n            {\n                this.items[key] = this.opts.formattingAdd[key];\n            }\n        }\n\n        return this.items;\n    },\n    _handleKeyboard: function(e)\n    {\n        if (e.which === 27) this.close();\n    },\n    _isButton: function(e)\n    {\n        var $el = $R.dom(e.target);\n        var $btn = $el.closest('.re-button');\n\n        return ($btn.get() === this.$btn.get());\n    },\n    _close: function()\n    {\n        this.$btn.setInactive();\n        this.$doc.off('.redactor.dropdown-' + this.uuid);\n        this.removeClass('open');\n        this.addClass('redactor-animate-hide');\n        this.app.broadcast('dropdown.closed', this, this.$btn);\n    },\n    _closeAll: function()\n    {\n        this.$body.find('.redactor-dropdown-' + this.uuid + '.open').each(function(node)\n        {\n            var $node = $R.dom(node);\n            var instance =  $node.dataget('data-dropdown-instance');\n            instance._close();\n        });\n    },\n    _observe: function()\n    {\n        var observer = this.attr('data-observe');\n        if (observer)\n        {\n            this.app.broadcast('dropdown.' + observer + '.observe', this);\n        }\n    }\n});\n$R.add('class', 'toolbar.dropdown.item', {\n    mixins: ['dom'],\n    init: function(app, name, obj, dropdown)\n    {\n        this.app = app;\n        this.lang = app.lang;\n\n        // local\n        this.dropdown = dropdown;\n        this.name = name;\n        this.obj = obj;\n\n        // init\n        this._init();\n    },\n    setTitle: function(html)\n    {\n        this.$span.html(html);\n    },\n    getTitle: function()\n    {\n        return this.$span.html();\n    },\n    enable: function()\n    {\n        this.removeClass('redactor-dropdown-item-disabled');\n    },\n    disable: function()\n    {\n        this.addClass('redactor-dropdown-item-disabled');\n    },\n    toggle: function(e)\n    {\n        if (e) e.preventDefault();\n        if (this.hasClass('redactor-dropdown-item-disabled')) return;\n\n        if (this.obj.message)\n        {\n            // broadcast\n            this.app.broadcast(this.obj.message, this.obj.args, this.name);\n        }\n        else if (this.obj.api)\n        {\n            this.app.api(this.obj.api, this.obj.args, this.name);\n        }\n    },\n\n    // private\n    _init: function()\n    {\n        this.parse('<a>');\n        this.attr('href', '#');\n        this.addClass('redactor-dropdown-item-' + this.name);\n\n        if (this.obj.classname)\n        {\n            this.addClass(this.obj.classname);\n        }\n\n        this.attr('data-re-name', this.name);\n        this.on('click', this.toggle.bind(this));\n\n        this.$span = $R.dom('<span>');\n        this.append(this.$span);\n        this.setTitle(this.lang.parse(this.obj.title));\n    }\n});\n$R.add('service', 'cleaner', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n\n        // local\n        this.storedComponents = [];\n        this.storedImages = [];\n        this.storedLinks = [];\n        this.deniedTags = ['font', 'html', 'head', 'link', 'title', 'body', 'meta', 'applet'];\n        this.convertRules = {};\n        this.unconvertRules = {};\n\n        // regex\n        this.reComments = /<!--[\\s\\S]*?-->/g;\n        this.reSpacedEmpty = /^(||\\s||<br\\s?\\/?>||&nbsp;)$/i;\n        this.reScriptTag = /<script(.*?[^>]?)>([\\w\\W]*?)<\\/script>/gi;\n    },\n    // public\n    addConvertRules: function(name, func)\n    {\n        this.convertRules[name] = func;\n    },\n    addUnconvertRules: function(name, func)\n    {\n        this.unconvertRules[name] = func;\n    },\n    input: function(html, paragraphize, started)\n    {\n        // pre/code\n        html = this.encodePreCode(html);\n\n        // converting entity\n        html = html.replace(/\\$/g, '&#36;');\n        html = html.replace(/&amp;/g, '&');\n\n        // convert to figure\n        var converter = $R.create('cleaner.figure', this.app);\n        html = converter.convert(html, this.convertRules);\n\n        // store components\n        html = this.storeComponents(html);\n\n        // clean\n        html = this.replaceTags(html, this.opts.replaceTags);\n        html = this._setSpanAttr(html);\n        html = this._setStyleCache(html);\n        html = this.removeTags(html, this.deniedTags);\n        html = (this.opts.removeScript) ? this._removeScriptTag(html) : this._replaceScriptTag(html);\n        html = (this.opts.removeComments) ? this.removeComments(html) : html;\n        html = (this._isSpacedEmpty(html)) ? this.opts.emptyHtml : html;\n\n        // restore components\n        html = this.restoreComponents(html);\n\n        // clear wrapped components\n        html = this._cleanWrapped(html);\n\n        // paragraphize\n        html = (paragraphize) ? this.paragraphize(html) : html;\n\n        return html;\n    },\n    output: function(html, removeMarkers)\n    {\n        html = this.removeInvisibleSpaces(html);\n\n        // empty\n        if (this._isSpacedEmpty(html)) return '';\n        if (this._isParagraphEmpty(html)) return '';\n\n        html = this.removeServiceTagsAndAttrs(html, removeMarkers);\n\n        // store components\n        html = this.storeComponents(html);\n\n        html = this.removeSpanWithoutAttributes(html);\n        html = this.removeFirstBlockBreaklineInHtml(html);\n\n        html = (this.opts.removeScript) ? html : this._unreplaceScriptTag(html);\n        html = (this.opts.preClass) ? this._setPreClass(html) : html;\n        html = (this.opts.linkNofollow) ? this._setLinkNofollow(html) : html;\n        html = (this.opts.removeNewLines) ? this.cleanNewLines(html) : html;\n\n        // restore components\n        html = this.restoreComponents(html);\n\n        // convert to figure\n        var converter = $R.create('cleaner.figure', this.app);\n        html = converter.unconvert(html, this.unconvertRules);\n\n        // final clean up\n        html = this.removeEmptyAttributes(html, ['style', 'class', 'rel', 'alt', 'title']);\n        html = this.cleanSpacesInPre(html);\n        html = this.tidy(html);\n\n        // converting entity\n        html = html.replace(/&amp;/g, '&');\n\n        // check whitespaces\n        html = (html.replace(/\\n/g, '') === '') ? '' : html;\n\n        return html;\n    },\n    paste: function(html)\n    {\n        // store components\n        html = this.storeComponents(html);\n\n        // remove tags\n        var deniedTags = this.deniedTags.concat(['iframe']);\n        html = this.removeTags(html, deniedTags);\n\n        // remove doctype tag\n        html = html.replace(new RegExp(\"<\\!doctype([\\\\s\\\\S]+?)>\", 'gi'), '');\n\n        // remove style tag\n        html = html.replace(new RegExp(\"<style([\\\\s\\\\S]+?)</style>\", 'gi'), '');\n\n        // remove br between\n        html = html.replace(new RegExp(\"</p><br /><p\", 'gi'), '</p><p');\n\n        // gdocs & word\n        var isMsWord = this._isHtmlMsWord(html);\n\n        html = this._cleanGDocs(html);\n        html = (isMsWord) ? this._cleanMsWord(html) : html;\n\n        // do not clean\n        if (!this.opts.pasteClean)\n        {\n            // restore components\n            html = this.restoreComponents(html);\n\n            return html;\n        }\n\n        // plain text\n        if (this.opts.pastePlainText)\n        {\n            // restore components\n            html = this.restoreComponents(html);\n\n            return this.pastePlainText(html);\n        }\n\n        // remove tags\n        var exceptedTags = this.opts.pasteBlockTags.concat(this.opts.pasteInlineTags);\n        html = this.removeTagsExcept(html, exceptedTags);\n\n\n        // links & images\n        html = (this.opts.pasteLinks) ? html : this.removeTags(html, ['a']);\n        html = (this.opts.pasteImages) ? html : this.removeTags(html, ['img']);\n\n        // build wrapper\n        var $wrapper = this.utils.buildWrapper(html);\n\n        // clean attrs\n        var $elms = $wrapper.find('*');\n\n        // remove style\n        var filterStyle = (this.opts.pasteKeepStyle.length !== 0) ? ',' + this.opts.pasteKeepStyle.join(',') : '';\n        $elms.not('[data-redactor-style-cache]' + filterStyle).removeAttr('style');\n\n        // remove class\n        var filterClass = (this.opts.pasteKeepClass.length !== 0) ? ',' + this.opts.pasteKeepClass.join(',') : '';\n        $elms.not('[data-redactor-style-cache]' + filterClass).removeAttr('class');\n\n        // remove attrs\n        var filterAttrs = (this.opts.pasteKeepAttrs.length !== 0) ? ',' + this.opts.pasteKeepAttrs.join(',') : '';\n        $elms.not('img, a, [data-redactor-style-cache]' + filterAttrs).each(function(node)\n        {\n            while(node.attributes.length > 0)\n            {\n                node.removeAttribute(node.attributes[0].name);\n            }\n        });\n\n        // paste link target\n        if (this.opts.pasteLinks && this.opts.pasteLinkTarget !== false)\n        {\n            $wrapper.find('a').attr('target', this.opts.pasteLinkTarget);\n        }\n\n        // keep style\n        $wrapper.find('[data-redactor-style-cache]').each(function(node)\n        {\n            var style = node.getAttribute('data-redactor-style-cache');\n            node.setAttribute('style', style);\n        });\n\n        // remove empty span\n        $wrapper.find('span').each(function(node)\n        {\n            if (node.attributes.length === 0)\n            {\n                $R.dom(node).unwrap();\n            }\n        });\n\n        // remove empty inline\n        $wrapper.find(this.opts.inlineTags.join(',')).each(function(node)\n        {\n            if (node.attributes.length === 0 && this.utils.isEmptyHtml(node.innerHTML))\n            {\n                $R.dom(node).unwrap();\n            }\n\n        }.bind(this));\n\n        // place ul/ol into li\n        $wrapper.find('ul, ol').each(function(node)\n        {\n            var prev = node.previousSibling;\n            if (prev && prev.tagName === 'LI')\n            {\n                var $li = $R.dom(prev);\n                $li.find('p').unwrap();\n                $li.append(node);\n            }\n        });\n\n        // get wrapper\n        html = this.utils.getWrapperHtml($wrapper);\n\n        // remove paragraphs form lists (google docs bug)\n        html = html.replace(/<li><p>/gi, '<li>');\n        html = html.replace(/<\\/p><\\/li>/gi, '</li>');\n\n        // clean empty p\n        html = html.replace(/<p>&nbsp;<\\/p>/gi, '<p></p>');\n        html = html.replace(/<p><br\\s?\\/?><\\/p>/gi, '<p></p>');\n\n        if (isMsWord)\n        {\n            html = html.replace(/<p><\\/p>/gi, '');\n            html = html.replace(/<p>\\s<\\/p>/gi, '');\n        }\n\n        // restore components\n        html = this.restoreComponents(html);\n\n        return html;\n    },\n    pastePlainText: function(html)\n    {\n        html = (this.opts.pasteLinks) ? this.storeLinks(html) : html;\n        html = (this.opts.pasteImages) ? this.storeImages(html) : html;\n\n        html = this.getPlainText(html);\n        html = this._replaceNlToBr(html);\n\n        html = (this.opts.pasteLinks) ? this.restoreLinks(html) : html;\n        html = (this.opts.pasteImages) ? this.restoreImages(html) : html;\n\n        return html;\n    },\n    tidy: function(html)\n    {\n        return html;\n    },\n    paragraphize: function(html)\n    {\n        var paragraphize = $R.create('cleaner.paragraphize', this.app);\n\n        return paragraphize.convert(html);\n    },\n\n    // get\n    getFlatText: function(html)\n    {\n        var $div = $R.dom('<div>');\n\n        if (!html.nodeType && !html.dom)\n        {\n            html = html.toString();\n            html = html.trim();\n            $div.html(html);\n        }\n        else\n        {\n            $div.append(html);\n        }\n\n        html = $div.get().textContent || $div.get().innerText || '';\n\n        return (html === undefined) ? '' : html;\n    },\n\tgetPlainText: function(html)\n\t{\n\t\thtml = html.replace(/<!--[\\s\\S]*?-->/gi, '');\n\t\thtml = html.replace(/<style[\\s\\S]*?style>/gi, '');\n        html = html.replace(/<p><\\/p>/g, '');\n\t\thtml = html.replace(/<\\/div>|<\\/li>|<\\/td>/gi, '\\n');\n\t\thtml = html.replace(/<\\/p>/gi, '\\n\\n');\n\t\thtml = html.replace(/<\\/H[1-6]>/gi, '\\n\\n');\n\n\t\tvar tmp = document.createElement('div');\n\t\ttmp.innerHTML = html;\n\n\t\thtml = tmp.textContent || tmp.innerText;\n\n\t\treturn html.trim();\n\t},\n\n    // replace\n    replaceTags: function(html, tags)\n    {\n        if (tags)\n        {\n            var self = this;\n            var keys = Object.keys(tags);\n            var $wrapper = this.utils.buildWrapper(html);\n            $wrapper.find(keys.join(',')).each(function(node)\n            {\n                self.utils.replaceToTag(node, tags[node.tagName.toLowerCase()]);\n            });\n\n            html = this.utils.getWrapperHtml($wrapper);\n        }\n\n        return html;\n    },\n    replaceNbspToSpaces: function(html)\n    {\n        return html.replace('&nbsp;', ' ');\n    },\n    replaceBlocksToBr: function(html)\n    {\n        html = html.replace(/<\\/div>|<\\/li>|<\\/td>|<\\/p>|<\\/H[1-6]>/gi, '<br>');\n\n        return html;\n    },\n\n    // clean\n    cleanNewLines: function(html)\n    {\n        return html.replace(/\\r?\\n/g, \"\");\n    },\n    cleanSpacesInPre: function(html)\n    {\n        return html.replace('&nbsp;&nbsp;&nbsp;&nbsp;', '    ');\n    },\n\n    // remove\n    removeInvisibleSpaces: function(html)\n    {\n        html = this.utils.removeInvisibleChars(html);\n        html = html.replace(/&#65279;/gi, '');\n\n        return html;\n    },\n    removeNl: function(html)\n    {\n        html = html.replace(/\\n/g, \" \");\n        html = html.replace(/\\s+/g, \"\\s\");\n\n        return html;\n    },\n    removeBrAtEnd: function(html)\n    {\n        html = html.replace(/<br\\s?\\/?>$/gi, ' ');\n        html = html.replace(/<br\\s?\\/?><li/gi, '<li');\n\n        return html;\n    },\n    removeTags: function(input, denied)\n    {\n        var re = (denied) ? /<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi : /(<([^>]+)>)/gi;\n        var replacer = (!denied) ? '' : function ($0, $1)\n        {\n            return denied.indexOf($1.toLowerCase()) === -1 ? $0 : '';\n        };\n\n        return input.replace(re, replacer);\n    },\n    removeTagsExcept: function(input, except)\n    {\n        if (except === undefined) return input.replace(/(<([^>]+)>)/gi, '');\n\n        var tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi;\n        return input.replace(tags, function($0, $1)\n        {\n            return except.indexOf($1.toLowerCase()) === -1 ? '' : $0;\n        });\n    },\n    removeComments: function(html)\n    {\n        return html.replace(this.reComments, '');\n    },\n    removeServiceTagsAndAttrs: function(html, removeMarkers)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        var self = this;\n        if (removeMarkers !== false)\n        {\n            $wrapper.find('.redactor-selection-marker').each(function(node)\n            {\n                var $el = $R.dom(node);\n                var text = self.utils.removeInvisibleChars($el.text());\n\n                return (text === '') ? $el.remove() : $el.unwrap();\n            });\n        }\n\n        $wrapper.find('[data-redactor-style-cache]').removeAttr('data-redactor-style-cache');\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    removeSpanWithoutAttributes: function(html)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        $wrapper.find('span').removeAttr('data-redactor-span data-redactor-style-cache').each(function(node)\n        {\n            if (node.attributes.length === 0) $R.dom(node).unwrap();\n        });\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    removeFirstBlockBreaklineInHtml: function(html)\n    {\n        return html.replace(new RegExp('</li><br\\\\s?/?>', 'gi'), '</li>');\n    },\n    removeEmptyAttributes: function(html, attrs)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        for (var i = 0; i < attrs.length; i++)\n        {\n            $wrapper.find('[' + attrs[i] + '=\"\"]').removeAttr(attrs[i]);\n        }\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n\n    // encode / decode\n    encodeHtml: function(html)\n    {\n        html = html.replace(/<br\\s?\\/?>/g, \"\\n\");\n        html = html.replace(/&nbsp;/g, ' ');\n        html = html.replace(/”/g, '\"');\n        html = html.replace(/“/g, '\"');\n        html = html.replace(/‘/g, '\\'');\n        html = html.replace(/’/g, '\\'');\n        html = this.encodeEntities(html);\n        html = html.replace(/\\$/g, '&#36;');\n\n        if (this.opts.preSpaces)\n        {\n            html = html.replace(/\\t/g, new Array(this.opts.preSpaces + 1).join(' '));\n        }\n\n        return html;\n    },\n    encodePreCode: function(html)\n    {\n        var matched = html.match(new RegExp('<code(.*?)>(.*?)<pre(.*?)>(.*?)</pre>(.*?)</code>', 'gi'));\n        if (matched !== null)\n        {\n            for (var i = 0; i < matched.length; i++)\n            {\n                var arr = matched[i].match(new RegExp('<pre(.*?)>([\\\\w\\\\W]*?)</pre>', 'i'));\n                html = html.replace(arr[0], this.encodeEntities(arr[0]));\n            }\n        }\n\n        var $wrapper = this.utils.buildWrapper(html);\n\n        $wrapper.find('code code').replaceWith(this._encodeOuter.bind(this));\n        $wrapper.find('code pre').replaceWith(this._encodeOuter.bind(this));\n        $wrapper.find('pre pre').replaceWith(this._encodeOuter.bind(this));\n        $wrapper.find('code, pre').each(this._encodePreCodeLine.bind(this));\n\n        html = this.utils.getWrapperHtml($wrapper);\n\n        // restore markers\n        html = this._decodeMarkers(html);\n\n        return html;\n    },\n    encodeEntities: function(str)\n    {\n        str = this.decodeEntities(str);\n        str = str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n\n        return str;\n    },\n    encodePhpCode: function(html)\n    {\n        html = html.replace('<?php', '&lt;?php');\n        html = html.replace('<?', '&lt;?');\n        html = html.replace('?>', '?&gt;');\n\n        return html;\n    },\n    decodeEntities: function(str)\n    {\n        return String(str).replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '\"').replace(/&amp;/g, '&');\n    },\n\n    // store / restore\n    storeComponents: function(html)\n    {\n        var matched = this.utils.getElementsFromHtml(html, 'figure', 'table');\n\n        return this._storeMatched(html, matched, 'Components', 'figure');\n    },\n    restoreComponents: function(html)\n    {\n        return this._restoreMatched(html, 'Components', 'figure');\n    },\n    storeLinks: function(html)\n    {\n        var matched = this.utils.getElementsFromHtml(html, 'a');\n\n        return this._storeMatched(html, matched, 'Links', 'a');\n    },\n    storeImages: function(html)\n    {\n        var matched = this.utils.getElementsFromHtml(html, 'img');\n\n        return this._storeMatched(html, matched, 'Images', 'img');\n    },\n    restoreLinks: function(html)\n    {\n        return this._restoreMatched(html, 'Links', 'a');\n    },\n    restoreImages: function(html)\n    {\n        return this._restoreMatched(html, 'Images', 'img');\n    },\n\n    // PRIVATE\n\n    // clean\n    _cleanWrapped: function(html)\n    {\n        html = html.replace(new RegExp('<p><figure([\\\\w\\\\W]*?)</figure></p>', 'gi'), '<figure$1</figure>');\n\n        return html;\n    },\n    _cleanGDocs: function(html)\n    {\n        // remove google docs markers\n        html = html.replace(/<b\\sid=\"internal-source-marker(.*?)\">([\\w\\W]*?)<\\/b>/gi, \"$2\");\n        html = html.replace(/<b(.*?)id=\"docs-internal-guid(.*?)\">([\\w\\W]*?)<\\/b>/gi, \"$3\");\n\n        html = html.replace(/<span[^>]*(font-style: italic; font-weight: bold|font-weight: bold; font-style: italic)[^>]*>([\\w\\W]*?)<\\/span>/gi, '<b><i>$2</i></b>');\n        html = html.replace(/<span[^>]*(font-style: italic; font-weight: 700|font-weight: 700; font-style: italic)[^>]*>([\\w\\W]*?)<\\/span>/gi, '<b><i>$2</i></b>');\n        html = html.replace(/<span[^>]*font-style: italic[^>]*>([\\w\\W]*?)<\\/span>/gi, '<i>$1</i>');\n        html = html.replace(/<span[^>]*font-weight: bold[^>]*>([\\w\\W]*?)<\\/span>/gi, '<b>$1</b>');\n        html = html.replace(/<span[^>]*font-weight: 700[^>]*>([\\w\\W]*?)<\\/span>/gi, '<b>$1</b>');\n\n        return html;\n    },\n    _cleanMsWord: function(html)\n    {\n        html = html.replace(/<!--[\\s\\S]+?-->/gi, '');\n        html = html.replace(/<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi, '');\n        html = html.replace(/<(\\/?)s>/gi, \"<$1strike>\");\n        html = html.replace(/&nbsp;/gi, ' ');\n        html = html.replace(/<span\\s+style\\s*=\\s*\"\\s*mso-spacerun\\s*:\\s*yes\\s*;?\\s*\"\\s*>([\\s\\u00a0]*)<\\/span>/gi, function(str, spaces) {\n            return (spaces.length > 0) ? spaces.replace(/./, \" \").slice(Math.floor(spaces.length/2)).split(\"\").join(\"\\u00a0\") : '';\n        });\n\n        // build wrapper\n        var $wrapper = this.utils.buildWrapper(html);\n\n        $wrapper.find('p').each(function(node)\n        {\n            var $node = $R.dom(node);\n            var str = $node.attr('style');\n            var matches = /mso-list:\\w+ \\w+([0-9]+)/.exec(str);\n            if (matches)\n            {\n                $node.data('_listLevel',  parseInt(matches[1], 10));\n            }\n        });\n\n        // parse Lists\n        this._parseWordLists($wrapper);\n\n        $wrapper.find('[style]').removeAttr('style');\n        $wrapper.find('[align]').removeAttr('align');\n        $wrapper.find('[name]').removeAttr('name');\n        $wrapper.find('span').unwrap();\n        $wrapper.find(\"[class^='Mso']\").removeAttr('class');\n        $wrapper.find('a').filter(function(node) { return !node.hasAttribute('href'); }).unwrap();\n\n        // get wrapper\n        html = this.utils.getWrapperHtml($wrapper);\n        html = html.replace(/<p[^>]*><\\/p>/gi, '');\n        html = html.replace(/<li>·/gi, '<li>');\n        html = html.trim();\n\n        // remove spaces between\n        html = html.replace(/\\/(p|ul|ol|h1|h2|h3|h4|h5|h6|blockquote)>\\s+<(p|ul|ol|h1|h2|h3|h4|h5|h6|blockquote)/gi, '/$1>\\n<$2');\n\n        var result = '';\n        var lines = html.split(/\\n/);\n        for (var i = 0; i < lines.length; i++)\n        {\n            var space = (lines[i] !== '' && lines[i].search(/>$/) === -1) ? ' ' : '\\n';\n\n            result += lines[i] + space;\n        }\n\n        return result;\n    },\n    _parseWordLists: function($wrapper)\n    {\n        var lastLevel = 0;\n        var pnt = null;\n\n        $wrapper.find('p').each(function(node)\n        {\n            var $node = $R.dom(node);\n            var currentLevel = $node.data('_listLevel');\n            if (currentLevel !== null)\n            {\n                var txt = $node.text();\n                var listTag = '<ul></ul>';\n                if (/^\\s*\\w+\\./.test(txt))\n                {\n                    var matches = /([0-9])\\./.exec(txt);\n                    if (matches)\n                    {\n                        var start = parseInt(matches[1], 10);\n                        listTag = (start > 1) ? '<ol start=\"' + start + '\"></ol>' : '<ol></ol>';\n                    }\n                    else\n                    {\n                        listTag = '<ol></ol>';\n                    }\n                }\n\n                if (currentLevel > lastLevel)\n                {\n                    if (lastLevel === 0)\n                    {\n                        $node.before(listTag);\n                        pnt = $node.prev();\n                    }\n                    else\n                    {\n                        var $list = $R.dom(listTag);\n                        pnt.append($list);\n                    }\n                }\n\n                if (currentLevel < lastLevel)\n                {\n                    for (var i = 0; i < (lastLevel - currentLevel); i++)\n                    {\n                        pnt = pnt.parent();\n                    }\n                }\n\n                $node.find('span').first().unwrap();\n                pnt.append('<li>' + $node.html() + '</li>');\n                $node.remove();\n                lastLevel = currentLevel;\n            }\n            else\n            {\n                lastLevel = 0;\n            }\n        });\n    },\n\n    // is\n    _isSpacedEmpty: function(html)\n    {\n        return (html.search(this.reSpacedEmpty) !== -1);\n    },\n    _isParagraphEmpty: function(html)\n    {\n        return (html.search(/^<p><\\/p>$/i) !== -1);\n    },\n    _isHtmlMsWord: function(html)\n    {\n        return html.match(/class=\"?Mso|style=\"[^\"]*\\bmso-|style='[^'']*\\bmso-|w:WordDocument/i);\n    },\n\n    // set\n    _setSpanAttr: function(html)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        $wrapper.find('span').attr('data-redactor-span', true);\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    _setStyleCache: function(html)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        $wrapper.find('[style]').each(function(node)\n        {\n            var $el = $R.dom(node);\n            $el.attr('data-redactor-style-cache', $el.attr('style'));\n        });\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    _setPreClass: function(html)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        $wrapper.find('pre').addClass(this.opts.preClass);\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    _setLinkNofollow: function(html)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n        $wrapper.find('a').attr('rel', 'nofollow');\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n\n    // replace\n    _replaceScriptTag: function(html)\n    {\n        return html.replace(this.reScriptTag, '<pre class=\"redactor-script-tag\" $1>$2</pre>');\n    },\n    _unreplaceScriptTag: function(html)\n    {\n        return html.replace(/<pre class=\"redactor-script-tag\"(.*?[^>]?)>([\\w\\W]*?)<\\/pre>/gi, '<script$1>$2</script>');\n    },\n\t_replaceNlToBr: function(html)\n\t{\n\t\treturn html.replace(/\\n/g, '<br />');\n\t},\n\n    // remove\n    _removeScriptTag: function(html)\n    {\n        return html.replace(this.reScriptTag, '');\n    },\n\n    // private\n    _storeMatched: function(html, matched, stored, name)\n    {\n        this['stored' + stored] = [];\n        if (matched)\n        {\n            for (var i = 0; i < matched.length; i++)\n            {\n                this['stored' + stored][i] = matched[i];\n                html = html.replace(matched[i], '####' + name + i + '####');\n            }\n        }\n\n        return html;\n    },\n    _restoreMatched: function(html, stored, name)\n    {\n        if (this['stored' + stored])\n        {\n            for (var i = 0; i < this['stored' + stored].length; i++)\n            {\n                html = html.replace('####' + name + i + '####', this['stored' + stored][i]);\n            }\n        }\n\n        return html;\n    },\n    _decodeMarkers: function(html)\n    {\n        var decodedMarkers = '<span id=\"selection-marker-$1\" class=\"redactor-selection-marker\">​</span>';\n        return html.replace(/&lt;span\\sid=\"selection-marker-(start|end)\"\\sclass=\"redactor-selection-marker\"&gt;(.*?[^>]?)&lt;\\/span&gt;/g, decodedMarkers);\n    },\n    _encodeOuter: function(node)\n    {\n        return this.encodeEntities(node.outerHTML);\n    },\n    _encodePreCodeLine: function(node)\n    {\n        var first = node.firstChild;\n        if (node.tagName == 'PRE' && (first && first.tagName === 'CODE')) return;\n\n        var encoded = this.decodeEntities(node.innerHTML);\n        encoded = encoded.replace(/&nbsp;/g, ' ').replace(/<br\\s?\\/?>/g, '\\n');\n        encoded = (this.opts.preSpaces) ? encoded.replace(/\\t/g, new Array(this.opts.preSpaces + 1).join(' ')) : encoded;\n\n        node.textContent = encoded;\n    }\n});\n$R.add('class', 'cleaner.figure', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n    },\n    // public\n    convert: function(html, rules)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n\n        // convert\n        $wrapper.find('img').each(this._convertImage.bind(this));\n        $wrapper.find('hr').each(this._convertLine.bind(this));\n        $wrapper.find('iframe').each(this._convertIframe.bind(this));\n        $wrapper.find('table').each(this._convertTable.bind(this));\n        $wrapper.find('form').each(this._convertForm.bind(this));\n        $wrapper.find('figure pre').each(this._convertCode.bind(this));\n\n        // variables\n        $wrapper.find('[data-redactor-type=variable]').addClass('redactor-component');\n\n        // widgets\n        $wrapper.find('figure').not('.redactor-component, .redactor-figure-code').each(this._convertWidget.bind(this));\n\n        // contenteditable\n        $wrapper.find('figure pre').each(this._setContenteditableCode.bind(this));\n        $wrapper.find('.redactor-component, .non-editable').attr('contenteditable', false);\n\n        $wrapper.find('figcaption, td, th').attr('contenteditable', true);\n        $wrapper.find('.redactor-component, figcaption').attr('tabindex', '-1');\n\n        // extra rules\n        this._acceptExtraRules($wrapper, rules);\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    unconvert: function(html, rules)\n    {\n        var $wrapper = this.utils.buildWrapper(html);\n\n        // contenteditable\n        $wrapper.find('th, td, figcaption, figure, pre, code, .redactor-component').removeAttr('contenteditable tabindex');\n\n        // remove class\n        $wrapper.find('figure').removeClass('redactor-component redactor-component-active redactor-uploaded-figure');\n\n        // unconvert\n        $wrapper.find('[data-redactor-type=variable]').removeClass('redactor-component');\n        $wrapper.find('figure[data-redactor-type=line]').unwrap();\n        $wrapper.find('figure[data-redactor-type=widget]').each(this._unconvertWidget.bind(this));\n        $wrapper.find('figure[data-redactor-type=form]').each(this._unconvertForm.bind(this));\n        $wrapper.find('figure[data-redactor-type=table]').each(this._unconvertTable.bind(this));\n        $wrapper.find('figure[data-redactor-type=image]').removeAttr('rel').each(this._unconvertImages.bind(this));\n\n        $wrapper.find('img').removeAttr('data-redactor-type').removeClass('redactor-component');\n        $wrapper.find('.non-editable').removeAttr('contenteditable');\n\n        // remove types\n        $wrapper.find('figure').each(this._removeTypes.bind(this));\n\n        // remove caret\n        $wrapper.find('span.redactor-component-caret').remove();\n\n        if (this.opts.breakline)\n        {\n            $wrapper.find('[data-redactor-tag=\"br\"]').each(function(node)\n            {\n                if (node.lastChild && node.lastChild.tagName !== 'BR')\n                {\n                    node.appendChild(document.createElement('br'));\n                }\n            }).unwrap();\n        }\n\n        // extra rules\n        this._acceptExtraRules($wrapper, rules);\n\n        html = this.utils.getWrapperHtml($wrapper);\n        html = html.replace(/<br\\s?\\/?>$/, '');\n\n        return html;\n    },\n\n    // private\n    _convertImage: function(node)\n    {\n        var $node = $R.dom(node);\n        if (this._isNonEditable($node)) return;\n\n        // set id\n        if (!$node.attr('data-image'))\n        {\n            $node.attr('data-image', this.utils.getRandomId());\n        }\n\n        var $link = $node.closest('a');\n        var $figure = $node.closest('figure');\n        var isImage = ($figure.children().not('a, img, br, figcaption').length === 0);\n        if (!isImage) return;\n\n        if ($figure.length === 0)\n        {\n            $figure = ($link.length !== 0) ? $link.wrap('<figure>') : $node.wrap('<figure>');\n        }\n        else\n        {\n            if ($figure.hasClass('redactor-uploaded-figure'))\n            {\n                $figure.removeClass('redactor-uploaded-figure');\n            }\n            else\n            {\n                $figure.addClass('redactor-keep-figure');\n            }\n        }\n\n        this._setFigure($figure, 'image');\n    },\n    _convertTable: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var $figure = this._wrapFigure(node);\n        this._setFigure($figure, 'table');\n    },\n    _convertLine: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var $figure = this._wrapFigure(node);\n        this._setFigure($figure, 'line');\n    },\n    _convertForm: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var $figure = this.utils.replaceToTag(node, 'figure');\n        this._setFigure($figure, 'form');\n    },\n    _convertIframe: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var src = node.getAttribute('src');\n        var isVideo = (src && (src.match(this.opts.regex.youtube) || src.match(this.opts.regex.vimeo)));\n        var $figure = this._wrapFigure(node);\n\n        if (isVideo)\n        {\n            this._setFigure($figure, 'video');\n        }\n    },\n    _convertCode: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var $figure = this._wrapFigure(node);\n        this._setFigure($figure, 'code');\n    },\n    _convertWidget: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var $node = $R.dom(node);\n        $node.addClass('redactor-component');\n        $node.attr('data-redactor-type', 'widget');\n        $node.attr('data-widget-code', encodeURI(node.innerHTML.trim()));\n    },\n\n    // unconvert\n    _unconvertForm: function(node)\n    {\n        this.utils.replaceToTag(node, 'form');\n    },\n    _unconvertTable: function(node)\n    {\n        var $node = $R.dom(node);\n        $node.unwrap();\n    },\n    _unconvertWidget: function(node)\n    {\n        var $node = $R.dom(node);\n        $node.html(decodeURI($node.attr('data-widget-code')));\n        $node.removeAttr('data-widget-code');\n    },\n    _unconvertImages: function(node)\n    {\n        var $node = $R.dom(node);\n        $node.removeClass('redactor-component');\n\n        var isList = ($node.closest('li').length !== 0);\n        var isTable = ($node.closest('table').length !== 0);\n        var hasFigcaption = ($node.find('figcaption').length !== 0);\n\n        var style = $node.attr('style');\n        var hasStyle = !(style === null || style === '');\n        var hasClass = ($node.attr('class') !== '');\n\n        if (isList || (isTable && !hasFigcaption && !hasStyle && !hasClass))\n        {\n            $node.unwrap();\n        }\n    },\n    _removeTypes: function(node)\n    {\n        var $node = $R.dom(node);\n        var type = $node.attr('data-redactor-type');\n        var removed = ['image', 'widget', 'line', 'video', 'code', 'form', 'table'];\n        if (type && removed.indexOf(type) !== -1)\n        {\n            $node.removeAttr('data-redactor-type');\n        }\n\n        // keep figure\n        if ($node.hasClass('redactor-keep-figure'))\n        {\n            $node.removeClass('redactor-keep-figure');\n        }\n        // unwrap figure\n        else if (this.opts.imageFigure === false)\n        {\n            var hasFigcaption = ($node.find('figcaption').length !== 0);\n            if (!hasFigcaption)\n            {\n                $node.unwrap();\n            }\n        }\n    },\n\n    // wrap\n    _wrapFigure: function(node)\n    {\n        var $node = $R.dom(node);\n        var $figure = $node.closest('figure');\n\n        return ($figure.length === 0) ? $node.wrap('<figure>') : $figure;\n    },\n\n    // set\n    _setFigure: function($figure, type)\n    {\n        $figure.addClass('redactor-component');\n        $figure.attr('data-redactor-type', type);\n    },\n    _setContenteditableCode: function(node)\n    {\n        if (this._isNonEditable(node)) return;\n\n        var $node = $R.dom(node);\n        var $code = $node.children('code').first();\n\n        var $el = ($code.length !== 0) ? $code : $node;\n        $el.attr('contenteditable', true).attr('tabindex', '-1');\n    },\n\n    // utils\n    _acceptExtraRules: function($wrapper, rules)\n    {\n        for (var key in rules)\n        {\n            if (typeof rules[key] === 'function')\n            {\n                rules[key]($wrapper);\n            }\n        }\n    },\n    _isNonEditable: function(node)\n    {\n        return ($R.dom(node).closest('.non-editable').length !== 0);\n    }\n});\n$R.add('class', 'cleaner.paragraphize', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.element = app.element;\n\n        // local\n        this.stored = [];\n        this.remStart = '#####replace';\n        this.remEnd = '#####';\n        this.paragraphizeTags = ['table', 'div', 'pre', 'form', 'ul', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'dl', 'blockquote', 'figcaption',\n                'address', 'section', 'header', 'footer', 'aside', 'article', 'object', 'style', 'script', 'iframe', 'select', 'input', 'textarea',\n                'button', 'option', 'map', 'area', 'math', 'hr', 'fieldset', 'legend', 'hgroup', 'nav', 'figure', 'details', 'menu', 'summary', 'p'];\n    },\n    // public\n    convert: function(html)\n    {\n        var value = this._isConverted(html);\n\n        return (value === true) ? this._convert(html) : value;\n    },\n\n    // private\n    _convert: function(html)\n    {\n        // build markup tag\n        var markupTag = (this.opts.breakline) ? 'sdivtag' : this.opts.markup;\n\n        // store tags\n        html = this._storeTags(html);\n\n        // remove new lines\n        html = html.trim();\n\n        if (this.opts.breakline)\n        {\n            html = html.replace(new RegExp('\\\\n#####', 'gi'), 'xnonbreakmarkerz#####');\n            html = html.replace(new RegExp('#####\\\\n\\\\n', 'gi'), \"#####\\nxnonbreakmarkerz\");\n            html = html.replace(new RegExp('#####\\\\n', 'gi'), \"#####xnonbreakmarkerz\");\n            html = html.replace(/<br\\s?\\/?>\\n/gi, \"<br>\");\n            html = html.replace(/\\n/g, \"<br>\");\n            html = html.replace(/xnonbreakmarkerz/gi, \"\\n\");\n        }\n        else\n        {\n            html = html.replace(/[\\n]+/g, \"\\n\");\n        }\n\n        html = this._trimEmptyLines(html);\n\n        // paragraph and break markers\n        html = (this.opts.breakline) ? html : html.replace(/<br\\s?\\/?>\\n/gi, \"xbreakmarkerz\\n\");\n        html = html.replace(/(?:\\r\\n|\\r|\\n)/g, \"xparagraphmarkerz\");\n\n        // replace markers\n        html = html.replace(/xparagraphmarkerz/gi, \"</\" + markupTag + \">\\n<\" + markupTag + \">\");\n        html = (this.opts.breakline) ? html : html.replace(/xbreakmarkerz/gi, \"<br>\");\n\n        // wrap all\n        html = '<' + markupTag + '>' + html + '</' + markupTag + '>';\n\n        // clean\n        html = html.replace(new RegExp('<' + markupTag + '>#####', 'gi'), '#####');\n        html = html.replace(new RegExp('#####</' + markupTag + '>', 'gi'), '#####');\n\n        // restore tags\n        html = this._restoreTags(html);\n\n        // clean restored\n        html = (this.opts.breakline) ? html : html.replace(new RegExp('<' + markupTag + '><br\\\\s?/?></' + markupTag + '>', 'gi'), '<' + markupTag + '></' + markupTag + '>');\n        html = html.replace(new RegExp('<sdivtag>', 'gi'), '<div data-redactor-tag=\"br\">');\n        html = html.replace(new RegExp('sdivtag', 'gi'), 'div');\n\n        return html;\n    },\n    _storeTags: function(html)\n    {\n        var self = this;\n        var $wrapper = this.utils.buildWrapper(html);\n\n        if (this.opts.breakline)\n        {\n            $wrapper.find('p').each(function(node)\n            {\n                var $node = $R.dom(node);\n                var isUnwrap = ($node.closest('figure[data-redactor-type=widget],figure[data-redactor-type=form],.non-editable').length === 0);\n\n                if (isUnwrap)\n                {\n                    $node.append('<br><br>');\n                    $node.unwrap();\n                }\n            });\n        }\n\n        $wrapper.find(this.paragraphizeTags.join(', ')).each(function(node, i)\n        {\n            var replacement = document.createTextNode(\"\\n\" + self.remStart + i + self.remEnd + \"\\n\");\n            self.stored.push(node.outerHTML);\n            node.parentNode.replaceChild(replacement, node);\n        });\n\n        return this.utils.getWrapperHtml($wrapper);\n    },\n    _restoreTags: function(html)\n    {\n        for (var i = 0; i < this.stored.length; i++)\n        {\n            this.stored[i] = this.stored[i].replace(/\\$/g, '&#36;');\n            html = html.replace(this.remStart + i + this.remEnd, this.stored[i]);\n        }\n\n        return html;\n    },\n    _trimEmptyLines: function(html)\n    {\n        var str = '';\n        var arr = html.split(\"\\n\");\n        for (var i = 0; i < arr.length; i++)\n        {\n            if (arr[i].trim() !== '')\n            {\n                str += arr[i] + \"\\n\";\n            }\n        }\n\n        return str.replace(/\\n$/, '');\n    },\n    _isConverted: function(html)\n    {\n        if (this._isDisabled(html)) return html;\n        else if (this._isEmptyHtml(html)) return this.opts.emptyHtml;\n        else return true;\n    },\n    _isDisabled: function()\n    {\n        return (this.opts.paragraphize === false || this.element.isType('inline'));\n    },\n    _isEmptyHtml: function(html)\n    {\n        return (html === '' || html === '<p></p>' || html === '<div></div>');\n    }\n});\n$R.add('service', 'detector', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.userAgent = navigator.userAgent.toLowerCase();\n    },\n\tisWebkit: function()\n\t{\n\t\treturn /webkit/.test(this.userAgent);\n\t},\n\tisFirefox: function()\n\t{\n\t\treturn (this.userAgent.indexOf('firefox') > -1);\n\t},\n\tisIe: function(v)\n\t{\n        if (document.documentMode || /Edge/.test(navigator.userAgent)) return 'edge';\n\n\t\tvar ie;\n\t\tie = RegExp('msie' + (!isNaN(v)?('\\\\s'+v):''), 'i').test(navigator.userAgent);\n\t\tif (!ie) ie = !!navigator.userAgent.match(/Trident.*rv[ :]*11\\./);\n\n\t\treturn ie;\n\t},\n\tisMobile: function()\n\t{\n\t\treturn /(iPhone|iPod|Android)/.test(navigator.userAgent);\n\t},\n\tisDesktop: function()\n\t{\n\t\treturn !/(iPhone|iPod|iPad|Android)/.test(navigator.userAgent);\n\t},\n\tisIpad: function()\n\t{\n\t\treturn /iPad/.test(navigator.userAgent);\n\t}\n});\n$R.add('service', 'offset', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    get: function(el, trimmed)\n    {\n        var offset = { start: 0, end: 0, newline: false };\n        var node = this.utils.getNode(el);\n        if (!node) return false;\n\n        var isEditor = this.editor.isEditor(node);\n        var isIn = (isEditor) ? true : this.selection.isIn(node);\n        var range = this.selection.getRange();\n\n        if (!isEditor && !isIn)\n        {\n            offset = false;\n        }\n        else if (this.selection.is() && isIn)\n        {\n            var $startNode = $R.dom(range.startContainer);\n            var fix = ($startNode.hasClass('redactor-component')) ? range.startOffset : 0;\n            var clonedRange = range.cloneRange();\n\n            clonedRange.selectNodeContents(node);\n            clonedRange.setEnd(range.startContainer, range.startOffset);\n\n            var selection = this._getString(range, trimmed);\n\n            offset.newline = (selection.search(/^\\n/) !== -1 && selection.trim() === '');\n            offset.start = this._getString(clonedRange, trimmed).length - fix;\n            offset.end = offset.start + selection.length + fix;\n        }\n\n        return offset;\n    },\n    set: function(offset, el)\n    {\n        if (this._setComponentOffset(el)) return;\n\n        this.component.clearActive();\n        var node = this.utils.getNode(el);\n        if (!node) return;\n\n        var size = this.size(node);\n        var charIndex = 0, range = document.createRange();\n\n        offset.newline = (typeof offset.newline === 'undefined') ? false : offset.newline;\n        offset.end = (offset.end > size) ? size : offset.end;\n\n        range.setStart(node, 0);\n        range.collapse(true);\n\n        var nodeStack = [node], foundStart = false, stop = false;\n        while (!stop && (node = nodeStack.pop()))\n        {\n            if (node.nodeType == 3)\n            {\n                var nextCharIndex = charIndex + node.length;\n                var isNewLineStr = (node.nodeValue.search(/^\\n/) !== -1 && node.nodeValue.trim() === '');\n\n                if (!foundStart && !this._isFigcaptionNext(node)\n                    && (offset.newline === false && !isNewLineStr)\n                    && offset.start >= charIndex && offset.start <= nextCharIndex)\n                {\n                    range.setStart(node, offset.start - charIndex);\n                    foundStart = true;\n                }\n\n                if (foundStart && offset.end >= charIndex && offset.end <= nextCharIndex)\n                {\n                    range.setEnd(node, offset.end - charIndex);\n                    stop = true;\n                }\n\n                charIndex = nextCharIndex;\n            }\n            else\n            {\n                var i = node.childNodes.length;\n                while (i--)\n                {\n                    nodeStack.push(node.childNodes[i]);\n                }\n            }\n        }\n\n        this.selection.setRange(range);\n    },\n    size: function(el, trimmed)\n    {\n        var node = this.utils.getNode(el);\n        if (node)\n        {\n            var range = document.createRange();\n\n            var clonedRange = range.cloneRange();\n            clonedRange.selectNodeContents(node);\n\n            return this._getString(clonedRange, trimmed).length;\n        }\n\n        return 0;\n    },\n\n    // private\n    _getString: function(obj, trimmed)\n    {\n        var str = obj.toString();\n        str = (this.editor.isEmpty()) ? str.replace(/\\uFEFF/g, '') : str;\n        str = (trimmed) ? str.trim() : str;\n\n        return str;\n    },\n    _setComponentOffset: function(el)\n    {\n        return (this.component.isNonEditable(el)) ? this.component.setActive(el) : false;\n    },\n    _isFigcaptionNext: function(node)\n    {\n        var next = node.nextSibling;\n        return (node.nodeValue.trim() === '' && next && next.tagName === 'FIGCAPTION');\n    }\n});\n$R.add('service', 'inspector', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    // parse\n    parse: function(el)\n    {\n        return $R.create('inspector.parser', this.app, this, el);\n    },\n\n    // text detection\n    isText: function(el)\n    {\n        if (typeof el === 'string' && !/^\\s*<(\\w+|!)[^>]*>/.test(el))\n        {\n            return true;\n        }\n\n        var node = $R.dom(el).get();\n        return (node && node.nodeType === 3); //  && !this.selection.getBlock(el)\n    },\n\n    // tag detection\n    isInlineTag: function(tag, extend)\n    {\n        var tags = this._extendTags(this.opts.inlineTags, extend);\n\n        return (this._isTag(tag) && tags.indexOf(tag.toLowerCase()) !== -1);\n    },\n    isBlockTag: function(tag, extend)\n    {\n        var tags = this._extendTags(this.opts.blockTags, extend);\n\n        return (this._isTag(tag) && tags.indexOf(tag.toLowerCase()) !== -1);\n    },\n    isTableCellTag: function(tag)\n    {\n        return (['td', 'th'].indexOf(tag.toLowerCase()) !== -1);\n    },\n    isHeadingTag: function(tag)\n    {\n        return (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].indexOf(tag.toLowerCase()) !== -1);\n    },\n\n\n    _isTag: function(tag)\n    {\n        return (tag !== undefined && tag);\n    },\n    _extendTags: function(tags, extend)\n    {\n        tags = tags.concat(tags);\n\n        if (extend)\n        {\n            for (var i = 0 ; i < extend.length; i++)\n            {\n                tags.push(extend[i]);\n            }\n        }\n\n        return tags;\n    }\n});\n$R.add('class', 'inspector.parser', {\n    init: function(app, inspector, el)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.editor = app.editor;\n        this.selection = app.selection;\n        this.inspector = inspector;\n\n        // local\n        this.el = el;\n        this.$el = $R.dom(this.el);\n        this.node = this.$el.get();\n        this.$component = this.$el.closest('.redactor-component', '.redactor-in');\n    },\n    // is\n    isEditor: function()\n    {\n        return (this.node === this.editor.getElement().get());\n    },\n    isInEditor: function()\n    {\n        return (this.$el.parents('.redactor-in-' + this.uuid).length !== 0);\n    },\n    isComponent: function()\n    {\n        return (this.$component.length !== 0);\n    },\n    isComponentType: function(type)\n    {\n        return (this.getComponentType() === type);\n    },\n    isComponentActive: function()\n    {\n        return (this.isComponent() && this.$component.hasClass('redactor-component-active'));\n    },\n    isComponentEditable: function()\n    {\n        var types = ['code', 'table'];\n        var type = this.getComponentType();\n\n        return (this.isComponent() && types.indexOf(type) !== -1);\n    },\n    isFigcaption: function()\n    {\n        return this.getFigcaption();\n    },\n    isPre: function()\n    {\n        return this.getPre();\n    },\n    isCode: function()\n    {\n        var $code = this.$el.closest('code');\n        var $parent = $code.parent('pre');\n\n        return ($code.length !== 0 && $parent.length === 0);\n    },\n    isList: function()\n    {\n        return this.getList();\n    },\n    isFirstListItem: function()\n    {\n        return this._getLastOrFirstListItem('first');\n    },\n    isLastListItem: function()\n    {\n        return this._getLastOrFirstListItem('last');\n    },\n    isFirstTableCell: function()\n    {\n        return this._getLastOrFirstTableCell('first');\n    },\n    isLastTableCell: function()\n    {\n        return this._getLastOrFirstTableCell('last');\n    },\n    isTable: function()\n    {\n        return (this.isComponentType('table') || this.getTable());\n    },\n    isHeading: function()\n    {\n        return this.getHeading();\n    },\n    isBlockquote: function()\n    {\n        return this.getBlockquote();\n    },\n    isDl: function()\n    {\n        return this.getDl();\n    },\n    isParagraph: function()\n    {\n        return this.getParagraph();\n    },\n    isLink: function()\n    {\n        return this.getLink();\n    },\n    isFile: function()\n    {\n        return this.getFile();\n    },\n    isText: function()\n    {\n        return this.inspector.isText(this.el);\n    },\n    isInline: function()\n    {\n        var tags = this.opts.inlineTags;\n\n        return (this.isElement()) ? (tags.indexOf(this.node.tagName.toLowerCase()) !== -1) : false;\n    },\n    isBlock: function()\n    {\n        var tags = this.opts.blockTags;\n\n        return (this.isElement()) ? (tags.indexOf(this.node.tagName.toLowerCase()) !== -1) : false;\n    },\n    isElement: function()\n    {\n        return (this.node && this.node.nodeType && this.node.nodeType !== 3);\n    },\n\n    // has\n    hasParent: function(tags)\n    {\n        return (this.$el.closest(tags.join(',')).length !== 0);\n    },\n\n    // get\n    getNode: function()\n    {\n        return this.node;\n    },\n    getTag: function()\n    {\n        return (this.isElement()) ? this.node.tagName.toLowerCase() : false;\n    },\n    getComponent: function()\n    {\n        return (this.isComponent()) ? this.$component.get() : false;\n    },\n    getComponentType: function()\n    {\n        return (this.isComponent()) ? this.$component.attr('data-redactor-type') : false;\n    },\n    getFirstNode: function()\n    {\n        return this.utils.getFirstNode(this.node);\n    },\n    getLastNode: function()\n    {\n        return this.utils.getLastNode(this.node);\n    },\n    getFirstElement: function()\n    {\n        return this.utils.getFirstElement(this.node);\n    },\n    getLastElement: function()\n    {\n        return this.utils.getLastElement(this.node);\n    },\n    getFigcaption: function()\n    {\n        return this._getClosestNode('figcaption');\n    },\n    getPre: function()\n    {\n        return this._getClosestNode('pre');\n    },\n    getCode: function()\n    {\n        return this._getClosestNode('code');\n    },\n    getList: function()\n    {\n        return this._getClosestNode('ul, ol');\n    },\n    getParentList: function()\n    {\n        return this._getClosestUpNode('ul, ol');\n    },\n    getListItem: function()\n    {\n        return this._getClosestNode('li');\n    },\n    getTable: function()\n    {\n        if (this.getComponentType('table'))\n        {\n            return this.$component.find('table').get();\n        }\n        else\n        {\n            return this._getClosestNode('table');\n        }\n    },\n    getTableCell: function()\n    {\n        var $td = this.$el.closest('td, th');\n\n        return ($td.length !== 0) ? $td.get() : false;\n    },\n    getComponentCodeElement: function()\n    {\n        return (this.isComponentType('code')) ? this.$component.find('pre code, pre').last().get() : false;\n    },\n    getImageElement: function()\n    {\n        return (this.isComponentType('image')) ? this.$component.find('img').get() : false;\n    },\n    getParagraph: function()\n    {\n        return this._getClosestNode('p');\n    },\n    getHeading: function()\n    {\n        return this._getClosestNode('h1, h2, h3, h4, h5, h6');\n    },\n    getDl: function()\n    {\n        return this._getClosestNode('dl');\n    },\n    getBlockquote: function()\n    {\n        return this._getClosestNode('blockquote');\n    },\n    getLink: function()\n    {\n        var isComponent = (this.isComponent() && !this.isFigcaption());\n        var isTable = this.isComponentType('table');\n\n        if (isTable || !isComponent)\n        {\n            var $el = this._getClosestElement('a');\n\n            return ($el && !$el.attr('data-file')) ? $el.get() : false;\n        }\n\n        return false;\n    },\n    getFile: function()\n    {\n        var isComponent = this.isComponent();\n        var isTable = this.isComponentType('table');\n\n        if (isTable || !isComponent)\n        {\n            var $el = this._getClosestElement('a');\n\n            return ($el && $el.attr('data-file')) ? $el.get() : false;\n        }\n\n        return false;\n    },\n\n    // find\n    findFirstNode: function(selector)\n    {\n        return this.$el.find(selector).first().get();\n    },\n    findLastNode: function(selector)\n    {\n        return this.$el.find(selector).last().get();\n    },\n\n    // private\n    _getLastOrFirstListItem: function(type)\n    {\n        var list = this.getList();\n        var tag = this.getTag();\n        if (list && tag === 'li')\n        {\n            var item = $R.dom(list).find('li')[type]().get();\n            if (item && this.node === item)\n            {\n                return true;\n            }\n        }\n\n        return false;\n    },\n    _getLastOrFirstTableCell: function(type)\n    {\n        var table = this.getTable();\n        var tag = this.getTag();\n        if (table && (tag === 'td' || tag === 'th'))\n        {\n            var item = $R.dom(table).find('td, th')[type]().get();\n            if (item && this.node === item)\n            {\n                return true;\n            }\n        }\n\n        return false;\n    },\n    _getClosestUpNode: function(selector)\n    {\n        var $el = this.$el.parents(selector, '.redactor-in').last();\n\n        return ($el.length !== 0) ? $el.get() : false;\n    },\n    _getClosestNode: function(selector)\n    {\n        var $el = this.$el.closest(selector, '.redactor-in');\n\n        return ($el.length !== 0) ? $el.get() : false;\n    },\n    _getClosestElement: function(selector)\n    {\n        var $el = this.$el.closest(selector, '.redactor-in');\n\n        return ($el.length !== 0) ? $el : false;\n    }\n});\n$R.add('service', 'marker', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    build: function(pos, html)\n    {\n        var marker = document.createElement('span');\n\n        marker.id = 'selection-marker-' + this._getPos(pos);\n        marker.className = 'redactor-selection-marker';\n        marker.innerHTML = this.opts.markerChar;\n\n        return (html) ? marker.outerHTML : marker;\n    },\n    buildHtml: function(pos)\n    {\n        return this.build(pos, true);\n    },\n    insert: function(side)\n    {\n        this.remove();\n\n        var atStart = (side !== 'both' && (side === 'start' || this.selection.isCollapsed()));\n\n        if (!this.selection.is()) this.editor.focus();\n\n        var range = this.selection.getRange();\n        if (range)\n        {\n            var start = this.build('start');\n            var end = this.build('end');\n\n            var cloned = range.cloneRange();\n\n            if (!atStart)\n            {\n                cloned.collapse(false);\n                cloned.insertNode(end);\n            }\n\n            cloned.setStart(range.startContainer, range.startOffset);\n            cloned.collapse(true);\n            cloned.insertNode(start);\n\n            range.setStartAfter(start);\n\n            if (!atStart)\n            {\n                range.setEndBefore(end);\n            }\n\n            this.selection.setRange(range);\n\n            return start;\n        }\n    },\n    find: function(pos, $context)\n    {\n        var $editor = this.editor.getElement();\n        var $marker = ($context || $editor).find('span#selection-marker-' + this._getPos(pos));\n\n        return ($marker.length !== 0) ? $marker.get() : false;\n    },\n    restore: function()\n    {\n        var start = this.find('start');\n        var end = this.find('end');\n\n        var range = this.selection.getRange();\n        if (!range || !this.selection.is())\n        {\n            this.editor.focus();\n            range = document.createRange();\n        }\n\n        if (start)\n        {\n            var prev = (end) ? end.previousSibling : false;\n            var next = start.nextSibling;\n            next = (next && next.nodeType === 3 && next.textContent.replace(/[\\n\\t]/g, '') === '') ? false : next;\n\n            if (!end)\n            {\n                if (next)\n                {\n                    range.selectNodeContents(next);\n                    range.collapse(true);\n                }\n                else\n                {\n                    this._restoreInject(range, start);\n                }\n            }\n            else if (next && next.id === 'selection-marker-end')\n            {\n                this._restoreInject(range, start);\n            }\n            else\n            {\n                if (prev && next)\n                {\n                    range.selectNodeContents(prev);\n                    range.collapse(false);\n                    range.setStart(next, 0);\n                }\n                else if (prev && !next)\n                {\n                    range.selectNodeContents(prev);\n                    range.collapse(false);\n                    range.setStartAfter(start);\n                }\n                else\n                {\n                    range.setStartAfter(start);\n                    range.setEndBefore(end);\n                }\n            }\n\n            this.selection.setRange(range);\n\n            if (start) start.parentNode.removeChild(start);\n            if (end) end.parentNode.removeChild(end);\n        }\n    },\n    remove: function()\n    {\n        var start = this.find('start');\n        var end = this.find('end');\n\n        if (start) start.parentNode.removeChild(start);\n        if (end) end.parentNode.removeChild(end);\n    },\n\n    // private\n    _getPos: function(pos)\n    {\n        return (pos === undefined) ? 'start' : pos;\n    },\n    _restoreInject: function(range, start)\n    {\n        var textNode = this.utils.createInvisibleChar();\n        $R.dom(start).after(textNode);\n\n        range.selectNodeContents(textNode);\n        range.collapse(false);\n    }\n});\n$R.add('service', 'component', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.activeClass = 'redactor-component-active';\n    },\n    create: function(type, el)\n    {\n        return $R.create(type + '.component', this.app, el);\n    },\n    build: function(el)\n    {\n        var $el = $R.dom(el);\n        var component;\n        var type = $el.attr('data-redactor-type');\n        if (type)\n        {\n            component = this.create(type, el);\n        }\n\n        return (component) ? component : el;\n    },\n    remove: function(el, caret)\n    {\n        var $component = $R.dom(el).closest('.redactor-component');\n        var type = $component.attr('data-redactor-type');\n        var current = $component.parent();\n        var data = this.inspector.parse(current);\n        var prev = this.utils.findSiblings($component, 'prev');\n        var next = this.utils.findSiblings($component, 'next');\n        var stop = this.app.broadcast(type + '.delete', $component);\n        if (stop !== false)\n        {\n            $component.remove();\n\n            // callback\n            this.app.broadcast(type + '.deleted', $component);\n            this.app.broadcast('contextbar.close');\n            this.app.broadcast('imageresizer.stop');\n\n            if (caret !== false)\n            {\n                var cell = data.getTableCell();\n                if (cell && this.utils.isEmptyHtml(cell.innerHTML))\n                {\n                    this.caret.setStart(cell);\n                }\n                else if (next) this.caret.setStart(next);\n                else if (prev) this.caret.setEnd(prev);\n                else\n                {\n                    this.editor.startFocus();\n                }\n            }\n\n            // is empty\n            if (this.editor.isEmpty())\n            {\n                this.editor.setEmpty();\n                this.editor.startFocus();\n                this.app.broadcast('empty');\n            }\n        }\n    },\n    isNonEditable: function(el)\n    {\n        var data = this.inspector.parse(el);\n        return (data.isComponent() && !data.isComponentEditable());\n    },\n    isActive: function(el)\n    {\n        var $component;\n        if (el)\n        {\n            var data = this.inspector.parse(el);\n            $component = $R.dom(data.getComponent());\n\n            return $component.hasClass(this.activeClass);\n        }\n        else\n        {\n            $component = this._find();\n\n            return ($component.length !== 0);\n        }\n    },\n    getActive: function(dom)\n    {\n        var $component = this._find();\n\n        return ($component.length !== 0) ? ((dom) ? $component : $component.get()) : false;\n    },\n    setActive: function(el)\n    {\n        this.clearActive();\n        this.editor.focus();\n\n        var data = this.inspector.parse(el);\n        var component = data.getComponent();\n        var $component = $R.dom(component);\n\n        if (!data.isFigcaption())\n        {\n            var $caret = $component.find('.redactor-component-caret');\n            if ($caret.length === 0)\n            {\n                $caret = this._buildCaret();\n                $component.prepend($caret);\n            }\n\n            this.caret.setAtStart($caret.get());\n        }\n\n        $component.addClass(this.activeClass);\n    },\n    clearActive: function()\n    {\n        var $component = this._find();\n\n        $component.removeClass(this.activeClass);\n        $component.find('.redactor-component-caret').remove();\n\n        this.app.broadcast('imageresizer.stop');\n    },\n    setOnEvent: function(e, contextmenu)\n    {\n        this.clearActive();\n\n        var data = this.inspector.parse(e.target);\n        if (data.isFigcaption() || data.isComponentEditable())\n        {\n            return;\n        }\n\n        // component\n        if (data.isComponent())\n        {\n            this.setActive(e.target);\n            if (contextmenu !== true) e.preventDefault();\n        }\n    },\n    executeScripts: function()\n    {\n        var $editor = this.editor.getElement();\n        var scripts = $editor.find('[data-redactor-type]').find(\"script\").getAll();\n\n        for (var i = 0; i < scripts.length; i++)\n        {\n            if (scripts[i].src !== '')\n            {\n                var src = scripts[i].src;\n                this.$doc.find('head script[src=\"' + src + '\"]').remove();\n\n                var $script = $R.dom('<script>');\n                $script.attr('src', src);\n                $script.attr('async defer');\n\n                if (src.search('instagram') !== -1) $script.attr('onload', 'window.instgrm.Embeds.process()');\n\n                var head = document.getElementsByTagName('head')[0];\n                if (head) head.appendChild($script.get());\n            }\n            else\n            {\n                eval(scripts[i].innerHTML);\n            }\n        }\n    },\n\n    // private\n    _find: function()\n    {\n        return this.editor.getElement().find('.' + this.activeClass);\n    },\n    _buildCaret: function()\n    {\n        var $caret = $R.dom('<span>');\n        $caret.addClass('redactor-component-caret');\n        $caret.attr('contenteditable', true);\n\n        return $caret;\n    }\n});\n$R.add('service', 'insertion', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    set: function(html, clean, focus)\n    {\n        html = (clean !== false) ? this.cleaner.input(html) : html;\n        html = (clean !== false) ? this.cleaner.paragraphize(html) : html;\n\n        // set html\n        var $editor = this.editor.getElement();\n        $editor.html(html);\n\n        // set focus at the end\n        if (focus !== false) this.editor.endFocus();\n\n        return html;\n    },\n    insertNode: function(node, caret)\n    {\n        this.editor.focus();\n        var fragment = (this.utils.isFragment(node)) ? node : this.utils.createFragment(node);\n\n        this._collapseSelection();\n        this._insertFragment(fragment);\n        this._setCaret(caret, fragment);\n\n        return this._sendNodes(fragment.nodes);\n    },\n    insertBreakLine: function()\n    {\n        return this.insertNode(document.createElement('br'), 'after');\n    },\n    insertNewline: function()\n    {\n        return this.insertNode(document.createTextNode('\\n'), 'after');\n    },\n    insertText: function(text)\n    {\n        return this.insertHtml(this.cleaner.getFlatText(text));\n    },\n    insertChar: function(charhtml)\n    {\n        return this.insertNode(charhtml, 'after');\n    },\n    insertRaw: function(html)\n    {\n        return this.insertHtml(html, false);\n    },\n    insertToEnd: function(lastNode, type)\n    {\n        if (!lastNode) return;\n        if (lastNode.nodeType === 3 && lastNode.nodeValue.search(/^\\n/) !== -1)\n        {\n            lastNode = lastNode.previousElementSibling;\n        }\n\n        var $lastNode = $R.dom(lastNode);\n        if ($lastNode.attr('data-redactor-type') === type)\n        {\n            var tag = (this.opts.breakline) ? '<br>' : '<p>';\n            var $newNode = $R.dom(tag);\n\n            $lastNode.after($newNode);\n            this.caret.setStart($newNode);\n        }\n    },\n    insertPoint: function(e)\n    {\n        var range, data;\n        var marker = this.marker.build('start');\n        var markerInserted = false;\n        var x = e.clientX, y = e.clientY;\n\n        if (document.caretPositionFromPoint)\n        {\n            var pos = document.caretPositionFromPoint(x, y);\n            var sel = document.getSelection();\n\n            data = this.inspector.parse(pos.offsetNode);\n            if (data.isInEditor())\n            {\n                range = sel.getRangeAt(0);\n                range.setStart(pos.offsetNode, pos.offset);\n                range.collapse(true);\n                range.insertNode(marker);\n                markerInserted = true;\n            }\n        }\n        else if (document.caretRangeFromPoint)\n        {\n            range = document.caretRangeFromPoint(x, y);\n\n            data = this.inspector.parse(range.startContainer);\n            if (data.isInEditor())\n            {\n                range.insertNode(marker);\n                markerInserted = true;\n            }\n        }\n\n        return markerInserted;\n    },\n    insertToPoint: function(e, html, point)\n    {\n        var pointInserted = (point === true) ? true : this.insertPoint(e);\n        if (!pointInserted)\n        {\n            var lastNode = this.editor.getLastNode();\n            $R.dom(lastNode).after(this.marker.build('start'));\n        }\n\n        this.component.clearActive();\n        this.selection.restoreMarkers();\n\n        return this.insertHtml(html);\n    },\n    insertToOffset: function(start, html)\n    {\n        this.offset.set({ start: start, end: start });\n\n        return this.insertHtml(html);\n    },\n    insertHtml: function(html, clean)\n    {\n        if (!this.opts.input) return;\n\n        // parse\n        var parsedInput = this.utils.parseHtml(html);\n\n        // all selection\n        if (this.selection.isAll())\n        {\n            return this._insertToAllSelected(parsedInput);\n        }\n\n        // there is no selection\n        if (!this.selection.is())\n        {\n            var $el = $R.dom('<p>');\n            var $editor = this.editor.getElement();\n\n            $editor.append($el);\n            this.caret.setStart($el);\n        }\n\n        // environment\n        var isCollapsed = this.selection.isCollapsed();\n        var isText = this.selection.isText();\n        var current = this.selection.getCurrent();\n        var dataCurrent = this.inspector.parse(current);\n\n        // collapse air\n        this._collapseSelection();\n\n        // clean\n        parsedInput = this._getCleanedInput(parsedInput, dataCurrent, clean);\n\n        // input is figure or component span\n        var isFigure = this._isFigure(parsedInput.html);\n        var isComponentSpan = this._isComponentSpan(parsedInput.html);\n        var isInsertedText = this.inspector.isText(parsedInput.html);\n        var fragment, except;\n\n        // empty editor\n        if (this.editor.isEmpty())\n        {\n            return this._insertToEmptyEditor(parsedInput.html);\n        }\n        // to component\n        else if (dataCurrent.isComponent() && !dataCurrent.isComponentEditable())\n        {\n            return this._insertToWidget(current, dataCurrent, parsedInput.html);\n        }\n        // component span\n        else if (isComponentSpan)\n        {\n            return this.insertNode(parsedInput.nodes, 'end');\n        }\n        // inserting figure & split node\n        else if (isFigure && !isText && !dataCurrent.isList())\n        {\n            if (dataCurrent.isInline())\n            {\n                return this._insertToInline(current, parsedInput);\n            }\n\n            fragment = this.utils.createFragment(parsedInput.html);\n\n            this.utils.splitNode(current, fragment);\n            this.caret.setEnd(fragment.last);\n\n            return this._sendNodes(fragment.nodes);\n        }\n        // to code\n        else if (dataCurrent.isCode())\n        {\n            return this._insertToCode(parsedInput, current, clean);\n        }\n        // to pre\n        else if (dataCurrent.isPre())\n        {\n            return this._insertToPre(parsedInput, clean);\n        }\n        // to h1-h6 & figcaption\n        else if (dataCurrent.isHeading() || dataCurrent.isFigcaption())\n        {\n            parsedInput.html = (clean !== false) ? this.cleaner.removeTagsExcept(parsedInput.html, ['a']) : parsedInput.html;\n            parsedInput.html = (clean !== false) ? this.cleaner.replaceNbspToSpaces(parsedInput.html) : parsedInput.html;\n\n            fragment = this.utils.createFragment(parsedInput.html);\n\n            return this.insertNode(fragment, 'end');\n        }\n        // text inserting\n        else if (isInsertedText)\n        {\n            if (!isText && this.opts.markup !== 'br' && this._hasBlocksAndImages(parsedInput.nodes))\n            {\n                parsedInput.html = (clean !== false) ? this.cleaner.paragraphize(parsedInput.html) : parsedInput.html;\n\n                fragment = this.utils.createFragment(parsedInput.html);\n\n                this.utils.splitNode(current, fragment);\n                this.caret.setEnd(fragment.last);\n\n                return this._sendNodes(fragment.nodes);\n            }\n\n            parsedInput.html = (clean !== false) ? parsedInput.html.replace(/\\n/g, '<br>') : parsedInput.html;\n            fragment = this.utils.createFragment(parsedInput.html);\n\n            return this.insertNode(fragment.nodes, 'end');\n        }\n        // uncollapsed\n        else if (!isCollapsed && !isFigure)\n        {\n            parsedInput.html = (clean !== false) ? this.cleaner.paragraphize(parsedInput.html) : parsedInput.html;\n\n            fragment = this.utils.createFragment(parsedInput.html);\n\n            return this.insertNode(fragment, 'end');\n        }\n        // to inline tag\n        else if (dataCurrent.isInline() && !this._isPlainHtml(parsedInput.html))\n        {\n            return this._insertToInline(current, parsedInput);\n        }\n        // to blockquote or dt, dd\n        else if (dataCurrent.isBlockquote() || dataCurrent.isDl())\n        {\n            except = this.opts.inlineTags;\n            except.concat(['br']);\n\n            parsedInput.html = (clean !== false) ? this.cleaner.replaceBlocksToBr(parsedInput.html) : parsedInput.html;\n            parsedInput.html = (clean !== false) ? this.cleaner.removeTagsExcept(parsedInput.html, except) : parsedInput.html;\n\n            fragment = this.utils.createFragment(parsedInput.html);\n\n            return this.insertNode(fragment, 'end');\n        }\n        // to p\n        else if (dataCurrent.isParagraph())\n        {\n            if (this._isPlainHtml(parsedInput.html))\n            {\n                return this.insertNode(parsedInput.nodes, 'end');\n            }\n\n            parsedInput.html = (clean !== false) ? this.cleaner.paragraphize(parsedInput.html) : parsedInput.html;\n\n            fragment = this.utils.createFragment(parsedInput.html);\n\n            this.utils.splitNode(current, fragment);\n            this.caret.setEnd(fragment.last);\n\n            return this._sendNodes(fragment.nodes);\n        }\n        // to li\n        else if (dataCurrent.isList())\n        {\n            except = this.opts.inlineTags;\n            except = except.concat(['br', 'li', 'ul', 'ol', 'img']);\n\n            parsedInput.html = (clean !== false) ? this.cleaner.replaceBlocksToBr(parsedInput.html) : parsedInput.html;\n            parsedInput.html = (clean !== false) ? this.cleaner.removeTagsExcept(parsedInput.html, except) : parsedInput.html;\n            parsedInput.html = (clean !== false) ? this.cleaner.removeBrAtEnd(parsedInput.html) : parsedInput.html;\n\n            fragment = this.utils.createFragment(parsedInput.html);\n            parsedInput.nodes = fragment.nodes;\n\n            if (this._containsTags(parsedInput.html, ['ul', 'ol', 'li']))\n            {\n                var element = this.selection.getElement(current);\n                if (element && element.tagName === 'LI' && this.caret.isStart(element))\n                {\n                    parsedInput.nodes = $R.dom(fragment.nodes).unwrap('ul, ol').getAll();\n                    $R.dom(element).before(parsedInput.nodes);\n\n                    var lastNode = parsedInput.nodes[parsedInput.nodes.length-1];\n                    this.caret.setEnd(lastNode);\n\n                    return this._sendNodes(parsedInput.nodes);\n                }\n                else if (this._isPlainHtml(parsedInput.html))\n                {\n                    return this.insertNode(fragment, 'end');\n                }\n                else\n                {\n                    fragment = this._buildList(parsedInput, element, fragment);\n\n                    this.utils.splitNode(current, fragment, true);\n                    this.caret.setEnd(fragment.last);\n\n                    return this._sendNodes(fragment.nodes);\n                }\n            }\n        }\n\n        // other cases\n        return this.insertNode(parsedInput.nodes, 'end');\n    },\n\n    // private\n    _insertToAllSelected: function(parsedInput)\n    {\n        var insertedHtml = this.set(parsedInput.html);\n        var dataInserted = this.utils.parseHtml(insertedHtml);\n\n        return this._sendNodes(dataInserted.nodes);\n    },\n    _insertToEmptyEditor: function(html)\n    {\n        html = this.cleaner.paragraphize(html);\n\n        var fragment = this.utils.createFragment(html);\n        var $editor = this.editor.getElement();\n\n        $editor.html('');\n        $editor.append(fragment.frag);\n\n        this.caret.setEnd($editor);\n\n        return this._sendNodes(fragment.nodes);\n    },\n    _insertToInline: function(current, parsedInput)\n    {\n        var fragment = this.utils.createFragment(parsedInput.html);\n        this.utils.splitNode(current, fragment, false, true);\n        this.caret.setEnd(fragment.last);\n\n        return this._sendNodes(fragment.nodes);\n    },\n    _insertToCode: function(parsedInput, current, clean)\n    {\n        parsedInput.html = (clean !== false) ? this.cleaner.encodeHtml(parsedInput.html) : parsedInput.html;\n        parsedInput.html = (clean !== false) ? this.cleaner.removeNl(parsedInput.html) : parsedInput.html;\n\n        var fragment = this.utils.createFragment(parsedInput.html);\n        var nodes = this.insertNode(fragment, 'end');\n\n        this.utils.normalizeTextNodes(current);\n\n        return nodes;\n    },\n    _insertToPre: function(parsedInput, clean)\n    {\n        parsedInput.html = (clean !== false) ? this.cleaner.encodeHtml(parsedInput.html) : parsedInput.html;\n\n        var fragment = this.utils.createFragment(parsedInput.html);\n\n        return this.insertNode(fragment, 'end');\n    },\n    _insertToWidget: function(current, dataCurrent, html)\n    {\n        html = (this._isComponentSpan(html)) ? html : this.cleaner.paragraphize(html);\n\n        var fragment = this.utils.createFragment(html);\n        var component = dataCurrent.getComponent();\n        var $component = $R.dom(component);\n\n        $component.after(fragment.frag);\n        $component.remove();\n\n        this.caret.setEnd(fragment.last);\n\n        return this._sendNodes(fragment.nodes);\n    },\n    _insertFragment: function(fragment)\n    {\n        var range = this.selection.getRange();\n        if (range)\n        {\n            if (this.selection.isCollapsed())\n            {\n                var startNode = range.startContainer;\n                if (startNode.nodeType !== 3 && startNode.tagName === 'BR')\n                {\n                    this.caret.setAfter(startNode);\n                    startNode.parentNode.removeChild(startNode);\n                }\n            }\n            else\n            {\n                range.deleteContents();\n            }\n\n            range.insertNode(fragment.frag);\n        }\n    },\n    _sendNodes: function(nodes)\n    {\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var el = nodes[i];\n            var type = (el.nodeType !== 3 && typeof el.getAttribute === 'function') ? el.getAttribute('data-redactor-type') : false;\n            if (type)\n            {\n                this.app.broadcast(type + '.inserted', this.component.build(el));\n            }\n        }\n\n        // callback\n        this.app.broadcast('inserted', nodes);\n\n        // widget's scripts\n        this.component.executeScripts();\n\n        return nodes;\n    },\n    _setCaret: function(caret, fragment)\n    {\n        var isLastInline = this._isLastInline(fragment);\n\n        if (caret)\n        {\n            caret = (isLastInline && caret === 'end') ? 'after' : caret;\n            this.caret['set' + this.utils.ucfirst(caret)](fragment.last);\n        }\n        else if (caret !== false)\n        {\n            if (isLastInline) this.caret.setAfter(fragment.last);\n        }\n    },\n    _isLastInline: function(fragment)\n    {\n        if (fragment.last)\n        {\n            var data = this.inspector.parse(fragment.last);\n\n            return data.isInline();\n        }\n\n        return false;\n    },\n    _getCleanedInput: function(parsedInput, dataCurrent, clean)\n    {\n        var isPreformatted = (dataCurrent.isCode() || dataCurrent.isPre());\n\n        parsedInput.html = (!isPreformatted && clean !== false) ? this.cleaner.input(parsedInput.html) : parsedInput.html;\n        parsedInput = (!isPreformatted && clean !== false) ? this.utils.parseHtml(parsedInput.html) : parsedInput;\n\n        return parsedInput;\n    },\n    _getContainer: function(nodes)\n    {\n        return $R.dom(this.utils.createTmpContainer(nodes));\n    },\n    _buildList: function(parsedInput, list, fragment)\n    {\n        var nodes = parsedInput.nodes;\n        var first = nodes[0];\n\n        if (first && first.nodeType !== 3 && first.tagName === 'li')\n        {\n            var $parent = $R.dom(list);\n            var parentListTag = $parent.get().tagName.toLowerCase();\n            var $list = $R.dom('<' + parentListTag + ' />');\n            $list.append(fragment.nodes);\n\n            return this.utils.createFragment($list.get().outerHTML);\n        }\n\n        return fragment;\n    },\n    _containsTags: function(html, tags)\n    {\n        return (this._getContainer(html).find(tags.join(',')).length !== 0);\n    },\n    _collapseSelection: function()\n    {\n        //if (this.app.isAirToolbar()) this.selection.collapseToEnd();\n    },\n    _hasFigureOrTable: function(nodes)\n    {\n        return (this._getContainer(nodes).find('figure, table').length !== 0);\n    },\n    _hasBlocks: function(nodes)\n    {\n        return (this._getContainer(nodes).find(this.opts.blockTags.join(',')).length !== 0);\n    },\n    _hasBlocksAndImages: function(nodes)\n    {\n        return (this._getContainer(nodes).find(this.opts.blockTags.join(',') + ',img').length !== 0);\n    },\n    _isPlainHtml: function(html)\n    {\n        return (this._getContainer(html).find(this.opts.blockTags.join(',') + ', img').length === 0);\n    },\n    _isFigure: function(html)\n    {\n        if (this._isHtmlString(html))\n        {\n            return ($R.dom(html).closest('figure').length !== 0);\n        }\n    },\n    _isComponentSpan: function(html)\n    {\n        if (this._isHtmlString(html))\n        {\n            return ($R.dom(html).closest('span.redactor-component').length !== 0);\n        }\n    },\n    _isHtmlString: function(html)\n    {\n        return !(typeof html === 'string' && !/^\\s*<(\\w+|!)[^>]*>/.test(html));\n    }\n});\n$R.add('service', 'block', {\n    mixins: ['formatter'],\n    init: function(app)\n    {\n        this.app = app;\n    },\n    // public\n    format: function(args)\n    {\n        // type of applying styles and attributes\n        this.type = (args.type) ? args.type : 'set'; // add, remove, toggle\n\n        // tag\n        this.tag = (typeof args === 'string') ? args : args.tag;\n        this.tag = this._prepareTag(this.tag);\n        this.tag = this.tag.toLowerCase();\n\n        if (typeof args === 'string') this.args = false;\n        else this.buildArgs(args);\n\n        // format\n        return this._format();\n    },\n    getBlocks: function(tags)\n    {\n        return this.selection.getBlocks({ tags: tags || this._getTags(), first: true });\n    },\n    getElements: function(tags)\n    {\n        var block = this.selection.getBlock();\n        if (!this.selection.isCollapsed() && block && (block.tagName === 'TD' || block.tagName === 'TH'))\n        {\n            return this._wrapInsideTable('div');\n        }\n        else\n        {\n            return $R.dom(this.getBlocks(tags));\n        }\n    },\n    clearFormat: function(tags)\n\t{\n\t\tthis.selection.save();\n\n        var $elements = this.getElements(tags || this._getTags());\n        $elements.each(function(node)\n        {\n            while(node.attributes.length > 0)\n            {\n                node.removeAttribute(node.attributes[0].name);\n            }\n        });\n\n\t\tthis.selection.restore();\n\n        return $elements.getAll();\n\t},\n\n    // private\n    _format: function()\n    {\n        this.selection.save();\n        var blocks = this.getBlocks();\n        var block = this.selection.getBlock();\n        var nodes = [];\n        var data, replacedTag, $wrapper, nextBr;\n\n        // div break format\n        if (blocks.length === 1 && blocks[0].tagName === 'DIV')\n        {\n            data = this._getTextNodesData();\n            if (!data || data.nodes.length === 0)\n            {\n                nodes = this._replaceBlocks(blocks);\n                nodes = this._sendNodes(nodes);\n\n                setTimeout(function() { this.selection.restore(); }.bind(this), 0);\n\n                return nodes;\n            }\n\n            replacedTag = this._getReplacedTag('set');\n            $wrapper = $R.dom('<' + replacedTag + '>');\n\n            nextBr = data.last.nextSibling;\n            if (nextBr && nextBr.tagName === 'BR')\n            {\n                $R.dom(nextBr).remove();\n            }\n\n            for (var i = 0; i < data.nodes.length; i++)\n            {\n                $wrapper.append(data.nodes[i]);\n            }\n\n            this.utils.splitNode(blocks[0], [$wrapper.get()]);\n            nodes = this._sendNodes([$wrapper.get()]);\n\n            if (this.utils.isEmptyHtml($wrapper.html()))\n            {\n                this.caret.setStart($wrapper);\n            }\n            else\n            {\n                setTimeout(function() { this.selection.restore(); }.bind(this), 0);\n            }\n\n            return nodes;\n        }\n        // standard format\n        else if (blocks.length > 0)\n        {\n            nodes = this._replaceBlocks(blocks);\n            nodes = this._sendNodes(nodes);\n\n            setTimeout(function() { this.selection.restore(); }.bind(this), 0);\n\n            return nodes;\n        }\n        // td/th format uncollapsed\n        else if (!this.selection.isCollapsed() && block && (block.tagName === 'TD' || block.tagName === 'TH'))\n        {\n            replacedTag = this._getReplacedTag('set');\n\n            $wrapper = this._wrapInsideTable(replacedTag);\n\n            this.selection.setAll($wrapper);\n\n            return this._sendNodes([$wrapper.get()]);\n        }\n        // td/th format collapsed\n        else if (this.selection.isCollapsed() && block && (block.tagName === 'TD' || block.tagName === 'TH'))\n        {\n            var textnodes = this._getChildTextNodes(block);\n\n            replacedTag = this._getReplacedTag('set');\n            var $wrapper = $R.dom('<' + replacedTag + '>');\n\n            $R.dom(textnodes.first).before($wrapper);\n\n            for (var i = 0; i < textnodes.nodes.length; i++)\n            {\n                $wrapper.append(textnodes.nodes[i]);\n            }\n\n            var nextBr = $wrapper.get().nextSibling;\n            if (nextBr && nextBr.tagName === 'BR')\n            {\n                $R.dom(nextBr).remove();\n            }\n\n            return this._sendNodes([$wrapper.get()]);\n        }\n\n        return nodes;\n    },\n    _wrapInsideTable: function(replacedTag)\n    {\n        var data = this._getTextNodesData();\n        var $wrapper = $R.dom('<' + replacedTag + '>');\n\n        $R.dom(data.first).before($wrapper);\n\n        for (var i = 0; i < data.nodes.length; i++)\n        {\n            $wrapper.append(data.nodes[i]);\n        }\n\n        var nextBr = $wrapper.get().nextSibling;\n        if (nextBr && nextBr.tagName === 'BR')\n        {\n            $R.dom(nextBr).remove();\n        }\n\n        return $wrapper;\n    },\n    _prepareTag: function(tag)\n    {\n        return (typeof tag === 'undefined') ? this.opts.markup : tag;\n    },\n    _sendNodes: function(nodes)\n    {\n        if (nodes.length > 0)\n        {\n            // clean & appliyng styles and attributes\n            nodes = this.applyArgs(nodes, false);\n            nodes = this._combinePre(nodes);\n            nodes = this._cleanBlocks(nodes);\n        }\n\n        return nodes;\n    },\n    _getTags: function()\n    {\n        return ['div', 'p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n    },\n    _replaceBlocks: function(blocks)\n    {\n        var nodes = [];\n        var type = (this._isToggleFormatType(blocks)) ? 'toggle' : 'set';\n        var replacedTag = this._getReplacedTag(type);\n\n        for (var i = 0; i < blocks.length; i++)\n        {\n            var $node = this.utils.replaceToTag(blocks[i], replacedTag);\n            nodes.push($node.get());\n        }\n\n        return nodes;\n    },\n    _getReplacedTag: function(type)\n    {\n        var replacedTag = (type === 'toggle') ? this.opts.markup : this.tag;\n\n        return (this.opts.breakline && replacedTag === 'p') ? 'div' : replacedTag;\n    },\n    _getChildTextNodes: function(el)\n    {\n        var nodes = el.childNodes;\n        var firstNode = nodes[0];\n        var finalNodes = [];\n        for (var i = 0; i <= nodes.length; i++)\n        {\n            var node = nodes[i];\n            if (node && node.nodeType !== 3 && this.inspector.isBlockTag(node.tagName))\n            {\n                break;\n            }\n\n            finalNodes.push(node);\n        }\n\n        return {\n            nodes: finalNodes,\n            first: firstNode\n        };\n    },\n    _getTextNodesData: function()\n    {\n        var nodes = this.selection.getNodes({ textnodes: true, keepbr: true });\n        if (nodes.length === 0) return false;\n\n        var firstNode = nodes[0];\n        var lastNode = nodes[nodes.length-1];\n        var node = lastNode;\n        var stop = false;\n\n        while (!stop)\n        {\n            var inline = this.selection.getInline(node);\n            node = (inline) ? inline.nextSibling : node.nextSibling;\n            if (!node)\n            {\n                stop = true;\n            }\n            else if (node.nodeType !== 3 && (node.tagName === 'BR' || this.inspector.isBlockTag(node.tagName)))\n            {\n                stop = true;\n            }\n            else\n            {\n                nodes.push(node);\n            }\n        }\n\n        return {\n            nodes: nodes,\n            first: firstNode,\n            last: lastNode\n        };\n    },\n    _isToggleFormatType: function(blocks)\n    {\n        var count = 0;\n        var len = blocks.length;\n        for (var i = 0; i < len; i++)\n        {\n            if (blocks[i] && this.tag === blocks[i].tagName.toLowerCase()) count++;\n        }\n\n        return (count === len);\n    },\n    _combinePre: function(nodes)\n    {\n        var combinedNodes = [];\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var next = nodes[i].nextElementSibling;\n            if (next && nodes[i].tagName === 'PRE' && next.tagName === 'PRE')\n            {\n                var $current = $R.dom(nodes[i]);\n                var $next = $R.dom(next);\n                var newline = document.createTextNode('\\n');\n\n                $current.append(newline);\n                $current.append($next);\n                $next.unwrap('pre');\n            }\n\n            combinedNodes.push(nodes[i]);\n        }\n\n        return combinedNodes;\n    },\n    _cleanBlocks: function(nodes)\n    {\n        var headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n        var tags = this.opts.inlineTags;\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var tag = nodes[i].tagName.toLowerCase();\n            var $node = $R.dom(nodes[i]);\n\n            if (headings.indexOf(tag) !== - 1)\n            {\n                $node.find('span').not('.redactor-component, .non-editable, .redactor-selection-marker').unwrap();\n            }\n            else if (tag === 'pre')\n            {\n                $node.find(tags.join(',')).not('.redactor-selection-marker').unwrap();\n            }\n\n            // breakline attr\n            if (this.opts.breakline && tag === 'div')\n            {\n                $node.attr('data-redactor-tag', 'br');\n            }\n            else\n            {\n                $node.removeAttr('data-redactor-tag');\n            }\n\n            this.utils.normalizeTextNodes(nodes[i]);\n        }\n\n        return nodes;\n    }\n});\n$R.add('service', 'inline', {\n    mixins: ['formatter'],\n    init: function(app)\n    {\n        this.app = app;\n    },\n    // public\n    format: function(args)\n    {\n        if (!this._isFormat()) return [];\n\n        // type of applying styles and attributes\n        this.type = (args.type) ? args.type : 'set'; // add, remove, toggle\n\n        // tag\n        this.tag = (typeof args === 'string') ? args : args.tag;\n        this.tag = this.tag.toLowerCase();\n        this.tag = this.arrangeTag(this.tag);\n\n        if (typeof args === 'string') this.args = false;\n        else this.buildArgs(args);\n\n        // format\n        var nodes = (this.selection.isCollapsed()) ? this.formatCollapsed() : this.formatUncollapsed();\n\n        return nodes;\n    },\n\n    // private\n    _isFormat: function()\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var isComponent = (data.isComponent() && !data.isComponentType('table') && !data.isFigcaption());\n\n        if (!current || data.isPre() || data.isCode() || isComponent)\n        {\n            return false;\n        }\n\n        return true;\n    },\n    arrangeTag: function(tag)\n    {\n        var replaced = this.opts.replaceTags;\n        for (var key in replaced)\n        {\n            if (tag === key) tag = replaced[key];\n        }\n\n        return tag;\n    },\n    formatCollapsed: function()\n    {\n        var nodes = [];\n        var inline = this.selection.getInlineFirst();\n        var inlines = this.selection.getInlines({ all: true });\n        var $inline = $R.dom(inline);\n        var $parent, parent, $secondPart, extractedContent;\n\n        // 1) not inline\n        if (!inline)\n        {\n            nodes = this.insertInline(nodes);\n        }\n        else\n        {\n            var dataInline = this.inspector.parse(inline);\n            var isEmpty = this.utils.isEmptyHtml(inline.innerHTML);\n\n            // 2) inline is empty\n            if (isEmpty)\n            {\n                // 2.1) has same tag\n                if (inline.tagName.toLowerCase() === this.tag)\n                {\n                    // 2.1.1) has same args or hasn't args\n                    if (this.hasSameArgs(inline))\n                    {\n                        this.caret.setAfter(inline);\n                        $inline.remove();\n\n                        var el = this.selection.getElement();\n                        this.utils.normalizeTextNodes(el);\n                    }\n                    // 2.1.2) has different args and it is span tag\n                    else if (this.tag === 'span')\n                    {\n                        nodes = this.applyArgs([inline], false);\n                        this.caret.setStart(inline);\n                    }\n                    // 2.1.3) has different args and it is not span tag\n                    else\n                    {\n                       nodes = this.insertInline(nodes);\n                    }\n\n                }\n                // 2.2) has another tag\n                else\n                {\n                    // 2.2.1) has parent\n                    if (dataInline.hasParent([this.tag]))\n                    {\n                        $parent = $inline.closest(this.tag);\n                        parent = $parent.get();\n                        if (this.hasSameArgs(parent))\n                        {\n                            $parent.unwrap();\n                            this.caret.setStart(inline);\n                        }\n                        else\n                        {\n                            nodes = this.insertInline(nodes);\n                        }\n                    }\n                    // 2.2.2) hasn't parent\n                    else\n                    {\n                        nodes = this.insertInline(nodes);\n                    }\n                }\n            }\n            // 3) inline isn't empty\n            else\n            {\n                // 3.1) has same tag\n                if (inline.tagName.toLowerCase() === this.tag)\n                {\n                    // 3.1.1) has same args or hasn't args\n                    if (this.hasSameArgs(inline))\n                    {\n                        // insert break\n                        extractedContent = this.utils.extractHtmlFromCaret(inline);\n                        $secondPart = $R.dom('<' + this.tag + ' />');\n                        $secondPart = this.utils.cloneAttributes(inline, $secondPart);\n\n                        $inline.after($secondPart.append(extractedContent));\n\n                        this.caret.setAfter(inline);\n                    }\n                    else\n                    {\n                        nodes = this.insertInline(nodes);\n                    }\n                }\n                // 3.2) has another tag\n                else\n                {\n                    // 3.2.1) has parent\n                    if (dataInline.hasParent([this.tag]))\n                    {\n                        $parent = $inline.closest(this.tag);\n                        parent = $parent.get();\n                        if (this.hasSameArgs(parent))\n                        {\n                            // insert break\n                            extractedContent = this.utils.extractHtmlFromCaret(parent, parent);\n                            $secondPart = $R.dom('<' + this.tag + ' />');\n                            $secondPart = this.utils.cloneAttributes(parent, $secondPart);\n\n                            var $breaked, $last;\n                            var z = 0;\n                            inlines = inlines.reverse();\n                            for (var i = 0; i < inlines.length; i++)\n                            {\n                                if (inlines[i] !== parent)\n                                {\n                                    $last = $R.dom('<' + inlines[i].tagName.toLowerCase() + '>');\n                                    if (z === 0)\n                                    {\n                                        $breaked = $last;\n                                    }\n                                    else\n                                    {\n                                        $breaked.append($last);\n                                    }\n\n                                    z++;\n                                }\n                            }\n\n                            $parent.after($secondPart.append(extractedContent));\n                            $parent.after($breaked);\n\n                            this.caret.setStart($last);\n                        }\n                        else\n                        {\n                            nodes = this.insertInline(nodes);\n                        }\n                    }\n                    // 3.2.2) hasn't parent\n                    else\n                    {\n                        nodes = this.insertInline(nodes);\n                    }\n                }\n            }\n        }\n\n        return nodes;\n    },\n    insertInline: function(nodes)\n    {\n        var node = document.createElement(this.tag);\n        nodes = this.insertion.insertNode(node, 'start');\n\n        return this.applyArgs(nodes, false);\n    },\n    hasSameArgs: function(inline)\n    {\n        if (inline.attributes.length === 0 && this.args === false)\n        {\n            return true;\n        }\n        else\n        {\n            var same = true;\n            if (this.args)\n            {\n                var count = 0;\n                for (var key in this.args)\n                {\n                    var $node = $R.dom(inline);\n                    var args = (this.args[key]);\n                    var value = this.utils.toParams(args);\n                    var nodeAttrValue = $node.attr(key);\n\n                    if (args)\n                    {\n                        if (key === 'style')\n                        {\n                            value = value.trim().replace(/;$/, '');\n\n                            var origRules = this.utils.styleToObj($node.attr('style'));\n                            var rules = value.split(';');\n                            var innerCount = 0;\n\n                            for (var i = 0; i < rules.length; i++)\n                            {\n                                var arr = rules[i].split(':');\n                                var ruleName = arr[0].trim();\n                                var ruleValue = arr[1].trim();\n\n                                if (ruleName.search(/color/) !== -1)\n                                {\n                                    var val = $node.css(ruleName);\n                                    if (val && (val === ruleValue || this.utils.rgb2hex(val) === ruleValue))\n                                    {\n                                        innerCount++;\n                                    }\n                                }\n                                else if ($node.css(ruleName) === ruleValue)\n                                {\n                                    innerCount++;\n                                }\n                            }\n\n                            if (innerCount === rules.length && Object.keys(origRules).length === rules.length)\n                            {\n                                count++;\n                            }\n                        }\n                        else\n                        {\n                            if (nodeAttrValue === value)\n                            {\n                                count++;\n                            }\n                        }\n                    }\n                    else\n                    {\n                        if (!nodeAttrValue || nodeAttrValue === '')\n                        {\n                            count++;\n                        }\n                    }\n                }\n\n                same = (count === Object.keys(this.args).length);\n            }\n\n            return same;\n        }\n    },\n    formatUncollapsed: function()\n    {\n        var inlines = this.selection.getInlines({ all: true, inside: true });\n\n        this.selection.save();\n\n        // convert del / u\n        this._convertTags('u');\n        this._convertTags('del');\n\n        // convert target tags\n        this._convertToStrike(inlines);\n\n        this.selection.restore();\n\n        // apply strike\n        document.execCommand('strikethrough');\n\n        // clear decoration\n        this._clearDecoration();\n\n        this.selection.save();\n\n        // revert and set style\n        var nodes = this._revertToInlines();\n        nodes = this.applyArgs(nodes, false);\n\n        // unwrap if attributes was removed\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var node = nodes[i];\n            var tag = node.tagName.toLowerCase();\n            var len = node.attributes.length;\n\n            if (tag === this.tag && len === 0 && this.args)\n            {\n                $R.dom(node).unwrap();\n                nodes.splice(i, 1);\n            }\n        }\n\n        this.selection.restore();\n\n        // clear and normalize\n        this._clearEmptyStyle();\n        nodes = this._normalizeBlocks(nodes);\n\n        return nodes;\n    },\n    _convertTags: function(tag)\n    {\n        if (this.tag !== tag)\n        {\n            var $editor = this.editor.getElement();\n            $editor.find(tag).each(function(node)\n            {\n                var $el = this.utils.replaceToTag(node, 'span');\n                $el.addClass('redactor-convertable-' + tag);\n            }.bind(this));\n        }\n    },\n    _revertTags: function(tag)\n    {\n        var $editor = this.editor.getElement();\n\n        $editor.find('span.redactor-convertable-' + tag).each(function(node)\n        {\n            var $el = this.utils.replaceToTag(node, tag);\n            $el.removeClass('redactor-convertable-' + tag);\n            if (this.utils.removeEmptyAttr($el, 'class')) $el.removeAttr('class');\n\n        }.bind(this));\n    },\n    _convertToStrike: function(inlines)\n    {\n        var selected = this.selection.getText().replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n\n        for (var i = 0; i < inlines.length; i++)\n        {\n            var tag = this.arrangeTag(inlines[i].tagName.toLowerCase());\n            var inline = inlines[i];\n            var $inline = $R.dom(inline);\n            var hasSameArgs = this.hasSameArgs(inline);\n\n            if (tag === this.tag)\n            {\n                if (this.tag === 'span' && this._isTextSelected(inline, selected))\n                {\n                    $inline.addClass('redactor-convertable-apply');\n                }\n                else if (hasSameArgs)\n                {\n                    this._replaceToStrike($inline);\n                }\n                else if (this.tag === 'span')\n                {\n                    $inline.addClass('redactor-unconvertable-apply');\n                }\n                else if (!hasSameArgs)\n                {\n                    $inline.addClass('redactor-convertable-apply');\n                }\n            }\n        }\n    },\n    _replaceToStrike: function($el)\n    {\n        $el.replaceWith(function()\n        {\n            return $R.dom('<strike>').append($el.contents());\n        });\n    },\n    _revertToInlines: function()\n    {\n        var nodes = [];\n        var $editor = this.editor.getElement();\n\n        if (this.tag !== 'u') $editor.find('u').unwrap();\n\n        // span convertable\n        $editor.find('.redactor-convertable-apply').each(function(node)\n        {\n            var $node = $R.dom(node);\n            $node.find('strike').unwrap();\n\n            this._forceRemoveClass($node, 'redactor-convertable-apply');\n            nodes.push(node);\n\n        }.bind(this));\n\n        // span unconvertable\n        $editor.find('span.redactor-unconvertable-apply').each(function(node)\n        {\n            var $node = $R.dom(node);\n            this._forceRemoveClass($node, 'redactor-unconvertable-apply');\n\n        }.bind(this));\n\n        // strike\n        $editor.find('strike').each(function(node)\n        {\n            var $node = this.utils.replaceToTag(node, this.tag);\n            nodes.push($node.get());\n\n        }.bind(this));\n\n\n        this._revertTags('u');\n        this._revertTags('del');\n\n        return nodes;\n    },\n    _normalizeBlocks: function(nodes)\n    {\n        var tags = this.opts.inlineTags;\n        var blocks = this.selection.getBlocks();\n        if (blocks)\n        {\n            for (var i = 0; i < blocks.length; i++)\n            {\n                if (blocks[i].tagName === 'PRE')\n                {\n                    var $node = $R.dom(blocks[i]);\n                    $node.find(tags.join(',')).not('.redactor-selection-marker').each(function(inline)\n                    {\n                        if (nodes.indexOf(inline) !== -1)\n                        {\n                            nodes = this.utils.removeFromArrayByValue(nodes, inline);\n                        }\n\n                        $R.dom(inline).unwrap();\n                    }.bind(this));\n                }\n            }\n        }\n\n        return nodes;\n    },\n    _clearDecoration: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.find(this.opts.inlineTags.join(',')).each(function(node)\n        {\n            if (node.style.textDecoration === 'line-through' || node.style.textDecorationLine === 'line-through')\n            {\n                var $el = $R.dom(node);\n                $el.css('textDecorationLine', '');\n                $el.css('textDecoration', '');\n                $el.wrap('<strike>');\n            }\n        });\n    },\n    _clearEmptyStyle: function()\n    {\n        var inlines = this.getInlines();\n        for (var i = 0; i < inlines.length; i++)\n        {\n            this._clearEmptyStyleAttr(inlines[i]);\n\n            var childNodes = inlines[i].childNodes;\n            if (childNodes)\n            {\n                for (var z = 0; z < childNodes.length; z++)\n                {\n                    this._clearEmptyStyleAttr(childNodes[z]);\n                }\n            }\n        }\n    },\n    _clearEmptyStyleAttr: function(node)\n    {\n        if (node.nodeType !== 3 && this.utils.removeEmptyAttr(node, 'style'))\n        {\n            node.removeAttribute('style');\n            node.removeAttribute('data-redactor-style-cache');\n        }\n    },\n    _forceRemoveClass: function($node, classname)\n    {\n        $node.removeClass(classname);\n        if (this.utils.removeEmptyAttr($node, 'class')) $node.removeAttr('class');\n    },\n    _isTextSelected: function(node, selected)\n    {\n        var text = this.utils.removeInvisibleChars(node.textContent);\n\n        return (selected === text || selected.search(new RegExp('^' + this.utils.escapeRegExp(text) + '$')) !== -1);\n    },\n\n    getInlines: function(tags)\n    {\n        return (tags) ? this.selection.getInlines({ tags: tags, all: true }) : this.selection.getInlines({ all: true });\n    },\n    getElements: function(tags)\n    {\n        return $R.dom(this.getInlines(tags));\n    },\n    clearFormat: function()\n    {\n        this.selection.save();\n\n        var nodes = this.selection.getInlines({ all: true });\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var $el = $R.dom(nodes[i]);\n            var inline = this.selection.getInline(nodes[i]);\n            if (inline)\n            {\n                $el.unwrap();\n            }\n        }\n\n        this.selection.restore();\n    }\n});\n$R.add('service', 'autoparser', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    observe: function()\n    {\n        var $editor = this.editor.getElement();\n        var $objects = $editor.find('.redactor-autoparser-object').each(function(node)\n        {\n           var $node = $R.dom(node);\n           $node.removeClass('redactor-autoparser-object');\n           if ($node.attr('class') === '') $node.removeAttr('class');\n        });\n\n        if ($objects.length > 0)\n        {\n            $objects.each(function(node)\n            {\n                var type;\n                var $object = false;\n                var tag = node.tagName;\n\n                if (tag === 'A') type = 'link';\n                else if (tag === 'IMG') type = 'image';\n                else if (tag === 'IFRAME') type = 'video';\n\n                if (type)\n                {\n                    $object = $R.create(type + '.component', this.app, node);\n                    this.app.broadcast(type + '.inserted', $object);\n                    this.app.broadcast('autoparse', type, $object);\n                }\n\n            }.bind(this));\n        }\n    },\n    format: function(e, key)\n    {\n        if (this._isKey(key))\n        {\n            this._format(key === this.keycodes.ENTER);\n        }\n    },\n    parse: function(html)\n    {\n        var tags = ['figure', 'pre', 'iframe', 'code', 'a', 'img'];\n        var stored = [];\n        var z = 0;\n\n        // encode\n        html = this.cleaner.encodePreCode(html);\n\n        // store tags\n        for (var i = 0; i < tags.length; i++)\n        {\n            var reTags = (tags[i] === 'img') ? '<' + tags[i] + '[^>]*>' : '<' + tags[i] + '([\\\\w\\\\W]*?)</' + tags[i] + '>';\n            var matched = html.match(new RegExp(reTags, 'gi'));\n\n            if (matched !== null)\n            {\n                for (var y = 0; y < matched.length; y++)\n                {\n                    html = html.replace(matched[y], '#####replaceparse' + z + '#####');\n                    stored.push(matched[y]);\n                    z++;\n                }\n            }\n        }\n\n        // images\n        if (this.opts.autoparseImages && html.match(this.opts.regex.imageurl))\n        {\n            var imagesMatches = html.match(this.opts.regex.imageurl);\n            for (var i = 0; i < imagesMatches.length; i++)\n            {\n                html = html.replace(imagesMatches[i], '<img class=\"redactor-autoparser-object\" src=\"' + imagesMatches[i] + '\">');\n            }\n        }\n\n        // video\n        if (this.opts.autoparseVideo && (html.match(this.opts.regex.youtube) || html.match(this.opts.regex.vimeo)))\n        {\n            var iframeStart = '<iframe width=\"500\" height=\"281\" src=\"';\n            var iframeEnd = '\" frameborder=\"0\" allowfullscreen></iframe>';\n\n            var str, re;\n            if (html.match(this.opts.regex.youtube))\n            {\n                str = '//www.youtube.com/embed/$1';\n                re = this.opts.regex.youtube;\n            }\n            else if (html.match(this.opts.regex.vimeo))\n            {\n                str = '//player.vimeo.com/video/$2';\n                re = this.opts.regex.vimeo;\n            }\n\n            var $video = this.component.create('video', iframeStart + str + iframeEnd);\n\n            html = html.replace(re, $video.get().outerHTML);\n        }\n\n        // links\n        if (this.opts.autoparseLinks && html.match(this.opts.regex.url))\n        {\n            html = this._formatLinks(html);\n        }\n\n        // restore\n        html = this._restoreReplaced(stored, html);\n\n        // repeat for nested tags\n        html = this._restoreReplaced(stored, html);\n\n        return html;\n    },\n\n    // private\n    _isKey: function(key)\n    {\n        return (key === this.keycodes.ENTER || key === this.keycodes.SPACE);\n    },\n    _format: function(enter)\n    {\n        var parent = this.selection.getParent();\n        var $parent = $R.dom(parent);\n\n        var isNotFormatted = (parent && $parent.closest('figure, pre, code, img, a, iframe').length !== 0);\n        if (isNotFormatted || !this.selection.isCollapsed())\n        {\n            return;\n        }\n\n        // add split marker\n        var marker = this.utils.createInvisibleChar();\n        var range = this.selection.getRange();\n        range.insertNode(marker);\n\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var $current = $R.dom(current);\n\n        // remove split marker\n        marker.parentNode.removeChild(marker);\n\n        if (current && current.nodeType === 3)\n        {\n            var content = current.textContent;\n            var type;\n\n            // images\n            if (this.opts.autoparseImages && content.match(this._convertToRegExp(this.opts.regex.imageurl)))\n            {\n                var isList = data.isList();\n                var matches = content.match(this.opts.regex.imageurl);\n                var el = (isList) ? undefined : '<figure><img></figure>';\n\n                var $img = this.component.create('image', el);\n                $img.setSrc(matches[0]);\n                $img.addClass('redactor-autoparser-object');\n\n                content = content.replace(matches[0], $img.get().outerHTML);\n                type = 'image';\n            }\n            // video\n            else if (this.opts.autoparseVideo && (content.match(this._convertToRegExp(this.opts.regex.youtube)) || content.match(this._convertToRegExp(this.opts.regex.vimeo))))\n            {\n                var iframeStart = '<iframe width=\"500\" height=\"281\" src=\"';\n                var iframeEnd = '\" frameborder=\"0\" allowfullscreen></iframe>';\n                var str, re;\n\n                if (content.match(this.opts.regex.youtube))\n                {\n                    str = '//www.youtube.com/embed/$1';\n                    re = this.opts.regex.youtube;\n                }\n                else if (content.match(this.opts.regex.vimeo))\n                {\n                    str = '//player.vimeo.com/video/$2';\n                    re = this.opts.regex.vimeo;\n                }\n\n                var $video = this.component.create('video', iframeStart + str + iframeEnd);\n                $video.addClass('redactor-autoparser-object');\n\n                content = content.replace(re, $video.get().outerHTML);\n                type = 'video';\n            }\n            // links\n            else if (this.opts.autoparseLinks && content.match(this._convertToRegExp(this.opts.regex.url)))\n            {\n                content = this._formatLinks(content, enter);\n                type = 'link';\n            }\n\n            // replace\n            if (type)\n            {\n                if (enter)\n                {\n                    this.selection.save();\n                    $current.replaceWith(content);\n                    this.selection.restore();\n                }\n                else\n                {\n                    $current.replaceWith(content);\n                }\n\n                // object\n                var $editor = this.editor.getElement();\n                var $object = $editor.find('.redactor-autoparser-object').removeClass('redactor-autoparser-object');\n                $object = (type === 'link') ? $R.create('link.component', this.app, $object) : $object;\n\n                // caret\n                if (type === 'link')\n                {\n                    if (!enter) this.caret.setAfter($object);\n                    this.app.broadcast('link.inserted', $object);\n                }\n                else\n                {\n                    this.caret.setAfter($object);\n\n                    var $cloned = $object.clone();\n                    $object.remove();\n                    $object = this.insertion.insertHtml($cloned);\n                    $object = this.component.build($object);\n                }\n\n                // callback\n                this.app.broadcast('autoparse', type, $object);\n            }\n        }\n    },\n    _formatLinks: function(content, enter)\n    {\n        var matches = content.match(this.opts.regex.url);\n        var obj = {};\n        for (var i = 0; i < matches.length; i++)\n        {\n            if (enter && matches[i].search(/\\.$/) !== -1)\n            {\n                matches[i] = matches[i].replace(/\\.$/, '');\n            }\n\n            var href = matches[i], text = href;\n            var linkProtocol = (href.match(/(https?|ftp):\\/\\//i) !== null) ? '' : 'http://';\n            var regexB = ([\"/\", \"&\", \"=\"].indexOf(href.slice(-1)) !== -1) ? \"\" : \"\\\\b\";\n            var target = (this.opts.pasteLinkTarget !== false) ? ' target=\"' + this.opts.pasteLinkTarget + '\"' : '';\n\n            text = (text.length > this.opts.linkSize) ? text.substring(0, this.opts.linkSize) + '...' : text;\n            text = (text.search('%') === -1) ? decodeURIComponent(text) : text;\n\n            // escaping url\n            var regexp = '(' + href.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\") + regexB + ')';\n            var classstr = ' class=\"redactor-autoparser-object\"';\n\n            obj[regexp] = '<a href=\"' + linkProtocol + href.trim() + '\"' + target + classstr + '>' + text.trim() + '</a>';\n        }\n\n        // replace\n        for (var key in obj)\n        {\n            content = content.replace(new RegExp(key, 'g'), obj[key]);\n        }\n\n        return content;\n    },\n    _restoreReplaced: function(stored, html)\n    {\n        for (var i = 0; i < stored.length; i++)\n        {\n            html = html.replace('#####replaceparse' + i + '#####', stored[i]);\n        }\n\n        return html;\n    },\n    _convertToRegExp: function(str)\n    {\n        return new RegExp(String(str).replace(/^\\//, '').replace(/\\/ig$/, '').replace(/\\/gi$/, '') + '$', 'gi');\n    }\n});\n$R.add('service', 'storage', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.data = [];\n    },\n    // public\n    observeImages: function()\n    {\n        var $editor = this.editor.getElement();\n        var $images = $editor.find('[data-image]');\n\n        $images.each(this._addImage.bind(this));\n    },\n    observeFiles: function()\n    {\n        var $editor = this.editor.getElement();\n        var $files = $editor.find('[data-file]');\n\n\t\t$files.each(this._addFile.bind(this));\n    },\n\tsetStatus: function(url, status)\n\t{\n\t\tthis.data[url].status = status;\n\t},\n    getChanges: function()\n    {\n        var $editor = this.editor.getElement();\n\n        // check status\n        for (var key in this.data)\n\t\t{\n\t\t\tvar data = this.data[key];\n\t\t\tvar $el = $editor.find('[data-' + data.type + '=\"' + data.id + '\"]');\n\n\t\t\tthis.setStatus(data.id, ($el.length === 0) ? false : true);\n\t\t}\n\n        return this.data;\n    },\n\tadd: function(type, node)\n\t{\n        var $node = $R.dom(node);\n        var id = $node.attr('data-' + type);\n\n        this.data[id] = { type: type, status: true, node: $node.get(), id: $node.attr('data-' + type) };\n\t},\n\n    // private\n    _addImage: function(node)\n    {\n        this.add('image', node);\n    },\n    _addFile: function(node)\n    {\n        this.add('file', node);\n    }\n});\n$R.add('service', 'utils', {\n    init: function(app)\n    {\n        this.app = app;\n    },\n    // empty\n    isEmpty: function(el)\n    {\n        var isEmpty = false;\n        el = $R.dom(el).get();\n        if (el)\n        {\n            isEmpty = (el.nodeType === 3) ? (el.textContent.trim().replace(/\\n/, '') === '') : (el.innerHTML === '');\n        }\n\n        return isEmpty;\n    },\n    isEmptyHtml: function(html, keepbr, keeplists)\n    {\n        html = this.removeInvisibleChars(html);\n        html = html.replace(/&nbsp;/gi, '');\n        html = html.replace(/<\\/?br\\s?\\/?>/g, ((keepbr) ? 'br' : ''));\n        html = html.replace(/\\s/g, '');\n        html = html.replace(/^<p>[^\\W\\w\\D\\d]*?<\\/p>$/i, '');\n        html = html.replace(/^<div>[^\\W\\w\\D\\d]*?<\\/div>$/i, '');\n\n        if (keeplists)\n        {\n            html = html.replace(/<ul(.*?[^>])>$/i, 'ul');\n            html = html.replace(/<ol(.*?[^>])>$/i, 'ol');\n        }\n\n        html = html.replace(/<hr(.*?[^>])>$/i, 'hr');\n        html = html.replace(/<iframe(.*?[^>])>$/i, 'iframe');\n        html = html.replace(/<source(.*?[^>])>$/i, 'source');\n\n        // remove empty tags\n        html = html.replace(/<[^\\/>][^>]*><\\/[^>]+>/gi, '');\n        html = html.replace(/<[^\\/>][^>]*><\\/[^>]+>/gi, '');\n\n        // trim\n        html = html.trim();\n\n        return html === '';\n    },\n    trimSpaces: function(html)\n    {\n        return html = this.removeInvisibleChars(html.trim());\n    },\n\n    // invisible chars\n    createInvisibleChar: function()\n    {\n        return document.createTextNode(this.opts.markerChar);\n    },\n    searchInvisibleChars: function(str)\n    {\n        return str.search(/^\\uFEFF$/g);\n    },\n    removeInvisibleChars: function(html)\n    {\n        return html.replace(/\\uFEFF/g, '');\n    },\n    trimInvisibleChars: function(direction)\n    {\n        if (!this.selection.isCollapsed()) return;\n\n        var current = this.selection.getCurrent();\n        var side = (direction === 'left') ? this.selection.getTextBeforeCaret() : this.selection.getTextAfterCaret();\n        var isSpace = (current && current.nodeType === 3 && this.searchInvisibleChars(side) === 0);\n\n        if (isSpace)\n        {\n            if (direction === 'left')\n            {\n                $R.dom(current).replaceWith(current.textContent.trim());\n            }\n            else\n            {\n                var offset = this.offset.get();\n                this.offset.set({ start: offset.start + 1, end: offset.end + 1 });\n            }\n        }\n    },\n\n    // wrapper\n    buildWrapper: function(html)\n    {\n        return $R.dom('<div>').html(html);\n    },\n    getWrapperHtml: function($wrapper)\n    {\n        var html = $wrapper.html();\n        $wrapper.remove();\n\n        return html;\n    },\n\n    // fragment\n    createTmpContainer: function(html)\n    {\n        var $div = $R.dom('<div>');\n\n        if (typeof html === 'string')\n        {\n            $div.html(html);\n        }\n        else\n        {\n            $div.append($R.dom(html).clone(true));\n        }\n\n        return $div.get();\n    },\n    createFragment: function(html)\n    {\n        var el = this.createTmpContainer(html);\n        var frag = document.createDocumentFragment(), node, firstNode, lastNode;\n        var nodes = [];\n        var i = 0;\n        while ((node = el.firstChild))\n        {\n            i++;\n            var n = frag.appendChild(node);\n            if (i === 1) firstNode = n;\n\n            nodes.push(n);\n            lastNode = n;\n        }\n\n        return { frag: frag, first: firstNode, last: lastNode, nodes: nodes };\n    },\n    isFragment: function(obj)\n    {\n        return (typeof obj === 'object' && obj.frag);\n    },\n    parseHtml: function(html)\n    {\n        var div = this.createTmpContainer(html);\n\n        return { html: div.innerHTML, nodes: div.childNodes };\n    },\n\n    splitNode: function(current, nodes, isList, inline)\n    {\n        nodes = (this.isFragment(nodes)) ? nodes.frag : nodes;\n\n        var element;\n        if (inline)\n        {\n            element = (this.inspector.isInlineTag(current.tagName)) ? current : this.selection.getInline(current);\n        }\n        else\n        {\n            element = (this.inspector.isBlockTag(current.tagName)) ? current : this.selection.getBlock(current);\n        }\n\n        var $element = $R.dom(element);\n\n        // replace is empty\n        if (!inline && this.isEmptyHtml(element.innerHTML, true))\n        {\n            $element.after(nodes);\n            $element.remove();\n\n            return nodes;\n        }\n\n        var tag = $element.get().tagName.toLowerCase();\n        var isEnd = this.caret.isEnd(element);\n        var isStart = this.caret.isStart(element);\n\n        if (!isEnd && !isStart)\n        {\n            var extractedContent = this.extractHtmlFromCaret(inline);\n\n            var $secondPart = $R.dom('<' + tag + ' />');\n            $secondPart = this.cloneAttributes(element, $secondPart);\n\n            $element.after($secondPart.append(extractedContent));\n        }\n\n        if (isStart)\n        {\n            return $element.before(nodes);\n        }\n        else\n        {\n            if (isList)\n            {\n                return $element.append(nodes);\n            }\n            else\n            {\n                nodes = $element.after(nodes);\n\n                var html = $element.html();\n                html = this.removeInvisibleChars(html);\n                html = html.replace(/&nbsp;/gi, '');\n\n                if (html === '') $element.remove();\n\n                return nodes;\n            }\n        }\n    },\n    extractHtmlFromCaret: function(inline, element)\n    {\n        var range = this.selection.getRange();\n        if (range)\n        {\n            element = (element) ? element : ((inline) ? this.selection.getInline() : this.selection.getBlock());\n            if (element)\n            {\n                var clonedRange = range.cloneRange();\n                clonedRange.selectNodeContents(element);\n                clonedRange.setStart(range.endContainer, range.endOffset);\n\n                return clonedRange.extractContents();\n            }\n        }\n    },\n    createMarkup: function(el)\n    {\n        var markup = document.createElement(this.opts.markup);\n        if (this.opts.breakline) markup.setAttribute('data-redactor-tag', 'br');\n\n        var $el = $R.dom(el);\n\n        $el.after(markup);\n        this.caret.setStart(markup);\n    },\n    getNode: function(el)\n    {\n        var node = $R.dom(el).get();\n        var editor = this.editor.getElement().get();\n\n        return (typeof el === 'undefined') ? editor : ((node) ? node : false);\n    },\n    findSiblings: function(node, type)\n    {\n        node = $R.dom(node).get();\n        type = (type === 'next') ? 'nextSibling' : 'previousSibling';\n\n        while (node = node[type])\n        {\n            if ((node.nodeType === 3 && node.textContent.trim() === '') || node.tagName === 'BR')\n            {\n                continue;\n            }\n\n            return node;\n        }\n\n        return false;\n    },\n    getElementsFromHtml: function(html, selector, exclude)\n    {\n        var div = document.createElement(\"div\");\n        div.innerHTML = html;\n\n        var elems = div.querySelectorAll(selector);\n\n        // array map polyfill\n        var mapping = function(callback, thisArg)\n        {\n            if (typeof this.length !== 'number') return;\n            if (typeof callback !== 'function') return;\n\n            var newArr = [];\n            if (typeof this == 'object')\n            {\n                for (var i = 0; i < this.length; i++)\n                {\n                    if (i in this) newArr[i] = callback.call(thisArg || this, this[i], i, this);\n                    else return;\n                }\n            }\n\n            return newArr;\n        };\n\n        return mapping.call(elems, function(el)\n        {\n            var type = el.getAttribute('data-redactor-type');\n            if (exclude && type && type === exclude) {}\n            else return el.outerHTML;\n        });\n    },\n\n    // childnodes\n    getChildNodes: function(el, recursive, elements)\n    {\n        el = (el && el.nodeType && el.nodeType === 11) ? el : $R.dom(el).get();\n\n        var nodes = el.childNodes;\n        var result = [];\n        if (nodes)\n        {\n            for (var i = 0; i < nodes.length; i++)\n            {\n                if (elements === true && nodes[i].nodeType === 3) continue;\n                else if (nodes[i].nodeType === 3 && this.isEmpty(nodes[i])) continue;\n\n                result.push(nodes[i]);\n\n                if (recursive !== false)\n                {\n                    var nestedNodes = this.getChildNodes(nodes[i], elements);\n                    if (nestedNodes.length > 0)\n                    {\n                        result = result.concat(nestedNodes);\n                    }\n                }\n            }\n        }\n\n        return result;\n    },\n    getChildElements: function(el)\n    {\n        return this.getChildNodes(el, true, true);\n    },\n    getFirstNode: function(el)\n    {\n        return this._getFirst(this.getChildNodes(el, false));\n    },\n    getLastNode: function(el)\n    {\n        return this._getLast(this.getChildNodes(el, false));\n    },\n    getFirstElement: function(el)\n    {\n        return this._getFirst(this.getChildNodes(el, false, true));\n    },\n    getLastElement: function(el)\n    {\n        return this._getLast(this.getChildNodes(el, false, true));\n    },\n\n    // replace\n    replaceToTag: function(node, tag)\n    {\n        var $node = $R.dom(node);\n        return $node.replaceWith(function(node)\n        {\n            var $replaced = $R.dom('<' + tag + '>').append($R.dom(node).contents());\n            if (node.attributes)\n            {\n                var attrs = node.attributes;\n                for (var i = 0; i < attrs.length; i++)\n                {\n                    $replaced.attr(attrs[i].nodeName, attrs[i].value);\n                }\n            }\n\n            return $replaced;\n\n        });\n    },\n\n    // string\n    ucfirst: function(str)\n    {\n        return str.charAt(0).toUpperCase() + str.slice(1);\n    },\n\n    // array\n    removeFromArrayByValue: function(arr, value)\n    {\n        var a = arguments, len = a.length, ax;\n        while (len > 1 && arr.length)\n        {\n            value = a[--len];\n            while ((ax= arr.indexOf(value)) !== -1)\n            {\n                arr.splice(ax, 1);\n            }\n        }\n\n        return arr;\n    },\n\n    // attributes\n    removeEmptyAttr: function(el, attr)\n    {\n        var $el = $R.dom(el);\n\n        if (typeof $el.attr(attr) === 'undefined' || $el.attr(attr) === null) return true;\n        else if ($el.attr(attr) === '')\n        {\n            $el.removeAttr(attr);\n            return true;\n        }\n\n        return false;\n    },\n    cloneAttributes: function(elFrom, elTo)\n    {\n        elFrom = $R.dom(elFrom).get();\n        elTo = $R.dom(elTo);\n\n        var attrs = elFrom.attributes;\n        var len = attrs.length;\n        while (len--)\n        {\n            var attr = attrs[len];\n            elTo.attr(attr.name, attr.value);\n        }\n\n        return elTo;\n    },\n\n    // object\n    toParams: function(obj)\n    {\n        if (typeof obj !== 'object') return obj;\n\n        var keys = Object.keys(obj);\n        if (!keys.length) return '';\n        var result = '';\n\n        for (var i = 0; i < keys.length; i++)\n        {\n            var key = keys[i];\n            result += key + ':' + obj[key] + ';';\n        }\n\n        return result;\n    },\n    styleToObj: function(str)\n    {\n        var obj = {};\n\n        if (str)\n        {\n            var style = str.replace(/;$/, '').split(';');\n            for (var i = 0; i < style.length; i++)\n            {\n                var rule = style[i].split(':');\n                obj[rule[0].trim()] = rule[1].trim();\n            }\n        }\n\n        return obj;\n    },\n    checkProperty: function(obj)\n    {\n        var args = (arguments[1] && Array.isArray(arguments[1])) ? arguments[1] : [].slice.call(arguments, 1);\n\n        for (var i = 0; i < args.length; i++)\n        {\n            if (!obj || (typeof obj[args[i]] === 'undefined'))\n            {\n                return false;\n            }\n\n            obj = obj[args[i]];\n        }\n\n        return obj;\n    },\n\n    // data\n    extendData: function(data, obj)\n    {\n        for (var key in obj)\n        {\n            if (key === 'elements')\n            {\n                var $elms = $R.dom(obj[key]);\n                $elms.each(function(node)\n                {\n                    var $node = $R.dom(node);\n                    if (node.tagName === 'FORM')\n                    {\n                        var serializedData = $node.serialize(true);\n                        for (var z in serializedData)\n                        {\n                            data = this._setData(data, z, serializedData[z]);\n                        }\n                    }\n                    else\n                    {\n                        var name = ($node.attr('name')) ? $node.attr('name') : $node.attr('id');\n                        data = this._setData(data, name, $node.val());\n                    }\n                }.bind(this));\n            }\n            else\n            {\n                data = this._setData(data, key, obj[key]);\n            }\n        }\n\n        return data;\n    },\n    _setData: function(data, name, value)\n    {\n        if (data instanceof FormData) data.append(name, value);\n        else data[name] = value;\n\n        return data;\n    },\n\n    // normalize\n    normalizeTextNodes: function(el)\n    {\n        el = $R.dom(el).get();\n        if (el) el.normalize();\n    },\n\n    // color\n    isRgb: function(str)\n    {\n        return (str.search(/^rgb/i) === 0);\n    },\n    rgb2hex: function(rgb)\n    {\n        rgb = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n\n        return (rgb && rgb.length === 4) ? \"#\" +\n        (\"0\" + parseInt(rgb[1],10).toString(16)).slice(-2) +\n        (\"0\" + parseInt(rgb[2],10).toString(16)).slice(-2) +\n        (\"0\" + parseInt(rgb[3],10).toString(16)).slice(-2) : '';\n    },\n    hex2long: function(val)\n    {\n        if (val.search(/^#/) !== -1 && val.length === 4)\n        {\n            val = '#' + val[1] + val[1] + val[2] + val[2] + val[3] + val[3];\n        }\n\n        return val;\n    },\n\n    // escape\n    escapeRegExp: function(s)\n    {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    },\n\n    // random\n    getRandomId: function()\n    {\n        var id = '';\n        var possible = 'abcdefghijklmnopqrstuvwxyz0123456789';\n\n        for (var i = 0; i < 12; i++)\n        {\n            id += possible.charAt(Math.floor(Math.random() * possible.length));\n        }\n\n        return id;\n    },\n\n    // private\n    _getFirst: function(nodes)\n    {\n        return (nodes.length !== 0) ? nodes[0] : false;\n    },\n    _getLast: function(nodes)\n    {\n        return (nodes.length !== 0) ? nodes[nodes.length-1] : false;\n    }\n});\n$R.add('service', 'progress', {\n    init: function(app)\n    {\n        this.app = app;\n\n        // local\n        this.$box = null;\n        this.$bar = null;\n    },\n\n    // public\n    show: function()\n    {\n        if (!this._is()) this._build();\n        this.$box.show();\n    },\n    hide: function()\n    {\n        if (this._is())\n        {\n            this.animate.start(this.$box, 'fadeOut', this._destroy.bind(this));\n        }\n    },\n    update: function(value)\n    {\n        this.show();\n        this.$bar.css('width', value + '%');\n    },\n\n    // private\n    _is: function()\n    {\n        return (this.$box !== null);\n    },\n    _build: function()\n    {\n        this.$bar = $R.dom('<span />');\n        this.$box = $R.dom('<div id=\"redactor-progress\" />');\n\n        this.$box.append(this.$bar);\n        this.$body.append(this.$box);\n    },\n    _destroy: function()\n    {\n        if (this._is()) this.$box.remove();\n\n        this.$box = null;\n        this.$bar = null;\n    }\n});\n$R.add('module', 'starter', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.plugin = app.plugin;\n        this.module = app.module;\n    },\n    // messages\n    onstart: function()\n    {\n        var services = ['element', 'container', 'source', 'editor', 'statusbar', 'toolbar'];\n        var modules = ['element', 'container', 'source', 'editor', 'statusbar', 'contextbar', 'input'];\n\n        this._startStop('start', this.app, services);\n        this._startStop('start', this.module, modules);\n    },\n    onstop: function()\n    {\n        var modules = ['observer', 'element', 'container', 'source', 'editor', 'contextbar'];\n\n        this._startStop('stop', this.module, modules);\n    },\n    onenable: function()\n    {\n        var modules = ['observer', 'toolbar'];\n        var plugins = this.opts.plugins;\n\n        this._startStop('start', this.module, modules);\n        this._startStop('start', this.plugin, plugins);\n    },\n    ondisable: function()\n    {\n        var modules = ['observer', 'toolbar'];\n        var plugins = this.opts.plugins;\n\n        this._startStop('stop', this.module, modules);\n        this._startStop('stop', this.plugin, plugins);\n    },\n\n    // private\n    _startStop: function(type, obj, arr)\n    {\n        for (var i = 0; i < arr.length; i++)\n        {\n            if (typeof obj[arr[i]] !== 'undefined')\n            {\n                this.app.callInstanceMethod(obj[arr[i]], type);\n            }\n        }\n    }\n});\n$R.add('module', 'element', {\n    init: function(app)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.namespace = app.namespace;\n        this.element = app.element;\n        this.rootOpts = $R.extend({}, true, $R.options, app.rootOpts);\n    },\n    // public\n    start: function()\n    {\n        this._build();\n        this._buildModes();\n        this._buildMarkup();\n    },\n    stop: function()\n    {\n        var $element = this.element.getElement();\n        $element.removeData(this.namespace + '-uuid');\n    },\n\n    // private\n    _build: function()\n    {\n        var $element = this.element.getElement();\n        $element.data(this.namespace + '-uuid', this.uuid);\n    },\n    _buildModes: function()\n    {\n        var type = this.element.getType();\n\n        if (type === 'inline') this._redefineOptions(this.opts.modes['inline']);\n        if (type === 'div') this._redefineOptions(this.opts.modes['original']);\n\n        if (type !== 'inline')\n        {\n            if (this._isRootOption('styles') && this.rootOpts.styles) this.opts.styles = true;\n            if (this._isRootOption('source') && !this.rootOpts.source) this.opts.showSource = false;\n        }\n    },\n    _buildMarkup: function()\n    {\n        var type = this.element.getType();\n\n        if (type === 'inline')\n        {\n            this.opts.emptyHtml = '';\n        }\n        else if (this.opts.breakline)\n        {\n            this.opts.markup = 'div';\n            this.opts.emptyHtml = '<div data-redactor-tag=\"br\">' + this.opts.markerChar + '</div>';\n        }\n        else\n        {\n            this.opts.emptyHtml = '<' + this.opts.markup + '></' + this.opts.markup + '>';\n        }\n    },\n    _redefineOptions: function(opts)\n    {\n        for (var key in opts)\n        {\n            this.opts[key] = opts[key];\n        }\n    },\n    _isRootOption: function()\n    {\n        return (typeof this.rootOpts['styles'] !== 'undefined');\n    }\n});\n$R.add('module', 'editor', {\n    init: function(app)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.editor = app.editor;\n        this.source = app.source;\n        this.element = app.element;\n        this.component = app.component;\n        this.container = app.container;\n        this.inspector = app.inspector;\n        this.autoparser = app.autoparser;\n\n        // local\n        this.placeholder = false;\n        this.events = false;\n    },\n    // messages\n    onenable: function()\n    {\n        this.enable();\n    },\n    ondisable: function()\n    {\n        this.disable();\n    },\n    onenablefocus: function()\n    {\n        this._enableFocus();\n    },\n    oncontextmenu: function(e)\n    {\n        this.component.setOnEvent(e, true);\n    },\n    onclick: function(e)\n    {\n        this.component.setOnEvent(e);\n    },\n    onkeyup: function(e)\n    {\n        var data = this.inspector.parse(e.target);\n        if (!data.isComponent())\n        {\n            this.component.clearActive();\n        }\n    },\n    onenablereadonly: function()\n    {\n        this._enableReadOnly();\n    },\n    ondisablereadonly: function()\n    {\n        this._disableReadOnly();\n    },\n    onautoparseobserve: function()\n    {\n        this.autoparser.observe();\n    },\n    onplaceholder: {\n        build: function()\n        {\n            this._buildPlaceholder();\n        },\n        toggle: function()\n        {\n            this._togglePlacehodler();\n        }\n    },\n\n    // public\n    start: function()\n    {\n        this._build();\n        this._buildEvents();\n        this._buildOptions();\n        this._buildAccesibility();\n    },\n    stop: function()\n    {\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n\n        var classesEditor = ['redactor-in', 'redactor-in-' + this.uuid, 'redactor-structure', 'redactor-placeholder', this.opts.stylesClass];\n        var classesContainer = ['redactor-focus', 'redactor-blur', 'redactor-over', 'redactor-styles-on',\n                                'redactor-styles-off', 'redactor-toolbar-on', 'redactor-text-labeled-on', 'redactor-source-view'];\n\n        $editor.removeAttr('spellcheck');\n        $editor.removeAttr('dir');\n        $editor.removeAttr('contenteditable');\n        $editor.removeAttr('placeholder');\n        $editor.removeAttr('data-gramm_editor');\n        $editor.removeClass(classesEditor.join(' '));\n\n        $container.removeClass(classesContainer.join(' '));\n\n        this._destroyEvents();\n\n        if ($editor.get().classList.length === 0) $editor.removeAttr('class');\n    },\n    enable: function()\n    {\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n\n        $editor.addClass('redactor-in redactor-in-' + this.uuid);\n        $editor.attr({ 'contenteditable': true });\n\n        if (this.opts.structure)\n        {\n            $editor.addClass('redactor-structure');\n        }\n\n        if (this.opts.toolbar && !this.opts.air && !this.opts.toolbarExternal)\n        {\n            $container.addClass('redactor-toolbar-on');\n        }\n\n        // prevent editing\n        this._disableBrowsersEditing();\n    },\n    disable: function()\n    {\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n\n        $editor.removeClass('redactor-in redactor-in-' + this.uuid);\n        $editor.removeClass('redactor-structure');\n        $editor.removeAttr('contenteditable');\n\n        $container.addClass('redactor-toolbar-on');\n    },\n\n    // private\n    _build: function()\n    {\n        var $editor = this.editor.getElement();\n        var $element = this.element.getElement();\n        var $container = this.container.getElement();\n\n        $container.addClass('redactor-blur');\n\n        if (!this.opts.grammarly)\n        {\n            $editor.attr('data-gramm_editor', false);\n        }\n\n        if (this.opts.styles)\n        {\n            $editor.addClass(this.opts.stylesClass);\n            $container.addClass('redactor-styles-on');\n        }\n        else\n        {\n            $container.addClass('redactor-styles-off');\n        }\n\n        if (this.opts.buttonsTextLabeled)\n        {\n            $container.addClass('redactor-text-labeled-on');\n        }\n\n        if (this.element.isType('textarea')) $element.before($editor);\n    },\n    _buildEvents: function()\n    {\n        this.events = $R.create('editor.events', this.app);\n    },\n    _buildOptions: function()\n    {\n        var $editor = this.editor.getElement();\n\n        $editor.attr('dir', this.opts.direction);\n\n        if (this.opts.tabindex)  $editor.attr('tabindex', this.opts.tabindex);\n        if (this.opts.minHeight) $editor.css('min-height', this.opts.minHeight);\n        if (this.opts.maxHeight) $editor.css('max-height', this.opts.maxHeight);\n        if (this.opts.maxWidth)  $editor.css({ 'max-width': this.opts.maxWidth, 'margin': 'auto' });\n    },\n    _buildAccesibility: function()\n    {\n        var $editor = this.editor.getElement();\n\n        $editor.attr({ 'aria-labelledby': 'redactor-voice-' + this.uuid, 'role': 'presentation' });\n    },\n    _buildPlaceholder: function()\n    {\n        this.placeholder = $R.create('editor.placeholder', this.app);\n    },\n    _enableFocus: function()\n    {\n        if (this.opts.showSource) this._enableFocusSource();\n        else this._enableFocusEditor();\n    },\n    _enableFocusSource: function()\n    {\n        var $source = this.source.getElement();\n\n        if (this.opts.focus)\n        {\n            $source.focus();\n            $source.get().setSelectionRange(0, 0);\n        }\n        else if (this.opts.focusEnd)\n        {\n            $source.focus();\n        }\n    },\n    _enableFocusEditor: function()\n    {\n        if (this.opts.focus)\n        {\n            setTimeout(this.editor.startFocus.bind(this.editor), 100);\n        }\n        else if (this.opts.focusEnd)\n        {\n            setTimeout(this.editor.endFocus.bind(this.editor), 100);\n        }\n    },\n    _togglePlacehodler: function()\n    {\n        if (this.placeholder) this.placeholder.toggle();\n    },\n    _disableBrowsersEditing: function()\n    {\n        try {\n            // FF fix\n            document.execCommand('enableObjectResizing', false, false);\n            document.execCommand('enableInlineTableEditing', false, false);\n            // IE prevent converting links\n            document.execCommand(\"AutoUrlDetect\", false, false);\n\n            // IE disable image resizing\n            var $editor = this.editor.getElement();\n            var el = $editor.get();\n            if (el.addEventListener) el.addEventListener('mscontrolselect', function(e) { e.preventDefault(); });\n            else el.attachEvent('oncontrolselect', function(e) { e.returnValue = false; });\n\n        } catch (e) {}\n    },\n    _destroyEvents: function()\n    {\n        if (this.events)\n        {\n            this.events.destroy();\n        }\n    },\n    _enableReadOnly: function()\n    {\n        var $editor = this.editor.getElement();\n\n        this._getEditables($editor).removeAttr('contenteditable');\n        $editor.removeAttr('contenteditable');\n        $editor.addClass('redactor-read-only');\n\n        if (this.events) this.events.destroy();\n    },\n    _disableReadOnly: function()\n    {\n        var $editor = this.editor.getElement();\n\n        this._getEditables($editor).attr({ 'contenteditable': true });\n        $editor.removeClass('redactor-read-only');\n        $editor.attr({ 'contenteditable': true });\n\n        this._buildEvents();\n    },\n    _getEditables: function($editor)\n    {\n        return $editor.find('figcaption, td, th');\n    }\n});\n$R.add('class', 'editor.placeholder', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.editor = app.editor;\n        this.element = app.element;\n\n        // build\n        this.build();\n    },\n    build: function()\n    {\n        var $element = this.element.getElement();\n        var $editor = this.editor.getElement();\n\n        if (this.opts.placeholder !== false || $element.attr('placeholder'))\n        {\n            var text = (this.opts.placeholder !== false) ? this.opts.placeholder : $element.attr('placeholder');\n            $editor.attr('placeholder', text);\n            this.toggle();\n        }\n    },\n    toggle: function()\n    {\n        return (this.editor.isEmpty(true)) ? this.show() : this.hide();\n    },\n    show: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.addClass('redactor-placeholder');\n    },\n    hide: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.removeClass('redactor-placeholder');\n    }\n});\n$R.add('class', 'editor.events', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.$doc = app.$doc;\n        this.uuid = app.uuid;\n        this.source = app.source;\n        this.editor = app.editor;\n        this.cleaner = app.cleaner;\n        this.container = app.container;\n        this.insertion = app.insertion;\n        this.inspector = app.inspector;\n        this.selection = app.selection;\n        this.component = app.component;\n\n        // local\n        this.blurNamespace = '.redactor-blur.' + this.uuid;\n        this.eventsList = ['paste', 'click', 'contextmenu', 'keydown', 'keyup', 'mouseup', 'touchstart',\n                           'cut', 'copy', 'dragenter', 'dragstart', 'drop', 'dragover', 'dragleave'];\n\n        // init\n        this._init();\n    },\n    destroy: function()\n    {\n        var $editor = this.editor.getElement();\n\n        $editor.off('.redactor-focus');\n        this.$doc.off('keyup' + this.blurNamespace + ' mousedown' + this.blurNamespace);\n\n        // all events\n        this._loop('off');\n    },\n    focus: function(e)\n    {\n        var $container = this.container.getElement();\n\n        if (this.editor.isPasting() || $container.hasClass('redactor-focus')) return;\n\n        $container.addClass('redactor-focus');\n        $container.removeClass('redactor-blur');\n\n        this.app.broadcast('observe', e);\n        this.app.broadcast('focus', e);\n\n        this.isFocused = true;\n        this.isBlured = false;\n    },\n    blur: function(e)\n    {\n        var $container = this.container.getElement();\n        var $target = $R.dom(e.target);\n        var targets = ['.redactor-in-' + this.uuid,  '.redactor-toolbar', '.redactor-dropdown',\n        '.redactor-context-toolbar', '#redactor-modal', '#redactor-image-resizer'];\n\n        this.app.broadcast('originalblur', e);\n        if (this.app.stopBlur) return;\n\n        if (!this.app.isStarted() || this.editor.isPasting()) return;\n        if ($target.closest(targets.join(',')).length !== 0) return;\n\n        if (!this.isBlured && !$container.hasClass('redactor-blur'))\n        {\n            $container.removeClass('redactor-focus');\n            $container.addClass('redactor-blur');\n            this.app.broadcast('blur', e);\n\n            this.isFocused = false;\n            this.isBlured = true;\n        }\n    },\n    cut: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        this.app.broadcast('state', e);\n\n        if (this.component.isNonEditable(current))\n        {\n            this._passSelectionToClipboard(e, data, true);\n            e.preventDefault();\n        }\n    },\n    copy: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        this.app.broadcast('state', e);\n\n        if (this.component.isNonEditable(current))\n        {\n            this._passSelectionToClipboard(e, data, false);\n            e.preventDefault();\n        }\n    },\n    drop: function(e)\n    {\n        e = e.originalEvent || e;\n        e.stopPropagation();\n        this._removeOverClass();\n\n        if (this.opts.dragUpload === false)\n        {\n            e.preventDefault();\n            return;\n        }\n\n        if (this.app.isDragComponentInside())\n        {\n            var $dragComponent = $R.dom(this.app.getDragComponentInside());\n            var $component = $dragComponent.clone(true);\n            this.insertion.insertToPoint(e, $component);\n\n            $dragComponent.remove();\n\n            this.app.setDragComponentInside(false);\n            this.app.broadcast('state', e);\n            this.app.broadcast('drop', e);\n            this.app.broadcast('image.observe', e);\n\n            e.preventDefault();\n\n            return;\n        }\n        else if (this.app.isDragInside() && this.opts.input)\n        {\n            this.insertion.insertPoint(e);\n\n            var dt = e.dataTransfer;\n            var html = dt.getData('text/html');\n\n            // clear selected\n            var range = this.selection.getRange();\n            if (range)\n            {\n                var blocks = this.selection.getBlocks();\n                range.deleteContents();\n\n                // remove empty blocks\n                for (var i = 0; i < blocks.length; i++)\n                {\n                    if (blocks[i].innerHTML === '') $R.dom(blocks[i]).remove();\n                }\n            }\n\n            // paste\n            $R.create('input.paste', this.app, e, true, html, true);\n\n            this.app.broadcast('state', e);\n            this.app.broadcast('drop', e);\n\n            this.app.setDragInside(false);\n            e.preventDefault();\n\n            return;\n        }\n\n        this.app.broadcast('state', e);\n        this.app.broadcast('paste', e, e.dataTransfer);\n        this.app.broadcast('drop', e);\n\n    },\n    dragenter: function(e)\n    {\n        e.preventDefault();\n    },\n    dragstart: function(e)\n    {\n        this.app.setDragComponentInside(false);\n        this.app.setDragInside(false);\n\n        var data = this.inspector.parse(e.target);\n        if (data.isComponent() && !data.isComponentEditable() && !data.isFigcaption())\n        {\n            this.app.setDragComponentInside(data.getComponent());\n        }\n        else if (this.selection.is() && !this.selection.isCollapsed())\n        {\n            // drag starts inside editor\n            this.app.setDragInside(true);\n            this._setDragData(e);\n        }\n\n        this.app.broadcast('dragstart', e);\n    },\n    dragover: function(e)\n    {\n        this.app.broadcast('dragover', e);\n    },\n    dragleave: function(e)\n    {\n        this.app.broadcast('dragleave', e);\n    },\n    paste: function(e)\n    {\n        this.app.broadcast('paste', e);\n    },\n    contextmenu: function(e)\n    {\n        // chrome crashes fix\n        this.editor.disableNonEditables();\n\n        setTimeout(function()\n        {\n            this.editor.enableNonEditables();\n            this.app.broadcast('contextmenu', e);\n\n        }.bind(this), 0);\n    },\n    click: function(e)\n    {\n        // triple click selection\n        if (e.detail === 3)\n        {\n            e.preventDefault();\n\n            var block = this.selection.getBlock();\n            var range = document.createRange();\n            range.selectNodeContents(block);\n            this.selection.setRange(range)\n        }\n\n        // observe bottom click\n        var $target = $R.dom(e.target);\n        if ($target.hasClass('redactor-in'))\n        {\n            var top = $target.offset().top;\n            var pad = parseFloat($target.css('padding-bottom'));\n            var height = $target.height();\n            var posHeight = top + height - pad*2;\n\n            if (posHeight < e.pageY)\n            {\n                this.app.broadcast('bottomclick', e);\n            }\n        }\n\n        this.app.broadcast('state', e);\n        this.app.broadcast('click', e);\n    },\n    keydown: function(e)\n    {\n        this.app.broadcast('state', e);\n        var stop = this.app.broadcast('keydown', e);\n        if (stop === false)\n        {\n            return e.preventDefault();\n        }\n    },\n    keyup: function(e)\n    {\n        this.app.broadcast('keyup', e);\n    },\n    mouseup: function(e)\n    {\n        this.app.broadcast('observe', e);\n        this.app.broadcast('state', e);\n    },\n    touchstart: function(e)\n    {\n        this.app.broadcast('observe', e);\n        this.app.broadcast('state', e);\n    },\n\n    // private\n    _init: function()\n    {\n        var $editor = this.editor.getElement();\n\n        $editor.on('focus.redactor-focus click.redactor-focus', this.focus.bind(this));\n        this.$doc.on('keyup' + this.blurNamespace + ' mousedown' + this.blurNamespace, this.blur.bind(this));\n\n        // all events\n        this._loop('on');\n    },\n    _removeOverClass: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.removeClass('over');\n    },\n    _loop: function(func)\n    {\n        var $editor = this.editor.getElement();\n        for (var i = 0; i < this.eventsList.length; i++)\n        {\n            var event = this.eventsList[i] + '.redactor-events';\n            var method = this.eventsList[i];\n\n            $editor[func](event, this[method].bind(this));\n        }\n    },\n    _passAllToClipboard: function(e)\n    {\n        var clipboard = e.clipboardData;\n        var content = this.source.getCode();\n\n        clipboard.setData('text/html', content);\n        clipboard.setData('text/plain', content.toString().replace(/\\n$/, \"\"));\n    },\n    _passSelectionToClipboard: function(e, data, remove)\n    {\n        var clipboard = e.clipboardData;\n        var node = data.getComponent();\n        var $node = $R.dom(node);\n        var $cloned = $node.clone();\n\n        // clean\n        $cloned.find('.redactor-component-caret').remove();\n        $cloned.removeClass('redactor-component-active');\n        $cloned.removeAttr('contenteditable');\n        $cloned.removeAttr('tabindex');\n\n        // html\n        var content = $cloned.get().outerHTML;\n\n        if (remove) this.component.remove(node);\n\n        clipboard.setData('text/html', content);\n        clipboard.setData('text/plain', content.toString().replace(/\\n$/, \"\"));\n    },\n    _setDragData: function(e)\n    {\n        e = e.originalEvent || e;\n\n        var dt = e.dataTransfer;\n        dt.effectAllowed = 'move';\n        dt.setData('text/Html', this.selection.getHtml());\n    }\n});\n$R.add('module', 'container', {\n    init: function(app)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.lang = app.lang;\n        this.element = app.element;\n        this.container = app.container;\n    },\n    // public\n    start: function()\n    {\n        this._build();\n        this._buildAccesibility();\n    },\n    stop: function()\n    {\n        var $element = this.element.getElement();\n        var $container = this.container.getElement();\n\n        $container.after($element);\n        $container.remove();\n        $element.show();\n    },\n\n    // private\n    _build: function()\n    {\n        var $element = this.element.getElement();\n        var $container = this.container.getElement();\n\n        $container.addClass('redactor-box');\n        $container.attr('dir', this.opts.direction);\n\n        if (this.element.isType('inline')) $container.addClass('redactor-inline');\n\n        $element.after($container);\n        $container.append($element);\n    },\n    _buildAccesibility: function()\n    {\n        var $container = this.container.getElement();\n        var $label = $R.dom('<span />');\n\n        $label.addClass('redactor-voice-label');\n        $label.attr({ 'id': 'redactor-voice-' + this.uuid, 'aria-hidden': false });\n        $label.html(this.lang.get('accessibility-help-label'));\n\n        $container.prepend($label);\n    }\n});\n$R.add('module', 'source', {\n    init: function(app)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.element = app.element;\n        this.source = app.source;\n        this.editor = app.editor;\n        this.toolbar = app.toolbar;\n        this.cleaner = app.cleaner;\n        this.component = app.component;\n        this.container = app.container;\n        this.autoparser = app.autoparser;\n        this.selection = app.selection;\n\n        // local\n        this.syncedHtml = '';\n    },\n    // messages\n    onstartcode: function()\n    {\n        var sourceContent = this.source.getStartedContent();\n        var $editor = this.editor.getElement();\n        var $source = this.source.getElement();\n\n        // autoparse\n        if (this.opts.autoparse && this.opts.autoparseStart)\n        {\n            sourceContent = this.autoparser.parse(sourceContent);\n        }\n\n        // started content\n        var startContent = this.cleaner.input(sourceContent, true, true);\n        var syncContent = this.cleaner.output(startContent);\n\n        // set content\n        $editor.html(startContent);\n        $source.val(syncContent);\n\n        this.syncedHtml = syncContent;\n        this.app.broadcast('placeholder.build');\n        this.app.broadcast('autoparseobserve');\n\n        // widget's scripts\n        this.component.executeScripts();\n    },\n    onstartcodeshow: function()\n    {\n        this.show();\n    },\n    ontrytosync: function()\n    {\n        this.sync();\n    },\n\n    // public\n    start: function()\n    {\n        this._build();\n        this._buildClasses();\n    },\n    stop: function()\n    {\n        var $element = this.element.getElement();\n        var $source = this.source.getElement();\n\n        $element.removeClass('redactor-source redactor-source-open');\n        $source.off('input.redactor-source');\n        $source.removeAttr('data-gramm_editor');\n\n        if ($source.get().classList.length === 0) $source.removeAttr('class');\n        if (!this.source.isNameGenerated()) $element.removeAttr('name');\n        if (!this.element.isType('textarea')) $source.remove();\n\n    },\n    getCode: function()\n    {\n        return this.source.getCode();\n    },\n\n    // public\n    toggle: function()\n    {\n        if (!this.opts.source) return;\n\n        var $source = this.source.getElement();\n\n        return ($source.hasClass('redactor-source-open')) ? this.hide() : this.show();\n    },\n    show: function()\n    {\n        if (!this.opts.source) return;\n\n        var $editor = this.editor.getElement();\n        var $source = this.source.getElement();\n        var $container = this.container.getElement();\n\n        var html = $source.val();\n\n        if (this.app.isStarted()) html = this.app.broadcast('source.open', html);\n\n        // insert markers\n        var sourceSelection = $R.create('source.selection', this.app);\n\n        var editorHtml = sourceSelection.insertMarkersToEditor();\n        editorHtml = this.cleaner.output(editorHtml, false);\n        editorHtml = editorHtml.trim();\n\n        // get height\n        var editorHeight = $editor.height();\n\n        $editor.hide();\n        $source.height(editorHeight);\n        $source.val(html.trim());\n        $source.show();\n        $source.addClass('redactor-source-open');\n        $source.on('input.redactor-source-events', this._onChangedSource.bind(this));\n        $source.on('keydown.redactor-source-events', this._onTabKey.bind(this));\n        $source.on('focus.redactor-source-events', this._onFocus.bind(this));\n\n        $container.addClass('redactor-source-view');\n\n        // offset markers\n        sourceSelection.setSelectionOffsetSource(editorHtml);\n\n        // buttons\n        setTimeout(function()\n        {\n            this._disableButtons();\n            this._setActiveSourceButton();\n\n        }.bind(this), 100);\n\n        if (this.app.isStarted()) this.app.broadcast('source.opened');\n    },\n    hide: function()\n    {\n        if (!this.opts.source) return;\n\n        var $editor = this.editor.getElement();\n        var $source = this.source.getElement();\n        var $container = this.container.getElement();\n\n        var html = $source.val();\n\n        // insert markers\n        var sourceSelection = $R.create('source.selection', this.app);\n        html = sourceSelection.insertMarkersToSource(html);\n\n        // clean\n        html = this.cleaner.input(html, true);\n        html = (this.utils.isEmptyHtml(html)) ? this.opts.emptyHtml : html;\n        html = this.app.broadcast('source.close', html);\n\n        // buttons\n        this._enableButtons();\n        this._setInactiveSourceButton();\n\n        $source.hide();\n        $source.removeClass('redactor-source-open');\n        $source.off('.redactor-source-events');\n        $editor.show();\n        $editor.html(html);\n\n        $container.removeClass('redactor-source-view');\n\n        setTimeout(function()\n        {\n            if (sourceSelection.isOffset()) this.selection.restoreMarkers();\n            else if (sourceSelection.isOffsetEnd()) this.editor.endFocus();\n            else this.editor.startFocus();\n\n            // widget's scripts\n            this.component.executeScripts();\n\n        }.bind(this), 0);\n\n        this.app.broadcast('source.closed');\n    },\n    sync: function()\n    {\n        var self = this;\n        var $editor = this.editor.getElement();\n        var html = $editor.html();\n\n        html = this.app.broadcast('syncBefore', html);\n        html = this.cleaner.output(html);\n\n        if (this._isSync(html))\n        {\n            if (this.timeout) clearTimeout(this.timeout);\n            this.timeout = setTimeout(function() { self._syncing(html); }, 200);\n        }\n    },\n\n    // private\n    _build: function()\n    {\n        var $source = this.source.getElement();\n        var $element = this.element.getElement();\n\n        $source.hide();\n\n        if (!this.opts.grammarly)\n        {\n            $source.attr('data-gramm_editor', false);\n        }\n\n        if (!this.element.isType('textarea'))\n        {\n            $element.after($source);\n        }\n    },\n    _buildClasses: function()\n    {\n        var $source = this.source.getElement();\n\n        $source.addClass('redactor-source');\n    },\n    _syncing: function(html)\n    {\n        html = this.app.broadcast('syncing', html);\n\n        var $source = this.source.getElement();\n        $source.val(html);\n\n        this.app.broadcast('synced', html);\n        this.app.broadcast('changed', html);\n    },\n    _isSync: function(html)\n    {\n        if (this.syncedHtml !== html)\n        {\n            this.syncedHtml = html;\n            return true;\n        }\n\n        return false;\n    },\n    _onChangedSource: function()\n    {\n        var $source = this.source.getElement();\n        var html = $source.val();\n\n        this.app.broadcast('changed', html);\n        this.app.broadcast('source.changed', html);\n    },\n    _onTabKey: function(e)\n    {\n        if (e.keyCode !== 9) return true;\n\n        e.preventDefault();\n\n        var $source = this.source.getElement();\n        var el = $source.get();\n        var start = el.selectionStart;\n\n        $source.val($source.val().substring(0, start) + \"    \" + $source.val().substring(el.selectionEnd));\n        el.selectionStart = el.selectionEnd = start + 4;\n    },\n    _onFocus: function()\n    {\n        this.app.broadcast('sourcefocus');\n    },\n    _disableButtons: function()\n    {\n        this.toolbar.disableButtons();\n    },\n    _enableButtons: function()\n    {\n        this.toolbar.enableButtons();\n    },\n    _setActiveSourceButton: function()\n    {\n        var $btn = this.toolbar.getButton('html');\n        $btn.enable();\n        $btn.setActive();\n    },\n    _setInactiveSourceButton: function()\n    {\n        var $btn = this.toolbar.getButton('html');\n        $btn.setInactive();\n    }\n});\n$R.add('class', 'source.selection', {\n    init: function(app)\n    {\n        this.app = app;\n        this.utils = app.utils;\n        this.source = app.source;\n        this.editor = app.editor;\n        this.marker = app.marker;\n        this.component = app.component;\n        this.selection = app.selection;\n\n        // local\n        this.markersOffset = false;\n        this.markersOffsetEnd = false;\n    },\n    insertMarkersToEditor: function()\n    {\n        var $editor = this.editor.getElement();\n        var start = this.marker.build('start');\n        var end = this.marker.build('end');\n        var component = this.component.getActive();\n        if (component)\n        {\n            this.marker.remove();\n            var $component = $R.dom(component);\n\n            $component.after(end);\n            $component.after(start);\n        }\n        else if (window.getSelection && this.selection.is())\n        {\n            this.marker.insert('both');\n        }\n\n        return this._getHtmlAndRemoveMarkers($editor);\n    },\n    setSelectionOffsetSource: function(editorHtml)\n    {\n        var start = 0;\n        var end = 0;\n        var $source = this.source.getElement();\n        if (editorHtml !== '')\n        {\n            var startMarker = this.utils.removeInvisibleChars(this.marker.buildHtml('start'));\n            var endMarker = this.utils.removeInvisibleChars(this.marker.buildHtml('end'));\n\n            start = this._strpos(editorHtml, startMarker);\n            end = this._strpos(editorHtml, endMarker) - endMarker.toString().length - 2;\n\n            if (start === false)\n            {\n                start = 0;\n                end = 0;\n            }\n        }\n\n        $source.get().setSelectionRange(start, end);\n        $source.get().scrollTop = 0;\n\n        setTimeout(function() { $source.focus(); }.bind(this), 0);\n    },\n    isOffset: function()\n    {\n        return this.markersOffset;\n    },\n    isOffsetEnd: function()\n    {\n        return this.markersOffsetEnd;\n    },\n    insertMarkersToSource: function(html)\n    {\n        var $source = this.source.getElement();\n        var markerStart = this.marker.buildHtml('start');\n        var markerEnd = this.marker.buildHtml('end');\n\n        var markerLength = markerStart.toString().length;\n        var startOffset = this._enlargeOffset(html, $source.get().selectionStart);\n        var endOffset = this._enlargeOffset(html, $source.get().selectionEnd);\n        var sizeOffset = html.length;\n\n        if (startOffset === sizeOffset)\n        {\n            this.markersOffsetEnd = true;\n        }\n        else if (startOffset !== 0 && endOffset !== 0)\n        {\n            this.markersOffset = true;\n\n            html = html.substr(0, startOffset) + markerStart + html.substr(startOffset);\n            html = html.substr(0, endOffset + markerLength) + markerEnd + html.substr(endOffset + markerLength);\n        }\n        else\n        {\n            this.markersOffset = false;\n        }\n\n        return html;\n    },\n\n    // private\n    _getHtmlAndRemoveMarkers: function($editor)\n    {\n        var html = $editor.html();\n        $editor.find('.redactor-selection-marker').remove();\n\n        return html;\n    },\n    _strpos: function(haystack, needle, offset)\n    {\n        var i = haystack.indexOf(needle, offset);\n        return i >= 0 ? i : false;\n    },\n    _enlargeOffset: function(html, offset)\n    {\n        var htmlLength = html.length;\n        var c = 0;\n\n        if (html[offset] === '>')\n        {\n            c++;\n        }\n        else\n        {\n            for(var i = offset; i <= htmlLength; i++)\n            {\n                c++;\n\n                if (html[i] === '>')\n                {\n                    break;\n                }\n                else if (html[i] === '<' || i === htmlLength)\n                {\n                    c = 0;\n                    break;\n                }\n            }\n        }\n\n        return offset + c;\n    }\n});\n$R.add('module', 'observer', {\n    init: function(app)\n    {\n        this.app = app;\n        this.editor = app.editor;\n\n        // local\n        this.observerUnit = false;\n    },\n    // public\n    start: function()\n    {\n        if (window.MutationObserver)\n        {\n            var $editor = this.editor.getElement();\n            var el = $editor.get();\n            this.observerUnit = this._build(el);\n            this.observerUnit.observe(el, {\n                 attributes: true,\n                 subtree: true,\n                 childList: true,\n                 characterData: true,\n                 characterDataOldValue: true\n            });\n        }\n    },\n    stop: function()\n    {\n        if (this.observerUnit) this.observerUnit.disconnect();\n    },\n\n    // private\n    _build: function(el)\n    {\n        var self = this;\n        return new MutationObserver(function(mutations)\n        {\n            self._observe(mutations[mutations.length-1], el);\n        });\n    },\n    _observe: function(mutation, el)\n    {\n        if (this.app.isReadOnly() || (mutation.type === 'attributes' && mutation.target === el))\n        {\n            return;\n        }\n\n        this.app.broadcast('observe');\n        this.app.broadcast('trytosync');\n        this.app.broadcast('placeholder.toggle');\n    }\n});\n$R.add('module', 'clicktoedit', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.source = app.source;\n        this.editor = app.editor;\n        this.container = app.container;\n        this.selection = app.selection;\n    },\n    // messages\n    onstartclicktoedit: function()\n    {\n        this.start();\n    },\n    onenablereadonly: function()\n    {\n        if (!this._isEnabled()) this.stop();\n    },\n    ondisablereadonly: function()\n    {\n        if (!this._isEnabled()) this.start();\n    },\n    onstop: function()\n    {\n        this.stop();\n    },\n\n    // public\n    start: function()\n    {\n        this._build();\n    },\n    stop: function()\n    {\n        if (this.buttonSave) this.buttonSave.stop();\n        if (this.buttonCancel) this.buttonCancel.stop();\n\n        this._destroy();\n        this.app.broadcast('disable');\n    },\n    enable: function()\n    {\n        this.app.broadcast('clickStart');\n\n        var isEmpty = this.editor.isEmpty();\n        if (!isEmpty) this.selection.saveMarkers();\n\n        this._setFocus();\n        this._destroy();\n        this.app.broadcast('enable');\n        this.buttonSave.enable();\n        this.buttonCancel.enable();\n\n        if (!isEmpty) this.selection.restoreMarkers();\n        if (isEmpty) this.editor.focus();\n\n        var $container = this.container.getElement();\n        $container.addClass('redactor-clicktoedit-enabled');\n    },\n    save: function(e)\n    {\n        if (e) e.preventDefault();\n\n        var html = this.source.getCode();\n\n        this.app.broadcast('disable');\n        this.app.broadcast('clickSave', html);\n        this.app.broadcast('clickStop');\n        this._build();\n    },\n    cancel: function(e)\n    {\n        if (e) e.preventDefault();\n\n        var html = this.saved;\n        var $editor = this.editor.getElement();\n        $editor.html(html);\n\n        this.saved = '';\n\n        this.app.broadcast('disable');\n        this.app.broadcast('clickCancel', html);\n        this.app.broadcast('clickStop');\n        this._build();\n    },\n\n    // private\n    _build: function()\n    {\n        // buttons\n        this.buttonSave = $R.create('clicktoedit.button', 'save', this.app, this);\n        this.buttonCancel = $R.create('clicktoedit.button', 'cancel', this.app, this);\n\n        this.buttonSave.stop();\n        this.buttonCancel.stop();\n\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n\n        $editor.on('click.redactor-click-to-edit mouseup.redactor-click-to-edit', this.enable.bind(this));\n        $container.addClass('redactor-over');\n        $container.removeClass('redactor-clicktoedit-enabled');\n    },\n    _isEnabled: function()\n    {\n        return this.container.getElement().hasClass('redactor-clicktoedit-enabled');\n    },\n    _destroy: function()\n    {\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n\n        $editor.off('.redactor-click-to-edit');\n        $container.removeClass('redactor-over redactor-clicktoedit-enabled');\n    },\n    _setFocus: function()\n    {\n        this.saved = this.source.getCode();\n\n        this.buttonSave.start();\n        this.buttonCancel.start();\n    }\n});\n$R.add('class', 'clicktoedit.button', {\n    init: function(type, app, context)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.toolbar = app.toolbar;\n        this.context = context;\n\n        // local\n        this.type = type;\n        this.name = (type === 'save') ? 'clickToSave' : 'clickToCancel';\n        this.objected = false;\n        this.enabled = false;\n        this.namespace = '.redactor-click-to-edit';\n\n        // build\n        this._build();\n    },\n    enable: function()\n    {\n        if (!this.objected) return;\n\n        var data = this.opts[this.name];\n        data.api = 'module.clicktoedit.' + this.type;\n\n        this.toolbar.addButton(this.type, data);\n        this.enabled = true;\n    },\n    start: function()\n    {\n        if (this.objected) return;\n\n        this.$button.off(this.namespace);\n        this.$button.show();\n        this.$button.on('click' + this.namespace, this.context[this.type].bind(this.context));\n    },\n    stop: function()\n    {\n        if (this.objected || !this.enabled) return;\n\n        this.$button.hide();\n    },\n\n    // private\n    _build: function()\n    {\n        this.objected = (typeof this.opts[this.name] === 'object');\n\n        if (!this.objected)\n        {\n            this.$button = $R.dom(this.opts[this.name]);\n            this.enabled = true;\n        }\n    }\n});\n$R.add('module', 'statusbar', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.element = app.element;\n        this.statusbar = app.statusbar;\n        this.container = app.container;\n    },\n    // public\n    start: function()\n    {\n        if (!this.element.isType('inline'))\n        {\n            var $statusbar = this.statusbar.getElement();\n            var $container = this.container.getElement();\n\n            $statusbar.addClass('redactor-statusbar');\n            $container.append($statusbar);\n        }\n    }\n});\n$R.add('module', 'contextbar', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.uuid = app.uuid;\n        this.$win = app.$win;\n        this.$doc = app.$doc;\n        this.$body = app.$body;\n        this.editor = app.editor;\n        this.toolbar = app.toolbar;\n        this.detector = app.detector;\n\n        // local\n        this.$target = (this.toolbar.isTarget()) ? this.toolbar.getTargetElement() : this.$body;\n    },\n    // messages\n    onenablereadonly: function()\n    {\n        this.stop();\n    },\n    ondisablereadonly: function()\n    {\n        this.start();\n    },\n    oncontextbar: {\n        close: function()\n        {\n            this.close();\n        }\n    },\n\n    // public\n    start: function()\n    {\n        if (this.opts.toolbarContext)\n        {\n            var $editor = this.editor.getElement();\n\n            this._build();\n            $editor.on('click.redactor-context mouseup.redactor-context', this.open.bind(this));\n\n            if (this.opts.scrollTarget)\n            {\n                $R.dom(this.opts.scrollTarget).on('scroll.redactor-context', this.close.bind(this));\n            }\n        }\n    },\n    stop: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.off('.redactor-context');\n\n        this.$doc.off('.redactor-context');\n        this.$win.off('.redactor-context');\n\n        if (this.$contextbar) this.$contextbar.remove();\n        if (this.opts.scrollTarget)\n        {\n            $R.dom(this.opts.scrollTarget).off('.redactor-context');\n        }\n    },\n    is: function()\n    {\n        return (this.$contextbar && this.$contextbar.hasClass('open'));\n    },\n    set: function(e, node, buttons, position)\n    {\n        this.$contextbar.html('');\n        this.$el = $R.dom(node);\n\n        // buttons\n        for (var key in buttons)\n        {\n            var $btn = $R.create('contextbar.button', this.app, buttons[key]);\n            if ($btn.html() !== '')\n            {\n                this.$contextbar.append($btn);\n            }\n        }\n\n        // show\n        var pos = this._buildPosition(e, this.$el, position);\n\n        this.$contextbar.css(pos);\n        this.$contextbar.show();\n        this.$contextbar.addClass('open');\n        this.$doc.on('click.redactor-context mouseup.redactor-context', this.close.bind(this));\n        this.$win.on('resize.redactor-context', this.close.bind(this));\n    },\n    open: function(e)\n    {\n        setTimeout(function()\n        {\n            this.app.broadcast('contextbar', e, this);\n        }.bind(this), 0);\n    },\n    close: function(e)\n    {\n        if (!this.$contextbar) return;\n        if (e)\n        {\n            var $target = $R.dom(e.target);\n            if (this.$el && $target.closest(this.$el).length !== 0)\n            {\n                return;\n            }\n        }\n\n        this.$contextbar.hide();\n        this.$contextbar.removeClass('open');\n        this.$doc.off('.redactor.context');\n    },\n\n    // private\n    _build: function()\n    {\n        this.$contextbar = $R.dom('<div>');\n        this.$contextbar.attr('id', 'redactor-context-toolbar-' + this.uuid);\n        this.$contextbar.attr('dir', this.opts.direction);\n        this.$contextbar.addClass('redactor-context-toolbar');\n        this.$contextbar.hide();\n\n        this.$target.append(this.$contextbar);\n    },\n    _buildPosition: function(e, $el, position)\n    {\n        var top, left;\n        var isTarget = this.toolbar.isTarget();\n        var offset = (isTarget) ? $el.position() : $el.offset();\n        var width = $el.width();\n        var height = $el.height();\n\n        var barWidth = this.$contextbar.width();\n        var barHeight = this.$contextbar.height();\n        var docScrollTop = (isTarget) ? (this.$target.scrollTop() + this.$doc.scrollTop()) : this.$doc.scrollTop();\n\n        var targetOffset = this.$target.offset();\n        var leftFix = (isTarget) ? targetOffset.left : 0;\n        var topFix = (isTarget) ? targetOffset.top : 0;\n\n        if (!position)\n        {\n            top = (e.clientY + docScrollTop - barHeight);\n            left = (e.clientX - barWidth/2);\n        }\n        else if (position === 'top')\n        {\n            top = (offset.top - barHeight);\n            left = (offset.left + width/2 - barWidth/2);\n        }\n        else if (position === 'bottom')\n        {\n            top = (offset.top + height);\n            left = (offset.left + width/2 - barWidth/2);\n        }\n\n        if (left < 0) left = 0;\n\n        return { top: (top - topFix) + 'px', left: (left - leftFix) + 'px' };\n    }\n});\n$R.add('class', 'contextbar.button', {\n    mixins: ['dom'],\n    init: function(app, obj)\n    {\n        this.app = app;\n\n        // local\n        this.obj = obj;\n\n        // init\n        this._init();\n    },\n    // private\n    _init: function()\n    {\n        this.parse('<a>');\n        this.attr('href', '#');\n\n        this._buildTitle();\n        this._buildMessage();\n    },\n    _buildTitle: function()\n    {\n        this.html(this.obj.title);\n    },\n    _buildMessage: function()\n    {\n        if (typeof this.obj.message !== 'undefined' || typeof this.obj.api !== 'undefined')\n        {\n            this.on('click', this._toggle.bind(this));\n        }\n    },\n    _toggle: function(e)\n    {\n        e.preventDefault();\n\n        if (this.obj.message)\n        {\n            this.app.broadcast(this.obj.message, this.obj.args);\n        }\n        else if (this.obj.api)\n        {\n            this.app.api(this.obj.api, this.obj.args);\n        }\n    }\n});\n$R.add('module', 'toolbar', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.toolbar = app.toolbar;\n\n        // local\n        this.buttons = [];\n        this.toolbarModule = false;\n    },\n    // messages\n    onsource: {\n        open: function()\n        {\n            if (!this.toolbar.isAir() && this.toolbar.isFixed())\n            {\n                this.toolbarModule.resetPosition();\n            }\n        },\n        opened: function()\n        {\n            if (this.toolbar.isAir() && this.toolbarModule)\n            {\n                this.toolbarModule.createSourceHelper();\n            }\n        },\n        close: function()\n        {\n            if (this.toolbar.isAir() && this.toolbarModule)\n            {\n                this.toolbarModule.destroySourceHelper();\n            }\n        },\n        closed: function()\n        {\n            if (this.toolbar.is() && this.opts.air)\n            {\n                this.toolbarModule.openSelected();\n            }\n        }\n    },\n    onobserve: function()\n    {\n        if (this.toolbar.is())\n        {\n            this.toolbar.observe();\n        }\n    },\n    onfocus: function()\n    {\n        this._setExternalOnFocus();\n    },\n    onsourcefocus: function()\n    {\n        this._setExternalOnFocus();\n    },\n    onempty: function()\n    {\n        if (this.toolbar.isFixed())\n        {\n            this.toolbarModule.resetPosition();\n        }\n    },\n    onenablereadonly: function()\n    {\n        if (this.toolbar.isAir())\n        {\n            this.toolbarModule.close();\n        }\n    },\n\n    // public\n    start: function()\n    {\n        if (this.toolbar.is())\n        {\n            this._buildButtons();\n            this._initToolbar();\n            this._initButtons();\n        }\n    },\n    stop: function()\n    {\n        if (this.toolbarModule)\n        {\n            this.toolbarModule.stop();\n        }\n    },\n\n    // private\n    _buildButtons: function()\n    {\n        this.buttons = this.opts.buttons.concat();\n\n        this._buildImageButton();\n        this._buildFileButton();\n        this._buildSourceButton();\n        this._buildAdditionalButtons();\n        this._buildHiddenButtons();\n    },\n    _buildImageButton: function()\n    {\n        if (!this.opts.imageUpload) this.utils.removeFromArrayByValue(this.buttons, 'image');\n    },\n    _buildFileButton: function()\n    {\n        if (!this.opts.fileUpload) this.utils.removeFromArrayByValue(this.buttons, 'file');\n    },\n    _buildSourceButton: function()\n    {\n        if (!this.opts.source) this.utils.removeFromArrayByValue(this.buttons, 'html');\n    },\n    _buildAdditionalButtons: function()\n    {\n        // end\n        if (this.opts.buttonsAdd.length !== 0)\n        {\n            this.opts.buttonsAdd = this._removeExistButtons(this.opts.buttonsAdd);\n            this.buttons = this.buttons.concat(this.opts.buttonsAdd);\n        }\n\n        // beginning\n        if (this.opts.buttonsAddFirst.length !== 0)\n        {\n            this.opts.buttonsAddFirst = this._removeExistButtons(this.opts.buttonsAddFirst);\n            this.buttons.unshift(this.opts.buttonsAddFirst);\n        }\n\n        var index, btns;\n\n        // after\n        if (this.opts.buttonsAddAfter !== false)\n        {\n            index = this.buttons.indexOf(this.opts.buttonsAddAfter.after) + 1;\n            btns = this.opts.buttonsAddAfter.buttons;\n            for (var i = 0; i < btns.length; i++)\n            {\n                this.buttons.splice(index+i, 0, btns[i]);\n            }\n        }\n\n        // before\n        if (this.opts.buttonsAddBefore !== false)\n        {\n            index = this.buttons.indexOf(this.opts.buttonsAddBefore.before)+1;\n            btns = this.opts.buttonsAddBefore.buttons;\n            for (var i = 0; i < btns.length; i++)\n            {\n                this.buttons.splice(index-(1-i), 0, btns[i]);\n            }\n        }\n    },\n    _buildHiddenButtons: function()\n    {\n        if (this.opts.buttonsHide.length !== 0)\n        {\n            var buttons = this.opts.buttonsHide;\n            for (var i = 0; i < buttons.length; i++)\n            {\n                this.utils.removeFromArrayByValue(this.buttons, buttons[i]);\n            }\n        }\n    },\n    _removeExistButtons: function(buttons)\n    {\n        for (var i = 0; i < buttons.length; i++)\n        {\n            if (this.opts.buttons.indexOf(buttons[i]) !== -1)\n            {\n                this.utils.removeFromArrayByValue(buttons, buttons[i]);\n            }\n        }\n\n        return buttons;\n    },\n    _setExternalOnFocus: function()\n    {\n        if (!this.opts.air && this.opts.toolbarExternal)\n        {\n            this.toolbarModule.setExternal();\n        }\n    },\n    _initToolbar: function()\n    {\n        this.toolbarModule = (this.opts.air) ? $R.create('toolbar.air', this.app) : $R.create('toolbar.standard', this.app);\n    },\n    _initButtons: function()\n    {\n        this.toolbar.setButtons(this.buttons);\n\n        for (var i = 0; i < this.buttons.length; i++)\n        {\n            var name = this.buttons[i];\n            if ($R.buttons[name])\n            {\n                this.toolbar.addButton(name, $R.buttons[name], false, false, true);\n            }\n        }\n    }\n});\n$R.add('class', 'toolbar.air', {\n    init: function(app)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.$doc = app.$doc;\n        this.$win = app.$win;\n        this.utils = app.utils;\n        this.editor = app.editor;\n        this.animate = app.animate;\n        this.toolbar = app.toolbar;\n        this.container = app.container;\n        this.inspector = app.inspector;\n        this.selection = app.selection;\n\n        // local\n        this.clicks = 0;\n\n        // init\n        this._init();\n    },\n    // public\n    stop: function()\n    {\n        var $wrapper = this.toolbar.getWrapper();\n        $wrapper.remove();\n\n        var $editor = this.editor.getElement();\n        $editor.off('.redactor-air-trigger-' + this.uuid);\n\n        this.$doc.off('.redactor-air-' + this.uuid);\n        this.$doc.off('.redactor-air-trigger-' + this.uuid);\n\n        this.toolbar.stopObservers();\n    },\n    createSourceHelper: function()\n    {\n        this.$airHelper = $R.dom('<span>');\n        this.$airHelper.addClass('redactor-air-helper');\n        this.$airHelper.html('<i class=\"re-icon-html\"></i>');\n        this.$airHelper.on('click', function(e)\n        {\n            e.preventDefault();\n            this.app.api('module.source.hide');\n\n        }.bind(this));\n\n        var $container = this.container.getElement();\n        $container.append(this.$airHelper);\n    },\n    destroySourceHelper: function()\n    {\n        if (this.$airHelper) this.$airHelper.remove();\n    },\n    openSelected: function()\n    {\n        setTimeout(function()\n        {\n            if (this._isSelection()) this._open(false);\n\n        }.bind(this), 0);\n    },\n    close: function()\n    {\n        this.$doc.off('.redactor-air-' + this.uuid);\n\n        var $toolbar = this.toolbar.getElement();\n        $toolbar.removeClass('open');\n        $toolbar.hide();\n    },\n\n    // private\n    _init: function()\n    {\n        this.toolbar.create();\n\n        var $wrapper = this.toolbar.getWrapper();\n        var $toolbar = this.toolbar.getElement();\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n\n        $wrapper.addClass('redactor-toolbar-wrapper-air');\n        $toolbar.addClass('redactor-air');\n        //$toolbar.addClass('redactor-animate-hide');\n        $toolbar.hide();\n\n        $wrapper.append($toolbar);\n        $container.prepend($wrapper);\n\n        // open selected\n        this.openSelected();\n\n        // events\n        this.$doc.on('mouseup.redactor-air-trigger-' + this.uuid, this._open.bind(this));\n        $editor.on('keyup.redactor-air-trigger-' + this.uuid, this._openCmd.bind(this));\n    },\n    _isSelection: function()\n    {\n        return (this.selection.is() && !this.selection.isCollapsed());\n    },\n    _isOpened: function()\n    {\n        var $toolbar = this.toolbar.getElement();\n\n        return $toolbar.hasClass('open');\n    },\n    _open: function(e)\n    {\n        var target = (e) ? e.target : false;\n        var $el = (e) ? $R.dom(e.target) : false;\n        var dataTarget = this.inspector.parse(target);\n        var isComponent = (dataTarget.isComponent() && !dataTarget.isComponentType('table'));\n        var isFigcaption = (dataTarget.isFigcaption());\n        var isModalTarget = ($el && $el.closest('.redactor-modal').length !== 0);\n        var isButtonCall = (e && $el.closest('.re-button').length !== 0);\n        var isDropdownCall = (e && $el.closest('.redactor-dropdown').length !== 0);\n\n        if (isDropdownCall || isButtonCall || isModalTarget || isFigcaption || isComponent || this.toolbar.isContextBar() || !this._isSelection())\n        {\n            return;\n        }\n\n        var pos = this.selection.getPosition();\n\n        setTimeout(function()\n        {\n            if (this.app.isReadOnly()) return;\n            if (this._isSelection()) this._doOpen(pos);\n\n        }.bind(this), 1);\n\n    },\n    _openCmd: function()\n    {\n        if (this.selection.isAll())\n        {\n            var $toolbar = this.toolbar.getElement();\n            var pos = this.selection.getPosition();\n\n            pos.top = (pos.top < 20) ? 0 : pos.top - $toolbar.height();\n            pos.height = 0;\n\n            this._doOpen(pos);\n        }\n    },\n    _doOpen: function(pos)\n    {\n        var $wrapper = this.toolbar.getWrapper();\n        var $toolbar = this.toolbar.getElement();\n        var $container = this.container.getElement();\n        var containerOffset = $container.offset();\n        var leftFix = 0;\n        var winWidth = this.$win.width();\n        var toolbarWidth = $toolbar.width();\n\n        if (winWidth < (pos.left + toolbarWidth))\n        {\n            var selPos = this.selection.getPosition();\n            leftFix = toolbarWidth - selPos.width;\n        }\n\n        $wrapper.css({\n            left: (pos.left - containerOffset.left - leftFix) + 'px',\n            top: (pos.top - containerOffset.top + pos.height + this.$doc.scrollTop()) + 'px'\n        });\n\n        this.app.broadcast('airOpen');\n        $toolbar.addClass('open');\n        $toolbar.show();\n\n        this.$doc.on('click.redactor-air-' + this.uuid, this._close.bind(this));\n        this.$doc.on('keydown.redactor-air-' + this.uuid, this._close.bind(this));\n        this.app.broadcast('airOpened');\n    },\n    _close: function(e)\n    {\n        var $el = (e) ? $R.dom(e.target) : false;\n        var isDropdownCall = (e && $el.closest('[data-dropdown], .redactor-dropdown-not-close').length !== 0);\n        var isButtonCall = (!isDropdownCall && e && $el.closest('.re-button').length !== 0);\n\n        if (!isButtonCall && (isDropdownCall || !this._isOpened()))\n        {\n            return;\n        }\n\n        // close\n        this.app.broadcast('airClose');\n\n        this.close();\n        this.app.broadcast('airClosed');\n    }\n});\n$R.add('class', 'toolbar.fixed', {\n    init: function(app)\n    {\n        this.app = app;\n        this.uuid = app.uuid;\n        this.opts = app.opts;\n        this.$doc = app.$doc;\n        this.$win = app.$win;\n        this.editor = app.editor;\n        this.toolbar = app.toolbar;\n        this.detector = app.detector;\n        this.container = app.container;\n\n        // init\n        this._init();\n    },\n    // public\n    stop: function()\n    {\n        this.$fixedTarget.off('.redactor-toolbar-' + this.uuid);\n        this.$win.off('.redactor-toolbar-' + this.uuid);\n    },\n    reset: function()\n    {\n        var $toolbar = this.toolbar.getElement();\n        var $wrapper = this.toolbar.getWrapper();\n\n        $wrapper.css('height', '');\n        $toolbar.removeClass('redactor-toolbar-fixed');\n        $toolbar.css({ position: '', top: '', left: '', width: '' });\n\n        var dropdown = this.toolbar.getDropdown();\n        if (dropdown) dropdown.updatePosition();\n    },\n\n    // private\n    _init: function()\n    {\n        this.$fixedTarget = (this.toolbar.isTarget()) ? this.toolbar.getTargetElement() : this.$win;\n        this._doFixed();\n\n        if (this.toolbar.isTarget())\n        {\n            this.$win.on('scroll.redactor-toolbar-' + this.uuid, this._doFixed.bind(this));\n            this.$win.on('resize.redactor-toolbar-' + this.uuid, this._doFixed.bind(this));\n        }\n\n        this.$fixedTarget.on('scroll.redactor-toolbar-' + this.uuid, this._doFixed.bind(this));\n        this.$fixedTarget.on('resize.redactor-toolbar-' + this.uuid, this._doFixed.bind(this));\n    },\n    _doFixed: function()\n    {\n        var $editor = this.editor.getElement();\n        var $container = this.container.getElement();\n        var $toolbar = this.toolbar.getElement();\n        var $wrapper = this.toolbar.getWrapper();\n\n        var $targets = $container.parents().filter(function(node)\n        {\n            return (getComputedStyle(node, null).display === 'none') ? node : false;\n        });\n\n        // has hidden parent\n        if ($targets.length !== 0) return;\n\n        var isHeight = ($editor.height() < 100);\n        var isEmpty = this.editor.isEmpty();\n\n        if (isHeight || isEmpty || this.editor.isSourceMode()) return;\n\n        var toolbarHeight = $toolbar.height();\n        var toleranceEnd = 60;\n        var containerOffset = $container.offset();\n        var boxOffset = containerOffset.top;\n        var boxEnd = boxOffset + $container.height() - toleranceEnd;\n        var scrollOffset = this.$fixedTarget.scrollTop() + this.opts.toolbarFixedTopOffset;\n        var top = (!this.toolbar.isTarget()) ? 0 : this.$fixedTarget.offset().top - this.$win.scrollTop();\n\n        if (scrollOffset > boxOffset && scrollOffset < boxEnd)\n        {\n            var position = (this.detector.isDesktop()) ? 'fixed' : 'absolute';\n            top = (this.detector.isDesktop()) ? top : (scrollOffset - boxOffset + this.opts.toolbarFixedTopOffset);\n\n            if (this.detector.isMobile())\n            {\n                if (this.fixedScrollTimeout)\n                {\n                    clearTimeout(this.fixedScrollTimeout);\n                }\n\n                $toolbar.hide();\n                this.fixedScrollTimeout = setTimeout(function()\n                {\n                    $toolbar.show();\n                }, 250);\n            }\n\n            $wrapper.height(toolbarHeight);\n            $toolbar.addClass('redactor-toolbar-fixed');\n            $toolbar.css({\n                position: position,\n                top: (top + this.opts.toolbarFixedTopOffset) + 'px',\n                width: $container.width() + 'px'\n            });\n\n            var dropdown = this.toolbar.getDropdown();\n            if (dropdown) dropdown.updatePosition();\n\n            this.app.broadcast('toolbar.fixed');\n        }\n        else\n        {\n            this.reset();\n            this.app.broadcast('toolbar.unfixed');\n        }\n    }\n});\n$R.add('class', 'toolbar.standard', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.uuid = app.uuid;\n        this.toolbar = app.toolbar;\n        this.container = app.container;\n\n        // local\n        this.isExternalMultiple = false;\n        this.toolbarFixed = false;\n\n        // init\n        this._init();\n    },\n    // public\n    stop: function()\n    {\n        var $wrapper = this.toolbar.getWrapper();\n        $wrapper.remove();\n\n        if (this.toolbarFixed) this.toolbarFixed.stop();\n        if (this.opts.toolbarExternal) this._findToolbars();\n\n        this.toolbar.stopObservers();\n    },\n    setExternal: function()\n    {\n        this._findToolbars();\n        if (this.isExternalMultiple)\n        {\n            this.$toolbars.hide();\n            var $current = this.$external.find('.redactor-toolbar-external-' + this.uuid);\n            $current.show();\n        }\n    },\n    resetPosition: function()\n    {\n        if (this.toolbarFixed) this.toolbarFixed.reset();\n    },\n\n    // private\n    _init: function()\n    {\n        this._build();\n\n        if (this.opts.toolbarExternal)\n        {\n            this._buildExternal();\n        }\n        else\n        {\n            this._buildFixed();\n\n            var $toolbar = this.toolbar.getElement();\n            $toolbar.show();\n        }\n    },\n    _build: function()\n    {\n        this.toolbar.create();\n\n        var $wrapper = this.toolbar.getWrapper();\n        var $toolbar = this.toolbar.getElement();\n\n        $wrapper.addClass('redactor-toolbar-wrapper');\n        $toolbar.addClass('redactor-toolbar');\n        $toolbar.hide();\n        $wrapper.append($toolbar);\n\n        if (!this.opts.toolbarExternal)\n        {\n            var $container = this.container.getElement();\n            $container.prepend($wrapper);\n        }\n    },\n    _buildExternal: function()\n    {\n        this._initExternal();\n        this._findToolbars();\n\n        if (this.isExternalMultiple)\n        {\n            this._hideToolbarsExceptFirst();\n        }\n        else\n        {\n            var $toolbar = this.toolbar.getElement();\n            $toolbar.show();\n        }\n    },\n    _buildFixed: function()\n    {\n        if (this.opts.toolbarFixed)\n        {\n            this.toolbarFixed = $R.create('toolbar.fixed', this.app);\n        }\n    },\n    _initExternal: function()\n    {\n        var $toolbar = this.toolbar.getElement();\n        var $wrapper = this.toolbar.getElement();\n\n        $toolbar.addClass('redactor-toolbar-external redactor-toolbar-external-' + this.uuid);\n\n        this.$external = $R.dom(this.opts.toolbarExternal);\n        this.$external.append($wrapper);\n\n    },\n    _findToolbars: function()\n    {\n        this.$toolbars = this.$external.find('.redactor-toolbar-external');\n        this.isExternalMultiple = (this.$toolbars.length > 1);\n    },\n    _hideToolbarsExceptFirst: function()\n    {\n        this.$toolbars.hide();\n        var $first = this.$toolbars.first();\n        $first.show();\n    }\n});\n$R.add('module', 'line', {\n    init: function(app)\n    {\n        this.app = app;\n        this.lang = app.lang;\n        this.component = app.component;\n        this.inspector = app.inspector;\n        this.insertion = app.insertion;\n    },\n    // messages\n    oncontextbar: function(e, contextbar)\n    {\n        var data = this.inspector.parse(e.target);\n        if (data.isComponentType('line'))\n        {\n            var node = data.getComponent();\n            var buttons = {\n                \"remove\": {\n                    title: this.lang.get('delete'),\n                    api: 'module.line.remove',\n                    args: node\n                }\n            };\n\n            contextbar.set(e, node, buttons, 'bottom');\n        }\n\n    },\n\n    // public\n    insert: function()\n    {\n        var line = this.component.create('line');\n        this.insertion.insertRaw(line);\n    },\n    remove: function(node)\n    {\n        this.component.remove(node);\n    }\n});\n$R.add('class', 'line.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el : this._init(el);\n    },\n    // private\n    _init: function(el)\n    {\n        var wrapper, element;\n        if (typeof el !== 'undefined')\n        {\n            var $node = $R.dom(el);\n            var node = $node.get();\n\n            if (node.tagName === 'HR') element = node;\n            else if (node.tagName === 'FIGURE')\n            {\n                wrapper = node;\n                element = $node.find('hr').get();\n            }\n        }\n\n        this._buildWrapper(wrapper);\n        this._buildElement(element);\n        this._initWrapper();\n    },\n    _buildElement: function(node)\n    {\n        if (node)\n        {\n            this.$element = $R.dom(node);\n        }\n        else\n        {\n            this.$element = $R.dom('<hr>');\n            this.append(this.$element);\n        }\n    },\n    _buildWrapper: function(node)\n    {\n        node = node || '<figure>';\n\n        this.parse(node);\n    },\n    _initWrapper: function()\n    {\n        this.addClass('redactor-component');\n        this.attr({\n            'data-redactor-type': 'line',\n            'tabindex': '-1',\n            'contenteditable': false\n        });\n    }\n});\n$R.add('module', 'link', {\n    modals: {\n        'link':\n            '<form action=\"\"> \\\n                <div class=\"form-item\"> \\\n                    <label for=\"modal-link-url\">URL <span class=\"req\">*</span></label> \\\n                    <input type=\"text\" id=\"modal-link-url\" name=\"url\"> \\\n                </div> \\\n                <div class=\"form-item\"> \\\n                    <label for=\"modal-link-text\">## text ##</label> \\\n                    <input type=\"text\" id=\"modal-link-text\" name=\"text\"> \\\n                </div> \\\n                <div class=\"form-item form-item-title\"> \\\n                    <label for=\"modal-link-title\">## title ##</label> \\\n                    <input type=\"text\" id=\"modal-link-title\" name=\"title\"> \\\n                </div> \\\n                <div class=\"form-item form-item-target\"> \\\n                    <label class=\"checkbox\"> \\\n                        <input type=\"checkbox\" name=\"target\"> ## link-in-new-tab ## \\\n                    </label> \\\n                </div> \\\n            </form>'\n    },\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.lang = app.lang;\n        this.caret = app.caret;\n        this.utils = app.utils;\n        this.inline = app.inline;\n        this.editor = app.editor;\n        this.inspector = app.inspector;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n\n        // local\n        this.isCurrentLink = false;\n        this.currentText = false;\n    },\n    // messages\n    onmodal: {\n        link: {\n            open: function($modal, $form)\n            {\n                this._setFormData($form, $modal);\n            },\n            opened: function($modal, $form)\n            {\n                this._setFormFocus($form);\n            },\n            update: function($modal, $form)\n            {\n                var data = $form.getData();\n                if (this._validateData($form, data))\n                {\n                    this._update(data);\n                }\n            },\n            insert: function($modal, $form)\n            {\n                var data = $form.getData();\n                if (this._validateData($form, data))\n                {\n                    this._insert(data);\n                }\n            },\n            unlink: function()\n            {\n                this._unlink();\n            }\n        }\n    },\n    onbutton: {\n        link: {\n            observe: function(button)\n            {\n                this._observeButton(button);\n            }\n        }\n    },\n    ondropdown: {\n        link: {\n            observe: function(dropdown)\n            {\n                this._observeUnlink(dropdown);\n                this._observeEdit(dropdown);\n            }\n        }\n    },\n    oncontextbar: function(e, contextbar)\n    {\n        var current = this._getCurrent();\n        var data = this.inspector.parse(current);\n        if (data.isLink())\n        {\n            var node = data.getLink();\n            var $el = $R.dom(node);\n\n            var $point = $R.dom('<a>');\n            var url = $el.attr('href');\n\n            $point.text(this._truncateText(url));\n            $point.attr('href', url);\n            $point.attr('target', '_blank');\n\n            var buttons = {\n                \"link\": {\n                    title: $point\n                },\n                \"edit\": {\n                    title: this.lang.get('edit'),\n                    api: 'module.link.open'\n                },\n                \"unlink\": {\n                    title: this.lang.get('unlink'),\n                    api: 'module.link.unlink'\n                }\n            };\n\n            contextbar.set(e, node, buttons, 'bottom');\n        }\n    },\n\n    // public\n    open: function()\n    {\n        this.$link = this._buildCurrent();\n        this.app.api('module.modal.build', this._getModalData());\n    },\n    insert: function(data)\n    {\n        this._insert(data);\n    },\n    update: function(data)\n    {\n        this._update(data);\n    },\n    unlink: function()\n    {\n        this._unlink();\n    },\n\n    // private\n    _observeButton: function(button)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        if (data.isPre() || data.isCode())\n        {\n            button.disable();\n        }\n        else\n        {\n            button.enable();\n        }\n    },\n    _observeUnlink: function(dropdown)\n    {\n        var $item = dropdown.getItem('unlink');\n        var links = this._getLinks();\n\n        if (links.length === 0) $item.disable();\n        else                    $item.enable();\n    },\n    _observeEdit: function(dropdown)\n    {\n        var current = this._getCurrent();\n        var $item = dropdown.getItem('link');\n\n        var data = this.inspector.parse(current);\n        var title = (data.isLink()) ? this.lang.get('link-edit') : this.lang.get('link-insert');\n\n        $item.setTitle(title);\n    },\n    _unlink: function()\n    {\n        this.app.api('module.modal.close');\n\n        var elms = [];\n        var nodes = this._getLinks();\n\n        this.selection.save();\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var $link = $R.create('link.component', this.app, nodes[i]);\n            elms.push(this.selection.getElement(nodes[i]));\n\n            $link.unwrap();\n\n            // callback\n            this.app.broadcast('link.deleted', $link);\n        }\n        this.selection.restore();\n\n        // normalize\n        for (var i = 0; i < elms.length; i++)\n        {\n            var el = (elms[i]) ? elms[i] : this.editor.getElement();\n            this.utils.normalizeTextNodes(el);\n        }\n\n        this._resetCurrent();\n    },\n    _update: function(data)\n    {\n        this.app.api('module.modal.close');\n\n        var nodes = this._getLinks();\n        this._setLinkData(nodes, data, 'updated');\n        this._resetCurrent();\n    },\n    _insert: function(data)\n    {\n        this.app.api('module.modal.close');\n\n        var links = this._getLinks();\n        if (!this._insertSingle(links, data))\n        {\n            this._removeInSelection(links);\n            this._insertMultiple(data);\n        }\n\n        this._resetCurrent();\n    },\n    _removeInSelection: function(links)\n    {\n        this.selection.save();\n        for (var i = 0; i < links.length; i++)\n        {\n            var $link = $R.create('link.component', this.app, links[i]);\n            var $clonedLink = $link.clone();\n            $link.unwrap();\n\n            // callback\n            this.app.broadcast('link.deleted', $clonedLink);\n        }\n        this.selection.restore();\n    },\n    _insertMultiple: function(data)\n    {\n        var range = this.selection.getRange();\n        if (range && this._isCurrentTextChanged(data))\n        {\n            this._deleteContents(range);\n        }\n\n        var nodes = this.inline.format({ tag: 'a' });\n\n        this._setLinkData(nodes, data, 'inserted');\n    },\n    _insertSingle: function(links, data)\n    {\n        var inline = this.selection.getInline();\n        if (links.length === 1 && (links[0].textContext === this.selection.getText()) || (inline && inline.tagName === 'A'))\n        {\n            var $link = $R.create('link.component', this.app, links[0]);\n\n            $link.setData(data);\n            this.caret.setAfter($link);\n\n            // callback\n            this.app.broadcast('link.inserted', $link);\n\n            return true;\n        }\n\n        return false;\n    },\n    _setLinkData: function(nodes, data, type)\n    {\n        data.text = (data.text.trim() === '') ? this._truncateText(data.url) : data.text;\n\n        var isTextChanged = (!this.currentText || this.currentText !== data.text);\n\n        this.selection.save();\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var $link = $R.create('link.component', this.app, nodes[i]);\n            var linkData = {};\n\n            if (data.text && isTextChanged) linkData.text = data.text;\n            if (data.url) linkData.url = data.url;\n            if (data.title !== undefined) linkData.title = data.title;\n            if (data.target !== undefined) linkData.target = data.target;\n\n            $link.setData(linkData);\n\n            // callback\n            this.app.broadcast('link.' + type, $link);\n        }\n\n        setTimeout(this.selection.restore.bind(this.selection), 0);\n    },\n    _deleteContents: function(range)\n    {\n        var html = this.selection.getHtml();\n        var parsed = this.utils.parseHtml(html);\n        var first = parsed.nodes[0];\n\n        if (first && first.nodeType !== 3)\n        {\n            var tag = first.tagName.toLowerCase();\n            var container = document.createElement(tag);\n\n            this.insertion.insertNode(container, 'start');\n        }\n        else\n        {\n            range.deleteContents();\n        }\n    },\n    _getModalData: function()\n    {\n        var commands;\n        if (this._isLink())\n        {\n           commands = {\n                update: { title: this.lang.get('save') },\n                unlink: { title: this.lang.get('unlink'), type: 'danger' },\n                cancel: { title: this.lang.get('cancel') }\n            };\n        }\n        else\n        {\n            commands = {\n                insert: { title: this.lang.get('insert') },\n                cancel: { title: this.lang.get('cancel') }\n            };\n        }\n\n        var modalData = {\n            name: 'link',\n            title: (this._isLink()) ? this.lang.get('link-edit') : this.lang.get('link-insert'),\n            handle: (this._isLink()) ? 'update' : 'insert',\n            commands: commands\n        };\n\n\n        return modalData;\n    },\n    _isLink: function()\n    {\n        return this.currentLink;\n    },\n    _isCurrentTextChanged: function(data)\n    {\n        return (this.currentText && this.currentText !== data.text);\n    },\n    _buildCurrent: function()\n    {\n        var current = this._getCurrent();\n        var data = this.inspector.parse(current);\n        var $link;\n\n        if (data.isLink())\n        {\n            this.currentLink = true;\n\n            $link = data.getLink();\n            $link = $R.create('link.component', this.app, $link);\n        }\n        else\n        {\n            this.currentLink = false;\n\n            $link = $R.create('link.component', this.app);\n            var linkData = {\n                text: this.selection.getText()\n            };\n\n            $link.setData(linkData);\n        }\n\n        return $link;\n    },\n    _getCurrent: function()\n    {\n        return this.selection.getInlinesAllSelected({ tags: ['a'] })[0];\n    },\n    _getLinks: function()\n    {\n        var links = this.selection.getInlines({ all: true, tags: ['a'] });\n        var arr = [];\n        for (var i = 0; i < links.length; i++)\n        {\n            var data = this.inspector.parse(links[i]);\n            if (data.isLink())\n            {\n                arr.push(links[i]);\n            }\n        }\n\n        return arr;\n    },\n    _resetCurrent: function()\n    {\n        this.isCurrentLink = false;\n        this.currentText = false;\n    },\n    _truncateText: function(url)\n    {\n        return (url && url.length > this.opts.linkSize) ? url.substring(0, this.opts.linkSize) + '...' : url;\n    },\n    _validateData: function($form, data)\n    {\n        return (data.url.trim() === '') ? $form.setError('url') : true;\n    },\n    _setFormFocus: function($form)\n    {\n        $form.getField('url').focus();\n    },\n    _setFormData: function($form, $modal)\n    {\n        var linkData = this.$link.getData();\n        var data = {\n            url: linkData.url,\n            text: linkData.text,\n            title: linkData.title,\n            target: (this.opts.linkTarget || linkData.target)\n        };\n\n        if (!this.opts.linkNewTab) $modal.find('.form-item-target').hide();\n        if (!this.opts.linkTitle) $modal.find('.form-item-title').hide();\n\n        $form.setData(data);\n        this.currentText = $form.getField('text').val();\n    }\n});\n$R.add('class', 'link.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n        this.opts = app.opts;\n\n        // local\n        this.reUrl = /^(?:(?:(?:https?|ftp):)?\\/\\/)?(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el :  this._init(el);\n    },\n\n    // public\n    setData: function(data)\n    {\n        for (var name in data)\n        {\n            this._set(name, data[name]);\n        }\n    },\n    getData: function()\n    {\n        var names = ['url', 'text', 'target', 'title'];\n        var data = {};\n\n        for (var i = 0; i < names.length; i++)\n        {\n            data[names[i]] = this._get(names[i]);\n        }\n\n        return data;\n    },\n\n    // private\n    _init: function(el)\n    {\n        var $el = $R.dom(el);\n        if (el === undefined)\n        {\n            this.parse('<a>');\n        }\n        else\n        {\n            this.parse($el);\n        }\n    },\n    _set: function(name, value)\n    {\n        this['_set_' + name](value);\n    },\n    _get: function(name)\n    {\n        return this['_get_' + name]();\n    },\n    _get_target: function()\n    {\n        return (this.attr('target')) ? this.attr('target') : false;\n    },\n    _get_url: function()\n    {\n        return this.attr('href');\n    },\n    _get_title: function()\n    {\n        return this.attr('title');\n    },\n    _get_text: function()\n    {\n        return this._getContext().text();\n    },\n    _getContext: function()\n    {\n        return this._findDeepestChild(this).element;\n    },\n    _set_target: function(target)\n    {\n        if (target === false) this.removeAttr('target');\n        else if (target)\n        {\n            this.attr('target', (target === true) ? '_blank' : target);\n        }\n    },\n    _set_text: function(text)\n    {\n        this._getContext().html(text);\n    },\n    _set_title: function(title)\n    {\n        if (!title || title === '') this.removeAttr('title');\n        else this.attr('title', title);\n    },\n    _set_url: function(url)\n    {\n        if (this.opts.linkValidation)\n        {\n            url = this._cleanUrl(url);\n\n            if (this._isMailto(url))\n            {\n                url = 'mailto:' + url.replace('mailto:', '');\n            }\n            else if (this._isUrl(url) && url.search(/^(ftp|https?)/i) === -1)\n            {\n                url = 'http://' + url.replace(/(ftp|https?):\\/\\//i, '');\n            }\n        }\n\n        this.attr('href', url);\n    },\n    _isMailto: function(url)\n    {\n        return (url.search('@') !== -1 && /(ftp|https?):\\/\\//i.test(url) === false);\n    },\n    _isUrl: function(url)\n    {\n        return this.reUrl.test(url);\n    },\n    _cleanUrl: function(url)\n    {\n        return url.trim().replace(/[^\\W\\w\\D\\d+&\\'@#/%?=~_|!:,.;\\(\\)]/gi, '');\n    },\n    _findDeepestChild: function(parent)\n    {\n        var result = {depth: 0, element: parent };\n\n        parent.children().each(function(node)\n        {\n            var child = $R.dom(node);\n\n            if (node.outerHTML !== parent.html())\n            {\n                return;\n            }\n            else\n            {\n                var childResult = this._findDeepestChild(child);\n                if (childResult.depth + 1 > result.depth)\n                {\n                    result = {\n                        depth: 1 + childResult.depth,\n                        element: childResult.element\n                    };\n                }\n            }\n        }.bind(this));\n\n        return result;\n    }\n});\n$R.add('module', 'modal', {\n    init: function(app)\n    {\n        this.app = app;\n        this.lang = app.lang;\n        this.$doc = app.$doc;\n        this.$win = app.$win;\n        this.$body = app.$body;\n        this.animate = app.animate;\n        this.detector = app.detector;\n        this.selection = app.selection;\n\n        // local\n        this.$box = false;\n        this.$modal = false;\n        this.selectionMarkers = false;\n\n        // defaults\n        this.defaults = {\n            name: false,\n            url: false,\n            title: false,\n            width: '600px',\n            height: false,\n            handle: false,\n            commands: false\n        };\n    },\n    // public\n    build: function(data)\n    {\n        this._open(data);\n    },\n    close: function()\n    {\n        this._close();\n    },\n    stop: function()\n    {\n        if (this.$box)\n        {\n            this.$box.remove();\n            this.$box = false;\n            this.$modal = false;\n\n            this.$doc.off('.redactor.modal');\n            this.$win.off('.redactor.modal');\n        }\n\n        if (this.$overlay)\n        {\n            this.$overlay.remove();\n        }\n    },\n    resize: function()\n    {\n        this.$modal.setWidth(this.p.width);\n        this.$modal.updatePosition();\n    },\n\n    // private\n    _isOpened: function()\n    {\n        return (this.$modal && this.$modal.hasClass('open'));\n    },\n    _open: function(data)\n    {\n        this._buildDefaults(data);\n\n        if (this.p.url) this._openUrl();\n        else this._openTemplate();\n    },\n    _openUrl: function()\n    {\n        $R.ajax.post({\n            url: this.p.url,\n            success: this._doOpen.bind(this)\n        });\n    },\n    _openTemplate: function()\n    {\n        if (typeof $R.modals[this.p.name] !== 'undefined')\n        {\n            var template = this.lang.parse($R.modals[this.p.name]);\n            this._doOpen(template);\n        }\n    },\n    _doOpen: function(template)\n    {\n        this.stop();\n\n        if (this.selection.isCollapsed())\n        {\n            this.selection.save();\n            this.selectionMarkers = false;\n        }\n        else\n        {\n            this.selection.saveMarkers();\n            this.selectionMarkers = true;\n        }\n\n        if (!this.detector.isDesktop())\n        {\n            document.activeElement.blur();\n        }\n\n        this._createModal(template);\n\n        this._buildModalBox();\n        this._buildOverlay();\n        this._buildModal();\n        this._buildModalForm();\n        this._buildModalCommands();\n\n        this._broadcast('open');\n\n        this.$modal.updatePosition();\n        this._buildModalTabs();\n\n        this.animate.start(this.$box, 'fadeIn', this._opened.bind(this));\n        this.animate.start(this.$overlay, 'fadeIn');\n\n    },\n    _opened: function()\n    {\n        this.$modal.addClass('open');\n        this.$box.on('mousedown.redactor.modal', this._close.bind(this));\n        this.$doc.on('keyup.redactor.modal', this._handleEscape.bind(this));\n        this.$win.on('resize.redactor.modal', this.resize.bind(this));\n        this.$modal.getBody().find('input[type=text],input[type=url],input[type=email]').on('keydown.redactor.modal', this._handleEnter.bind(this));\n\n        // fix bootstrap modal focus\n        if (window.jQuery) jQuery(document).off('focusin.modal');\n\n        this._broadcast('opened');\n    },\n    _close: function(e)\n    {\n        if (!this.$box || !this._isOpened()) return;\n\n        if (e)\n        {\n            if (!this._needToClose(e.target))\n            {\n                return;\n            }\n\n            e.stopPropagation();\n            e.preventDefault();\n        }\n\n        if (this.selectionMarkers) this.selection.restoreMarkers();\n        else this.selection.restore();\n\n        this.selectionMarkers = false;\n\n        this._broadcast('close');\n\n        this.animate.start(this.$box, 'fadeOut', this._closed.bind(this));\n        this.animate.start(this.$overlay, 'fadeOut');\n    },\n    _closed: function()\n    {\n        this.$modal.removeClass('open');\n        this.$box.off('.redactor.modal');\n        this.$doc.off('.redactor.modal');\n        this.$win.off('.redactor.modal');\n\n        this._broadcast('closed');\n    },\n    _createModal: function(template)\n    {\n        this.$modal = $R.create('modal.element', this.app, template);\n    },\n    _broadcast: function(message)\n    {\n        this.app.broadcast('modal.' + message, this.$modal, this.$modalForm);\n        this.app.broadcast('modal.' + this.p.name + '.' + message, this.$modal, this.$modalForm);\n    },\n    _buildDefaults: function(data)\n    {\n         this.p = $R.extend({}, this.defaults, data);\n    },\n    _buildModalBox: function()\n    {\n        this.$box = $R.dom('<div>');\n        this.$box.attr('id', 'redactor-modal');\n        this.$box.addClass('redactor-animate-hide');\n        this.$box.html('');\n        this.$body.append(this.$box);\n    },\n    _buildOverlay: function()\n    {\n        this.$overlay = $R.dom('#redactor-overlay');\n        if (this.$overlay.length === 0)\n        {\n            this.$overlay = $R.dom('<div>');\n            this.$overlay.attr('id', 'redactor-overlay');\n            this.$overlay.addClass('redactor-animate-hide');\n            this.$body.prepend(this.$overlay);\n        }\n    },\n    _buildModal: function()\n    {\n        this.$box.append(this.$modal);\n\n        this.$modal.setTitle(this.p.title);\n        this.$modal.setHeight(this.p.height);\n        this.$modal.setWidth(this.p.width);\n    },\n    _buildModalCommands: function()\n    {\n        if (this.p.commands)\n        {\n            var commands = this.p.commands;\n            var $footer = this.$modal.getFooter();\n            for (var key in commands)\n            {\n                var $btn = $R.dom('<button>');\n\n                $btn.html(commands[key].title);\n                $btn.attr('data-command', key);\n\n                // cancel\n                if (key === 'cancel')\n                {\n                    $btn.attr('data-action', 'close');\n                    $btn.addClass('redactor-button-unstyled');\n                }\n\n                // danger\n                if (typeof commands[key].type !== 'undefined' && commands[key].type === 'danger')\n                {\n                    $btn.addClass('redactor-button-danger');\n                }\n\n                $btn.on('click', this._handleCommand.bind(this));\n\n                $footer.append($btn);\n            }\n        }\n\n    },\n    _buildModalTabs: function()\n    {\n        var $body = this.$modal.getBody();\n        var $tabs = $body.find('.redactor-modal-tab');\n        var $box = $body.find('.redactor-modal-tabs');\n\n        if ($tabs.length > 1)\n        {\n            $box = ($box.length === 0) ? $R.dom('<div>') : $box.html('');\n            $box.addClass('redactor-modal-tabs');\n\n            $tabs.each(function(node, i)\n            {\n                var $node = $R.dom(node);\n                var $item = $R.dom('<a>');\n                $item.attr('href', '#');\n                $item.attr('rel', i);\n                $item.text($node.attr('data-title'));\n                $item.on('click', this._showTab.bind(this));\n\n                if (i === 0)\n                {\n                    $item.addClass('active');\n                }\n\n                $box.append($item);\n\n            }.bind(this));\n\n            $body.prepend($box);\n        }\n    },\n    _buildModalForm: function()\n    {\n        this.$modalForm = $R.create('modal.form', this.app, this.$modal.getForm());\n    },\n    _showTab: function(e)\n    {\n        e.preventDefault();\n\n        var $el = $R.dom(e.target);\n        var index = $el.attr('rel');\n        var $body = this.$modal.getBody();\n        var $tabs = $body.find('.redactor-modal-tab');\n\n        $tabs.hide();\n        $tabs.eq(index).show();\n\n        $body.find('.redactor-modal-tabs a').removeClass('active');\n        $el.addClass('active');\n\n    },\n    _needToClose: function(el)\n    {\n        var $target = $R.dom(el);\n        if ($target.attr('data-action') === 'close' || this.$modal.isCloseNode(el) || $target.closest('.redactor-modal').length === 0)\n        {\n            return true;\n        }\n\n        return false;\n    },\n    _handleCommand: function(e)\n    {\n        var $btn = $R.dom(e.target).closest('button');\n        var command = $btn.attr('data-command');\n\n        if (command !== 'cancel') e.preventDefault();\n\n        this._broadcast(command);\n\n    },\n    _handleEnter: function(e)\n    {\n        if (e.which === 13)\n        {\n            if (this.p.handle)\n            {\n                e.preventDefault();\n                this._broadcast(this.p.handle);\n            }\n        }\n    },\n    _handleEscape: function(e)\n    {\n        if (e.which === 27) this._close();\n    }\n});\n$R.add('class', 'modal.element', {\n    mixins: ['dom'],\n    init: function(app, template)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.$win = app.$win;\n\n        // init\n        this._init(template);\n    },\n\n    // get\n    getForm: function()\n    {\n        return this.find('form');\n    },\n    getHeader: function()\n    {\n        return this.$modalHeader;\n    },\n    getBody: function()\n    {\n        return this.$modalBody;\n    },\n    getFooter: function()\n    {\n        return this.$modalFooter;\n    },\n\n    // set\n    setTitle: function(title)\n    {\n        if (title) this.$modalHeader.html(title);\n    },\n    setWidth: function(width)\n    {\n        width = (parseInt(width) >= this.$win.width()) ? '96%' : width;\n\n        this.css('max-width', width);\n    },\n    setHeight: function(height)\n    {\n        if (height !== false) this.$modalBody.css('height', height);\n    },\n\n    // update\n    updatePosition: function()\n    {\n        var width = this.width();\n        this.css({ 'left': '50%', 'margin-left': '-' + (width/2) + 'px' });\n\n        var windowHeight = this.$win.height();\n        var height = this.height();\n        var marginTop = (windowHeight/2 - height/2);\n\n        if (height < windowHeight && marginTop !== 0)\n        {\n            this.css('margin-top', marginTop + 'px');\n        }\n    },\n\n    // is\n    isCloseNode: function(el)\n    {\n        return (el === this.$modalClose.get());\n    },\n\n    // private\n    _init: function(template)\n    {\n        this._build();\n        this._buildClose();\n        this._buildHeader();\n        this._buildBody();\n        this._buildFooter();\n        this._buildTemplate(template);\n    },\n    _build: function()\n    {\n        this.parse('<div>');\n        this.addClass('redactor-modal');\n        this.attr('dir', this.opts.direction);\n    },\n    _buildClose: function()\n    {\n        this.$modalClose = $R.dom('<span>');\n        this.$modalClose.addClass('redactor-close');\n\n        this.append(this.$modalClose);\n    },\n    _buildHeader: function()\n    {\n        this.$modalHeader = $R.dom('<div>');\n        this.$modalHeader.addClass('redactor-modal-header');\n\n        this.append(this.$modalHeader);\n    },\n    _buildBody: function()\n    {\n        this.$modalBody = $R.dom('<div>');\n        this.$modalBody.addClass('redactor-modal-body');\n\n        this.append(this.$modalBody);\n    },\n    _buildFooter: function()\n    {\n        this.$modalFooter = $R.dom('<div>');\n        this.$modalFooter.addClass('redactor-modal-footer');\n\n        this.append(this.$modalFooter);\n    },\n    _buildTemplate: function(template)\n    {\n        this.$modalBody.html(template);\n    }\n});\n$R.add('class', 'modal.form', {\n    mixins: ['dom'],\n    init: function(app, element)\n    {\n        this.app = app;\n\n        // build\n        this.build(element);\n    },\n\n    // public\n    build: function(element)\n    {\n        this.parse(element);\n    },\n    getData: function()\n    {\n        var data = {};\n        this.find('[name]').each(function(node)\n        {\n            var $node = $R.dom(node);\n            data[$node.attr('name')] = $node.val();\n        });\n\n        return data;\n    },\n    setData: function(data)\n    {\n        this.find('[name]').each(function(node)\n        {\n            var $node = $R.dom(node);\n            var name = $node.attr('name');\n            if (data.hasOwnProperty(name))\n            {\n                if (node.type && node.type === 'checkbox') node.checked = data[name];\n                else $node.val(data[name]);\n            }\n        });\n    },\n    getField: function(name)\n    {\n        return this.find('[name=' + name + ']');\n    },\n    setError: function(name)\n    {\n        var $el = this.getField(name);\n\n        $el.addClass('error');\n        $el.one(this._getFieldEventName($el.get()), this._clearError);\n\n        return false;\n    },\n\n    // private\n    _clearError: function()\n    {\n        return $R.dom(this).removeClass('error');\n    },\n    _getFieldEventName: function(el)\n    {\n        return (el.tagName === 'SELECT' || el.type === 'checkbox' || el.type === 'radio') ? 'change' : 'keyup';\n    }\n});\n$R.add('module', 'block', {\n    init: function(app)\n    {\n        this.app = app;\n        this.block = app.block;\n    },\n    // public\n    format: function(args)\n    {\n        var nodes = this.block.format(args);\n\n        // callback\n        this.app.broadcast('format', 'block', nodes);\n    },\n    clearformat: function()\n    {\n        this.block.clearFormat();\n    },\n    clearstyle: function()\n    {\n        this.block.clearStyle();\n    },\n    clearclass: function()\n    {\n        this.block.clearClass();\n    },\n    clearattr: function()\n    {\n        this.block.clearAttr();\n    },\n    add: function(args, tags)\n    {\n        this.block.add(args, tags);\n    },\n    toggle: function(args, tags)\n    {\n        this.block.toggle(args, tags);\n    },\n    set: function(args, tags)\n    {\n        this.block.set(args, tags);\n    },\n    remove: function(args, tags)\n    {\n        this.block.remove(args, tags);\n    }\n});\n$R.add('module', 'inline', {\n    init: function(app)\n    {\n        this.app = app;\n        this.inline = app.inline;\n    },\n    format: function(args)\n    {\n        var nodes = this.inline.format(args);\n\n        // callback\n        this.app.broadcast('format', 'inline', nodes);\n    },\n    clearformat: function()\n    {\n        this.inline.clearFormat();\n    },\n    clearstyle: function()\n    {\n        this.inline.clearStyle();\n    },\n    clearclass: function()\n    {\n        this.inline.clearClass();\n    },\n    clearattr: function()\n    {\n        this.inline.clearAttr();\n    },\n    add: function(args, tags)\n    {\n        this.inline.add(args, tags);\n    },\n    toggle: function(args, tags)\n    {\n        this.inline.toggle(args, tags);\n    },\n    set: function(args, tags)\n    {\n        this.inline.set(args, tags);\n    },\n    remove: function(args, tags)\n    {\n        this.inline.remove(args, tags);\n    }\n});\n$R.add('module', 'autosave', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.source = app.source;\n    },\n    // messages\n    onsynced: function()\n    {\n        if (this.opts.autosave)\n        {\n            this._send();\n        }\n    },\n\n    // private\n    _send: function()\n    {\n        var name = (this.opts.autosaveName) ? this.opts.autosaveName : this.source.getName();\n\n        var data = {};\n        data[name] = this.source.getCode();\n        data = this.utils.extendData(data, this.opts.autosaveData);\n\n        $R.ajax.post({\n            url: this.opts.autosave,\n            data: data,\n            success: function(response)\n            {\n                this._complete(response, name, data);\n            }.bind(this)\n        });\n    },\n    _complete: function(response, name, data)\n    {\n        var callback = (response && response.error) ? 'autosaveError' : 'autosave';\n        this.app.broadcast(callback, name, data, response);\n    }\n});\n$R.add('module', 'input', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.editor = app.editor;\n        this.keycodes = app.keycodes;\n        this.element = app.element;\n        this.selection = app.selection;\n        this.insertion = app.insertion;\n        this.inspector = app.inspector;\n        this.autoparser = app.autoparser;\n\n        // local\n        this.lastShiftKey = false;\n    },\n    // messages\n    onpaste: function(e, dataTransfer)\n    {\n        if (!this.opts.input) return;\n\n        return $R.create('input.paste', this.app, e, dataTransfer);\n    },\n    onkeydown: function(e)\n    {\n        if (!this.opts.input) return;\n\n        // key\n        var key = e.which;\n\n        // shortcuts\n        var shortcut = $R.create('input.shortcut', this.app, e);\n        if (shortcut.is()) return;\n\n        // select all\n        if ((e.ctrlKey || e.metaKey) && !e.altKey && key === 65)\n        {\n            e.preventDefault();\n            return this._selectAll();\n        }\n\n        // set empty if all selected\n        var keys = [this.keycodes.ENTER, this.keycodes.SPACE, this.keycodes.BACKSPACE, this.keycodes.DELETE];\n        var isKeys = (keys.indexOf(key) !== -1);\n        var isXKey = ((e.ctrlKey || e.metaKey) && key === 88); // x\n        var isAlphaKeys = ((!e.ctrlKey && !e.metaKey) && ((key >= 48 && key <= 57) || (key >= 65 && key <= 90)));\n\n        if (this.selection.isAll() && (isXKey || (!e.ctrlKey && !e.metaKey && !e.altKey && !e.shiftKey)))\n        {\n            if (isXKey)\n            {\n                this.editor.disableNonEditables();\n                this.app.broadcast('empty');\n                return;\n            }\n\n            if (this._isArrowKey(key)) return true;\n            if (isKeys) e.preventDefault();\n\n            if (this.element.isType('inline'))\n            {\n                var $editor = this.editor.getElement();\n                $editor.html('');\n\n                this.editor.startFocus();\n            }\n            else\n            {\n                this.insertion.set(this.opts.emptyHtml);\n            }\n\n            if (isKeys) return;\n            else this.app.broadcast('empty');\n        }\n\n        // autoparse\n        if (this.opts.autoparse)\n        {\n            this.autoparser.format(e, key);\n        }\n\n        // a-z, 0-9 - non editable\n        if (isAlphaKeys)\n        {\n            // has non-editable\n            if (this.selection.hasNonEditable())\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n\n        // enter, shift/ctrl + enter\n        if (key === this.keycodes.ENTER)\n        {\n            return $R.create('input.enter', this.app, e, key);\n        }\n        // cmd + [\n        else if (e.metaKey && key === 219)\n        {\n            e.preventDefault();\n            this.app.api('module.list.outdent');\n            return;\n        }\n        // tab or cmd + ]\n        else if (key === this.keycodes.TAB || e.metaKey && key === 221)\n        {\n            return $R.create('input.tab', this.app, e, key);\n        }\n        // space\n        else if (key === this.keycodes.SPACE)\n        {\n            return $R.create('input.space', this.app, e, key, this.lastShiftKey);\n        }\n        // backspace or delete\n        else if (this._isDeleteKey(key))\n        {\n            return $R.create('input.delete', this.app, e, key);\n        }\n        else if (this._isArrowKey(key))\n        {\n            return $R.create('input.arrow', this.app, e, key);\n        }\n    },\n    onkeyup: function(e)\n    {\n        if (!this.opts.input) return;\n\n        // key\n        var key = e.which;\n\n        // shift key\n        this.lastShiftKey = e.shiftKey;\n\n        // hide context toolbar\n        this.app.broadcast('contextbar.close');\n\n        // shortcode\n        var shortcode = $R.create('input.shortcode', this.app, e, key);\n        if (shortcode.is()) return;\n\n        // is empty\n        if (key === this.keycodes.BACKSPACE)\n        {\n            var $editor = this.editor.getElement();\n            var html = this.utils.trimSpaces($editor.html());\n            html = html.replace(/<br\\s?\\/?>/g, '');\n            html = html.replace(/<div><\\/div>/, '');\n\n            if (html === '')\n            {\n                e.preventDefault();\n                this.editor.setEmpty();\n                this.editor.startFocus();\n                return;\n            }\n        }\n\n        if (this.editor.isEmpty())\n        {\n            this.app.broadcast('empty');\n        }\n    },\n\n    // public\n    start: function()\n    {\n        // extend shortcuts\n        if (this.opts.shortcutsAdd)\n        {\n            this.opts.shortcuts = $R.extend({}, true, this.opts.shortcuts, this.opts.shortcutsAdd);\n        }\n    },\n\n    // private\n    _selectAll: function()\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var el;\n\n        if (data.isComponentType('table'))\n        {\n            el = data.getTable();\n            this.selection.setAll(el);\n            return;\n        }\n        else if (data.isComponentType('code'))\n        {\n            el = data.getComponentCodeElement();\n            this.selection.setAll(el);\n            return;\n        }\n\n        this.selection.setAll();\n    },\n    _isArrowKey: function(key)\n    {\n        return ([this.keycodes.UP, this.keycodes.DOWN, this.keycodes.RIGHT, this.keycodes.LEFT].indexOf(key) !== -1);\n    },\n    _isDeleteKey: function(key)\n    {\n        return (key === this.keycodes.BACKSPACE || key === this.keycodes.DELETE);\n    }\n});\n$R.add('class', 'input.arrow', {\n    init: function(app, e, key)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.caret = app.caret;\n        this.offset = app.offset;\n        this.marker = app.marker;\n        this.editor = app.editor;\n        this.keycodes = app.keycodes;\n        this.component = app.component;\n        this.inspector = app.inspector;\n        this.selection = app.selection;\n\n        // local\n        this.key = key;\n\n        // init\n        this._init(e);\n    },\n    // private\n    _init: function(e)\n    {\n        if (this._isRightLeftKey() && this._isExitVariable(e)) return;\n\n        if (this._isRightDownKey())\n        {\n            if (this._isExitOnDownRight(e)) return;\n            if (this._selectComponent(e, 'End', 'next')) return;\n        }\n\n        if (this._isLeftUpKey())\n        {\n            if (this._isExitOnUpLeft(e)) return;\n            if (this._selectComponent(e, 'Start', 'prev')) return;\n        }\n\n        if (this.key === this.keycodes.LEFT) this.utils.trimInvisibleChars('left');\n        else if (this.key === this.keycodes.RIGHT) this.utils.trimInvisibleChars('right');\n\n    },\n    _isRightDownKey: function()\n    {\n        return ([this.keycodes.DOWN, this.keycodes.RIGHT].indexOf(this.key) !== -1);\n    },\n    _isLeftUpKey: function()\n    {\n        return ([this.keycodes.UP, this.keycodes.LEFT].indexOf(this.key) !== -1);\n    },\n    _isRightLeftKey: function()\n    {\n        return ([this.keycodes.RIGHT, this.keycodes.LEFT].indexOf(this.key) !== -1);\n    },\n    _isExitVariable: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var component = data.getComponent();\n        if (data.isComponentType('variable') && data.isComponentActive())\n        {\n            e.preventDefault();\n            var func = (this.key === this.keycodes.LEFT) ? 'setBefore' : 'setAfter';\n            this.caret[func](component);\n            return;\n        }\n    },\n    _isExitOnUpLeft: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var block = this.selection.getBlock(current);\n        var data = this.inspector.parse(current);\n        var prev = block.previousElementSibling;\n        var isStart = this.caret.isStart(block);\n\n        // prev table\n        if (isStart && prev && prev.tagName === 'TABLE')\n        {\n            e.preventDefault();\n            this.caret.setEnd(prev);\n            return true;\n        }\n        // figcaption\n        else if (data.isFigcaption())\n        {\n            block = data.getFigcaption();\n            isStart = this.caret.isStart(block);\n\n            var $component = $R.dom(block).closest('.redactor-component');\n            if (isStart && $component.length !== 0)\n            {\n                e.preventDefault();\n                this.caret.setEnd($component);\n                return true;\n            }\n        }\n        // exit table\n        else if (data.isTable() && isStart)\n        {\n            e.preventDefault();\n            this.caret.setEnd(block.previousElementSibling);\n            return true;\n        }\n        // component\n        else if (!data.isComponentEditable() && data.isComponent() && !data.isComponentType('variable'))\n        {\n            var component = data.getComponent();\n            if (component.previousElementSibling)\n            {\n                e.preventDefault();\n                this.component.clearActive();\n                this.caret.setEnd(component.previousElementSibling);\n                return true;\n            }\n        }\n    },\n    _isExitOnDownRight: function(e)\n    {\n        var $editor = this.editor.getElement();\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var isEndEditor = this.caret.isEnd();\n        var block, isEnd;\n\n        // table\n        if (data.isTable())\n        {\n            if (isEnd || isEndEditor)\n            {\n                return this._exitNextElement(e, data.getComponent());\n            }\n        }\n        // figcaption\n        else if (data.isFigcaption())\n        {\n            block = data.getFigcaption();\n            isEnd = this.caret.isEnd(block);\n\n            if (isEnd || isEndEditor)\n            {\n                return this._exitNextElement(e, data.getComponent());\n            }\n        }\n        // figure/code\n        else if (data.isComponentType('code'))\n        {\n            var component = data.getComponent();\n            var pre = $R.dom(data.getComponentCodeElement()).closest('pre');\n\n            isEnd = this.caret.isEnd(block);\n\n            var isNext = (pre && pre.get().nextElementSibling);\n            if (isEnd && !isNext)\n            {\n                return this._exitNextElement(e, component);\n            }\n        }\n        // pre & blockquote & dl\n        else if (data.isPre() || data.isBlockquote() || data.isDl())\n        {\n            if (isEndEditor)\n            {\n                if (data.isPre()) return this._exitNextElement(e, data.getPre());\n                else if (data.isBlockquote()) return this._exitNextElement(e, data.getBlockquote());\n                else if (data.isDl()) return this._exitNextElement(e, data.getDl());\n            }\n        }\n        // li\n        else if (data.isList())\n        {\n            var $list = $R.dom(current).parents('ul, ol', $editor).last();\n            isEnd = this.caret.isEnd($list);\n\n            if (isEnd || isEndEditor)\n            {\n                return this._exitNextElement(e, $list.get());\n            }\n        }\n        // component\n        else if (data.isComponent() && !data.isComponentType('variable') && data.getTag() !== 'span')\n        {\n            this.component.clearActive();\n            return this._exitNextElement(e, data.getComponent());\n        }\n    },\n    _exitNextElement: function(e, node)\n    {\n        e.preventDefault();\n\n        if (node.nextElementSibling) this.caret.setStart(node.nextElementSibling);\n        else this.utils.createMarkup(node);\n\n        return true;\n    },\n    _selectComponent: function(e, caret, type)\n    {\n        var current = this.selection.getCurrent();\n        var block = this.selection.getBlock(current);\n        var sibling = this.utils.findSiblings(current, type);\n        var siblingBlock = this.utils.findSiblings(block, type);\n\n        if (sibling && this.caret['is' + caret](current))\n        {\n            this._selectComponentItem(e, sibling, caret);\n        }\n        else if (siblingBlock && this.caret['is' + caret](block))\n        {\n            this._selectComponentItem(e, siblingBlock, caret);\n        }\n    },\n    _selectComponentItem: function(e, item, caret)\n    {\n        if (this.component.isNonEditable(item))\n        {\n            e.preventDefault();\n            this.caret['set' + caret](item);\n            return true;\n        }\n    }\n});\n$R.add('class', 'input.delete', {\n    init: function(app, e, key)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.caret = app.caret;\n        this.utils = app.utils;\n        this.editor = app.editor;\n        this.marker = app.marker;\n        this.keycodes = app.keycodes;\n        this.component = app.component;\n        this.inspector = app.inspector;\n        this.selection = app.selection;\n\n        // local\n        this.key = key;\n\n        // init\n        this._init(e);\n    },\n    // private\n    _init: function(e)\n    {\n        if (this._removeActiveComponent(e)) return;\n        if (this._removeAllSelectedTable(e)) return;\n\n        // is empty\n        if (this.key === this.keycodes.BACKSPACE)\n        {\n            var $editor = this.editor.getElement();\n            var html = this.utils.trimSpaces($editor.html());\n\n            if (html === this.opts.emptyHtml)\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n\n        // variable or non editable prev/next or selection\n        if (this._detectVariableOrNonEditable() || this.selection.hasNonEditable())\n        {\n            e.preventDefault();\n            return;\n        }\n\n        // collapsed\n        if (this.selection.isCollapsed())\n        {\n            // next / prev\n            if (this.key === this.keycodes.BACKSPACE) this._traverseBackspace(e);\n            else if (this.key === this.keycodes.DELETE) this._traverseDelete(e);\n        }\n\n        if (this.key === this.keycodes.BACKSPACE) this.utils.trimInvisibleChars('left');\n\n        this._removeUnwantedStyles();\n        this._removeEmptySpans();\n        this._removeSpanTagsInHeadings();\n        this._removeInlineTagsInPre();\n    },\n    _detectVariableOrNonEditable: function()\n    {\n        var block = this.selection.getBlock();\n        var isBlockStart = this.caret.isStart(block);\n        var isBlockEnd = this.caret.isEnd(block);\n        var el;\n\n        // backspace\n        if (this.key === this.keycodes.BACKSPACE && isBlockStart)\n        {\n            el = block.previousSibling;\n            if (this._isNonEditable(el)) return true;\n        }\n        // delete\n        else if (this.key === this.keycodes.DELETE && isBlockEnd)\n        {\n            el = block.nextSibling;\n            if (this._isNonEditable(el)) return true;\n        }\n\n        var current = this.selection.getCurrent();\n        var isCurrentStart = this.caret.isStart(current);\n        var isCurrentEnd = this.caret.isEnd(current);\n        var isCurrentStartSpace = (this.selection.getTextBeforeCaret().trim() === '');\n        var isCurrentEndSpace = (this.selection.getTextAfterCaret().trim() === '');\n\n        // backspace\n        if (this.key === this.keycodes.BACKSPACE && isCurrentStart && !isCurrentStartSpace)\n        {\n            el = current.previousSibling;\n            if (this._isVariable(el))\n            {\n                this.caret.setEnd(el);\n                return true;\n            }\n            else if (this._isNonEditable(el)) return true;\n        }\n        // delete\n        else if (this.key === this.keycodes.DELETE && isCurrentEnd && !isCurrentEndSpace)\n        {\n            el = current.nextSibling;\n            if (this._isVariable(el))\n            {\n                this.caret.setStart(el);\n                return true;\n            }\n            else if (this._isNonEditable(el)) return true;\n        }\n    },\n    _isVariable: function(node)\n    {\n        return ($R.dom(node).closest('[data-redactor-type=\"variable\"]').length !== 0);\n    },\n    _isNonEditable: function(node)\n    {\n        return ($R.dom(node).closest('.non-editable').length !== 0);\n    },\n    _getBlock: function()\n    {\n        var $editor = this.editor.getElement();\n        var block = this.selection.getBlock();\n        var data = this.inspector.parse(block);\n\n        block = (data.isList()) ? $R.dom(block).parents('ul, ol', $editor).last().get() : block;\n        block = (data.isDl()) ? data.getDl() : block;\n        block = (data.isTable()) ? data.getTable() : block;\n\n        return block;\n    },\n    _traverseDelete: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var block, isEnd, $next;\n\n        // figcaption\n        if (data.isFigcaption())\n        {\n            block = data.getFigcaption();\n            isEnd = this.caret.isEnd(block);\n\n            if (isEnd)\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n        // figure/code\n        else if (data.isComponentType('code'))\n        {\n            block = data.getComponent();\n            isEnd = this.caret.isEnd(block);\n\n            if (isEnd)\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n\n        // next\n        block = this._getBlock();\n        var next = this.utils.findSiblings(block, 'next');\n        if (!next) return;\n\n        isEnd = this.caret.isEnd(block);\n        var dataNext = this.inspector.parse(next);\n        var isNextBlock = (next.tagName === 'P' || next.tagName === 'DIV');\n\n        // figure/code or table\n        if (isEnd && dataNext.isComponentEditable())\n        {\n            e.preventDefault();\n            this.component.remove(next, false);\n            return;\n        }\n        // component\n        else if (isEnd && dataNext.isComponent())\n        {\n            e.preventDefault();\n\n            // select component\n            this.caret.setStart(next);\n\n            // remove current if empty\n            if (this.utils.isEmptyHtml(block.innerHTML))\n            {\n                $R.dom(block).remove();\n            }\n\n            return;\n        }\n        // combine list\n        else if (isEnd && dataNext.isList())\n        {\n            var $currentList = $R.dom(block);\n            $next = $R.dom(next);\n\n            // current list\n            if (data.isList())\n            {\n                e.preventDefault();\n\n                $currentList.append($next);\n                $next.unwrap();\n\n                return;\n            }\n            else\n            {\n                var $first = $next.children('li').first();\n                var $lists = $first.find('ul, ol');\n\n                if ($lists.length !== 0)\n                {\n                    e.preventDefault();\n\n                    $next.prepend($lists);\n                    $lists.unwrap();\n\n                    $currentList.append($first);\n                    $first.unwrap();\n\n                    return;\n                }\n            }\n        }\n        // block\n        else if (isEnd && !data.isList() && !data.isTable() && isNextBlock && !this.utils.isEmptyHtml(block.innerHTML))\n        {\n            e.preventDefault();\n\n            var $current = $R.dom(block);\n            $next = $R.dom(next);\n\n            $current.append($next);\n            $next.unwrap();\n\n            return;\n        }\n    },\n    _traverseBackspace: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var block, isStart, $prev, $currentList;\n\n        // figcaption\n        if (data.isFigcaption())\n        {\n            block = data.getFigcaption();\n            isStart = this.caret.isStart(block);\n\n            if (isStart)\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n        // figure/code\n        else if (data.isComponentType('code'))\n        {\n            block = data.getComponent();\n            isStart = this.caret.isStart(block);\n\n            if (isStart && block.previousElementSibling)\n            {\n                e.preventDefault();\n                this.caret.setEnd(block.previousElementSibling);\n                return true;\n            }\n        }\n\n        // prev\n        block = this._getBlock();\n        var prev = this.utils.findSiblings(block, 'prev');\n\n        if (!prev)\n        {\n            setTimeout(this._replaceBlock.bind(this), 1);\n            return;\n        }\n\n        isStart = this.caret.isStart(block);\n        var dataPrev = this.inspector.parse(prev);\n        var isPrevBlock = (prev.tagName === 'P' || prev.tagName === 'DIV');\n\n        // figure/code or table\n        if (isStart && dataPrev.isComponentEditable())\n        {\n            e.preventDefault();\n            this.component.remove(prev, false);\n            return;\n        }\n        // component\n        else if (isStart && dataPrev.isComponent())\n        {\n            e.preventDefault();\n\n            // select component\n            this.caret.setStart(prev);\n\n            // remove current if empty\n            if (this.utils.isEmptyHtml(block.innerHTML))\n            {\n                $R.dom(block).remove();\n            }\n\n            return;\n        }\n        // lists\n        else if (isStart && data.isList())\n        {\n            e.preventDefault();\n\n            $currentList = $R.dom(block);\n            $prev = $R.dom(prev);\n\n            if (dataPrev.isList())\n            {\n                $currentList.children('li').first().prepend(this.marker.build('start'));\n                $prev.append($currentList);\n                $currentList.unwrap();\n\n                this.selection.restoreMarkers();\n            }\n            else\n            {\n                var $first = $currentList.children('li').first();\n                var first = $first.get();\n                var $lists = $first.find('ul, ol');\n\n                var $newnode = this.utils.replaceToTag(first, this.opts.markup);\n                if (this.opts.breakline) $newnode.attr('data-redactor-tag', 'br');\n                $currentList.before($newnode);\n                this.caret.setStart($newnode);\n\n                if ($lists.length !== 0)\n                {\n                    $currentList.prepend($lists);\n                    $lists.unwrap();\n                }\n            }\n\n            return;\n        }\n        // block\n        else if (isStart && isPrevBlock)\n        {\n            e.preventDefault();\n\n            var textNode = this.utils.createInvisibleChar();\n            var $current = $R.dom(block);\n            $prev = $R.dom(prev);\n\n            this.caret.setEnd($prev);\n\n            $current.prepend(textNode);\n            $prev.append($current.contents());\n            $current.remove();\n\n            return;\n        }\n    },\n    _replaceBlock: function()\n    {\n        var block = this.selection.getBlock();\n        var $block = $R.dom(block);\n\n        if (this.opts.markup === 'p' && block && this._isNeedToReplaceBlock(block))\n        {\n            var markup = document.createElement(this.opts.markup);\n\n            $block.replaceWith(markup);\n            this.caret.setStart(markup);\n        }\n\n        if (this.opts.breakline && block && block.tagName === 'DIV')\n        {\n            $block.attr('data-redactor-tag', 'br');\n        }\n    },\n    _isNeedToReplaceBlock: function(block)\n    {\n        return (block.tagName === 'DIV' && this.utils.isEmptyHtml(block.innerHTML));\n    },\n    _removeActiveComponent: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var component = data.getComponent();\n        if (data.isComponent() && this.component.isActive(component))\n        {\n            e.preventDefault();\n            this.component.remove(component);\n            return true;\n        }\n    },\n    _removeAllSelectedTable: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var table = data.getTable();\n        if (table && this.selection.isAll(table))\n        {\n            e.preventDefault();\n            this.component.remove(table);\n            return true;\n        }\n    },\n    _removeUnwantedStyles: function()\n    {\n        var $editor = this.editor.getElement();\n\n        setTimeout(function()\n        {\n            var $tags = $editor.find('*[style]');\n            $tags.not('img, figure, iframe, [data-redactor-style-cache], [data-redactor-span]').removeAttr('style');\n\n        }, 0);\n    },\n    _removeEmptySpans: function()\n    {\n        var $editor = this.editor.getElement();\n\n        setTimeout(function()\n        {\n            $editor.find('span').each(function(node)\n            {\n                if (node.attributes.length === 0)\n                {\n                    $R.dom(node).replaceWith(node.childNodes);\n                }\n            });\n\n        }, 0);\n    },\n    _removeSpanTagsInHeadings: function()\n    {\n        var $editor = this.editor.getElement();\n\n        setTimeout(function()\n        {\n            $editor.find('h1, h2, h3, h4, h5, h6').each(function(node)\n            {\n                var $node = $R.dom(node);\n                if ($node.closest('figure').length === 0)\n                {\n                    $node.find('span').not('.redactor-component, .non-editable, .redactor-selection-marker, [data-redactor-style-cache], [data-redactor-span]').unwrap();\n                }\n            });\n\n        }, 1);\n    },\n    _removeInlineTagsInPre: function()\n    {\n        var $editor = this.editor.getElement();\n        var tags = this.opts.inlineTags;\n\n        setTimeout(function()\n        {\n            $editor.find('pre').each(function(node)\n            {\n                var $node = $R.dom(node);\n                if ($node.closest('figure').length === 0)\n                {\n                    $node.find(tags.join(',')).not('code, .redactor-selection-marker').unwrap();\n                }\n            });\n\n        }, 1);\n    }\n});\n$R.add('class', 'input.enter', {\n    init: function(app, e)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.caret = app.caret;\n        this.editor = app.editor;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n        this.inspector = app.inspector;\n\n        // init\n        this._init(e);\n    },\n    // private\n    _init: function(e)\n    {\n        // turn off\n        if (!this.opts.enterKey) return this._disable(e);\n\n        // callback\n        var stop = this.app.broadcast('enter', e);\n        if (stop === false) return e.preventDefault();\n\n        // has non-editable\n        if (this.selection.hasNonEditable())\n        {\n            e.preventDefault();\n            return;\n        }\n\n        // shift enter\n        if (e.ctrlKey || e.shiftKey) return this._insertBreak(e);\n\n        // enter & exit\n        if (this._isExit(e)) return;\n\n        // traverse\n        this._traverse(e);\n    },\n    _disable: function(e)\n    {\n        e.preventDefault();\n        var range = this.selection.getRange();\n        if (range && !range.collapsed) range.deleteContents();\n    },\n    _insertBreak: function(e)\n    {\n        e.preventDefault();\n\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        if ((data.isComponent() && !data.isComponentEditable()) || data.isCode()) return;\n        else if (data.isPre()) this.insertion.insertNewline();\n        else this.insertion.insertBreakLine();\n    },\n    _isExit: function(e)\n    {\n        var $editor = this.editor.getElement();\n        var block = this.selection.getBlock();\n        var data = this.inspector.parse(block);\n        var isEnd = this.caret.isEnd(block);\n        var current = this.selection.getCurrent();\n        var prev = current.previousSibling;\n\n        // blockquote\n        if (data.isBlockquote())\n        {\n            var isParagraphExit = (isEnd && this._isExitableBlock(block, 'P'));\n            var isBreaklineExit = (isEnd && this._isExitableDblBreak(prev));\n\n            if (isParagraphExit || isBreaklineExit)\n            {\n                return this._exitFromElement(e, ((isBreaklineExit) ? prev : block), data.getBlockquote());\n            }\n        }\n        // pre\n        else if (!data.isComponentType('code') && data.isPre())\n        {\n            if (isEnd)\n            {\n                var html = block.innerHTML;\n                html = this.utils.removeInvisibleChars(html);\n                if (html.match(/(\\n\\n\\n)$/) !== null)\n                {\n                    $R.dom(prev.previousSibling.previousSibling).remove();\n                    return this._exitFromElement(e, prev, block);\n                }\n            }\n        }\n        // dl\n        else if (data.isDl())\n        {\n            if (isEnd && this._isExitableBlock(block, 'DT'))\n            {\n                return this._exitFromElement(e, block, data.getDl());\n            }\n        }\n        // li\n        else if (data.isList())\n        {\n            var list = $R.dom(current).parents('ul, ol', $editor).last();\n\n            isEnd = this.caret.isEnd(list);\n            if (isEnd && this._isExitableBlock(block, 'LI'))\n            {\n                return this._exitFromElement(e, block, list);\n            }\n        }\n        else if (data.isComponent() && data.isComponentActive() && !data.isFigcaption() && !data.isComponentEditable())\n        {\n            return this._exitFromElement(e, false, data.getComponent());\n        }\n    },\n    _isExitableDblBreak: function(prev)\n    {\n        var next = (prev) ? prev.nextSibling : false;\n        if (next)\n        {\n            var text = this.utils.removeInvisibleChars(next.textContent);\n\n            return (next.nodeType === 3 && text.trim() === '');\n        }\n    },\n    _isExitableBlock: function(block, tag)\n    {\n        return (block && block.tagName === tag && this.utils.isEmptyHtml(block.innerHTML));\n    },\n    _exitFromElement: function(e, prev, el)\n    {\n        e.preventDefault();\n        if (prev) $R.dom(prev).remove();\n        this.utils.createMarkup(el);\n\n        return true;\n    },\n    _exitNextElement: function(e, node)\n    {\n        e.preventDefault();\n\n        if (node.nextSibling) this.caret.setStart(node.nextSibling);\n        else this.utils.createMarkup(node);\n\n        return true;\n    },\n    _traverse: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var isText = this.selection.isText();\n        var block = this.selection.getBlock();\n        var data = this.inspector.parse(current);\n        var blockTag = (block) ? block.tagName.toLowerCase() : false;\n\n        // pre\n        if (data.isPre())\n        {\n            e.preventDefault();\n            return this.insertion.insertNewline();\n        }\n        // blockquote\n        else if (data.isBlockquote())\n        {\n            block = this.selection.getBlock(current);\n            if (block && block.tagName === 'BLOCKQUOTE')\n            {\n                e.preventDefault();\n                return this.insertion.insertBreakLine();\n            }\n        }\n        // figcaption\n        else if (data.isFigcaption())\n        {\n            block = data.getFigcaption();\n            var isEnd = this.caret.isEnd(block);\n            var isEndEditor = this.caret.isEnd();\n            if (isEnd || isEndEditor)\n            {\n                return this._exitNextElement(e, data.getComponent());\n            }\n            else\n            {\n                e.preventDefault();\n                return;\n            }\n        }\n        // dl\n        else if (data.isDl())\n        {\n            e.preventDefault();\n            return this._traverseDl(current);\n        }\n        // text\n        else if (isText || (this.opts.breakline && blockTag === 'div'))\n        {\n            e.preventDefault();\n            return this.insertion.insertBreakLine();\n        }\n        // div / p\n        else\n        {\n            setTimeout(this._replaceBlock.bind(this), 1);\n            return;\n        }\n    },\n    _traverseDl: function(current)\n    {\n        var block = this.selection.getBlock(current);\n        var data = this.inspector.parse(block);\n        var tag = data.getTag();\n        var $el = $R.dom(block);\n        var next = $el.get().nextSibling || false;\n        var $next = $R.dom(next);\n        var nextDd = (next && $next.is('dd'));\n        var nextDt = (next && $next.is('dt'));\n        var isEnd = this.caret.isEnd(block);\n\n        if (tag === 'dt' && !nextDd && isEnd)\n        {\n            var dd = document.createElement('dd');\n            $el.after(dd);\n\n            this.caret.setStart(dd);\n            return;\n        }\n        else if (tag === 'dd' && !nextDt && isEnd)\n        {\n            var dt = document.createElement('dt');\n            $el.after(dt);\n\n            this.caret.setStart(dt);\n            return;\n        }\n\n        return this.insertion.insertBreakLine();\n    },\n    _replaceBlock: function()\n    {\n        var block = this.selection.getBlock();\n        var $block = $R.dom(block);\n\n        if (this.opts.markup === 'p' && block && this._isNeedToReplaceBlock(block))\n        {\n            var markup = document.createElement(this.opts.markup);\n\n            $block.replaceWith(markup);\n            this.caret.setStart(markup);\n        }\n        else\n        {\n            if (block)\n            {\n                if (this.utils.isEmptyHtml(block.innerHTML))\n                {\n                    this._clearBlock($block, block);\n                }\n                else\n                {\n                    var first = this.utils.getFirstNode(block);\n                    if (first && first.tagName === 'BR')\n                    {\n                        $R.dom(first).remove();\n                        this.caret.setStart(block);\n                    }\n                }\n            }\n        }\n\n        if (block && this._isNeedToCleanBlockStyle(block) && this.opts.cleanOnEnter)\n        {\n            $block.removeAttr('class style');\n        }\n\n        if (this.opts.breakline && block && block.tagName === 'DIV')\n        {\n            $block.attr('data-redactor-tag', 'br');\n        }\n    },\n    _clearBlock: function($block, block)\n    {\n        if (this.opts.cleanInlineOnEnter || block.innerHTML === '<br>')\n        {\n            $block.html('');\n        }\n\n        this.caret.setStart(block);\n    },\n    _isNeedToReplaceBlock: function(block)\n    {\n        return (block.tagName === 'DIV' && this.utils.isEmptyHtml(block.innerHTML));\n    },\n    _isNeedToCleanBlockStyle: function(block)\n    {\n        return (block.tagName === 'P' && this.utils.isEmptyHtml(block.innerHTML));\n    }\n});\n$R.add('class', 'input.paste', {\n    init: function(app, e, dataTransfer, html, point)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.editor = app.editor;\n        this.cleaner = app.cleaner;\n        this.container = app.container;\n        this.inspector = app.inspector;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n        this.autoparser = app.autoparser;\n\n        // local\n        this.pasteHtml = html;\n        this.pointInserted = point;\n        this.dataTransfer = dataTransfer;\n\n        // init\n        this._init(e);\n    },\n    // private\n    _init: function(e)\n    {\n        var clipboard = this.dataTransfer || e.clipboardData;\n        var current = this.selection.getCurrent();\n        var dataCurrent = this.inspector.parse(current);\n\n        this.dropPasted = this.dataTransfer;\n        this.isRawCode = (dataCurrent.isPre() || dataCurrent.isCode());\n\n        this.editor.enablePasting();\n        this.editor.saveScroll();\n\n        if (!this.dropPasted)\n        {\n            this.selection.saveMarkers();\n        }\n\n        if (this.isRawCode || !clipboard)\n        {\n            var text;\n            if (!this.isRawCode && !clipboard && window.clipboardData)\n            {\n                text = window.clipboardData.getData(\"text\");\n            }\n            else\n            {\n                text = clipboard.getData(\"text/plain\");\n            }\n\n            e.preventDefault();\n            this._insert(e, text);\n            return;\n        }\n        else if (this.pasteHtml)\n        {\n            e.preventDefault();\n            this._insert(e, this.pasteHtml);\n        }\n        else\n        {\n            // html / text\n            var url = clipboard.getData('URL');\n            var html = (this._isPlainText(clipboard)) ? clipboard.getData(\"text/plain\") : clipboard.getData(\"text/html\");\n\n            // safari anchor links\n            html = (!url || url === '') ? html : url;\n\n            // file\n            if (clipboard.files.length > 0 && html === '')\n            {\n                var files = [];\n                for (var i = 0; i < clipboard.files.length; i++)\n                {\n                    var file = clipboard.files[i] || clipboard.items[i].getAsFile();\n                    if (file) files.push(file);\n                }\n\n                if (files.length > 0)\n                {\n                    e.preventDefault();\n                    this._insertFiles(e, files);\n                    return;\n                }\n            }\n\n\n            e.preventDefault();\n            this._insert(e, html);\n        }\n    },\n    _isPlainText: function(clipboard)\n    {\n        var text = clipboard.getData(\"text/plain\");\n        var html = clipboard.getData(\"text/html\");\n\n        if (text && html)\n        {\n            var element = document.createElement(\"div\");\n            element.innerHTML = html;\n\n            if (element.textContent === text)\n            {\n                return !element.querySelector(\":not(meta)\");\n            }\n        }\n        else\n        {\n            return (text !== null);\n        }\n    },\n    _restoreSelection: function()\n    {\n        this.editor.restoreScroll();\n        this.editor.disablePasting();\n        if (!this.dropPasted)\n        {\n            this.selection.restoreMarkers();\n        }\n    },\n    _insert: function(e, html)\n    {\n        // pasteBefore callback\n        var returned = this.app.broadcast('pasteBefore', html);\n        html = (returned === undefined) ? html : returned;\n\n        // clean\n        html = (this.isRawCode) ? html : this.cleaner.paste(html);\n        html = (this.isRawCode) ? this.cleaner.encodePhpCode(html) : html;\n\n        // paste callback\n        returned = this.app.broadcast('pasting', html);\n        html = (returned === undefined) ? html : returned;\n\n        this._restoreSelection();\n\n        // stop input\n        if (!this.opts.input) return;\n\n        // autoparse\n        if (this.opts.autoparse && this.opts.autoparsePaste)\n        {\n            html = this.autoparser.parse(html);\n        }\n\n        var nodes = (this.dropPasted) ? this.insertion.insertToPoint(e, html, this.pointInserted) : this.insertion.insertHtml(html);\n\n        // pasted callback\n        this.app.broadcast('pasted', nodes);\n        this.app.broadcast('autoparseobserve');\n    },\n    _insertFiles: function(e, files)\n    {\n        this._restoreSelection();\n\n        // drop or clipboard\n        var isImage = (this.opts.imageTypes.indexOf(files[0].type) !== -1);\n        var isClipboard = (typeof this.dropPasted === 'undefined');\n\n        if (isImage) this.app.broadcast('dropimage', e, files, isClipboard);\n        else this.app.broadcast('dropfile', e, files, isClipboard);\n    }\n});\n$R.add('class', 'input.shortcode', {\n    init: function(app, e, key)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.marker = app.marker;\n        this.keycodes = app.keycodes;\n        this.selection = app.selection;\n\n        // local\n        this.worked = false;\n\n        // init\n        if (key === this.keycodes.SPACE) this._init();\n    },\n    // public\n    is: function()\n    {\n        return this.worked;\n    },\n    // private\n    _init: function()\n    {\n        var current = this.selection.getCurrent();\n        if (current && current.nodeType === 3)\n        {\n            var text = this.utils.removeInvisibleChars(current.textContent);\n            var shortcodes = this.opts.shortcodes;\n            for (var name in shortcodes)\n            {\n                var re = new RegExp('^' + this.utils.escapeRegExp(name));\n                var match = text.match(re);\n                if (match !== null)\n                {\n                    if (typeof shortcodes[name].format !== 'undefined')\n                    {\n                        return this._format(shortcodes[name].format, current, re);\n                    }\n                }\n            }\n        }\n    },\n    _format: function(tag, current, re)\n    {\n        var marker = this.marker.insert('start');\n        current = marker.previousSibling;\n\n        var text = current.textContent;\n        text = this.utils.trimSpaces(text);\n        text = text.replace(re, '');\n        current.textContent = text;\n\n        var api = (tag === 'ul' || tag === 'ol') ? 'module.list.toggle' : 'module.block.format';\n\n        this.app.api(api, tag);\n        this.selection.restoreMarkers();\n\n        this.worked = true;\n    }\n});\n$R.add('class', 'input.shortcut', {\n    init: function(app, e)\n    {\n        this.app = app;\n        this.opts = app.opts;\n\n        // local\n        this.worked = false;\n\n        // based on https://github.com/jeresig/jquery.hotkeys\n        this.hotkeys = {\n            8: \"backspace\", 9: \"tab\", 10: \"return\", 13: \"return\", 16: \"shift\", 17: \"ctrl\", 18: \"alt\", 19: \"pause\",\n            20: \"capslock\", 27: \"esc\", 32: \"space\", 33: \"pageup\", 34: \"pagedown\", 35: \"end\", 36: \"home\",\n            37: \"left\", 38: \"up\", 39: \"right\", 40: \"down\", 45: \"insert\", 46: \"del\", 59: \";\", 61: \"=\",\n            96: \"0\", 97: \"1\", 98: \"2\", 99: \"3\", 100: \"4\", 101: \"5\", 102: \"6\", 103: \"7\",\n            104: \"8\", 105: \"9\", 106: \"*\", 107: \"+\", 109: \"-\", 110: \".\", 111 : \"/\",\n            112: \"f1\", 113: \"f2\", 114: \"f3\", 115: \"f4\", 116: \"f5\", 117: \"f6\", 118: \"f7\", 119: \"f8\",\n            120: \"f9\", 121: \"f10\", 122: \"f11\", 123: \"f12\", 144: \"numlock\", 145: \"scroll\", 173: \"-\", 186: \";\", 187: \"=\",\n            188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\", 221: \"]\", 222: \"'\"\n        };\n\n        this.hotkeysShiftNums = {\n            \"`\": \"~\", \"1\": \"!\", \"2\": \"@\", \"3\": \"#\", \"4\": \"$\", \"5\": \"%\", \"6\": \"^\", \"7\": \"&\",\n            \"8\": \"*\", \"9\": \"(\", \"0\": \")\", \"-\": \"_\", \"=\": \"+\", \";\": \": \", \"'\": \"\\\"\", \",\": \"<\",\n            \".\": \">\",  \"/\": \"?\",  \"\\\\\": \"|\"\n        };\n\n        // init\n        this._init(e);\n    },\n    // public\n    is: function()\n    {\n        return this.worked;\n    },\n    // private\n    _init: function(e)\n    {\n        // disable browser's hot keys for bold and italic if shortcuts off\n        if (this.opts.shortcuts === false)\n        {\n            if ((e.ctrlKey || e.metaKey) && (e.which === 66 || e.which === 73)) e.preventDefault();\n            return;\n        }\n\n        // build\n        for (var key in this.opts.shortcuts)\n        {\n            this._build(e, key, this.opts.shortcuts[key]);\n        }\n    },\n    _build: function(e, str, command)\n    {\n        var keys = str.split(',');\n        var len = keys.length;\n        for (var i = 0; i < len; i++)\n        {\n            if (typeof keys[i] === 'string')\n            {\n                this._handler(e, keys[i].trim(), command);\n            }\n        }\n    },\n    _handler: function(e, keys, command)\n    {\n        keys = keys.toLowerCase().split(\" \");\n\n        var special = this.hotkeys[e.keyCode];\n        var character = String.fromCharCode(e.which).toLowerCase();\n        var modif = \"\", possible = {};\n        var cmdKeys = [\"alt\", \"ctrl\", \"meta\", \"shift\"];\n\n        for (var i = 0; i < cmdKeys.length; i++)\n        {\n            var specialKey = cmdKeys[i];\n            if (e[specialKey + 'Key'] && special !== specialKey)\n            {\n                modif += specialKey + '+';\n            }\n        }\n\n        if (special) possible[modif + special] = true;\n        if (character)\n        {\n            possible[modif + character] = true;\n            possible[modif + this.hotkeysShiftNums[character]] = true;\n\n            // \"$\" can be triggered as \"Shift+4\" or \"Shift+$\" or just \"$\"\n            if (modif === \"shift+\")\n            {\n                possible[this.hotkeysShiftNums[character]] = true;\n            }\n        }\n\n        var len = keys.length;\n        for (var i = 0; i < len; i++)\n        {\n            if (possible[keys[i]])\n            {\n                e.preventDefault();\n                this.worked = true;\n\n                if (command.message)\n                {\n                    this.app.broadcast(command.message, command.args);\n                }\n                else if (command.api)\n                {\n                    this.app.api(command.api, command.args);\n                }\n\n                return;\n            }\n        }\n    }\n});\n$R.add('class', 'input.space', {\n    init: function(app, e, key, lastShiftKey)\n    {\n        this.app = app;\n        this.keycodes = app.keycodes;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n\n        // local\n        this.key = key;\n        this.lastShiftKey = lastShiftKey;\n\n        // init\n        this._init(e);\n    },\n    // private\n    _init: function(e)\n    {\n        // has non-editable\n        if (this.selection.hasNonEditable())\n        {\n            e.preventDefault();\n            return;\n        }\n\n        // shift/ctrl + space\n        if (!this.lastShiftKey && this.key === this.keycodes.SPACE && (e.ctrlKey || e.shiftKey) && !e.metaKey)\n        {\n            e.preventDefault();\n            this.insertion.insertChar('&nbsp;');\n            return;\n        }\n    }\n});\n$R.add('class', 'input.tab', {\n    init: function(app, e)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.inspector = app.inspector;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n\n        // init\n        this._init(e);\n    },\n    // private\n    _init: function(e)\n    {\n        // turn off tab\n        if (!this.opts.tabKey) return;\n\n        // callback\n        var stop = this.app.broadcast('tab', e);\n        if (stop === false) return e.preventDefault();\n\n        // traverse\n        this._traverse(e);\n    },\n    _traverse: function(e)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        // hard tab\n        if (!data.isComponent() && e.shiftKey)\n        {\n            return this._insertHardTab(e, 4);\n        }\n\n        // list\n        if (data.isList())\n        {\n            e.preventDefault();\n            return this.app.api('module.list.indent');\n        }\n        // pre\n        if (data.isPre() || (data.isComponentType('code') && !data.isFigcaption()))\n        {\n            return this._tabCode(e);\n        }\n\n        // tab as spaces\n        if (this.opts.tabAsSpaces !== false)\n        {\n            return this._insertHardTab(e, this.opts.tabAsSpaces);\n        }\n    },\n    _insertHardTab: function(e, num)\n    {\n        e.preventDefault();\n        var node = document.createTextNode(Array(num + 1).join('\\u00a0'));\n        return this.insertion.insertNode(node, 'end');\n    },\n    _tabCode: function(e)\n    {\n        e.preventDefault();\n\n        var node = (this.opts.preSpaces) ? document.createTextNode(Array(this.opts.preSpaces + 1).join('\\u00a0')) : document.createTextNode('\\t');\n\n        return this.insertion.insertNode(node, 'end');\n    }\n});\n$R.add('module', 'upload', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.lang = app.lang;\n        this.utils = app.utils;\n        this.editor = app.editor;\n        this.progress = app.progress;\n\n        // local\n        this.defaults = {\n            event: false,\n            element: false,\n            name: false,\n            files: false,\n            url: false,\n            data: false,\n            paramName: false\n        };\n    },\n    // public\n    build: function(options)\n    {\n        this.p = $R.extend(this.defaults, options);\n        this.$el = $R.dom(this.p.element);\n\n        if (this.$el.get().tagName === 'INPUT') this._buildInput();\n        else                                    this._buildBox();\n    },\n    send: function(options)\n    {\n        this.p = $R.extend(this.defaults, options);\n        this.$uploadbox = this.editor.getElement();\n        this._send(this.p.event, this.p.files);\n    },\n    complete: function(response, e)\n    {\n        this._complete(response, e);\n    },\n\n    // private\n    _buildInput: function()\n    {\n        this.box = false;\n        this.prefix = '';\n\n        this.$uploadbox = $R.dom('<div class=\"upload-box\" />');\n\n        this.$el.hide();\n        this.$el.after(this.$uploadbox);\n\n        if (this.opts.multipleUpload) this.$el.attr('multiple', 'multiple');\n        else this.$el.removeAttr('multiple');\n\n        this._buildPlaceholder();\n        this._buildEvents();\n    },\n    _buildBox: function()\n    {\n        this.box = true;\n        this.prefix = 'box-';\n\n        this.$uploadbox = this.$el;\n        this.$uploadbox.attr('ondragstart', 'return false;');\n\n        // events\n        this.$uploadbox.on('drop.redactor.upload', this._onDropBox.bind(this));\n        this.$uploadbox.on('dragover.redactor.upload', this._onDragOver.bind(this));\n        this.$uploadbox.on('dragleave.redactor.upload', this._onDragLeave.bind(this));\n    },\n    _buildPlaceholder: function()\n    {\n        this.$placeholder = $R.dom('<div class=\"upload-placeholder\" />');\n        this.$placeholder.html(this.lang.get('upload-label'));\n        this.$uploadbox.append(this.$placeholder);\n    },\n    _buildEvents: function()\n    {\n        this.$el.on('change.redactor.upload', this._onChange.bind(this));\n        this.$uploadbox.on('click.redactor.upload', this._onClick.bind(this));\n        this.$uploadbox.on('drop.redactor.upload', this._onDrop.bind(this));\n        this.$uploadbox.on('dragover.redactor.upload', this._onDragOver.bind(this));\n        this.$uploadbox.on('dragleave.redactor.upload', this._onDragLeave.bind(this));\n    },\n    _onClick: function(e)\n    {\n        e.preventDefault();\n        this.$el.click();\n    },\n    _onChange: function(e)\n    {\n        this._send(e, this.$el.get().files);\n    },\n    _onDrop: function(e)\n    {\n        e.preventDefault();\n\n        this._clear();\n        this._setStatusDrop();\n        this._send(e);\n    },\n    _onDragOver: function(e)\n    {\n        e.preventDefault();\n        this._setStatusHover();\n\n        return false;\n    },\n    _onDragLeave: function(e)\n    {\n        e.preventDefault();\n        this._removeStatusHover();\n\n        return false;\n    },\n    _onDropBox: function(e)\n    {\n        e.preventDefault();\n\n        this._clear();\n        this._setStatusDrop();\n        this._send(e);\n    },\n    _removeStatusHover: function()\n    {\n        this.$uploadbox.removeClass('upload-' + this.prefix + 'hover');\n    },\n    _setStatusDrop: function()\n    {\n        this.$uploadbox.addClass('upload-' + this.prefix + 'drop');\n    },\n    _setStatusHover: function()\n    {\n        this.$uploadbox.addClass('upload-' + this.prefix + 'hover');\n    },\n    _setStatusError: function()\n    {\n        this.$uploadbox.addClass('upload-' + this.prefix + 'error');\n    },\n    _setStatusSuccess: function()\n    {\n        this.$uploadbox.addClass('upload-' + this.prefix + 'success');\n    },\n    _clear: function()\n    {\n        var classes = ['drop', 'hover', 'error', 'success'];\n        for (var i = 0; i < classes.length; i++)\n        {\n            this.$uploadbox.removeClass('upload-' + this.prefix + classes[i]);\n        }\n\n        this.$uploadbox.removeAttr('ondragstart');\n    },\n    _send: function(e, files)\n    {\n        e = e.originalEvent || e;\n\n        files = (files) ? files : e.dataTransfer.files;\n\n        var data = new FormData();\n        var name = this._getUploadParam();\n\n        data = this._buildData(name, files, data);\n        data = this.utils.extendData(data, this.p.data);\n\n        var stop = this.app.broadcast('upload.start', e, data, files);\n        if (stop !== false)\n        {\n            this._sendData(data, files, e);\n        }\n    },\n    _sendData: function(data, files, e)\n    {\n        this.progress.show();\n        if (typeof this.p.url === 'function')\n        {\n            var res = this.p.url(data, files, e, this);\n            if (!(res instanceof Promise))\n            {\n                this._complete(res, e);\n            }\n        }\n        else\n        {\n            $R.ajax.post({\n                url: this.p.url,\n                data: data,\n                before: function(xhr)\n                {\n                    return this.app.broadcast('upload.beforeSend', xhr);\n\n                }.bind(this),\n                success: function(response)\n                {\n                    this._complete(response, e);\n                }.bind(this)\n            });\n        }\n    },\n    _getUploadParam: function()\n    {\n        return (this.p.paramName) ? this.p.paramName : 'file';\n    },\n    _buildData: function(name, files, data)\n    {\n        if (files.length === 1)\n        {\n            data.append(name + '[]', files[0]);\n        }\n        else if (files.length > 1 && this.opts.multipleUpload !== false)\n        {\n            for (var i = 0; i < files.length; i++)\n            {\n                data.append(name + '[]', files[i]);\n            }\n        }\n\n        return data;\n    },\n    _complete: function(response, e)\n    {\n        this._clear();\n        this.progress.hide();\n\n        if (response && response.error)\n        {\n            this._setStatusError();\n\n            this.app.broadcast('upload.' + this.p.name + '.error', response, e);\n            this.app.broadcast('upload.error', response);\n        }\n        else\n        {\n            this._setStatusSuccess();\n\n            this.app.broadcast('upload.' + this.p.name + '.complete', response, e);\n            this.app.broadcast('upload.complete', response);\n\n            setTimeout(this._clear.bind(this), 500);\n        }\n    }\n});\n$R.add('class', 'code.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el : this._init(el);\n    },\n\n    // private\n   _init: function(el)\n    {\n        var $pre;\n        if (typeof el !== 'undefined')\n        {\n            var $node = $R.dom(el);\n            var $wrapper = $node.closest('figure');\n            if ($wrapper.length !== 0)\n            {\n                this.parse($wrapper);\n            }\n            else\n            {\n                this.parse('<figure>');\n                this.append(el);\n            }\n\n            $pre = this.find('pre code, pre').last();\n        }\n        else\n        {\n            $pre = $R.dom('<pre>');\n\n            this.parse('<figure>');\n            this.append($pre);\n        }\n\n        this._initElement($pre);\n        this._initWrapper();\n    },\n    _initElement: function($pre)\n    {\n        $pre.attr({\n            'tabindex': '-1',\n            'contenteditable': true\n        });\n    },\n    _initWrapper: function()\n    {\n        this.addClass('redactor-component');\n        this.attr({\n            'data-redactor-type': 'code',\n            'tabindex': '-1',\n            'contenteditable': false\n        });\n    }\n});\n$R.add('module', 'form', {\n    init: function(app)\n    {\n        this.app = app;\n        this.lang = app.lang;\n        this.component = app.component;\n        this.inspector = app.inspector;\n    },\n    // messages\n    onform: {\n        remove: function(node)\n        {\n            this._remove(node);\n        }\n    },\n    oncontextbar: function(e, contextbar)\n    {\n        var data = this.inspector.parse(e.target);\n        if (data.isComponentType('form'))\n        {\n            var node = data.getComponent();\n            var buttons = {\n                \"remove\": {\n                    title: this.lang.get('delete'),\n                    api: 'module.form.remove',\n                    args: node\n                }\n            };\n\n            contextbar.set(e, node, buttons, 'top');\n        }\n\n    },\n\n    // private\n    _remove: function(node)\n    {\n        this.component.remove(node);\n    }\n});\n$R.add('class', 'form.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n        this.utils = app.utils;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el : this._init(el);\n    },\n    // private\n    _init: function(el)\n    {\n        if (typeof el !== 'undefined')\n        {\n            var $node = $R.dom(el);\n            var $wrapper = $node.closest('form');\n            if ($wrapper.length !== 0)\n            {\n                var $figure = this.utils.replaceToTag(el, 'figure');\n                this.parse($figure);\n            }\n            else\n            {\n                this.parse('<figure>');\n                this.append(el);\n            }\n        }\n        else\n        {\n            this.parse('<figure>');\n        }\n\n        this._initWrapper();\n    },\n    _initWrapper: function()\n    {\n        this.addClass('redactor-component');\n        this.attr({\n            'data-redactor-type': 'form',\n            'tabindex': '-1',\n            'contenteditable': false\n        });\n    }\n});\n$R.add('module', 'image', {\n    modals: {\n        'image':\n            '<div class=\"redactor-modal-tab\" data-title=\"## upload ##\"><form action=\"\"> \\\n                <input type=\"file\" name=\"file\"> \\\n            </form></div>',\n        'imageedit':\n            '<div class=\"redactor-modal-group\"> \\\n                <div id=\"redactor-modal-image-preview\" class=\"redactor-modal-side\"></div> \\\n                <form action=\"\" class=\"redactor-modal-area\"> \\\n                    <div class=\"form-item\"> \\\n                        <label for=\"modal-image-title\"> ## title ##</label> \\\n                        <input type=\"text\" id=\"modal-image-title\" name=\"title\" /> \\\n                    </div> \\\n                    <div class=\"form-item\"> \\\n                        <label for=\"modal-image-caption\">## caption ##</label> \\\n                        <input type=\"text\" id=\"modal-image-caption\" name=\"caption\" aria-label=\"## caption ##\" /> \\\n                    </div> \\\n                    <div class=\"form-item form-item-align\"> \\\n                        <label>## image-position ##</label> \\\n                        <select name=\"align\" aria-label=\"## image-position ##\"> \\\n                            <option value=\"none\">## none ##</option> \\\n                            <option value=\"left\">## left ##</option> \\\n                            <option value=\"center\">## center ##</option> \\\n                            <option value=\"right\">## right ##</option> \\\n                        </select> \\\n                    </div> \\\n                    <div class=\"form-item\"> \\\n                        <label for=\"modal-image-url\">## link ##</label> \\\n                        <input type=\"text\" id=\"modal-image-url\" name=\"url\" aria-label=\"## link ##\" /> \\\n                    </div> \\\n                    <div class=\"form-item\"> \\\n                        <label class=\"checkbox\"><input type=\"checkbox\" name=\"target\" aria-label=\"## link-in-new-tab ##\"> ## link-in-new-tab ##</label> \\\n                    </div> \\\n                </form> \\\n            </div>'\n    },\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.lang = app.lang;\n        this.caret = app.caret;\n        this.utils = app.utils;\n        this.editor = app.editor;\n        this.storage = app.storage;\n        this.component = app.component;\n        this.inspector = app.inspector;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n\n        // local\n        this.justResized = false;\n    },\n    // messages\n    oninsert: function()\n    {\n        this._observeImages();\n    },\n    onstarted: function()\n    {\n        // storage observe\n        this.storage.observeImages();\n\n        // resize\n        if (this.opts.imageResizable)\n        {\n            this.resizer = $R.create('image.resize', this.app);\n        }\n\n        // observe\n        this._observeImages();\n    },\n    ondropimage: function(e, files, clipboard)\n    {\n        if (!this.opts.imageUpload) return;\n\n        var options = {\n            url: this.opts.imageUpload,\n            event: (clipboard) ? false : e,\n            files: files,\n            name: 'imagedrop',\n            data: this.opts.imageData,\n            paramName: this.opts.imageUploadParam\n        };\n\n        this.app.api('module.upload.send', options);\n    },\n    onstop: function()\n    {\n        if (this.resizer) this.resizer.stop();\n    },\n    onbottomclick: function()\n    {\n        this.insertion.insertToEnd(this.editor.getLastNode(), 'image');\n    },\n    onimageresizer: {\n        stop: function()\n        {\n            if (this.resizer) this.resizer.hide();\n        }\n    },\n    onsource: {\n        open: function()\n        {\n            if (this.resizer) this.resizer.hide();\n        },\n        closed: function()\n        {\n            this._observeImages();\n            if (this.resizer) this.resizer.rebuild();\n        }\n    },\n    onupload: {\n        complete: function()\n        {\n            this._observeImages();\n        },\n        image: {\n            complete: function(response)\n            {\n                this._insert(response);\n            },\n            error: function(response)\n            {\n                this._uploadError(response);\n            }\n        },\n        imageedit: {\n            complete: function(response)\n            {\n                this._change(response);\n            },\n            error: function(response)\n            {\n                this._uploadError(response);\n            }\n        },\n        imagedrop: {\n            complete: function(response, e)\n            {\n                this._insert(response, e);\n            },\n            error: function(response)\n            {\n                this._uploadError(response);\n            }\n        },\n        imagereplace: {\n            complete: function(response)\n            {\n                this._change(response, false);\n            },\n            error: function(response)\n            {\n                this._uploadError(response);\n            }\n        }\n    },\n    onmodal: {\n        image: {\n            open: function($modal, $form)\n            {\n                this._setUpload($form);\n            }\n        },\n        imageedit: {\n            open: function($modal, $form)\n            {\n                this._setFormData($modal, $form);\n            },\n            opened: function($modal, $form)\n            {\n                this._setFormFocus($form);\n            },\n            remove: function()\n            {\n                this._remove(this.$image);\n            },\n            save: function($modal, $form)\n            {\n                this._save($modal, $form);\n            }\n        }\n    },\n    onimage: {\n        observe: function()\n        {\n            this._observeImages();\n        },\n        resized: function()\n        {\n            this.justResized = true;\n        }\n    },\n    oncontextbar: function(e, contextbar)\n    {\n        if (this.justResized)\n        {\n            this.justResized = false;\n            return;\n        }\n\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        if (!data.isFigcaption() && data.isComponentType('image'))\n        {\n            var node = data.getComponent();\n            var buttons = {\n                \"edit\": {\n                    title: this.lang.get('edit'),\n                    api: 'module.image.open'\n                },\n                \"remove\": {\n                    title: this.lang.get('delete'),\n                    api: 'module.image.remove',\n                    args: node\n                }\n            };\n\n            contextbar.set(e, node, buttons);\n        }\n    },\n\n    // public\n    open: function()\n    {\n        this.$image = this._getCurrent();\n        this.app.api('module.modal.build', this._getModalData());\n    },\n    insert: function(data)\n    {\n        this._insert(data);\n    },\n    remove: function(node)\n    {\n        this._remove(node);\n    },\n\n    // private\n    _getModalData: function()\n    {\n        var modalData;\n        if (this._isImage() && this.opts.imageEditable)\n        {\n            modalData = {\n                name: 'imageedit',\n                width: '800px',\n                title: this.lang.get('edit'),\n                handle: 'save',\n                commands: {\n                    save: { title: this.lang.get('save') },\n                    remove: { title: this.lang.get('delete'), type: 'danger' },\n                    cancel: { title: this.lang.get('cancel') }\n                }\n            };\n        }\n        else\n        {\n            modalData = {\n                name: 'image',\n                title: this.lang.get('image')\n            };\n        }\n\n        return modalData;\n    },\n    _isImage: function()\n    {\n        return this.$image;\n    },\n    _getCurrent: function()\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n\n        return (data.isComponentType('image') && data.isComponentActive()) ? this.component.create('image', data.getComponent()) : false;\n    },\n    _insert: function(response, e)\n    {\n        this.app.api('module.modal.close');\n\n        if (Array.isArray(response))\n        {\n            var obj = {};\n            for (var i = 0; i < response.length; i++)\n            {\n                obj = $R.extend(obj, response[i]);\n            }\n\n            response = obj;\n        }\n        else if (typeof response === 'string')\n        {\n            response = { \"file\": { url: response }};\n        }\n\n        if (typeof response === 'object')\n        {\n            var multiple = (Object.keys(response).length  > 1);\n            if (multiple)\n            {\n                this._insertMultiple(response, e);\n            }\n            else\n            {\n                this._insertSingle(response, e);\n            }\n        }\n    },\n    _insertSingle: function(response, e)\n    {\n        for (var key in response)\n        {\n            var $img = this._createImageAndStore(response[key]);\n            var inserted = (e) ? this.insertion.insertToPoint(e, $img) : this.insertion.insertHtml($img);\n\n            this._removeSpaceBeforeFigure(inserted[0]);\n\n            // set is active\n            this.component.setActive(inserted[0]);\n            this.app.broadcast('image.uploaded', inserted[0], response);\n        }\n    },\n    _insertMultiple: function(response, e)\n    {\n        var z = 0;\n        var inserted = [];\n        var last;\n        for (var key in response)\n        {\n            z++;\n\n            var $img = this._createImageAndStore(response[key]);\n\n            if (z === 1)\n            {\n                inserted = (e) ? this.insertion.insertToPoint(e, $img) : this.insertion.insertHtml($img);\n            }\n            else\n            {\n                var $inserted = $R.dom(inserted[0]);\n                $inserted.after($img);\n                inserted = [$img.get()];\n\n                this.app.broadcast('image.inserted', $img);\n            }\n\n            last = inserted[0];\n\n            this._removeSpaceBeforeFigure(inserted[0]);\n            this.app.broadcast('image.uploaded', inserted[0], response);\n        }\n\n        // set last is active\n        this.component.setActive(last);\n    },\n    _createImageAndStore: function(item)\n    {\n        var $img = this.component.create('image');\n\n        $img.addClass('redactor-uploaded-figure');\n        $img.setData({\n            src: item.url,\n            id: (item.id) ? item.id : this.utils.getRandomId()\n        });\n\n        // add to storage\n        this.storage.add('image', $img.getElement());\n\n        return $img;\n    },\n    _removeSpaceBeforeFigure: function(img)\n    {\n        if (!img) return;\n\n        var prev = img.previousSibling;\n        if (prev)\n        {\n            this._removeInvisibleSpace(prev);\n            this._removeInvisibleSpace(prev.previousSibling);\n        }\n    },\n    _removeInvisibleSpace: function(el)\n    {\n        if (el && el.nodeType === 3 && this.utils.searchInvisibleChars(el.textContent) !== -1)\n        {\n            el.parentNode.removeChild(el);\n        }\n    },\n    _save: function($modal, $form)\n    {\n        var data = $form.getData();\n        var imageData = {\n            title: data.title,\n            link: { url: data.url, target: data.target }\n        };\n\n        if (this.opts.imageCaption) imageData.caption = data.caption;\n        if (this.opts.imagePosition) imageData.align = data.align;\n\n        this.$image.setData(imageData);\n        if (this.resizer) this.resizer.rebuild();\n\n        this.app.broadcast('image.changed', this.$image);\n        this.app.api('module.modal.close');\n    },\n    _change: function(response, modal)\n    {\n        if (typeof response === 'string')\n        {\n            response = { \"file\": { url: response }};\n        }\n\n        if (typeof response === 'object')\n        {\n            var $img;\n            for (var key in response)\n            {\n                $img = $R.dom('<img>');\n                $img.attr('src', response[key].url);\n\n                this.$image.changeImage(response[key]);\n\n                this.app.broadcast('image.changed', this.$image, response);\n                this.app.broadcast('image.uploaded', this.$image, response);\n\n                break;\n            }\n\n            if (modal !== false)\n            {\n                $img.on('load', function() { this.$previewBox.html($img); }.bind(this));\n            }\n        }\n    },\n    _uploadError: function(response)\n    {\n        this.app.broadcast('image.uploadError', response);\n    },\n    _remove: function(node)\n    {\n        this.app.api('module.modal.close');\n        this.component.remove(node);\n    },\n    _observeImages: function()\n    {\n        var $editor = this.editor.getElement();\n        var self = this;\n        $editor.find('img').each(function(node)\n        {\n            var $node = $R.dom(node);\n\n            $node.off('.drop-to-replace');\n            $node.on('dragover.drop-to-replace dragenter.drop-to-replace', function(e)\n            {\n                e.preventDefault();\n                return;\n            });\n\n            $node.on('drop.drop-to-replace', function(e)\n            {\n                if (!self.app.isDragComponentInside())\n                {\n                    return self._setReplaceUpload(e, $node);\n                }\n            });\n        });\n    },\n    _setFormData: function($modal, $form)\n    {\n        this._buildPreview();\n        this._buildPreviewUpload();\n\n        var imageData = this.$image.getData();\n        var data = {\n            title: imageData.title\n        };\n\n        // caption\n        if (this.opts.imageCaption) data.caption = imageData.caption;\n        else $modal.find('.form-item-caption').hide();\n\n        // position\n        if (this.opts.imagePosition) data.align = imageData.align;\n        else $modal.find('.form-item-align').hide();\n\n        if (imageData.link)\n        {\n            data.url = imageData.link.url;\n            if (imageData.link.target) data.target = true;\n        }\n\n        $form.setData(data);\n    },\n    _setFormFocus: function($form)\n    {\n        $form.getField('title').focus();\n    },\n    _setReplaceUpload: function(e, $node)\n    {\n        e = e.originalEvent || e;\n        e.stopPropagation();\n        e.preventDefault();\n\n        if (!this.opts.imageUpload) return;\n\n        this.$image = this.component.create('image', $node);\n\n        var options = {\n            url: this.opts.imageUpload,\n            files: e.dataTransfer.files,\n            name: 'imagereplace',\n            data: this.opts.imageData,\n            paramName: this.opts.imageUploadParam\n        };\n\n        this.app.api('module.upload.send', options);\n\n        return;\n    },\n    _setUpload: function($form)\n    {\n        var options = {\n            url: this.opts.imageUpload,\n            element: $form.getField('file'),\n            name: 'image',\n            data: this.opts.imageData,\n            paramName: this.opts.imageUploadParam\n        };\n\n        this.app.api('module.upload.build', options);\n    },\n    _buildPreview: function()\n    {\n        this.$preview = $R.dom('#redactor-modal-image-preview');\n\n        var imageData = this.$image.getData();\n        var $previewImg = $R.dom('<img>');\n        $previewImg.attr('src', imageData.src);\n\n        this.$previewBox = $R.dom('<div>');\n        this.$previewBox.append($previewImg);\n\n        this.$preview.html('');\n        this.$preview.append(this.$previewBox);\n    },\n    _buildPreviewUpload: function()\n    {\n        if (!this.opts.imageUpload) return;\n\n        var $desc = $R.dom('<div class=\"desc\">');\n        $desc.html(this.lang.get('upload-change-label'));\n\n        this.$preview.append($desc);\n\n        var options = {\n            url: this.opts.imageUpload,\n            element: this.$previewBox,\n            name: 'imageedit',\n            paramName: this.opts.imageUploadParam\n        };\n\n        this.app.api('module.upload.build', options);\n    }\n});\n$R.add('class', 'image.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.selection = app.selection;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el : this._init(el);\n    },\n    setData: function(data)\n    {\n        for (var name in data)\n        {\n            this._set(name, data[name]);\n        }\n    },\n    getData: function()\n    {\n        var names = ['src', 'title', 'caption', 'align', 'link', 'id'];\n        var data = {};\n\n        for (var i = 0; i < names.length; i++)\n        {\n            data[names[i]] = this._get(names[i]);\n        }\n\n        return data;\n    },\n    getElement: function()\n    {\n        return this.$element;\n    },\n    changeImage: function(data)\n    {\n        this.$element.attr('src', data.url);\n    },\n\n\n    // private\n    _init: function(el)\n    {\n        var $el = $R.dom(el);\n        var $figure = $el.closest('figure');\n\n        if (el === undefined)\n        {\n            this.$element = $R.dom('<img>');\n            this.parse('<figure>');\n            this.append(this.$element);\n        }\n        else if ($figure.length === 0)\n        {\n            this.parse('<figure>');\n            this.$element = $el;\n            this.$element.wrap(this);\n        }\n        else\n        {\n            this.parse($figure);\n            this.$element = this.find('img');\n        }\n\n        this._initWrapper();\n    },\n    _set: function(name, value)\n    {\n        this['_set_' + name](value);\n    },\n    _get: function(name)\n    {\n        return this['_get_' + name]();\n    },\n    _set_src: function(src)\n    {\n       this.$element.attr('src', src);\n    },\n    _set_id: function(id)\n    {\n       this.$element.attr('data-image', id);\n    },\n    _set_title: function(title)\n    {\n        title = title.trim().replace(/(<([^>]+)>)/ig,\"\");\n\n        if (title === '')\n        {\n            this.$element.removeAttr('alt');\n            this.$element.removeAttr('title');\n        }\n        else\n        {\n            this.$element.attr('alt', title);\n            this.$element.attr('title', title);\n        }\n\n    },\n    _set_caption: function(caption)\n    {\n        var $figcaption = this.find('figcaption');\n        if ($figcaption.length === 0)\n        {\n            $figcaption = $R.dom('<figcaption>');\n            $figcaption.attr('contenteditable', 'true');\n\n            this.append($figcaption);\n        }\n\n        if (caption === '') $figcaption.remove();\n        else $figcaption.html(caption);\n\n        return $figcaption;\n    },\n    _set_align: function(align)\n    {\n        var imageFloat = '';\n        var imageMargin = '';\n        var textAlign = '';\n        var $el = this;\n\n        if (typeof this.opts.imagePosition === 'object')\n        {\n            var positions = this.opts.imagePosition;\n            for (var key in positions)\n            {\n                $el.removeClass(positions[key]);\n            }\n\n            var alignClass = (typeof positions[align] !== 'undefined') ? positions[align] : false;\n            if (alignClass)\n            {\n                $el.addClass(alignClass);\n            }\n        }\n        else\n        {\n            switch (align)\n            {\n                case 'left':\n                    imageFloat = 'left';\n                    imageMargin = '0 ' + this.opts.imageFloatMargin + ' ' + this.opts.imageFloatMargin + ' 0';\n                break;\n                case 'right':\n                    imageFloat = 'right';\n                    imageMargin = '0 0 ' + this.opts.imageFloatMargin + ' ' + this.opts.imageFloatMargin;\n                break;\n                case 'center':\n                    textAlign = 'center';\n                break;\n            }\n\n            $el.css({ 'float': imageFloat, 'margin': imageMargin, 'text-align': textAlign });\n            $el.attr('rel', $el.attr('style'));\n        }\n    },\n    _set_link: function(data)\n    {\n        var $link = this._findLink();\n        if (data.url === '')\n        {\n            if ($link) $link.unwrap();\n\n            return;\n        }\n\n        if (!$link)\n        {\n            $link = $R.dom('<a>');\n            this.$element.wrap($link);\n        }\n\n        $link.attr('href', data.url);\n\n        if (data.target) $link.attr('target', data.target);\n        else $link.removeAttr('target');\n\n        return $link;\n    },\n    _get_src: function()\n    {\n        return this.$element.attr('src');\n    },\n    _get_id: function()\n    {\n        return this.$element.attr('data-image');\n    },\n    _get_title: function()\n    {\n        var alt = this.$element.attr('alt');\n        var title = this.$element.attr('title');\n\n        if (alt) return alt;\n        else if (title) return title;\n        else return '';\n    },\n    _get_caption: function()\n    {\n        var $figcaption = this.find('figcaption');\n\n        if ($figcaption.length === 0)\n        {\n            return '';\n        }\n        else\n        {\n            return $figcaption.html();\n        }\n    },\n    _get_align: function()\n    {\n        var align = '';\n        if (typeof this.opts.imagePosition === 'object')\n        {\n            align = 'none';\n            var positions = this.opts.imagePosition;\n            for (var key in positions)\n            {\n                if (this.hasClass(positions[key]))\n                {\n                    align = key;\n                    break;\n                }\n            }\n        }\n        else\n        {\n            align = (this.css('text-align') === 'center') ? 'center' : this.css('float');\n        }\n\n        return align;\n    },\n    _get_link: function()\n    {\n        var $link = this._findLink();\n        if ($link)\n        {\n            var target = ($link.attr('target')) ? true : false;\n\n            return {\n                url: $link.attr('href'),\n                target: target\n            };\n        }\n    },\n    _initWrapper: function()\n    {\n        this.addClass('redactor-component');\n        this.attr({\n            'data-redactor-type': 'image',\n            'tabindex': '-1',\n            'contenteditable': false\n        });\n    },\n    _findLink: function()\n    {\n        var $link = this.find('a').filter(function(node)\n        {\n            return ($R.dom(node).closest('figcaption').length === 0);\n        });\n\n        if ($link.length !== 0)\n        {\n            return $link;\n        }\n\n        return false;\n    }\n});\n$R.add('class', 'image.resize', {\n    init: function(app)\n    {\n        this.app = app;\n        this.$doc = app.$doc;\n        this.$win = app.$win;\n        this.$body = app.$body;\n        this.editor = app.editor;\n        this.toolbar = app.toolbar;\n        this.inspector = app.inspector;\n\n        // init\n        this.$target = (this.toolbar.isTarget()) ? this.toolbar.getTargetElement() : this.$body;\n        this._init();\n    },\n    // public\n    rebuild: function()\n    {\n        this._setResizerPosition();\n    },\n    hide: function()\n    {\n        this.$target.find('#redactor-image-resizer').remove();\n    },\n    stop: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.off('.redactor.image-resize');\n\n        this.$doc.off('.redactor.image-resize');\n        this.$win.off('resize.redactor.image-resize');\n        this.hide();\n    },\n\n    // private\n    _init: function()\n    {\n        var $editor = this.editor.getElement();\n        $editor.on('click.redactor.image-resize', this._build.bind(this));\n\n        this.$win.on('resize.redactor.image-resize', this._setResizerPosition.bind(this));\n    },\n    _build: function(e)\n    {\n        this.$target.find('#redactor-image-resizer').remove();\n\n        var data = this.inspector.parse(e.target);\n        var $editor = this.editor.getElement();\n\n        if (data.isComponentType('image'))\n        {\n            this.$resizableBox = $editor;\n            this.$resizableImage = $R.dom(data.getImageElement());\n\n            this.$resizer = $R.dom('<span>');\n            this.$resizer.attr('id', 'redactor-image-resizer');\n\n            this.$target.append(this.$resizer);\n\n            this._setResizerPosition();\n            this.$resizer.on('mousedown touchstart', this._set.bind(this));\n        }\n    },\n    _setResizerPosition: function()\n    {\n        if (this.$resizer)\n        {\n            var isTarget = this.toolbar.isTarget();\n            var targetOffset = this.$target.offset();\n            var offsetFix = 7;\n            var topOffset = (isTarget) ? (offsetFix - targetOffset.top + this.$target.scrollTop()) : offsetFix;\n            var leftOffset = (isTarget) ? (offsetFix - targetOffset.left) : offsetFix;\n            var pos = this.$resizableImage.offset();\n            var width = this.$resizableImage.width();\n            var height = this.$resizableImage.height();\n            var resizerWidth =  this.$resizer.width();\n            var resizerHeight =  this.$resizer.height();\n\n            this.$resizer.css({ top: (pos.top + height - resizerHeight + topOffset) + 'px', left: (pos.left + width - resizerWidth + leftOffset) + 'px' });\n        }\n    },\n    _set: function(e)\n    {\n        e.preventDefault();\n\n        this.resizeHandle = {\n            x : e.pageX,\n            y : e.pageY,\n            el : this.$resizableImage,\n            ratio: this.$resizableImage.width() / this.$resizableImage.height(),\n            h: this.$resizableImage.height()\n        };\n\n        e = e.originalEvent || e;\n\n        if (e.targetTouches)\n        {\n             this.resizeHandle.x = e.targetTouches[0].pageX;\n             this.resizeHandle.y = e.targetTouches[0].pageY;\n        }\n\n        this.app.broadcast('contextbar.close');\n        this.app.broadcast('image.resize', this.$resizableImage);\n        this._start();\n    },\n    _start: function()\n    {\n        this.$doc.on('mousemove.redactor.image-resize touchmove.redactor.image-resize', this._move.bind(this));\n        this.$doc.on('mouseup.redactor.image-resize touchend.redactor.image-resize', this._stop.bind(this));\n    },\n    _stop: function()\n    {\n        this.$doc.off('.redactor.image-resize');\n        this.app.broadcast('image.resized', this.$resizableImage);\n    },\n    _move: function(e)\n    {\n        e.preventDefault();\n\n        e = e.originalEvent || e;\n\n        var height = this.resizeHandle.h;\n\n        if (e.targetTouches) height += (e.targetTouches[0].pageY -  this.resizeHandle.y);\n        else height += (e.pageY -  this.resizeHandle.y);\n\n        var width = height * this.resizeHandle.ratio;\n\n        if (height < 50 || width < 100) return;\n        if (this._getResizableBoxWidth() <= width) return;\n\n        this.resizeHandle.el.attr({width: width, height: height});\n        this.resizeHandle.el.width(width);\n        this.resizeHandle.el.height(height);\n        this._setResizerPosition();\n    },\n    _getResizableBoxWidth: function()\n    {\n        var width = this.$resizableBox.width();\n        return width - parseInt(this.$resizableBox.css('padding-left')) - parseInt(this.$resizableBox.css('padding-right'));\n    }\n});\n$R.add('module', 'file', {\n    modals: {\n        'file':\n            '<div class=\"redactor-modal-tab\" data-title=\"## upload ##\"><form action=\"\"> \\\n                <div class=\"form-item form-item-title\"> \\\n                    <label for=\"modal-file-title\"> ## filename ## <span class=\"desc\">(## optional ##)</span></label> \\\n                    <input type=\"text\" id=\"modal-file-title\" name=\"title\" /> \\\n                </div> \\\n                <input type=\"file\" name=\"file\"> \\\n            </form></div>'\n    },\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.lang = app.lang;\n        this.caret = app.caret;\n        this.utils = app.utils;\n        this.storage = app.storage;\n        this.component = app.component;\n        this.inspector = app.inspector;\n        this.insertion = app.insertion;\n        this.selection = app.selection;\n    },\n    // messages\n    onstarted: function()\n    {\n        // storage observe\n        this.storage.observeFiles();\n    },\n    ondropfile: function(e, files, clipboard)\n    {\n        if (!this.opts.fileUpload) return;\n\n        var options = {\n            url: this.opts.fileUpload,\n            event: (clipboard) ? false : e,\n            files: files,\n            name: 'filedrop',\n            data: this.opts.fileData\n        };\n\n        this.app.api('module.upload.send', options);\n    },\n    onmodal: {\n        file: {\n            open: function($modal, $form)\n            {\n                this._setFormData($modal, $form);\n                this._setUpload($form);\n            },\n            opened: function($modal, $form)\n            {\n                this._setFormFocus($form);\n\n                this.$form = $form;\n            }\n        }\n    },\n    onupload: {\n        file: {\n            complete: function(response)\n            {\n                this._insert(response);\n            },\n            error: function(response)\n            {\n                this._uploadError(response);\n            }\n        },\n        filedrop: {\n            complete: function(response, e)\n            {\n                this._insert(response, e);\n            },\n            error: function(response)\n            {\n                this._uploadError(response);\n            }\n        }\n    },\n    oncontextbar: function(e, contextbar)\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        if (data.isFile())\n        {\n            var node = data.getFile();\n            var buttons = {\n                \"remove\": {\n                    title: this.lang.get('delete'),\n                    api: 'module.file.remove',\n                    args: node\n                }\n            };\n\n            contextbar.set(e, node, buttons, 'bottom');\n        }\n\n    },\n\n    // public\n    open: function()\n    {\n        this._open();\n    },\n    insert: function(data)\n    {\n        this._insert(data);\n    },\n    remove: function(node)\n    {\n        this._remove(node);\n    },\n\n    // private\n    _open: function()\n    {\n        this.app.api('module.modal.build', this._getModalData());\n    },\n    _getModalData: function()\n    {\n        var modalData = {\n            name: 'file',\n            title: this.lang.get('file')\n        };\n\n        return modalData;\n    },\n    _insert: function(response, e)\n    {\n        this.app.api('module.modal.close');\n        if (typeof response !== 'object') return;\n\n        if (Array.isArray(response))\n        {\n            var obj = {};\n            for (var i = 0; i < response.length; i++)\n            {\n                obj = $R.extend(obj, response[i]);\n            }\n\n            response = obj;\n        }\n\n        var multiple = (Object.keys(response).length  > 1);\n\n        if (multiple)\n        {\n            this._insertMultiple(response, e);\n        }\n        else\n        {\n            this._insertSingle(response, e);\n        }\n\n        this.$form = false;\n    },\n    _insertSingle: function(response, e)\n    {\n        var inserted = [];\n        for (var key in response)\n        {\n            var $file = this._createFileAndStore(response[key]);\n\n            if (this.opts.fileAttachment)\n            {\n                inserted = this._insertAsAttachment($file);\n            }\n            else\n            {\n                inserted = (e) ? this.insertion.insertToPoint(e, $file) : this.insertion.insertRaw($file);\n            }\n\n            this.app.broadcast('file.uploaded', inserted[0], response);\n        }\n    },\n    _insertMultiple: function(response, e)\n    {\n        var z = 0;\n        var inserted = [];\n        var $last;\n        for (var key in response)\n        {\n            z++;\n\n            var $file = this._createFileAndStore(response[key]);\n\n            if (this.opts.fileAttachment)\n            {\n                inserted = this._insertAsAttachment($file, response);\n            }\n            else\n            {\n                if (z === 1)\n                {\n                    inserted = (e) ? this.insertion.insertToPoint(e, $file) : this.insertion.insertRaw($file);\n                }\n                else\n                {\n                    var $inserted = $R.dom(inserted[0]);\n                    $inserted.after($file).after(' ');\n                    inserted = [$file.get()];\n\n                    this.app.broadcast('file.inserted', $file);\n                }\n            }\n\n            $last = $file;\n            this.app.broadcast('file.uploaded', inserted[0], response);\n        }\n\n        // set caret after last\n        if (!this.opts.fileAttachment)\n        {\n            this.caret.setAfter($last);\n        }\n    },\n    _insertAsAttachment: function($file, response)\n    {\n        var $box = $R.dom(this.opts.fileAttachment);\n        var $wrapper = $file.wrapAttachment();\n        $box.append($wrapper);\n\n        var inserted = [$wrapper.get()];\n        this.app.broadcast('file.appended', inserted[0], response);\n\n        return inserted;\n    },\n    _createFileAndStore: function(item)\n    {\n        var modalFormData = (this.$form) ? this.$form.getData() : false;\n        var name = (item.name) ? item.name : item.url;\n        var title = (!this.opts.fileAttachment && modalFormData && modalFormData.title !== '') ? modalFormData.title : this._truncateUrl(name);\n\n        var $file = this.component.create('file');\n        $file.attr('href', item.url);\n        $file.attr('data-file', (item.id) ? item.id : this.utils.getRandomId());\n        $file.attr('data-name', item.name);\n        $file.html(title);\n\n        // add to storage\n        this.storage.add('file', $file);\n\n        return $file;\n    },\n    _remove: function(node)\n    {\n        this.selection.save();\n\n        var $file = this.component.create('file', node);\n        var stop = this.app.broadcast('file.delete', $file);\n        if (stop !== false)\n        {\n            $file.unwrap();\n\n            this.selection.restore();\n\n            // callback\n            this.app.broadcast('file.deleted', $file);\n        }\n        else\n        {\n            this.selection.restore();\n        }\n    },\n    _truncateUrl: function(url)\n    {\n        return (url.search(/^http/) !== -1 && url.length > 20) ? url.substring(0, 20) + '...' : url;\n    },\n    _setUpload: function($form)\n    {\n        var options = {\n            url: this.opts.fileUpload,\n            element: $form.getField('file'),\n            name: 'file',\n            data: this.opts.fileData,\n            paramName: this.opts.fileUploadParam\n        };\n\n        this.app.api('module.upload.build', options);\n    },\n    _setFormData: function($modal, $form)\n    {\n        if (this.opts.fileAttachment)\n        {\n            $modal.find('.form-item-title').hide();\n        }\n        else\n        {\n            $form.setData({ title: this.selection.getText() });\n        }\n    },\n    _setFormFocus: function($form)\n    {\n        $form.getField('title').focus();\n    },\n    _uploadError: function(response)\n    {\n        this.app.broadcast('file.uploadError', response);\n    }\n});\n$R.add('class', 'file.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n        this.opts = app.opts;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el : this._init(el);\n    },\n    wrapAttachment: function()\n    {\n        this.$wrapper = $R.dom('<span class=\"redactor-file-item\">');\n        this.$remover = $R.dom('<span class=\"redactor-file-remover\">');\n        this.$remover.html('&times;');\n        this.$remover.on('click', this.removeAttachment.bind(this));\n\n        this.$wrapper.append(this);\n        this.$wrapper.append(this.$remover);\n\n        return this.$wrapper;\n    },\n    removeAttachment: function(e)\n    {\n        e.preventDefault();\n\n        var stop = this.app.broadcast('file.delete', this, this.$wrapper);\n        if (stop !== false)\n        {\n            this.$wrapper.remove();\n            this.app.broadcast('file.deleted', this);\n            this.app.broadcast('file.removeAttachment', this);\n        }\n    },\n\n    // private\n    _init: function(el)\n    {\n        if (el === undefined)\n        {\n            this.parse('<a>');\n        }\n        else\n        {\n            var $a = $R.dom(el).closest('a');\n            this.parse($a);\n        }\n    }\n});\n$R.add('module', 'buffer', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.editor = app.editor;\n        this.offset = app.offset;\n        this.keycodes = app.keycodes;\n        this.selection = app.selection;\n\n        // local\n        this.state = false;\n        this.passed = false;\n        this.keyPressed = false;\n        this.savedHtml = false;\n        this.savedOffset = false;\n        this.undoStorage = [];\n        this.redoStorage = [];\n    },\n    // messages\n    onkeydown: function(e)\n    {\n        this._listen(e);\n    },\n    onsyncing: function()\n    {\n        if (!this.keyPressed)\n        {\n            this.trigger();\n        }\n\n        this.keyPressed = false;\n    },\n    onstate: function(e, html, offset)\n    {\n        if ((e && (e.ctrlKey || e.metaKey)) || (e && (this._isUndo(e) || this._isRedo(e))))\n        {\n            return;\n        }\n\n        this.passed = false;\n        this._saveState(html, offset);\n    },\n    onenable: function()\n    {\n        this.clear();\n    },\n\n    // public\n    clear: function()\n    {\n        this.state = false;\n        this.undoStorage = [];\n        this.redoStorage = [];\n    },\n    undo: function()\n    {\n        this._getUndo();\n    },\n    redo: function()\n    {\n        this._getRedo();\n    },\n    trigger: function()\n    {\n        if (this.state && this.passed === false) this._setUndo();\n    },\n\n    // private\n    _saveState: function(html, offset)\n    {\n        var $editor = this.editor.getElement();\n\n        this.state = {\n            html: html || $editor.html(),\n            offset: offset || this.offset.get()\n        };\n    },\n    _listen: function(e)\n    {\n        var key = e.which;\n        var ctrl = e.ctrlKey || e.metaKey;\n        var cmd = ctrl || e.shiftKey || e.altKey;\n        var keys = [this.keycodes.SPACE, this.keycodes.ENTER, this.keycodes.BACKSPACE, this.keycodes.DELETE, this.keycodes.TAB,\n                    this.keycodes.LEFT, this.keycodes.RIGHT, this.keycodes.UP, this.keycodes.DOWN];\n\n        // undo\n        if (this._isUndo(e)) // z key\n        {\n            e.preventDefault();\n            this.undo();\n            return;\n        }\n        // redo\n        else if (this._isRedo(e))\n        {\n            e.preventDefault();\n            this.redo();\n            return;\n        }\n        // spec keys\n        else if (!ctrl && keys.indexOf(key) !== -1)\n        {\n            cmd = true;\n            this.trigger();\n        }\n        // cut & copy\n        else if (ctrl && (key === 88 || key === 67))\n        {\n            cmd = true;\n            this.trigger();\n        }\n\n        // empty buffer\n        if (!cmd && !this._hasUndo())\n        {\n            this.trigger();\n        }\n\n        this.keyPressed = true;\n    },\n    _isUndo: function(e)\n    {\n        var key = e.which;\n        var ctrl = e.ctrlKey || e.metaKey;\n\n        return (ctrl && key === 90 && !e.shiftKey && !e.altKey);\n    },\n    _isRedo: function(e)\n    {\n        var key = e.which;\n        var ctrl = e.ctrlKey || e.metaKey;\n\n        return (ctrl && (key === 90 && e.shiftKey || key === 89 && !e.shiftKey) && !e.altKey);\n    },\n    _setUndo: function()\n    {\n        var last = this.undoStorage[this.undoStorage.length-1];\n        if (typeof last === 'undefined' || last[0] !== this.state.html)\n        {\n            this.undoStorage.push([this.state.html, this.state.offset]);\n            this._removeOverStorage();\n        }\n    },\n    _setRedo: function()\n    {\n        var $editor = this.editor.getElement();\n        var offset = this.offset.get();\n        var html = $editor.html();\n\n        this.redoStorage.push([html, offset]);\n        this.redoStorage = this.redoStorage.slice(0, this.opts.bufferLimit);\n    },\n    _getUndo: function()\n    {\n        if (!this._hasUndo()) return;\n\n        this.passed = true;\n\n        var $editor = this.editor.getElement();\n        var buffer = this.undoStorage.pop();\n\n        this._setRedo();\n\n        $editor.html(buffer[0]);\n        this.offset.set(buffer[1]);\n        this.selection.restore();\n\n        this.app.broadcast('undo', buffer[0], buffer[1]);\n\n    },\n    _getRedo: function()\n    {\n        if (!this._hasRedo()) return;\n\n        this.passed = true;\n\n        var $editor = this.editor.getElement();\n        var buffer = this.redoStorage.pop();\n\n        this._setUndo();\n        $editor.html(buffer[0]);\n        this.offset.set(buffer[1]);\n\n        this.app.broadcast('redo', buffer[0], buffer[1]);\n    },\n    _removeOverStorage: function()\n    {\n        if (this.undoStorage.length > this.opts.bufferLimit)\n        {\n            this.undoStorage = this.undoStorage.slice(0, (this.undoStorage.length - this.opts.bufferLimit));\n        }\n    },\n    _hasUndo: function()\n    {\n        return (this.undoStorage.length !== 0);\n    },\n    _hasRedo: function()\n    {\n        return (this.redoStorage.length !== 0);\n    }\n});\n$R.add('module', 'list', {\n    init: function(app)\n    {\n        this.app = app;\n        this.opts = app.opts;\n        this.utils = app.utils;\n        this.block = app.block;\n        this.toolbar = app.toolbar;\n        this.inspector = app.inspector;\n        this.selection = app.selection;\n    },\n    // messages\n    onbutton: {\n        list: {\n            observe: function(button)\n            {\n                this._observeButton(button);\n            }\n        }\n    },\n    ondropdown: {\n        list: {\n            observe: function(dropdown)\n            {\n                this._observeDropdown(dropdown);\n            }\n        }\n    },\n\n    // public\n    toggle: function(type)\n    {\n        var nodes = this._getBlocks();\n        var block = this.selection.getBlock();\n        var $list = $R.dom(block).parents('ul, ol',  '.redactor-in').last();\n        if (nodes.length === 0 && $list.length !== 0)\n        {\n            nodes = [$list.get()];\n        }\n\n        if (block && (block.tagName === 'TD' || block.tagName === 'TH'))\n        {\n            nodes = this.block.format('div');\n        }\n\n        this.selection.saveMarkers();\n\n        nodes = (nodes.length !== 0 && this._isUnformat(type, nodes)) ? this._unformat(type, nodes) : this._format(type, nodes);\n\n        this.selection.restoreMarkers();\n\n        return nodes;\n    },\n    indent: function()\n    {\n        var isCollapsed = this.selection.isCollapsed();\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var item = (data.isList()) ? data.getListItem() : false;\n        var $item = $R.dom(item);\n        var $prev = $item.prevElement();\n        var prev = $prev.get();\n        var isIndent = (isCollapsed && item && prev && prev.tagName === 'LI');\n\n        if (isIndent)\n        {\n            this.selection.saveMarkers();\n\n            $prev = $R.dom(prev);\n            var $prevChild = $prev.children('ul, ol');\n            var $list = $item.closest('ul, ol');\n\n            if ($prevChild.length !== 0)\n            {\n                $prevChild.append($item);\n            }\n            else\n            {\n                var listTag = $list.get().tagName.toLowerCase();\n                var $newList = $R.dom('<' + listTag + '>');\n\n                $newList.append($item);\n                $prev.append($newList);\n            }\n\n            this.selection.restoreMarkers();\n        }\n    },\n    outdent: function()\n    {\n        var isCollapsed = this.selection.isCollapsed();\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var item = (data.isList()) ? data.getListItem() : false;\n        var $item = $R.dom(item);\n\n        if (isCollapsed && item)\n        {\n\n            var $listItem = $item.parent();\n            var $liItem = $listItem.closest('li', '.redactor-in');\n            var $prev = $item.prevElement();\n            var $next = $item.nextElement();\n            var prev = $prev.get();\n            var next = $next.get();\n            var nextItems, nextList, $newList, $nextList;\n            var isTop = (prev === false);\n            var isMiddle = (prev !== false && next !== false);\n            var isBottom = (!isTop && next === false);\n\n            this.selection.saveMarkers();\n\n            // out\n            if ($liItem.length !== 0)\n            {\n                if (isMiddle)\n                {\n                    nextItems = this._getAllNext($item.get());\n                    $newList = $R.dom('<' + $listItem.get().tagName.toLowerCase() + '>');\n\n                    for (var i = 0; i < nextItems.length; i++)\n                    {\n                        $newList.append(nextItems[i]);\n                    }\n\n                    $liItem.after($item);\n                    $item.append($newList);\n                }\n                else\n                {\n                    $liItem.after($item);\n\n                    if ($listItem.children().length === 0)\n                    {\n                        $listItem.remove();\n                    }\n                    else\n                    {\n                        if (isTop) $item.append($listItem);\n                    }\n                }\n            }\n            // unformat\n            else\n            {\n                var $container =  this._createUnformatContainer($item);\n                var $childList = $container.find('ul, ol').first();\n\n                if (isTop) $listItem.before($container);\n                else if (isBottom) $listItem.after($container);\n                else if (isMiddle)\n                {\n                    $newList = $R.dom('<' + $listItem.get().tagName.toLowerCase() + '>');\n                    nextItems = this._getAllNext($item.get());\n\n                    for (var i = 0; i < nextItems.length; i++)\n                    {\n                        $newList.append(nextItems[i]);\n                    }\n\n                    $listItem.after($container);\n                    $container.after($newList);\n                }\n\n                if ($childList.length !== 0)\n                {\n                    $nextList = $container.nextElement();\n                    nextList = $nextList.get();\n                    if (nextList && nextList.tagName === $listItem.get().tagName)\n                    {\n                        $R.dom(nextList).prepend($childList);\n                        $childList.unwrap();\n                    }\n                    else\n                    {\n                        $container.after($childList);\n                    }\n                }\n\n                $item.remove();\n            }\n\n            this.selection.restoreMarkers();\n        }\n    },\n\n    // private\n    _getAllNext: function(next)\n    {\n        var nodes = [];\n\n        while (next)\n        {\n            var $next = $R.dom(next).nextElement();\n            next = $next.get();\n\n            if (next) nodes.push(next);\n            else return nodes;\n        }\n\n        return nodes;\n    },\n    _isUnformat: function(type, nodes)\n    {\n        var countLists = 0;\n        for (var i = 0; i < nodes.length; i++)\n        {\n            if (nodes[i].nodeType !== 3)\n            {\n                var tag = nodes[i].tagName.toLowerCase();\n                if (tag === type || tag === 'figure')\n                {\n                    countLists++;\n                }\n            }\n        }\n\n        return (countLists === nodes.length);\n    },\n    _format: function(type, nodes)\n    {\n        var tags = ['p', 'div', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol'];\n        var blocks = this._uniteBlocks(nodes, tags);\n        var lists = [];\n\n        for (var key in blocks)\n        {\n            var items = blocks[key];\n            var $list = this._createList(type, blocks[key]);\n\n            for (var i = 0; i < items.length; i++)\n            {\n                var $item;\n\n                // lists\n                if (items[i].nodeType !== 3 && (items[i].tagName === 'UL' || items[i].tagName === 'OL'))\n                {\n                    var $oldList = $R.dom(items[i]);\n\n                    $item = $oldList.contents();\n                    $list.append($item);\n\n                    // old is empty\n                    if (this.utils.isEmpty($oldList)) $oldList.remove();\n                }\n                // other blocks or texts\n                else\n                {\n                    $item = this._createListItem(items[i]);\n                    this.utils.normalizeTextNodes($item);\n                    $list.append($item);\n                }\n            }\n\n            lists.push($list.get());\n        }\n\n        return lists;\n    },\n    _uniteBlocks: function(nodes, tags)\n    {\n        var z = 0;\n        var blocks = { 0: [] };\n        var lastcell = false;\n        for (var i = 0; i < nodes.length; i++)\n        {\n            var $node = $R.dom(nodes[i]);\n            var $cell = $node.closest('th, td');\n\n            if ($cell.length !== 0)\n            {\n                if ($cell.get() !== lastcell)\n                {\n                    // create block\n                    z++;\n                    blocks[z] = [];\n                }\n\n                if (this._isUniteBlock(nodes[i], tags))\n                {\n                    blocks[z].push(nodes[i]);\n                }\n            }\n            else\n            {\n                if (this._isUniteBlock(nodes[i], tags))\n                {\n                    blocks[z].push(nodes[i]);\n                }\n                else\n                {\n                    // create block\n                    z++;\n                    blocks[z] = [];\n                }\n            }\n\n            lastcell = $cell.get();\n        }\n\n        return blocks;\n    },\n    _isUniteBlock: function(node, tags)\n    {\n        return (node.nodeType === 3 || tags.indexOf(node.tagName.toLowerCase()) !== -1);\n    },\n    _createList: function(type, blocks)\n    {\n        var last = blocks[blocks.length-1];\n        var $last = $R.dom(last);\n        var $list = $R.dom('<' + type + '>');\n        $last.after($list);\n\n        return $list;\n    },\n    _createListItem: function(item)\n    {\n        var $item = $R.dom('<li>');\n        if (item.nodeType === 3)\n        {\n            $item.append(item);\n        }\n        else\n        {\n            var $el = $R.dom(item);\n            $item.append($el.contents());\n            $el.remove();\n        }\n\n        return $item;\n    },\n    _unformat: function(type, nodes)\n    {\n        if (nodes.length === 1)\n        {\n            // one list\n            var $list = $R.dom(nodes[0]);\n            var $items = $list.find('li');\n\n            var selectedItems = this.selection.getNodes({ tags: ['li'] });\n            var block = this.selection.getBlock();\n            var $li = $R.dom(block).closest('li');\n            if (selectedItems.length === 0 && $li.length !== 0)\n            {\n                selectedItems = [$li.get()];\n            }\n\n\n            // 1) entire\n            if (selectedItems.length === $items.length)\n            {\n                return this._unformatEntire(nodes[0]);\n            }\n\n            var pos = this._getItemsPosition($items, selectedItems);\n\n            // 2) top\n            if (pos === 'Top')\n            {\n                return this._unformatAtSide('before', selectedItems, $list);\n            }\n\n            // 3) bottom\n            else if (pos === 'Bottom')\n            {\n                selectedItems.reverse();\n                return this._unformatAtSide('after', selectedItems, $list);\n            }\n\n            // 4) middle\n            else if (pos === 'Middle')\n            {\n                var $last = $R.dom(selectedItems[selectedItems.length-1]);\n\n                var ci = false;\n\n                var $parent = false;\n                var $secondList = $R.dom('<' + $list.get().tagName.toLowerCase() + '>');\n                $items.each(function(node)\n                {\n                    if (ci)\n                    {\n                        var $node = $R.dom(node);\n                        if ($node.closest('.redactor-split-item').length === 0 && ($parent === false || $node.closest($parent).length === 0))\n                        {\n                            $node.addClass('redactor-split-item');\n                        }\n\n                        $parent = $node;\n                    }\n\n                    if (node === $last.get())\n                    {\n                        ci = true;\n                    }\n                });\n\n                $items.filter('.redactor-split-item').each(function(node)\n                {\n                    var $node = $R.dom(node);\n                    $node.removeClass('redactor-split-item');\n                    $secondList.append(node);\n                });\n\n                $list.after($secondList);\n\n                selectedItems.reverse();\n                for (var i = 0; i < selectedItems.length; i++)\n                {\n                    var $item = $R.dom(selectedItems[i]);\n                    var $container = this._createUnformatContainer($item);\n\n                    $list.after($container);\n                    $container.find('ul, ol').remove();\n                    $item.remove();\n                }\n\n\n                return;\n            }\n\n        }\n        else\n        {\n            // unformat all\n            for (var i = 0; i < nodes.length; i++)\n            {\n                if (nodes[i].nodeType !== 3 && nodes[i].tagName.toLowerCase() === type)\n                {\n                    this._unformatEntire(nodes[i]);\n                }\n            }\n        }\n    },\n    _unformatEntire: function(list)\n    {\n        var $list = $R.dom(list);\n        var $items = $list.find('li');\n        $items.each(function(node)\n        {\n            var $item = $R.dom(node);\n            var $container = this._createUnformatContainer($item);\n\n            $item.remove();\n            $list.before($container);\n\n        }.bind(this));\n\n        $list.remove();\n    },\n    _unformatAtSide: function(type, selectedItems, $list)\n    {\n        for (var i = 0; i < selectedItems.length; i++)\n        {\n            var $item = $R.dom(selectedItems[i]);\n            var $container = this._createUnformatContainer($item);\n\n            $list[type]($container);\n\n            var $innerLists = $container.find('ul, ol').first();\n            $item.append($innerLists);\n\n            $innerLists.each(function(node)\n            {\n                var $node = $R.dom(node);\n                var $parent = $node.closest('li');\n\n                if ($parent.get() === selectedItems[i])\n                {\n                    $node.unwrap();\n                    $parent.addClass('r-unwrapped');\n                }\n\n            });\n\n            if (this.utils.isEmptyHtml($item.html())) $item.remove();\n        }\n\n        // clear empty\n        $list.find('.r-unwrapped').each(function(node)\n        {\n            var $node = $R.dom(node);\n            if ($node.html().trim() === '') $node.remove();\n            else $node.removeClass('r-unwrapped');\n        });\n    },\n    _getItemsPosition: function($items, selectedItems)\n    {\n        var pos = 'Middle';\n\n        var sFirst = selectedItems[0];\n        var sLast = selectedItems[selectedItems.length-1];\n\n        var first = $items.first().get();\n        var last = $items.last().get();\n\n        if (first === sFirst && last !== sLast)\n        {\n            pos = 'Top';\n        }\n        else if (first !== sFirst && last === sLast)\n        {\n            pos = 'Bottom';\n        }\n\n        return pos;\n    },\n    _createUnformatContainer: function($item)\n    {\n        var $container = $R.dom('<' + this.opts.markup + '>');\n        if (this.opts.breakline) $container.attr('data-redactor-tag', 'br');\n\n        $container.append($item.contents());\n\n        return $container;\n    },\n    _getBlocks: function()\n    {\n        return this.selection.getBlocks({ first: true });\n    },\n    _observeButton: function()\n    {\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var isDisabled = (data.isPre() || data.isCode() || data.isFigcaption());\n\n        this._observeButtonsList(isDisabled, ['lists', 'ul', 'ol', 'outdent', 'indent']);\n\n        var itemOutdent = this.toolbar.getButton('outdent');\n        var itemIndent = this.toolbar.getButton('indent');\n\n        this._observeIndent(itemIndent, itemOutdent);\n    },\n    _observeDropdown: function(dropdown)\n    {\n        var itemOutdent = dropdown.getItem('outdent');\n        var itemIndent = dropdown.getItem('indent');\n\n        this._observeIndent(itemIndent, itemOutdent);\n    },\n    _observeIndent: function(itemIndent, itemOutdent)\n    {\n        var isCollapsed = this.selection.isCollapsed();\n        var current = this.selection.getCurrent();\n        var data = this.inspector.parse(current);\n        var item = (data.isList()) ? data.getListItem() : false;\n        var $item = $R.dom(item);\n        var $prev = $item.prevElement();\n        var prev = $prev.get();\n        var isIndent = (isCollapsed && item && prev && prev.tagName === 'LI');\n\n        if (itemOutdent)\n        {\n            if (item && isCollapsed) itemOutdent.enable();\n            else itemOutdent.disable();\n        }\n\n        if (itemIndent)\n        {\n            if (item && isIndent) itemIndent.enable();\n            else itemIndent.disable();\n        }\n    },\n    _observeButtonsList: function(param, buttons)\n    {\n        for (var i = 0; i < buttons.length; i++)\n        {\n            var button = this.toolbar.getButton(buttons[i]);\n            if (button)\n            {\n                if (param) button.disable();\n                else button.enable();\n            }\n        }\n    }\n});\n$R.add('class', 'video.component', {\n    mixins: ['dom', 'component'],\n    init: function(app, el)\n    {\n        this.app = app;\n\n        // init\n        return (el && el.cmnt !== undefined) ? el : this._init(el);\n    },\n\n    // private\n    _init: function(el)\n    {\n        if (typeof el !== 'undefined')\n        {\n            var $node = $R.dom(el);\n            var $wrapper = $node.closest('figure');\n            if ($wrapper.length !== 0)\n            {\n                this.parse($wrapper);\n            }\n            else\n            {\n                this.parse('<figure>');\n                this.append(el);\n            }\n        }\n        else\n        {\n            this.parse('<figure>');\n        }\n\n\n        this._initWrapper();\n    },\n    _initWrapper: function()\n    {\n        this.addClass('redactor-component');\n        this.attr({\n            'data-redactor-type': 'video',\n            'tabindex': '-1',\n            'contenteditable': false\n        });\n    }\n});\n\n\n    window.Redactor = window.$R = $R;\n\n    // Data attribute load\n    window.addEventListener('load', function()\n    {\n        $R('[data-redactor]');\n    });\n\n}());"
  },
  {
    "path": "src/Assets/themes/dark.css",
    "content": "/*!\n * Bootswatch v4.0.0\n * Homepage: https://bootswatch.com\n * Copyright 2012-2018 Thomas Park\n * Licensed under MIT\n * Based on Bootstrap\n*/\n/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@import url(\"https://fonts.googleapis.com/css?family=Lato:400,700,400italic\");\n:root {\n  --blue: #375a7f;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #E74C3C;\n  --orange: #fd7e14;\n  --yellow: #F39C12;\n  --green: #00bc8c;\n  --teal: #20c997;\n  --cyan: #3498DB;\n  --white: #fff;\n  --gray: #999;\n  --gray-dark: #303030;\n  --primary: #375a7f;\n  --secondary: #444;\n  --success: #00bc8c;\n  --info: #3498DB;\n  --warning: #F39C12;\n  --danger: #E74C3C;\n  --light: #303030;\n  --dark: #303030;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n\nbody {\n  margin: 0;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 0.9375rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #fff;\n  text-align: left;\n  background-color: #222;\n}\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\nhr {\n  -webkit-box-sizing: content-box;\n          box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n          text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\ndfn {\n  font-style: italic;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 80%;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -.25em;\n}\n\nsup {\n  top: -.5em;\n}\n\na {\n  color: #00bc8c;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n  color: #007053;\n  text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n  outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #999;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  text-align: inherit;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: .5rem;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\ntemplate {\n  display: none;\n}\n\n[hidden] {\n  display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\nh1, .h1 {\n  font-size: 2.34375rem;\n}\n\nh2, .h2 {\n  font-size: 1.875rem;\n}\n\nh3, .h3 {\n  font-size: 1.640625rem;\n}\n\nh4, .h4 {\n  font-size: 1.40625rem;\n}\n\nh5, .h5 {\n  font-size: 1.171875rem;\n}\n\nh6, .h6 {\n  font-size: 0.9375rem;\n}\n\n.lead {\n  font-size: 1.171875rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.171875rem;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #999;\n}\n\n.blockquote-footer::before {\n  content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #222;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 90%;\n  color: #999;\n}\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word;\n}\n\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #222;\n  border-radius: 0.2rem;\n}\n\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n}\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: inherit;\n}\n\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\n.container {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container {\n    max-width: 540px;\n  }\n}\n\n@media (min-width: 768px) {\n  .container {\n    max-width: 720px;\n  }\n}\n\n@media (min-width: 992px) {\n  .container {\n    max-width: 960px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1140px;\n  }\n}\n\n.container-fluid {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px;\n}\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n.col {\n  -ms-flex-preferred-size: 0;\n      flex-basis: 0;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  max-width: 100%;\n}\n\n.col-auto {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 auto;\n          flex: 0 0 auto;\n  width: auto;\n  max-width: none;\n}\n\n.col-1 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 8.3333333333%;\n          flex: 0 0 8.3333333333%;\n  max-width: 8.3333333333%;\n}\n\n.col-2 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 16.6666666667%;\n          flex: 0 0 16.6666666667%;\n  max-width: 16.6666666667%;\n}\n\n.col-3 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 25%;\n          flex: 0 0 25%;\n  max-width: 25%;\n}\n\n.col-4 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 33.3333333333%;\n          flex: 0 0 33.3333333333%;\n  max-width: 33.3333333333%;\n}\n\n.col-5 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 41.6666666667%;\n          flex: 0 0 41.6666666667%;\n  max-width: 41.6666666667%;\n}\n\n.col-6 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 50%;\n          flex: 0 0 50%;\n  max-width: 50%;\n}\n\n.col-7 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 58.3333333333%;\n          flex: 0 0 58.3333333333%;\n  max-width: 58.3333333333%;\n}\n\n.col-8 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 66.6666666667%;\n          flex: 0 0 66.6666666667%;\n  max-width: 66.6666666667%;\n}\n\n.col-9 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 75%;\n          flex: 0 0 75%;\n  max-width: 75%;\n}\n\n.col-10 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 83.3333333333%;\n          flex: 0 0 83.3333333333%;\n  max-width: 83.3333333333%;\n}\n\n.col-11 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 91.6666666667%;\n          flex: 0 0 91.6666666667%;\n  max-width: 91.6666666667%;\n}\n\n.col-12 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 100%;\n          flex: 0 0 100%;\n  max-width: 100%;\n}\n\n.order-first {\n  -webkit-box-ordinal-group: 0;\n      -ms-flex-order: -1;\n          order: -1;\n}\n\n.order-last {\n  -webkit-box-ordinal-group: 14;\n      -ms-flex-order: 13;\n          order: 13;\n}\n\n.order-0 {\n  -webkit-box-ordinal-group: 1;\n      -ms-flex-order: 0;\n          order: 0;\n}\n\n.order-1 {\n  -webkit-box-ordinal-group: 2;\n      -ms-flex-order: 1;\n          order: 1;\n}\n\n.order-2 {\n  -webkit-box-ordinal-group: 3;\n      -ms-flex-order: 2;\n          order: 2;\n}\n\n.order-3 {\n  -webkit-box-ordinal-group: 4;\n      -ms-flex-order: 3;\n          order: 3;\n}\n\n.order-4 {\n  -webkit-box-ordinal-group: 5;\n      -ms-flex-order: 4;\n          order: 4;\n}\n\n.order-5 {\n  -webkit-box-ordinal-group: 6;\n      -ms-flex-order: 5;\n          order: 5;\n}\n\n.order-6 {\n  -webkit-box-ordinal-group: 7;\n      -ms-flex-order: 6;\n          order: 6;\n}\n\n.order-7 {\n  -webkit-box-ordinal-group: 8;\n      -ms-flex-order: 7;\n          order: 7;\n}\n\n.order-8 {\n  -webkit-box-ordinal-group: 9;\n      -ms-flex-order: 8;\n          order: 8;\n}\n\n.order-9 {\n  -webkit-box-ordinal-group: 10;\n      -ms-flex-order: 9;\n          order: 9;\n}\n\n.order-10 {\n  -webkit-box-ordinal-group: 11;\n      -ms-flex-order: 10;\n          order: 10;\n}\n\n.order-11 {\n  -webkit-box-ordinal-group: 12;\n      -ms-flex-order: 11;\n          order: 11;\n}\n\n.order-12 {\n  -webkit-box-ordinal-group: 13;\n      -ms-flex-order: 12;\n          order: 12;\n}\n\n.offset-1 {\n  margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n  margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n  margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n  margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n  margin-left: 91.6666666667%;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-sm-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-sm-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-sm-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-sm-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-sm-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-sm-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-sm-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-sm-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-sm-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-sm-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-sm-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-sm-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-sm-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-sm-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-sm-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-sm-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-sm-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-sm-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-sm-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-sm-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-sm-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-sm-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-sm-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-sm-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-sm-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-sm-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-sm-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-sm-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n  .offset-sm-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-sm-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n  .offset-sm-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-sm-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n  .offset-sm-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-sm-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n  .offset-sm-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-sm-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-md-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-md-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-md-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-md-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-md-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-md-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-md-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-md-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-md-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-md-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-md-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-md-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-md-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-md-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-md-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-md-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-md-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-md-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-md-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-md-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-md-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-md-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-md-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-md-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-md-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-md-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-md-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-md-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-md-0 {\n    margin-left: 0;\n  }\n  .offset-md-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-md-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n  .offset-md-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-md-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n  .offset-md-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-md-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n  .offset-md-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-md-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-lg-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-lg-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-lg-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-lg-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-lg-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-lg-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-lg-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-lg-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-lg-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-lg-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-lg-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-lg-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-lg-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-lg-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-lg-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-lg-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-lg-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-lg-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-lg-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-lg-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-lg-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-lg-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-lg-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-lg-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-lg-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-lg-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-lg-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-lg-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n  .offset-lg-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-lg-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n  .offset-lg-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-lg-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n  .offset-lg-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-lg-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n  .offset-lg-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-lg-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-xl-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-xl-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-xl-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-xl-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xl-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-xl-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-xl-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xl-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-xl-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-xl-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xl-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-xl-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-xl-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-xl-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-xl-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-xl-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-xl-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-xl-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-xl-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-xl-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-xl-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-xl-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-xl-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-xl-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-xl-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-xl-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-xl-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-xl-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n  .offset-xl-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-xl-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n  .offset-xl-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-xl-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n  .offset-xl-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-xl-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n  .offset-xl-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-xl-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 1rem;\n  background-color: transparent;\n}\n\n.table th,\n.table td {\n  padding: 0.75rem;\n  vertical-align: top;\n  border-top: 1px solid #444;\n}\n\n.table thead th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #444;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #444;\n}\n\n.table .table {\n  background-color: #222;\n}\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem;\n}\n\n.table-bordered {\n  border: 1px solid #444;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border: 1px solid #444;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n  border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: #303030;\n}\n\n.table-hover tbody tr:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #c7d1db;\n}\n\n.table-hover .table-primary:hover {\n  background-color: #b7c4d1;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n  background-color: #b7c4d1;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #cbcbcb;\n}\n\n.table-hover .table-secondary:hover {\n  background-color: #bebebe;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n  background-color: #bebebe;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #b8ecdf;\n}\n\n.table-hover .table-success:hover {\n  background-color: #a4e7d6;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n  background-color: #a4e7d6;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #c6e2f5;\n}\n\n.table-hover .table-info:hover {\n  background-color: #b0d7f1;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n  background-color: #b0d7f1;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #fce3bd;\n}\n\n.table-hover .table-warning:hover {\n  background-color: #fbd9a5;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n  background-color: #fbd9a5;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f8cdc8;\n}\n\n.table-hover .table-danger:hover {\n  background-color: #f5b8b1;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n  background-color: #f5b8b1;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #c5c5c5;\n}\n\n.table-hover .table-light:hover {\n  background-color: #b8b8b8;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n  background-color: #b8b8b8;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #c5c5c5;\n}\n\n.table-hover .table-dark:hover {\n  background-color: #b8b8b8;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n  background-color: #b8b8b8;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n  color: #222;\n  background-color: #adb5bd;\n  border-color: #98a2ac;\n}\n\n.table .thead-light th {\n  color: #444;\n  background-color: #ebebeb;\n  border-color: #444;\n}\n\n.table-dark {\n  color: #222;\n  background-color: #adb5bd;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n  border-color: #98a2ac;\n}\n\n.table-dark.table-bordered {\n  border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n  background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-sm > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-md > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-lg > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-xl > .table-bordered {\n    border: 0;\n  }\n}\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n  border: 0;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.9375rem;\n  line-height: 1.5;\n  color: #444;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n\n.form-control:focus {\n  color: #444;\n  background-color: #fff;\n  border-color: #739ac2;\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n  color: #999;\n  opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n  color: #999;\n  opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n  color: #999;\n  opacity: 1;\n}\n\n.form-control::placeholder {\n  color: #999;\n  opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n  background-color: #ebebeb;\n  opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n  height: calc(2.15625rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n  color: #444;\n  background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.171875rem;\n  line-height: 1.5;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(1.73046875rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(2.7578125rem + 2px);\n}\n\n.form-group {\n  margin-bottom: 1rem;\n}\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem;\n}\n\n.form-row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n  padding-right: 5px;\n  padding-left: 5px;\n}\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n  color: #999;\n}\n\n.form-check-label {\n  margin-bottom: 0;\n}\n\n.form-check-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n  position: static;\n  margin-top: 0;\n  margin-right: 0.3125rem;\n  margin-left: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #00bc8c;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(0, 188, 140, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n  border-color: #00bc8c;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n  border-color: #00bc8c;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #00bc8c;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #00bc8c;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n  background-color: #3dffcd;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  background-color: #00efb2;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #222, 0 0 0 0.2rem rgba(0, 188, 140, 0.25);\n          box-shadow: 0 0 0 1px #222, 0 0 0 0.2rem rgba(0, 188, 140, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #00bc8c;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.25);\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #E74C3C;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(231, 76, 60, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n  border-color: #E74C3C;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n  border-color: #E74C3C;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #E74C3C;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #E74C3C;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n  background-color: #f5b4ae;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  background-color: #ed7669;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #222, 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 1px #222, 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #E74C3C;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.form-inline {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-flow: row wrap;\n          flex-flow: row wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.form-inline .form-check {\n  width: 100%;\n}\n\n@media (min-width: 576px) {\n  .form-inline label {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-group {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-plaintext {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    width: auto;\n  }\n  .form-inline .form-check {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    width: auto;\n    padding-left: 0;\n  }\n  .form-inline .form-check-input {\n    position: relative;\n    margin-top: 0;\n    margin-right: 0.25rem;\n    margin-left: 0;\n  }\n  .form-inline .custom-control {\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n  }\n  .form-inline .custom-control-label {\n    margin-bottom: 0;\n  }\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.9375rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n\n.btn:hover, .btn:focus {\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n  background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #375a7f;\n  border-color: #375a7f;\n}\n\n.btn-primary:hover {\n  color: #fff;\n  background-color: #2b4764;\n  border-color: #28415b;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #fff;\n  background-color: #375a7f;\n  border-color: #375a7f;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #28415b;\n  border-color: #243a53;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #444;\n  border-color: #444;\n}\n\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #313131;\n  border-color: #2b2a2a;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #fff;\n  background-color: #444;\n  border-color: #444;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #2b2a2a;\n  border-color: #242424;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #00bc8c;\n  border-color: #00bc8c;\n}\n\n.btn-success:hover {\n  color: #fff;\n  background-color: #009670;\n  border-color: #008966;\n}\n\n.btn-success:focus, .btn-success.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #fff;\n  background-color: #00bc8c;\n  border-color: #00bc8c;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #008966;\n  border-color: #007c5d;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n}\n\n.btn-info {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-info:hover {\n  color: #fff;\n  background-color: #2384c6;\n  border-color: #217dbb;\n}\n\n.btn-info:focus, .btn-info.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n  color: #fff;\n  background-color: #217dbb;\n  border-color: #1f76b0;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-warning {\n  color: #222;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-warning:hover {\n  color: #fff;\n  background-color: #d4860b;\n  border-color: #c87f0a;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #222;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n  color: #fff;\n  background-color: #c87f0a;\n  border-color: #bc770a;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-danger:hover {\n  color: #fff;\n  background-color: #e12e1c;\n  border-color: #d62c1a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #d62c1a;\n  border-color: #ca2a19;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-light {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-light:hover {\n  color: #fff;\n  background-color: #1d1d1d;\n  border-color: #171616;\n}\n\n.btn-light:focus, .btn-light.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n  color: #fff;\n  background-color: #171616;\n  border-color: #101010;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1d1d1d;\n  border-color: #171616;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #171616;\n  border-color: #101010;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-outline-primary {\n  color: #375a7f;\n  background-color: transparent;\n  background-image: none;\n  border-color: #375a7f;\n}\n\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #375a7f;\n  border-color: #375a7f;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n  color: #375a7f;\n  background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #375a7f;\n  border-color: #375a7f;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.5);\n}\n\n.btn-outline-secondary {\n  color: #444;\n  background-color: transparent;\n  background-image: none;\n  border-color: #444;\n}\n\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #444;\n  border-color: #444;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n  color: #444;\n  background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #444;\n  border-color: #444;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(68, 68, 68, 0.5);\n}\n\n.btn-outline-success {\n  color: #00bc8c;\n  background-color: transparent;\n  background-image: none;\n  border-color: #00bc8c;\n}\n\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #00bc8c;\n  border-color: #00bc8c;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n  color: #00bc8c;\n  background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n  color: #fff;\n  background-color: #00bc8c;\n  border-color: #00bc8c;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(0, 188, 140, 0.5);\n}\n\n.btn-outline-info {\n  color: #3498DB;\n  background-color: transparent;\n  background-image: none;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:hover {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n  color: #3498DB;\n  background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-outline-warning {\n  color: #F39C12;\n  background-color: transparent;\n  background-image: none;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:hover {\n  color: #222;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n  color: #F39C12;\n  background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n  color: #222;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-outline-danger {\n  color: #E74C3C;\n  background-color: transparent;\n  background-image: none;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n  color: #E74C3C;\n  background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-outline-light {\n  color: #303030;\n  background-color: transparent;\n  background-image: none;\n  border-color: #303030;\n}\n\n.btn-outline-light:hover {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n  color: #303030;\n  background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-outline-dark {\n  color: #303030;\n  background-color: transparent;\n  background-image: none;\n  border-color: #303030;\n}\n\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n  color: #303030;\n  background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #303030;\n  border-color: #303030;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(48, 48, 48, 0.5);\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #00bc8c;\n  background-color: transparent;\n}\n\n.btn-link:hover {\n  color: #007053;\n  text-decoration: underline;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: underline;\n  border-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #999;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n.btn-block + .btn-block {\n  margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n\n.fade.show {\n  opacity: 1;\n}\n\n.collapse {\n  display: none;\n}\n\n.collapse.show {\n  display: block;\n}\n\ntr.collapse.show {\n  display: table-row;\n}\n\ntbody.collapse.show {\n  display: table-row-group;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n  transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n.dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 0.9375rem;\n  color: #fff;\n  text-align: left;\n  list-style: none;\n  background-color: #222;\n  background-clip: padding-box;\n  border: 1px solid #444;\n  border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n  display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #444;\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1.5rem;\n  clear: both;\n  font-weight: 400;\n  color: #fff;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #375a7f;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #375a7f;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #999;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1.5rem;\n  margin-bottom: 0;\n  font-size: 0.8203125rem;\n  color: #999;\n  white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  -webkit-box-flex: 0;\n      -ms-flex: 0 1 auto;\n          flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n  z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n  margin-left: -1px;\n}\n\n.btn-toolbar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-pack: start;\n      -ms-flex-pack: start;\n          justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n  margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n  width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n\n.input-group {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: stretch;\n      -ms-flex-align: stretch;\n          align-items: stretch;\n  width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n  position: relative;\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  width: 1%;\n  margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n  z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n  margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::before {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label,\n.input-group > .custom-file:not(:first-child) .custom-file-label::before {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n  margin-left: -1px;\n}\n\n.input-group-prepend {\n  margin-right: -1px;\n}\n\n.input-group-append {\n  margin-left: -1px;\n}\n\n.input-group-text {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.9375rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #adb5bd;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #444;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  margin-right: 1rem;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #375a7f;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #222, 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n          box-shadow: 0 0 0 1px #222, 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #97b3d2;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n  color: #999;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n  background-color: #ebebeb;\n}\n\n.custom-control-label {\n  margin-bottom: 0;\n}\n\n.custom-control-label::before {\n  position: absolute;\n  top: 0.25rem;\n  left: 0;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  pointer-events: none;\n  content: \"\";\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n  position: absolute;\n  top: 0.25rem;\n  left: 0;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  content: \"\";\n  background-repeat: no-repeat;\n  background-position: center center;\n  background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #375a7f;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  background-color: #375a7f;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(55, 90, 127, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(55, 90, 127, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #375a7f;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(55, 90, 127, 0.5);\n}\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #444;\n  vertical-align: middle;\n  background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23303030' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n  background-size: 8px 10px;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n}\n\n.custom-select:focus {\n  border-color: #739ac2;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(115, 154, 194, 0.5);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(115, 154, 194, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n  color: #444;\n  background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n  height: auto;\n  padding-right: 0.75rem;\n  background-image: none;\n}\n\n.custom-select:disabled {\n  color: #999;\n  background-color: #ebebeb;\n}\n\n.custom-select::-ms-expand {\n  opacity: 0;\n}\n\n.custom-select-sm {\n  height: calc(1.73046875rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 75%;\n}\n\n.custom-select-lg {\n  height: calc(2.7578125rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 125%;\n}\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  margin: 0;\n  opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n  border-color: #739ac2;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n  border-color: #739ac2;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n  content: \"Browse\";\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.15625rem + 2px);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #444;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 3;\n  display: block;\n  height: calc(calc(2.15625rem + 2px) - 1px * 2);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #444;\n  content: \"Browse\";\n  background-color: #444;\n  border-left: 1px solid transparent;\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 2rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n  text-decoration: none;\n}\n\n.nav-link.disabled {\n  color: #ebebeb;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #444;\n}\n\n.nav-tabs .nav-item {\n  margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #444;\n}\n\n.nav-tabs .nav-link.disabled {\n  color: #ebebeb;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #444;\n  background-color: #222;\n  border-color: #444;\n}\n\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #375a7f;\n}\n\n.nav-fill .nav-item {\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified .nav-item {\n  -ms-flex-preferred-size: 0;\n      flex-basis: 0;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  text-align: center;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n  padding: 1rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n}\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.32421875rem;\n  padding-bottom: 0.32421875rem;\n  margin-right: 1rem;\n  font-size: 1.171875rem;\n  line-height: inherit;\n  white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n  text-decoration: none;\n}\n\n.navbar-nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n  position: static;\n  float: none;\n}\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  -ms-flex-preferred-size: 100%;\n      flex-basis: 100%;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.171875rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n  text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n.navbar-expand {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-flow: row nowrap;\n          flex-flow: row nowrap;\n  -webkit-box-pack: start;\n      -ms-flex-pack: start;\n          justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n          flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important;\n  -ms-flex-preferred-size: auto;\n      flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n  color: #fff;\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: #fff;\n}\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: #fff;\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: #fff;\n}\n\n.navbar-light .navbar-toggler {\n  color: rgba(255, 255, 255, 0.5);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n  color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-light .navbar-text a {\n  color: #fff;\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n  color: #fff;\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: #00bc8c;\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n  color: #fff;\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #303030;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: #444;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: #444;\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n    margin-right: -15px;\n    margin-left: -15px;\n  }\n  .card-deck .card {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n            flex: 1 0 0%;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    margin-right: 15px;\n    margin-bottom: 0;\n    margin-left: 15px;\n  }\n}\n\n.card-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n  }\n  .card-group > .card {\n    -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n            flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:first-child {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-top,\n  .card-group > .card:first-child .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-bottom,\n  .card-group > .card:first-child .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:last-child {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-top,\n  .card-group > .card:last-child .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-bottom,\n  .card-group > .card:last-child .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:only-child {\n    border-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-top,\n  .card-group > .card:only-child .card-header {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-bottom,\n  .card-group > .card:only-child .card-footer {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n    border-radius: 0;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n    border-radius: 0;\n  }\n}\n\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n            column-count: 3;\n    -webkit-column-gap: 1.25rem;\n            column-gap: 1.25rem;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n\n.breadcrumb {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: #444;\n  border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n  display: inline-block;\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n  color: #999;\n  content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none;\n}\n\n.breadcrumb-item.active {\n  color: #999;\n}\n\n.pagination {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: 0;\n  line-height: 1.25;\n  color: #fff;\n  background-color: #00bc8c;\n  border: 0 solid transparent;\n}\n\n.page-link:hover {\n  color: #fff;\n  text-decoration: none;\n  background-color: #00efb2;\n  border-color: transparent;\n}\n\n.page-link:focus {\n  z-index: 2;\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(55, 90, 127, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #00efb2;\n  border-color: transparent;\n}\n\n.page-item.disabled .page-link {\n  color: #fff;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #007053;\n  border-color: transparent;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #fff;\n  background-color: #375a7f;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #28415b;\n}\n\n.badge-secondary {\n  color: #fff;\n  background-color: #444;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #2b2a2a;\n}\n\n.badge-success {\n  color: #fff;\n  background-color: #00bc8c;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #008966;\n}\n\n.badge-info {\n  color: #fff;\n  background-color: #3498DB;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #217dbb;\n}\n\n.badge-warning {\n  color: #222;\n  background-color: #F39C12;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n  color: #222;\n  text-decoration: none;\n  background-color: #c87f0a;\n}\n\n.badge-danger {\n  color: #fff;\n  background-color: #E74C3C;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #d62c1a;\n}\n\n.badge-light {\n  color: #fff;\n  background-color: #303030;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #171616;\n}\n\n.badge-dark {\n  color: #fff;\n  background-color: #303030;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #171616;\n}\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #303030;\n  border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n  .jumbotron {\n    padding: 4rem 2rem;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0;\n}\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3.90625rem;\n}\n\n.alert-dismissible .close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 0.75rem 1.25rem;\n  color: inherit;\n}\n\n.alert-primary {\n  color: #1d2f42;\n  background-color: #d7dee5;\n  border-color: #c7d1db;\n}\n\n.alert-primary hr {\n  border-top-color: #b7c4d1;\n}\n\n.alert-primary .alert-link {\n  color: #0d161f;\n}\n\n.alert-secondary {\n  color: #232323;\n  background-color: #dadada;\n  border-color: #cbcbcb;\n}\n\n.alert-secondary hr {\n  border-top-color: #bebebe;\n}\n\n.alert-secondary .alert-link {\n  color: #0a0909;\n}\n\n.alert-success {\n  color: #006249;\n  background-color: #ccf2e8;\n  border-color: #b8ecdf;\n}\n\n.alert-success hr {\n  border-top-color: #a4e7d6;\n}\n\n.alert-success .alert-link {\n  color: #002f23;\n}\n\n.alert-info {\n  color: #1b4f72;\n  background-color: #d6eaf8;\n  border-color: #c6e2f5;\n}\n\n.alert-info hr {\n  border-top-color: #b0d7f1;\n}\n\n.alert-info .alert-link {\n  color: #113249;\n}\n\n.alert-warning {\n  color: #7e5109;\n  background-color: #fdebd0;\n  border-color: #fce3bd;\n}\n\n.alert-warning hr {\n  border-top-color: #fbd9a5;\n}\n\n.alert-warning .alert-link {\n  color: #4e3206;\n}\n\n.alert-danger {\n  color: #78281f;\n  background-color: #fadbd8;\n  border-color: #f8cdc8;\n}\n\n.alert-danger hr {\n  border-top-color: #f5b8b1;\n}\n\n.alert-danger .alert-link {\n  color: #4f1a15;\n}\n\n.alert-light {\n  color: #191919;\n  background-color: #d6d6d6;\n  border-color: #c5c5c5;\n}\n\n.alert-light hr {\n  border-top-color: #b8b8b8;\n}\n\n.alert-light .alert-link {\n  color: black;\n}\n\n.alert-dark {\n  color: #191919;\n  background-color: #d6d6d6;\n  border-color: #c5c5c5;\n}\n\n.alert-dark hr {\n  border-top-color: #b8b8b8;\n}\n\n.alert-dark .alert-link {\n  color: black;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 10px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 10px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 10px;\n  overflow: hidden;\n  font-size: 10px;\n  background-color: #444;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  color: #fff;\n  text-align: center;\n  background-color: #375a7f;\n  -webkit-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 10px 10px;\n}\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n          animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n}\n\n.media-body {\n  -webkit-box-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n}\n\n.list-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #444;\n  text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  color: #444;\n  text-decoration: none;\n  background-color: #444;\n}\n\n.list-group-item-action:active {\n  color: #fff;\n  background-color: #ebebeb;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #303030;\n  border: 1px solid #444;\n}\n\n.list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n  z-index: 1;\n  text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #999;\n  background-color: #303030;\n}\n\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #375a7f;\n  border-color: #375a7f;\n}\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n  border-bottom: 0;\n}\n\n.list-group-item-primary {\n  color: #1d2f42;\n  background-color: #c7d1db;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #1d2f42;\n  background-color: #b7c4d1;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #1d2f42;\n  border-color: #1d2f42;\n}\n\n.list-group-item-secondary {\n  color: #232323;\n  background-color: #cbcbcb;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #232323;\n  background-color: #bebebe;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #232323;\n  border-color: #232323;\n}\n\n.list-group-item-success {\n  color: #006249;\n  background-color: #b8ecdf;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #006249;\n  background-color: #a4e7d6;\n}\n\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #006249;\n  border-color: #006249;\n}\n\n.list-group-item-info {\n  color: #1b4f72;\n  background-color: #c6e2f5;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #1b4f72;\n  background-color: #b0d7f1;\n}\n\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #1b4f72;\n  border-color: #1b4f72;\n}\n\n.list-group-item-warning {\n  color: #7e5109;\n  background-color: #fce3bd;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #7e5109;\n  background-color: #fbd9a5;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #7e5109;\n  border-color: #7e5109;\n}\n\n.list-group-item-danger {\n  color: #78281f;\n  background-color: #f8cdc8;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #78281f;\n  background-color: #f5b8b1;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #78281f;\n  border-color: #78281f;\n}\n\n.list-group-item-light {\n  color: #191919;\n  background-color: #c5c5c5;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #191919;\n  background-color: #b8b8b8;\n}\n\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #191919;\n  border-color: #191919;\n}\n\n.list-group-item-dark {\n  color: #191919;\n  background-color: #c5c5c5;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #191919;\n  background-color: #b8b8b8;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #191919;\n  border-color: #191919;\n}\n\n.close {\n  float: right;\n  font-size: 1.40625rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-shadow: none;\n  opacity: .5;\n}\n\n.close:hover, .close:focus {\n  color: #fff;\n  text-decoration: none;\n  opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.modal-open {\n  overflow: hidden;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  outline: 0;\n}\n\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n  -webkit-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n  -webkit-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #303030;\n  background-clip: padding-box;\n  border: 1px solid #444;\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #444;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n  padding: 1rem;\n  margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: end;\n      -ms-flex-pack: end;\n          justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #444;\n}\n\n.modal-footer > :not(:first-child) {\n  margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n  margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n  .modal-dialog-centered {\n    min-height: calc(100% - (1.75rem * 2));\n  }\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n\n@media (min-width: 992px) {\n  .modal-lg {\n    max-width: 800px;\n  }\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.8203125rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n\n.tooltip.show {\n  opacity: 0.9;\n}\n\n.tooltip .arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n  bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n  top: 0;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n  right: 0;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n  top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n  bottom: 0;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n  left: 0;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.8203125rem;\n  word-wrap: break-word;\n  background-color: #303030;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n\n.popover .arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n  margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n  bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n  bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  bottom: 1px;\n  border-top-color: #303030;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n  left: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n  left: 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  left: 1px;\n  border-right-color: #303030;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n  top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n  top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  top: 1px;\n  border-bottom-color: #303030;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #444;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n  right: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n  right: 0;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  right: 1px;\n  border-left-color: #303030;\n}\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.9375rem;\n  color: inherit;\n  background-color: #444;\n  border-bottom: 1px solid #373737;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #fff;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  width: 100%;\n  -webkit-transition: -webkit-transform 0.6s ease;\n  transition: -webkit-transform 0.6s ease;\n  transition: transform 0.6s ease;\n  transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-perspective: 1000px;\n          perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  -webkit-transform: translateX(0);\n          transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next.carousel-item-left,\n  .carousel-item-prev.carousel-item-right {\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n  -webkit-transform: translateX(100%);\n          transform: translateX(100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next,\n  .active.carousel-item-right {\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  -webkit-transform: translateX(-100%);\n          transform: translateX(-100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-prev,\n  .active.carousel-item-left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: .9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  position: relative;\n  -webkit-box-flex: 0;\n      -ms-flex: 0 1 auto;\n          flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n  position: absolute;\n  top: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators li::after {\n  position: absolute;\n  bottom: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.bg-primary {\n  background-color: #375a7f !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #28415b !important;\n}\n\n.bg-secondary {\n  background-color: #444 !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #2b2a2a !important;\n}\n\n.bg-success {\n  background-color: #00bc8c !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #008966 !important;\n}\n\n.bg-info {\n  background-color: #3498DB !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #217dbb !important;\n}\n\n.bg-warning {\n  background-color: #F39C12 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #c87f0a !important;\n}\n\n.bg-danger {\n  background-color: #E74C3C !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #d62c1a !important;\n}\n\n.bg-light {\n  background-color: #303030 !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #171616 !important;\n}\n\n.bg-dark {\n  background-color: #303030 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #171616 !important;\n}\n\n.bg-white {\n  background-color: #fff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #375a7f !important;\n}\n\n.border-secondary {\n  border-color: #444 !important;\n}\n\n.border-success {\n  border-color: #00bc8c !important;\n}\n\n.border-info {\n  border-color: #3498DB !important;\n}\n\n.border-warning {\n  border-color: #F39C12 !important;\n}\n\n.border-danger {\n  border-color: #E74C3C !important;\n}\n\n.border-light {\n  border-color: #303030 !important;\n}\n\n.border-dark {\n  border-color: #303030 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.d-none {\n  display: none !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: -webkit-inline-box !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important;\n  }\n  .d-sm-inline {\n    display: inline !important;\n  }\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n  .d-sm-block {\n    display: block !important;\n  }\n  .d-sm-table {\n    display: table !important;\n  }\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n  .d-sm-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-sm-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important;\n  }\n  .d-md-inline {\n    display: inline !important;\n  }\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n  .d-md-block {\n    display: block !important;\n  }\n  .d-md-table {\n    display: table !important;\n  }\n  .d-md-table-row {\n    display: table-row !important;\n  }\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n  .d-md-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-md-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important;\n  }\n  .d-lg-inline {\n    display: inline !important;\n  }\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n  .d-lg-block {\n    display: block !important;\n  }\n  .d-lg-table {\n    display: table !important;\n  }\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n  .d-lg-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-lg-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important;\n  }\n  .d-xl-inline {\n    display: inline !important;\n  }\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n  .d-xl-block {\n    display: block !important;\n  }\n  .d-xl-table {\n    display: table !important;\n  }\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n  .d-xl-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-xl-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media print {\n  .d-print-none {\n    display: none !important;\n  }\n  .d-print-inline {\n    display: inline !important;\n  }\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n  .d-print-block {\n    display: block !important;\n  }\n  .d-print-table {\n    display: table !important;\n  }\n  .d-print-table-row {\n    display: table-row !important;\n  }\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n  .d-print-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-print-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n}\n\n.embed-responsive::before {\n  display: block;\n  content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n\n.embed-responsive-21by9::before {\n  padding-top: 42.8571428571%;\n}\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n  padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n  padding-top: 100%;\n}\n\n.flex-row {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: normal !important;\n      -ms-flex-direction: row !important;\n          flex-direction: row !important;\n}\n\n.flex-column {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: normal !important;\n      -ms-flex-direction: column !important;\n          flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: reverse !important;\n      -ms-flex-direction: row-reverse !important;\n          flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: reverse !important;\n      -ms-flex-direction: column-reverse !important;\n          flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n      flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n      flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n      flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  -webkit-box-pack: start !important;\n      -ms-flex-pack: start !important;\n          justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  -webkit-box-pack: end !important;\n      -ms-flex-pack: end !important;\n          justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  -webkit-box-pack: center !important;\n      -ms-flex-pack: center !important;\n          justify-content: center !important;\n}\n\n.justify-content-between {\n  -webkit-box-pack: justify !important;\n      -ms-flex-pack: justify !important;\n          justify-content: space-between !important;\n}\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n      justify-content: space-around !important;\n}\n\n.align-items-start {\n  -webkit-box-align: start !important;\n      -ms-flex-align: start !important;\n          align-items: flex-start !important;\n}\n\n.align-items-end {\n  -webkit-box-align: end !important;\n      -ms-flex-align: end !important;\n          align-items: flex-end !important;\n}\n\n.align-items-center {\n  -webkit-box-align: center !important;\n      -ms-flex-align: center !important;\n          align-items: center !important;\n}\n\n.align-items-baseline {\n  -webkit-box-align: baseline !important;\n      -ms-flex-align: baseline !important;\n          align-items: baseline !important;\n}\n\n.align-items-stretch {\n  -webkit-box-align: stretch !important;\n      -ms-flex-align: stretch !important;\n          align-items: stretch !important;\n}\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n      align-content: flex-start !important;\n}\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n      align-content: flex-end !important;\n}\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n      align-content: center !important;\n}\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n      align-content: space-between !important;\n}\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n      align-content: space-around !important;\n}\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n      align-content: stretch !important;\n}\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n      align-self: auto !important;\n}\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n      align-self: flex-start !important;\n}\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n      align-self: flex-end !important;\n}\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n      align-self: center !important;\n}\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n      align-self: baseline !important;\n}\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n      align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-sm-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-sm-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-sm-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-sm-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-sm-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-sm-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-sm-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-sm-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-sm-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-sm-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-sm-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-sm-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-md-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-md-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-md-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-md-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-md-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-md-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-md-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-md-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-md-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-md-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-md-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-md-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-lg-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-lg-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-lg-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-lg-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-lg-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-lg-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-lg-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-lg-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-lg-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-lg-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-lg-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-lg-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-xl-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-xl-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-xl-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-xl-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-xl-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-xl-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-xl-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-xl-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-xl-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-xl-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-xl-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-xl-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n.float-left {\n  float: left !important;\n}\n\n.float-right {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important;\n  }\n  .float-sm-right {\n    float: right !important;\n  }\n  .float-sm-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important;\n  }\n  .float-md-right {\n    float: right !important;\n  }\n  .float-md-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important;\n  }\n  .float-lg-right {\n    float: right !important;\n  }\n  .float-lg-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important;\n  }\n  .float-xl-right {\n    float: right !important;\n  }\n  .float-xl-none {\n    float: none !important;\n  }\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  -webkit-clip-path: inset(50%);\n          clip-path: inset(50%);\n  border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n  -webkit-clip-path: none;\n          clip-path: none;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important;\n  }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important;\n  }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important;\n  }\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n  }\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n  }\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important;\n  }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important;\n  }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important;\n  }\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important;\n  }\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important;\n  }\n  .m-sm-auto {\n    margin: auto !important;\n  }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important;\n  }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important;\n  }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important;\n  }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important;\n  }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important;\n  }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important;\n  }\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important;\n  }\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important;\n  }\n  .p-md-0 {\n    padding: 0 !important;\n  }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important;\n  }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important;\n  }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important;\n  }\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important;\n  }\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important;\n  }\n  .m-md-auto {\n    margin: auto !important;\n  }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important;\n  }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important;\n  }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important;\n  }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important;\n  }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important;\n  }\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n  }\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n  }\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important;\n  }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important;\n  }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important;\n  }\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important;\n  }\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important;\n  }\n  .m-lg-auto {\n    margin: auto !important;\n  }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important;\n  }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important;\n  }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important;\n  }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important;\n  }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important;\n  }\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n  }\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n  }\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important;\n  }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important;\n  }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important;\n  }\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important;\n  }\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important;\n  }\n  .m-xl-auto {\n    margin: auto !important;\n  }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important;\n  }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important;\n  }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important;\n  }\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important;\n  }\n  .text-sm-right {\n    text-align: right !important;\n  }\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important;\n  }\n  .text-md-right {\n    text-align: right !important;\n  }\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important;\n  }\n  .text-lg-right {\n    text-align: right !important;\n  }\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important;\n  }\n  .text-xl-right {\n    text-align: right !important;\n  }\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-white {\n  color: #fff !important;\n}\n\n.text-primary {\n  color: #375a7f !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #28415b !important;\n}\n\n.text-secondary {\n  color: #444 !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #2b2a2a !important;\n}\n\n.text-success {\n  color: #00bc8c !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #008966 !important;\n}\n\n.text-info {\n  color: #3498DB !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #217dbb !important;\n}\n\n.text-warning {\n  color: #F39C12 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #c87f0a !important;\n}\n\n.text-danger {\n  color: #E74C3C !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #d62c1a !important;\n}\n\n.text-light {\n  color: #303030 !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #171616 !important;\n}\n\n.text-dark {\n  color: #303030 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #171616 !important;\n}\n\n.text-muted {\n  color: #999 !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\";\n  }\n  pre {\n    white-space: pre-wrap !important;\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  @page {\n    size: a3;\n  }\n  body {\n    min-width: 992px !important;\n  }\n  .container {\n    min-width: 992px !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .badge {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n\n.bg-primary .navbar-nav .active > .nav-link {\n  color: #00bc8c !important;\n}\n\n.bg-dark {\n  background-color: #00bc8c !important;\n}\n\n.bg-dark.navbar-dark .navbar-nav .nav-link:focus,\n.bg-dark.navbar-dark .navbar-nav .nav-link:hover,\n.bg-dark.navbar-dark .navbar-nav .active > .nav-link {\n  color: #375a7f !important;\n}\n\n.blockquote-footer {\n  color: #999;\n}\n\n.table-success, .table-info, .table-warning, .table-danger {\n  color: #fff;\n}\n\n.table .thead-dark th {\n  color: #fff;\n}\n\n.table-success, .table-success > th, .table-success > td {\n  background-color: #00bc8c;\n}\n\n.table-info, .table-info > th, .table-info > td {\n  background-color: #3498DB;\n}\n\n.table-danger, .table-danger > th, .table-danger > td {\n  background-color: #E74C3C;\n}\n\n.table-warning, .table-warning > th, .table-warning > td {\n  background-color: #F39C12;\n}\n\n.table-hover .table-success:hover, .table-hover .table-success:hover > th, .table-hover .table-success:hover > td {\n  background-color: #00a379;\n}\n\n.table-hover .table-info:hover, .table-hover .table-info:hover > th, .table-hover .table-info:hover > td {\n  background-color: #258cd1;\n}\n\n.table-hover .table-danger:hover, .table-hover .table-danger:hover > th, .table-hover .table-danger:hover > td {\n  background-color: #e43725;\n}\n\n.table-hover .table-warning:hover, .table-hover .table-warning:hover > th, .table-hover .table-warning:hover > td {\n  background-color: #e08e0b;\n}\n\n.input-group-addon {\n  color: #fff;\n}\n\n.nav-tabs .nav-link,\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-link.active:focus,\n.nav-tabs .nav-link.active:hover,\n.nav-tabs .nav-item.open .nav-link,\n.nav-tabs .nav-item.open .nav-link:focus,\n.nav-tabs .nav-item.open .nav-link:hover,\n.nav-pills .nav-link,\n.nav-pills .nav-link.active,\n.nav-pills .nav-link.active:focus,\n.nav-pills .nav-link.active:hover,\n.nav-pills .nav-item.open .nav-link,\n.nav-pills .nav-item.open .nav-link:focus,\n.nav-pills .nav-item.open .nav-link:hover {\n  color: #fff;\n}\n\n.breadcrumb a {\n  color: #fff;\n}\n\n.pagination a:hover {\n  text-decoration: none;\n}\n\n.close {\n  opacity: 0.4;\n}\n\n.close:hover, .close:focus {\n  opacity: 1;\n}\n\n.alert {\n  border: none;\n  color: #fff;\n}\n\n.alert a,\n.alert .alert-link {\n  color: #fff;\n  text-decoration: underline;\n}\n\n.alert-primary {\n  background-color: #375a7f;\n}\n\n.alert-secondary {\n  background-color: #444;\n}\n\n.alert-success {\n  background-color: #00bc8c;\n}\n\n.alert-info {\n  background-color: #3498DB;\n}\n\n.alert-warning {\n  background-color: #F39C12;\n}\n\n.alert-danger {\n  background-color: #E74C3C;\n}\n\n.alert-light {\n  background-color: #303030;\n}\n\n.alert-dark {\n  background-color: #303030;\n}\n\n.list-group-item-action {\n  color: #fff;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  background-color: #444;\n  color: #fff;\n}\n\n.list-group-item-action .list-group-item-heading {\n  color: #fff;\n}\n\n.sidebar {\n  background-color: #333;\n}\n\n.sidebar .nav-item .nav-link {\n  color: #EEE;\n}\n\n.sidebar-header {\n    background-color: #444;\n    color: #ccc;\n}\n\n.sidebar-sticky .active {\n    background-color: #222;\n    color: #FFF;\n}\n\n.form-control, .form-control:focus {\n  background-color: #111 !important;\n  color: #eee;\n}\n\n.redactor-editor, .redactor-editor:focus {\n  background-color: #111 !important;\n  color: #eee;\n}\n\n.redactor-editor *, .redactor-editor:focus * {\n  color: #eee;\n}\n\n.selectable {\n  color: #111;\n}\n\n.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {\n  border-bottom-color: #222;\n}"
  },
  {
    "path": "src/Assets/themes/standard.css",
    "content": "/*!\n * Bootswatch v4.0.0\n * Homepage: https://bootswatch.com\n * Copyright 2012-2018 Thomas Park\n * Licensed under MIT\n * Based on Bootstrap\n*/\n/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@import url(\"https://fonts.googleapis.com/css?family=Lato:400,700,400italic\");\n:root {\n  --blue: #2C3E50;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #E74C3C;\n  --orange: #fd7e14;\n  --yellow: #F39C12;\n  --green: #18BC9C;\n  --teal: #20c997;\n  --cyan: #3498DB;\n  --white: #fff;\n  --gray: #95a5a6;\n  --gray-dark: #343a40;\n  --primary: #2C3E50;\n  --secondary: #95a5a6;\n  --success: #18BC9C;\n  --info: #3498DB;\n  --warning: #F39C12;\n  --danger: #E74C3C;\n  --light: #ecf0f1;\n  --dark: #7b8a8b;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\n.sidebar {\n  background-color: #7b8a8b;\n}\n\n.sidebar .nav-item .nav-link {\n  color: #fff;\n}\n\n.sidebar-sticky .active .nav-link {\n  color: #343a40;\n}\n\n.sidebar-header {\n    background-color: #343a40;\n    color: #fff;\n}\n\n.sidebar-sticky .active {\n    background-color: #fff;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n\nbody {\n  margin: 0;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 0.9375rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\nhr {\n  -webkit-box-sizing: content-box;\n          box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n          text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\ndfn {\n  font-style: italic;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 80%;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -.25em;\n}\n\nsup {\n  top: -.5em;\n}\n\na {\n  color: #18BC9C;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n  color: #0f7864;\n  text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n  outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #95a5a6;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  text-align: inherit;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: .5rem;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\ntemplate {\n  display: none;\n}\n\n[hidden] {\n  display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\nh1, .h1 {\n  font-size: 3rem;\n}\n\nh2, .h2 {\n  font-size: 2.5rem;\n}\n\nh3, .h3 {\n  font-size: 2rem;\n}\n\nh4, .h4 {\n  font-size: 1.40625rem;\n}\n\nh5, .h5 {\n  font-size: 1.171875rem;\n}\n\nh6, .h6 {\n  font-size: 0.9375rem;\n}\n\n.lead {\n  font-size: 1.171875rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.171875rem;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #95a5a6;\n}\n\n.blockquote-footer::before {\n  content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 90%;\n  color: #95a5a6;\n}\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word;\n}\n\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\n\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n}\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529;\n}\n\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\n.container {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container {\n    max-width: 540px;\n  }\n}\n\n@media (min-width: 768px) {\n  .container {\n    max-width: 720px;\n  }\n}\n\n@media (min-width: 992px) {\n  .container {\n    max-width: 960px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1140px;\n  }\n}\n\n.container-fluid {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px;\n}\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n.col {\n  -ms-flex-preferred-size: 0;\n      flex-basis: 0;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  max-width: 100%;\n}\n\n.col-auto {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 auto;\n          flex: 0 0 auto;\n  width: auto;\n  max-width: none;\n}\n\n.col-1 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 8.3333333333%;\n          flex: 0 0 8.3333333333%;\n  max-width: 8.3333333333%;\n}\n\n.col-2 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 16.6666666667%;\n          flex: 0 0 16.6666666667%;\n  max-width: 16.6666666667%;\n}\n\n.col-3 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 25%;\n          flex: 0 0 25%;\n  max-width: 25%;\n}\n\n.col-4 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 33.3333333333%;\n          flex: 0 0 33.3333333333%;\n  max-width: 33.3333333333%;\n}\n\n.col-5 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 41.6666666667%;\n          flex: 0 0 41.6666666667%;\n  max-width: 41.6666666667%;\n}\n\n.col-6 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 50%;\n          flex: 0 0 50%;\n  max-width: 50%;\n}\n\n.col-7 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 58.3333333333%;\n          flex: 0 0 58.3333333333%;\n  max-width: 58.3333333333%;\n}\n\n.col-8 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 66.6666666667%;\n          flex: 0 0 66.6666666667%;\n  max-width: 66.6666666667%;\n}\n\n.col-9 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 75%;\n          flex: 0 0 75%;\n  max-width: 75%;\n}\n\n.col-10 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 83.3333333333%;\n          flex: 0 0 83.3333333333%;\n  max-width: 83.3333333333%;\n}\n\n.col-11 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 91.6666666667%;\n          flex: 0 0 91.6666666667%;\n  max-width: 91.6666666667%;\n}\n\n.col-12 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 100%;\n          flex: 0 0 100%;\n  max-width: 100%;\n}\n\n.order-first {\n  -webkit-box-ordinal-group: 0;\n      -ms-flex-order: -1;\n          order: -1;\n}\n\n.order-last {\n  -webkit-box-ordinal-group: 14;\n      -ms-flex-order: 13;\n          order: 13;\n}\n\n.order-0 {\n  -webkit-box-ordinal-group: 1;\n      -ms-flex-order: 0;\n          order: 0;\n}\n\n.order-1 {\n  -webkit-box-ordinal-group: 2;\n      -ms-flex-order: 1;\n          order: 1;\n}\n\n.order-2 {\n  -webkit-box-ordinal-group: 3;\n      -ms-flex-order: 2;\n          order: 2;\n}\n\n.order-3 {\n  -webkit-box-ordinal-group: 4;\n      -ms-flex-order: 3;\n          order: 3;\n}\n\n.order-4 {\n  -webkit-box-ordinal-group: 5;\n      -ms-flex-order: 4;\n          order: 4;\n}\n\n.order-5 {\n  -webkit-box-ordinal-group: 6;\n      -ms-flex-order: 5;\n          order: 5;\n}\n\n.order-6 {\n  -webkit-box-ordinal-group: 7;\n      -ms-flex-order: 6;\n          order: 6;\n}\n\n.order-7 {\n  -webkit-box-ordinal-group: 8;\n      -ms-flex-order: 7;\n          order: 7;\n}\n\n.order-8 {\n  -webkit-box-ordinal-group: 9;\n      -ms-flex-order: 8;\n          order: 8;\n}\n\n.order-9 {\n  -webkit-box-ordinal-group: 10;\n      -ms-flex-order: 9;\n          order: 9;\n}\n\n.order-10 {\n  -webkit-box-ordinal-group: 11;\n      -ms-flex-order: 10;\n          order: 10;\n}\n\n.order-11 {\n  -webkit-box-ordinal-group: 12;\n      -ms-flex-order: 11;\n          order: 11;\n}\n\n.order-12 {\n  -webkit-box-ordinal-group: 13;\n      -ms-flex-order: 12;\n          order: 12;\n}\n\n.offset-1 {\n  margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n  margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n  margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n  margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n  margin-left: 91.6666666667%;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-sm-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-sm-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-sm-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-sm-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-sm-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-sm-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-sm-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-sm-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-sm-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-sm-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-sm-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-sm-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-sm-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-sm-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-sm-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-sm-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-sm-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-sm-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-sm-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-sm-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-sm-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-sm-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-sm-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-sm-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-sm-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-sm-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-sm-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-sm-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n  .offset-sm-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-sm-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n  .offset-sm-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-sm-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n  .offset-sm-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-sm-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n  .offset-sm-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-sm-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-md-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-md-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-md-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-md-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-md-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-md-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-md-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-md-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-md-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-md-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-md-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-md-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-md-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-md-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-md-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-md-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-md-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-md-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-md-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-md-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-md-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-md-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-md-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-md-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-md-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-md-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-md-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-md-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-md-0 {\n    margin-left: 0;\n  }\n  .offset-md-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-md-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n  .offset-md-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-md-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n  .offset-md-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-md-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n  .offset-md-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-md-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-lg-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-lg-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-lg-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-lg-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-lg-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-lg-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-lg-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-lg-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-lg-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-lg-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-lg-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-lg-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-lg-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-lg-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-lg-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-lg-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-lg-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-lg-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-lg-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-lg-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-lg-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-lg-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-lg-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-lg-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-lg-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-lg-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-lg-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-lg-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n  .offset-lg-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-lg-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n  .offset-lg-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-lg-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n  .offset-lg-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-lg-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n  .offset-lg-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-lg-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-xl-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-xl-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-xl-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-xl-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xl-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-xl-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-xl-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xl-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-xl-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-xl-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xl-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-xl-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-xl-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-xl-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-xl-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-xl-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-xl-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-xl-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-xl-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-xl-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-xl-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-xl-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-xl-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-xl-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-xl-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-xl-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-xl-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-xl-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n  .offset-xl-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-xl-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n  .offset-xl-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-xl-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n  .offset-xl-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-xl-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n  .offset-xl-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-xl-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 1rem;\n  background-color: transparent;\n}\n\n.table th,\n.table td {\n  padding: 0.75rem;\n  vertical-align: top;\n  border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n  background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem;\n}\n\n.table-bordered {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n  border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: #ecf0f1;\n}\n\n.table-hover tbody tr:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #c4c9ce;\n}\n\n.table-hover .table-primary:hover {\n  background-color: #b6bcc2;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n  background-color: #b6bcc2;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #e1e6e6;\n}\n\n.table-hover .table-secondary:hover {\n  background-color: #d3dada;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n  background-color: #d3dada;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #beece3;\n}\n\n.table-hover .table-success:hover {\n  background-color: #aae6db;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n  background-color: #aae6db;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #c6e2f5;\n}\n\n.table-hover .table-info:hover {\n  background-color: #b0d7f1;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n  background-color: #b0d7f1;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #fce3bd;\n}\n\n.table-hover .table-warning:hover {\n  background-color: #fbd9a5;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n  background-color: #fbd9a5;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f8cdc8;\n}\n\n.table-hover .table-danger:hover {\n  background-color: #f5b8b1;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n  background-color: #f5b8b1;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fafbfb;\n}\n\n.table-hover .table-light:hover {\n  background-color: #ecf0f0;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n  background-color: #ecf0f0;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #dadedf;\n}\n\n.table-hover .table-dark:hover {\n  background-color: #ccd2d3;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n  background-color: #ccd2d3;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n  color: #fff;\n  background-color: #212529;\n  border-color: #32383e;\n}\n\n.table .thead-light th {\n  color: #7b8a8b;\n  background-color: #ecf0f1;\n  border-color: #dee2e6;\n}\n\n.table-dark {\n  color: #fff;\n  background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n  border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n  border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n  background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-sm > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-md > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-lg > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-xl > .table-bordered {\n    border: 0;\n  }\n}\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n  border: 0;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.9375rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n\n.form-control:focus {\n  color: #7b8a8b;\n  background-color: #fff;\n  border-color: #597ea2;\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control::placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n  background-color: #ecf0f1;\n  opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n  height: calc(2.15625rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n  color: #7b8a8b;\n  background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.171875rem;\n  line-height: 1.5;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(1.73046875rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(2.7578125rem + 2px);\n}\n\n.form-group {\n  margin-bottom: 1rem;\n}\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem;\n}\n\n.form-row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n  padding-right: 5px;\n  padding-left: 5px;\n}\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n  color: #95a5a6;\n}\n\n.form-check-label {\n  margin-bottom: 0;\n}\n\n.form-check-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n  position: static;\n  margin-top: 0;\n  margin-right: 0.3125rem;\n  margin-left: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #18BC9C;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(24, 188, 156, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n  border-color: #18BC9C;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n  border-color: #18BC9C;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #18BC9C;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #18BC9C;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n  background-color: #68ecd2;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  background-color: #24e3be;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n          box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #18BC9C;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #E74C3C;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(231, 76, 60, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n  border-color: #E74C3C;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n  border-color: #E74C3C;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #E74C3C;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #E74C3C;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n  background-color: #f5b4ae;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  background-color: #ed7669;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #E74C3C;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.form-inline {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-flow: row wrap;\n          flex-flow: row wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.form-inline .form-check {\n  width: 100%;\n}\n\n@media (min-width: 576px) {\n  .form-inline label {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-group {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-plaintext {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    width: auto;\n  }\n  .form-inline .form-check {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    width: auto;\n    padding-left: 0;\n  }\n  .form-inline .form-check-input {\n    position: relative;\n    margin-top: 0;\n    margin-right: 0.25rem;\n    margin-left: 0;\n  }\n  .form-inline .custom-control {\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n  }\n  .form-inline .custom-control-label {\n    margin-bottom: 0;\n  }\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.9375rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n\n.btn:hover, .btn:focus {\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n  background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-primary:hover {\n  color: #fff;\n  background-color: #1e2b37;\n  border-color: #1a252f;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #1a252f;\n  border-color: #151e27;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-secondary {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #809395;\n  border-color: #798d8f;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #798d8f;\n  border-color: #738789;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-success:hover {\n  color: #fff;\n  background-color: #149a80;\n  border-color: #128f76;\n}\n\n.btn-success:focus, .btn-success.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #128f76;\n  border-color: #11836d;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-info {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-info:hover {\n  color: #fff;\n  background-color: #2384c6;\n  border-color: #217dbb;\n}\n\n.btn-info:focus, .btn-info.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n  color: #fff;\n  background-color: #217dbb;\n  border-color: #1f76b0;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-warning {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-warning:hover {\n  color: #fff;\n  background-color: #d4860b;\n  border-color: #c87f0a;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n  color: #fff;\n  background-color: #c87f0a;\n  border-color: #bc770a;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-danger:hover {\n  color: #fff;\n  background-color: #e12e1c;\n  border-color: #d62c1a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #d62c1a;\n  border-color: #ca2a19;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-light {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-light:hover {\n  color: #212529;\n  background-color: #d6dfe1;\n  border-color: #cfd9db;\n}\n\n.btn-light:focus, .btn-light.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n  color: #212529;\n  background-color: #cfd9db;\n  border-color: #c7d3d6;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-dark:hover {\n  color: #fff;\n  background-color: #697677;\n  border-color: #636f70;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #636f70;\n  border-color: #5d696a;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-outline-primary {\n  color: #2C3E50;\n  background-color: transparent;\n  background-image: none;\n  border-color: #2C3E50;\n}\n\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n  color: #2C3E50;\n  background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-outline-secondary {\n  color: #95a5a6;\n  background-color: transparent;\n  background-image: none;\n  border-color: #95a5a6;\n}\n\n.btn-outline-secondary:hover {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n  color: #95a5a6;\n  background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-outline-success {\n  color: #18BC9C;\n  background-color: transparent;\n  background-image: none;\n  border-color: #18BC9C;\n}\n\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n  color: #18BC9C;\n  background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-outline-info {\n  color: #3498DB;\n  background-color: transparent;\n  background-image: none;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:hover {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n  color: #3498DB;\n  background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-outline-warning {\n  color: #F39C12;\n  background-color: transparent;\n  background-image: none;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:hover {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n  color: #F39C12;\n  background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-outline-danger {\n  color: #E74C3C;\n  background-color: transparent;\n  background-image: none;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n  color: #E74C3C;\n  background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-outline-light {\n  color: #ecf0f1;\n  background-color: transparent;\n  background-image: none;\n  border-color: #ecf0f1;\n}\n\n.btn-outline-light:hover {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n  color: #ecf0f1;\n  background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-outline-dark {\n  color: #7b8a8b;\n  background-color: transparent;\n  background-image: none;\n  border-color: #7b8a8b;\n}\n\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n  color: #7b8a8b;\n  background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #18BC9C;\n  background-color: transparent;\n}\n\n.btn-link:hover {\n  color: #0f7864;\n  text-decoration: underline;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: underline;\n  border-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #95a5a6;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n.btn-block + .btn-block {\n  margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n\n.fade.show {\n  opacity: 1;\n}\n\n.collapse {\n  display: none;\n}\n\n.collapse.show {\n  display: block;\n}\n\ntr.collapse.show {\n  display: table-row;\n}\n\ntbody.collapse.show {\n  display: table-row-group;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n  transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n.dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 0.9375rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n  display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #ecf0f1;\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1.5rem;\n  clear: both;\n  font-weight: 400;\n  color: #7b8a8b;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #2C3E50;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #2C3E50;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #95a5a6;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1.5rem;\n  margin-bottom: 0;\n  font-size: 0.8203125rem;\n  color: #95a5a6;\n  white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  -webkit-box-flex: 0;\n      -ms-flex: 0 1 auto;\n          flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n  z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n  margin-left: -1px;\n}\n\n.btn-toolbar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-pack: start;\n      -ms-flex-pack: start;\n          justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n  margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n  width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n\n.input-group {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: stretch;\n      -ms-flex-align: stretch;\n          align-items: stretch;\n  width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n  position: relative;\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  width: 1%;\n  margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n  z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n  margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::before {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label,\n.input-group > .custom-file:not(:first-child) .custom-file-label::before {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n  margin-left: -1px;\n}\n\n.input-group-prepend {\n  margin-right: -1px;\n}\n\n.input-group-append {\n  margin-left: -1px;\n}\n\n.input-group-text {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.9375rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #7b8a8b;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #ecf0f1;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  margin-right: 1rem;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #2C3E50;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #7997b5;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n  color: #95a5a6;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n  background-color: #ecf0f1;\n}\n\n.custom-control-label {\n  margin-bottom: 0;\n}\n\n.custom-control-label::before {\n  position: absolute;\n  top: 0.25rem;\n  left: 0;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  pointer-events: none;\n  content: \"\";\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n  position: absolute;\n  top: 0.25rem;\n  left: 0;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  content: \"\";\n  background-repeat: no-repeat;\n  background-position: center center;\n  background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #2C3E50;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  background-color: #2C3E50;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(44, 62, 80, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(44, 62, 80, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #2C3E50;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(44, 62, 80, 0.5);\n}\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  vertical-align: middle;\n  background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n  background-size: 8px 10px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n}\n\n.custom-select:focus {\n  border-color: #597ea2;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(89, 126, 162, 0.5);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(89, 126, 162, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n  color: #7b8a8b;\n  background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n  height: auto;\n  padding-right: 0.75rem;\n  background-image: none;\n}\n\n.custom-select:disabled {\n  color: #95a5a6;\n  background-color: #ecf0f1;\n}\n\n.custom-select::-ms-expand {\n  opacity: 0;\n}\n\n.custom-select-sm {\n  height: calc(1.73046875rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 75%;\n}\n\n.custom-select-lg {\n  height: calc(2.7578125rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 125%;\n}\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  margin: 0;\n  opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n  border-color: #597ea2;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n  border-color: #597ea2;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n  content: \"Browse\";\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.15625rem + 2px);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  background-color: #fff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 3;\n  display: block;\n  height: calc(calc(2.15625rem + 2px) - 1px * 2);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  content: \"Browse\";\n  background-color: #ecf0f1;\n  border-left: 1px solid #ced4da;\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 2rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n  text-decoration: none;\n}\n\n.nav-link.disabled {\n  color: #95a5a6;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #ecf0f1;\n}\n\n.nav-tabs .nav-item {\n  margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #ecf0f1 #ecf0f1 #ecf0f1;\n}\n\n.nav-tabs .nav-link.disabled {\n  color: #95a5a6;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #7b8a8b;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #2C3E50;\n}\n\n.nav-fill .nav-item {\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified .nav-item {\n  -ms-flex-preferred-size: 0;\n      flex-basis: 0;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  text-align: center;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n  padding: 1rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n}\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.32421875rem;\n  padding-bottom: 0.32421875rem;\n  margin-right: 1rem;\n  font-size: 1.171875rem;\n  line-height: inherit;\n  white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n  text-decoration: none;\n}\n\n.navbar-nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n  position: static;\n  float: none;\n}\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  -ms-flex-preferred-size: 100%;\n      flex-basis: 100%;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.171875rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n  text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n.navbar-expand {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-flow: row nowrap;\n          flex-flow: row nowrap;\n  -webkit-box-pack: start;\n      -ms-flex-pack: start;\n          justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n          flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important;\n  -ms-flex-preferred-size: auto;\n      flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.5);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: #18BC9C;\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n  color: #fff;\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n    margin-right: -15px;\n    margin-left: -15px;\n  }\n  .card-deck .card {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n            flex: 1 0 0%;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    margin-right: 15px;\n    margin-bottom: 0;\n    margin-left: 15px;\n  }\n}\n\n.card-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n  }\n  .card-group > .card {\n    -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n            flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:first-child {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-top,\n  .card-group > .card:first-child .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-bottom,\n  .card-group > .card:first-child .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:last-child {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-top,\n  .card-group > .card:last-child .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-bottom,\n  .card-group > .card:last-child .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:only-child {\n    border-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-top,\n  .card-group > .card:only-child .card-header {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-bottom,\n  .card-group > .card:only-child .card-footer {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n    border-radius: 0;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n    border-radius: 0;\n  }\n}\n\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n            column-count: 3;\n    -webkit-column-gap: 1.25rem;\n            column-gap: 1.25rem;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n\n.breadcrumb {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: #ecf0f1;\n  border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n  display: inline-block;\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n  color: #95a5a6;\n  content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none;\n}\n\n.breadcrumb-item.active {\n  color: #95a5a6;\n}\n\n.pagination {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: 0;\n  line-height: 1.25;\n  color: #fff;\n  background-color: #18BC9C;\n  border: 0 solid transparent;\n}\n\n.page-link:hover {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0f7864;\n  border-color: transparent;\n}\n\n.page-link:focus {\n  z-index: 2;\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #0f7864;\n  border-color: transparent;\n}\n\n.page-item.disabled .page-link {\n  color: #ecf0f1;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #3be6c4;\n  border-color: transparent;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #fff;\n  background-color: #2C3E50;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1a252f;\n}\n\n.badge-secondary {\n  color: #212529;\n  background-color: #95a5a6;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #798d8f;\n}\n\n.badge-success {\n  color: #fff;\n  background-color: #18BC9C;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #128f76;\n}\n\n.badge-info {\n  color: #fff;\n  background-color: #3498DB;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #217dbb;\n}\n\n.badge-warning {\n  color: #212529;\n  background-color: #F39C12;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #c87f0a;\n}\n\n.badge-danger {\n  color: #fff;\n  background-color: #E74C3C;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #d62c1a;\n}\n\n.badge-light {\n  color: #212529;\n  background-color: #ecf0f1;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #cfd9db;\n}\n\n.badge-dark {\n  color: #fff;\n  background-color: #7b8a8b;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #636f70;\n}\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #ecf0f1;\n  border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n  .jumbotron {\n    padding: 4rem 2rem;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0;\n}\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3.90625rem;\n}\n\n.alert-dismissible .close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 0.75rem 1.25rem;\n  color: inherit;\n}\n\n.alert-primary {\n  color: #17202a;\n  background-color: #d5d8dc;\n  border-color: #c4c9ce;\n}\n\n.alert-primary hr {\n  border-top-color: #b6bcc2;\n}\n\n.alert-primary .alert-link {\n  color: #050709;\n}\n\n.alert-secondary {\n  color: #4d5656;\n  background-color: #eaeded;\n  border-color: #e1e6e6;\n}\n\n.alert-secondary hr {\n  border-top-color: #d3dada;\n}\n\n.alert-secondary .alert-link {\n  color: #353b3b;\n}\n\n.alert-success {\n  color: #0c6251;\n  background-color: #d1f2eb;\n  border-color: #beece3;\n}\n\n.alert-success hr {\n  border-top-color: #aae6db;\n}\n\n.alert-success .alert-link {\n  color: #06352b;\n}\n\n.alert-info {\n  color: #1b4f72;\n  background-color: #d6eaf8;\n  border-color: #c6e2f5;\n}\n\n.alert-info hr {\n  border-top-color: #b0d7f1;\n}\n\n.alert-info .alert-link {\n  color: #113249;\n}\n\n.alert-warning {\n  color: #7e5109;\n  background-color: #fdebd0;\n  border-color: #fce3bd;\n}\n\n.alert-warning hr {\n  border-top-color: #fbd9a5;\n}\n\n.alert-warning .alert-link {\n  color: #4e3206;\n}\n\n.alert-danger {\n  color: #78281f;\n  background-color: #fadbd8;\n  border-color: #f8cdc8;\n}\n\n.alert-danger hr {\n  border-top-color: #f5b8b1;\n}\n\n.alert-danger .alert-link {\n  color: #4f1a15;\n}\n\n.alert-light {\n  color: #7b7d7d;\n  background-color: #fbfcfc;\n  border-color: #fafbfb;\n}\n\n.alert-light hr {\n  border-top-color: #ecf0f0;\n}\n\n.alert-light .alert-link {\n  color: #626363;\n}\n\n.alert-dark {\n  color: #404848;\n  background-color: #e5e8e8;\n  border-color: #dadedf;\n}\n\n.alert-dark hr {\n  border-top-color: #ccd2d3;\n}\n\n.alert-dark .alert-link {\n  color: #282d2d;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 10px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 10px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 10px;\n  overflow: hidden;\n  font-size: 10px;\n  background-color: #ecf0f1;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  color: #fff;\n  text-align: center;\n  background-color: #2C3E50;\n  -webkit-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 10px 10px;\n}\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n          animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n}\n\n.media-body {\n  -webkit-box-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n}\n\n.list-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #7b8a8b;\n  text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  color: #7b8a8b;\n  text-decoration: none;\n  background-color: #ecf0f1;\n}\n\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #ecf0f1;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n  z-index: 1;\n  text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #95a5a6;\n  background-color: #ecf0f1;\n}\n\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n  border-bottom: 0;\n}\n\n.list-group-item-primary {\n  color: #17202a;\n  background-color: #c4c9ce;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #17202a;\n  background-color: #b6bcc2;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #17202a;\n  border-color: #17202a;\n}\n\n.list-group-item-secondary {\n  color: #4d5656;\n  background-color: #e1e6e6;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #4d5656;\n  background-color: #d3dada;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #4d5656;\n  border-color: #4d5656;\n}\n\n.list-group-item-success {\n  color: #0c6251;\n  background-color: #beece3;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0c6251;\n  background-color: #aae6db;\n}\n\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0c6251;\n  border-color: #0c6251;\n}\n\n.list-group-item-info {\n  color: #1b4f72;\n  background-color: #c6e2f5;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #1b4f72;\n  background-color: #b0d7f1;\n}\n\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #1b4f72;\n  border-color: #1b4f72;\n}\n\n.list-group-item-warning {\n  color: #7e5109;\n  background-color: #fce3bd;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #7e5109;\n  background-color: #fbd9a5;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #7e5109;\n  border-color: #7e5109;\n}\n\n.list-group-item-danger {\n  color: #78281f;\n  background-color: #f8cdc8;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #78281f;\n  background-color: #f5b8b1;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #78281f;\n  border-color: #78281f;\n}\n\n.list-group-item-light {\n  color: #7b7d7d;\n  background-color: #fafbfb;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #7b7d7d;\n  background-color: #ecf0f0;\n}\n\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #7b7d7d;\n  border-color: #7b7d7d;\n}\n\n.list-group-item-dark {\n  color: #404848;\n  background-color: #dadedf;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #404848;\n  background-color: #ccd2d3;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #404848;\n  border-color: #404848;\n}\n\n.close {\n  float: right;\n  font-size: 1.40625rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-shadow: none;\n  opacity: .5;\n}\n\n.close:hover, .close:focus {\n  color: #fff;\n  text-decoration: none;\n  opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.modal-open {\n  overflow: hidden;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  outline: 0;\n}\n\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n  -webkit-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n  -webkit-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #ecf0f1;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n  padding: 1rem;\n  margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: end;\n      -ms-flex-pack: end;\n          justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #ecf0f1;\n}\n\n.modal-footer > :not(:first-child) {\n  margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n  margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n  .modal-dialog-centered {\n    min-height: calc(100% - (1.75rem * 2));\n  }\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n\n@media (min-width: 992px) {\n  .modal-lg {\n    max-width: 800px;\n  }\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.8203125rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n\n.tooltip.show {\n  opacity: 0.9;\n}\n\n.tooltip .arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n  bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n  top: 0;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n  right: 0;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n  top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n  bottom: 0;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n  left: 0;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.8203125rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n\n.popover .arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n  margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n  bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n  bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  bottom: 1px;\n  border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n  left: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n  left: 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  left: 1px;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n  top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n  top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  top: 1px;\n  border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n  right: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n  right: 0;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  right: 1px;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.9375rem;\n  color: inherit;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  width: 100%;\n  -webkit-transition: -webkit-transform 0.6s ease;\n  transition: -webkit-transform 0.6s ease;\n  transition: transform 0.6s ease;\n  transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-perspective: 1000px;\n          perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  -webkit-transform: translateX(0);\n          transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next.carousel-item-left,\n  .carousel-item-prev.carousel-item-right {\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n  -webkit-transform: translateX(100%);\n          transform: translateX(100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next,\n  .active.carousel-item-right {\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  -webkit-transform: translateX(-100%);\n          transform: translateX(-100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-prev,\n  .active.carousel-item-left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: .9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  position: relative;\n  -webkit-box-flex: 0;\n      -ms-flex: 0 1 auto;\n          flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n  position: absolute;\n  top: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators li::after {\n  position: absolute;\n  bottom: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.bg-primary {\n  background-color: #2C3E50 !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #1a252f !important;\n}\n\n.bg-secondary {\n  background-color: #95a5a6 !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #798d8f !important;\n}\n\n.bg-success {\n  background-color: #18BC9C !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #128f76 !important;\n}\n\n.bg-info {\n  background-color: #3498DB !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #217dbb !important;\n}\n\n.bg-warning {\n  background-color: #F39C12 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #c87f0a !important;\n}\n\n.bg-danger {\n  background-color: #E74C3C !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #d62c1a !important;\n}\n\n.bg-light {\n  background-color: #ecf0f1 !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #cfd9db !important;\n}\n\n.bg-dark {\n  background-color: #7b8a8b !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #636f70 !important;\n}\n\n.bg-white {\n  background-color: #fff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #2C3E50 !important;\n}\n\n.border-secondary {\n  border-color: #95a5a6 !important;\n}\n\n.border-success {\n  border-color: #18BC9C !important;\n}\n\n.border-info {\n  border-color: #3498DB !important;\n}\n\n.border-warning {\n  border-color: #F39C12 !important;\n}\n\n.border-danger {\n  border-color: #E74C3C !important;\n}\n\n.border-light {\n  border-color: #ecf0f1 !important;\n}\n\n.border-dark {\n  border-color: #7b8a8b !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.d-none {\n  display: none !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: -webkit-inline-box !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important;\n  }\n  .d-sm-inline {\n    display: inline !important;\n  }\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n  .d-sm-block {\n    display: block !important;\n  }\n  .d-sm-table {\n    display: table !important;\n  }\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n  .d-sm-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-sm-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important;\n  }\n  .d-md-inline {\n    display: inline !important;\n  }\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n  .d-md-block {\n    display: block !important;\n  }\n  .d-md-table {\n    display: table !important;\n  }\n  .d-md-table-row {\n    display: table-row !important;\n  }\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n  .d-md-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-md-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important;\n  }\n  .d-lg-inline {\n    display: inline !important;\n  }\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n  .d-lg-block {\n    display: block !important;\n  }\n  .d-lg-table {\n    display: table !important;\n  }\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n  .d-lg-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-lg-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important;\n  }\n  .d-xl-inline {\n    display: inline !important;\n  }\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n  .d-xl-block {\n    display: block !important;\n  }\n  .d-xl-table {\n    display: table !important;\n  }\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n  .d-xl-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-xl-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media print {\n  .d-print-none {\n    display: none !important;\n  }\n  .d-print-inline {\n    display: inline !important;\n  }\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n  .d-print-block {\n    display: block !important;\n  }\n  .d-print-table {\n    display: table !important;\n  }\n  .d-print-table-row {\n    display: table-row !important;\n  }\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n  .d-print-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-print-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n}\n\n.embed-responsive::before {\n  display: block;\n  content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n\n.embed-responsive-21by9::before {\n  padding-top: 42.8571428571%;\n}\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n  padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n  padding-top: 100%;\n}\n\n.flex-row {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: normal !important;\n      -ms-flex-direction: row !important;\n          flex-direction: row !important;\n}\n\n.flex-column {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: normal !important;\n      -ms-flex-direction: column !important;\n          flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: reverse !important;\n      -ms-flex-direction: row-reverse !important;\n          flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: reverse !important;\n      -ms-flex-direction: column-reverse !important;\n          flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n      flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n      flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n      flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  -webkit-box-pack: start !important;\n      -ms-flex-pack: start !important;\n          justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  -webkit-box-pack: end !important;\n      -ms-flex-pack: end !important;\n          justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  -webkit-box-pack: center !important;\n      -ms-flex-pack: center !important;\n          justify-content: center !important;\n}\n\n.justify-content-between {\n  -webkit-box-pack: justify !important;\n      -ms-flex-pack: justify !important;\n          justify-content: space-between !important;\n}\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n      justify-content: space-around !important;\n}\n\n.align-items-start {\n  -webkit-box-align: start !important;\n      -ms-flex-align: start !important;\n          align-items: flex-start !important;\n}\n\n.align-items-end {\n  -webkit-box-align: end !important;\n      -ms-flex-align: end !important;\n          align-items: flex-end !important;\n}\n\n.align-items-center {\n  -webkit-box-align: center !important;\n      -ms-flex-align: center !important;\n          align-items: center !important;\n}\n\n.align-items-baseline {\n  -webkit-box-align: baseline !important;\n      -ms-flex-align: baseline !important;\n          align-items: baseline !important;\n}\n\n.align-items-stretch {\n  -webkit-box-align: stretch !important;\n      -ms-flex-align: stretch !important;\n          align-items: stretch !important;\n}\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n      align-content: flex-start !important;\n}\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n      align-content: flex-end !important;\n}\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n      align-content: center !important;\n}\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n      align-content: space-between !important;\n}\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n      align-content: space-around !important;\n}\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n      align-content: stretch !important;\n}\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n      align-self: auto !important;\n}\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n      align-self: flex-start !important;\n}\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n      align-self: flex-end !important;\n}\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n      align-self: center !important;\n}\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n      align-self: baseline !important;\n}\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n      align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-sm-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-sm-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-sm-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-sm-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-sm-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-sm-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-sm-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-sm-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-sm-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-sm-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-sm-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-sm-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-md-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-md-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-md-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-md-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-md-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-md-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-md-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-md-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-md-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-md-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-md-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-md-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-lg-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-lg-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-lg-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-lg-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-lg-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-lg-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-lg-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-lg-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-lg-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-lg-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-lg-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-lg-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-xl-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-xl-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-xl-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-xl-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-xl-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-xl-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-xl-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-xl-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-xl-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-xl-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-xl-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-xl-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n.float-left {\n  float: left !important;\n}\n\n.float-right {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important;\n  }\n  .float-sm-right {\n    float: right !important;\n  }\n  .float-sm-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important;\n  }\n  .float-md-right {\n    float: right !important;\n  }\n  .float-md-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important;\n  }\n  .float-lg-right {\n    float: right !important;\n  }\n  .float-lg-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important;\n  }\n  .float-xl-right {\n    float: right !important;\n  }\n  .float-xl-none {\n    float: none !important;\n  }\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  -webkit-clip-path: inset(50%);\n          clip-path: inset(50%);\n  border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n  -webkit-clip-path: none;\n          clip-path: none;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important;\n  }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important;\n  }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important;\n  }\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n  }\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n  }\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important;\n  }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important;\n  }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important;\n  }\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important;\n  }\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important;\n  }\n  .m-sm-auto {\n    margin: auto !important;\n  }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important;\n  }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important;\n  }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important;\n  }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important;\n  }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important;\n  }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important;\n  }\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important;\n  }\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important;\n  }\n  .p-md-0 {\n    padding: 0 !important;\n  }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important;\n  }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important;\n  }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important;\n  }\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important;\n  }\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important;\n  }\n  .m-md-auto {\n    margin: auto !important;\n  }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important;\n  }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important;\n  }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important;\n  }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important;\n  }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important;\n  }\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n  }\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n  }\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important;\n  }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important;\n  }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important;\n  }\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important;\n  }\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important;\n  }\n  .m-lg-auto {\n    margin: auto !important;\n  }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important;\n  }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important;\n  }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important;\n  }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important;\n  }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important;\n  }\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n  }\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n  }\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important;\n  }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important;\n  }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important;\n  }\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important;\n  }\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important;\n  }\n  .m-xl-auto {\n    margin: auto !important;\n  }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important;\n  }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important;\n  }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important;\n  }\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important;\n  }\n  .text-sm-right {\n    text-align: right !important;\n  }\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important;\n  }\n  .text-md-right {\n    text-align: right !important;\n  }\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important;\n  }\n  .text-lg-right {\n    text-align: right !important;\n  }\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important;\n  }\n  .text-xl-right {\n    text-align: right !important;\n  }\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-white {\n  color: #fff !important;\n}\n\n.text-primary {\n  color: #2C3E50 !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #1a252f !important;\n}\n\n.text-secondary {\n  color: #95a5a6 !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #798d8f !important;\n}\n\n.text-success {\n  color: #18BC9C !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #128f76 !important;\n}\n\n.text-info {\n  color: #3498DB !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #217dbb !important;\n}\n\n.text-warning {\n  color: #F39C12 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #c87f0a !important;\n}\n\n.text-danger {\n  color: #E74C3C !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #d62c1a !important;\n}\n\n.text-light {\n  color: #ecf0f1 !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #cfd9db !important;\n}\n\n.text-dark {\n  color: #7b8a8b !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #636f70 !important;\n}\n\n.text-muted {\n  color: #95a5a6 !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\";\n  }\n  pre {\n    white-space: pre-wrap !important;\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  @page {\n    size: a3;\n  }\n  body {\n    min-width: 992px !important;\n  }\n  .container {\n    min-width: 992px !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .badge {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n\n.bg-primary .navbar-nav .active > .nav-link {\n  color: #18BC9C !important;\n}\n\n.bg-dark {\n  background-color: #18BC9C !important;\n}\n\n.bg-dark.navbar-dark .navbar-nav .nav-link:focus,\n.bg-dark.navbar-dark .navbar-nav .nav-link:hover,\n.bg-dark.navbar-dark .navbar-nav .active > .nav-link {\n  color: #2C3E50 !important;\n}\n\n.btn-secondary, .btn-secondary:hover, .btn-warning, .btn-warning:hover {\n  color: #fff;\n}\n\n.table .thead-dark th {\n  background-color: #2C3E50;\n}\n\n.table-success, .table-info, .table-warning, .table-danger {\n  color: #fff;\n}\n\n.table-success, .table-success > th, .table-success > td {\n  background-color: #18BC9C;\n}\n\n.table-info, .table-info > th, .table-info > td {\n  background-color: #3498DB;\n}\n\n.table-danger, .table-danger > th, .table-danger > td {\n  background-color: #E74C3C;\n}\n\n.table-warning, .table-warning > th, .table-warning > td {\n  background-color: #F39C12;\n}\n\n.table-hover .table-success:hover, .table-hover .table-success:hover > th, .table-hover .table-success:hover > td {\n  background-color: #15a589;\n}\n\n.table-hover .table-info:hover, .table-hover .table-info:hover > th, .table-hover .table-info:hover > td {\n  background-color: #258cd1;\n}\n\n.table-hover .table-danger:hover, .table-hover .table-danger:hover > th, .table-hover .table-danger:hover > td {\n  background-color: #e43725;\n}\n\n.table-hover .table-warning:hover, .table-hover .table-warning:hover > th, .table-hover .table-warning:hover > td {\n  background-color: #e08e0b;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-link.active:focus,\n.nav-tabs .nav-link.active:hover,\n.nav-tabs .nav-item.open .nav-link,\n.nav-tabs .nav-item.open .nav-link:focus,\n.nav-tabs .nav-item.open .nav-link:hover {\n  color: #2C3E50;\n}\n\n.pagination a:hover {\n  text-decoration: none;\n}\n\n.close {\n  text-decoration: none;\n  opacity: 0.4;\n}\n\n.close:hover, .close:focus {\n  opacity: 1;\n}\n\n.badge-secondary, .badge-warning {\n  color: #fff;\n}\n\n.alert {\n  border: none;\n  color: #fff;\n}\n\n.alert a,\n.alert .alert-link {\n  color: #fff;\n  text-decoration: underline;\n}\n\n.alert-primary {\n  background-color: #2C3E50;\n}\n\n.alert-secondary {\n  background-color: #95a5a6;\n}\n\n.alert-success {\n  background-color: #18BC9C;\n}\n\n.alert-info {\n  background-color: #3498DB;\n}\n\n.alert-warning {\n  background-color: #F39C12;\n}\n\n.alert-danger {\n  background-color: #E74C3C;\n}\n\n.alert-light {\n  background-color: #ecf0f1;\n}\n\n.alert-dark {\n  background-color: #7b8a8b;\n}\n\n.alert-light,\n.alert-light a,\n.alert-light .alert-link {\n  color: #212529;\n}\n\n.modal .close {\n  color: #000;\n/*!\n * Bootswatch v4.0.0\n * Homepage: https://bootswatch.com\n * Copyright 2012-2018 Thomas Park\n * Licensed under MIT\n * Based on Bootstrap\n*/\n/*!\n * Bootstrap v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@import url(\"https://fonts.googleapis.com/css?family=Lato:400,700,400italic\");\n:root {\n  --blue: #2C3E50;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #E74C3C;\n  --orange: #fd7e14;\n  --yellow: #F39C12;\n  --green: #18BC9C;\n  --teal: #20c997;\n  --cyan: #3498DB;\n  --white: #fff;\n  --gray: #95a5a6;\n  --gray-dark: #343a40;\n  --primary: #2C3E50;\n  --secondary: #95a5a6;\n  --success: #18BC9C;\n  --info: #3498DB;\n  --warning: #F39C12;\n  --danger: #E74C3C;\n  --light: #ecf0f1;\n  --dark: #7b8a8b;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n}\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n\nbody {\n  margin: 0;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 0.9375rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\nhr {\n  -webkit-box-sizing: content-box;\n          box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n          text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\ndfn {\n  font-style: italic;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 80%;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -.25em;\n}\n\nsup {\n  top: -.5em;\n}\n\na {\n  color: #18BC9C;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n  color: #0f7864;\n  text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n  outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #95a5a6;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  text-align: inherit;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: .5rem;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\ntemplate {\n  display: none;\n}\n\n[hidden] {\n  display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\nh1, .h1 {\n  font-size: 3rem;\n}\n\nh2, .h2 {\n  font-size: 2.5rem;\n}\n\nh3, .h3 {\n  font-size: 2rem;\n}\n\nh4, .h4 {\n  font-size: 1.40625rem;\n}\n\nh5, .h5 {\n  font-size: 1.171875rem;\n}\n\nh6, .h6 {\n  font-size: 0.9375rem;\n}\n\n.lead {\n  font-size: 1.171875rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.171875rem;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #95a5a6;\n}\n\n.blockquote-footer::before {\n  content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 90%;\n  color: #95a5a6;\n}\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word;\n}\n\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\n\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n}\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529;\n}\n\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\n.container {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container {\n    max-width: 540px;\n  }\n}\n\n@media (min-width: 768px) {\n  .container {\n    max-width: 720px;\n  }\n}\n\n@media (min-width: 992px) {\n  .container {\n    max-width: 960px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1140px;\n  }\n}\n\n.container-fluid {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px;\n}\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n.col {\n  -ms-flex-preferred-size: 0;\n      flex-basis: 0;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  max-width: 100%;\n}\n\n.col-auto {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 auto;\n          flex: 0 0 auto;\n  width: auto;\n  max-width: none;\n}\n\n.col-1 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 8.3333333333%;\n          flex: 0 0 8.3333333333%;\n  max-width: 8.3333333333%;\n}\n\n.col-2 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 16.6666666667%;\n          flex: 0 0 16.6666666667%;\n  max-width: 16.6666666667%;\n}\n\n.col-3 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 25%;\n          flex: 0 0 25%;\n  max-width: 25%;\n}\n\n.col-4 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 33.3333333333%;\n          flex: 0 0 33.3333333333%;\n  max-width: 33.3333333333%;\n}\n\n.col-5 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 41.6666666667%;\n          flex: 0 0 41.6666666667%;\n  max-width: 41.6666666667%;\n}\n\n.col-6 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 50%;\n          flex: 0 0 50%;\n  max-width: 50%;\n}\n\n.col-7 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 58.3333333333%;\n          flex: 0 0 58.3333333333%;\n  max-width: 58.3333333333%;\n}\n\n.col-8 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 66.6666666667%;\n          flex: 0 0 66.6666666667%;\n  max-width: 66.6666666667%;\n}\n\n.col-9 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 75%;\n          flex: 0 0 75%;\n  max-width: 75%;\n}\n\n.col-10 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 83.3333333333%;\n          flex: 0 0 83.3333333333%;\n  max-width: 83.3333333333%;\n}\n\n.col-11 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 91.6666666667%;\n          flex: 0 0 91.6666666667%;\n  max-width: 91.6666666667%;\n}\n\n.col-12 {\n  -webkit-box-flex: 0;\n      -ms-flex: 0 0 100%;\n          flex: 0 0 100%;\n  max-width: 100%;\n}\n\n.order-first {\n  -webkit-box-ordinal-group: 0;\n      -ms-flex-order: -1;\n          order: -1;\n}\n\n.order-last {\n  -webkit-box-ordinal-group: 14;\n      -ms-flex-order: 13;\n          order: 13;\n}\n\n.order-0 {\n  -webkit-box-ordinal-group: 1;\n      -ms-flex-order: 0;\n          order: 0;\n}\n\n.order-1 {\n  -webkit-box-ordinal-group: 2;\n      -ms-flex-order: 1;\n          order: 1;\n}\n\n.order-2 {\n  -webkit-box-ordinal-group: 3;\n      -ms-flex-order: 2;\n          order: 2;\n}\n\n.order-3 {\n  -webkit-box-ordinal-group: 4;\n      -ms-flex-order: 3;\n          order: 3;\n}\n\n.order-4 {\n  -webkit-box-ordinal-group: 5;\n      -ms-flex-order: 4;\n          order: 4;\n}\n\n.order-5 {\n  -webkit-box-ordinal-group: 6;\n      -ms-flex-order: 5;\n          order: 5;\n}\n\n.order-6 {\n  -webkit-box-ordinal-group: 7;\n      -ms-flex-order: 6;\n          order: 6;\n}\n\n.order-7 {\n  -webkit-box-ordinal-group: 8;\n      -ms-flex-order: 7;\n          order: 7;\n}\n\n.order-8 {\n  -webkit-box-ordinal-group: 9;\n      -ms-flex-order: 8;\n          order: 8;\n}\n\n.order-9 {\n  -webkit-box-ordinal-group: 10;\n      -ms-flex-order: 9;\n          order: 9;\n}\n\n.order-10 {\n  -webkit-box-ordinal-group: 11;\n      -ms-flex-order: 10;\n          order: 10;\n}\n\n.order-11 {\n  -webkit-box-ordinal-group: 12;\n      -ms-flex-order: 11;\n          order: 11;\n}\n\n.order-12 {\n  -webkit-box-ordinal-group: 13;\n      -ms-flex-order: 12;\n          order: 12;\n}\n\n.offset-1 {\n  margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n  margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n  margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n  margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n  margin-left: 91.6666666667%;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-sm-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-sm-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-sm-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-sm-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-sm-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-sm-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-sm-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-sm-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-sm-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-sm-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-sm-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-sm-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-sm-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-sm-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-sm-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-sm-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-sm-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-sm-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-sm-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-sm-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-sm-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-sm-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-sm-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-sm-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-sm-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-sm-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-sm-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-sm-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n  .offset-sm-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-sm-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n  .offset-sm-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-sm-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n  .offset-sm-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-sm-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n  .offset-sm-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-sm-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-md-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-md-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-md-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-md-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-md-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-md-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-md-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-md-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-md-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-md-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-md-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-md-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-md-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-md-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-md-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-md-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-md-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-md-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-md-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-md-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-md-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-md-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-md-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-md-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-md-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-md-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-md-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-md-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-md-0 {\n    margin-left: 0;\n  }\n  .offset-md-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-md-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n  .offset-md-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-md-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n  .offset-md-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-md-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n  .offset-md-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-md-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-lg-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-lg-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-lg-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-lg-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-lg-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-lg-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-lg-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-lg-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-lg-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-lg-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-lg-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-lg-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-lg-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-lg-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-lg-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-lg-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-lg-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-lg-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-lg-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-lg-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-lg-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-lg-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-lg-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-lg-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-lg-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-lg-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-lg-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-lg-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n  .offset-lg-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-lg-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n  .offset-lg-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-lg-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n  .offset-lg-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-lg-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n  .offset-lg-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-lg-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n        flex-basis: 0;\n    -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-xl-auto {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-xl-1 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 8.3333333333%;\n            flex: 0 0 8.3333333333%;\n    max-width: 8.3333333333%;\n  }\n  .col-xl-2 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 16.6666666667%;\n            flex: 0 0 16.6666666667%;\n    max-width: 16.6666666667%;\n  }\n  .col-xl-3 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 25%;\n            flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xl-4 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 33.3333333333%;\n            flex: 0 0 33.3333333333%;\n    max-width: 33.3333333333%;\n  }\n  .col-xl-5 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 41.6666666667%;\n            flex: 0 0 41.6666666667%;\n    max-width: 41.6666666667%;\n  }\n  .col-xl-6 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 50%;\n            flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xl-7 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 58.3333333333%;\n            flex: 0 0 58.3333333333%;\n    max-width: 58.3333333333%;\n  }\n  .col-xl-8 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 66.6666666667%;\n            flex: 0 0 66.6666666667%;\n    max-width: 66.6666666667%;\n  }\n  .col-xl-9 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 75%;\n            flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xl-10 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 83.3333333333%;\n            flex: 0 0 83.3333333333%;\n    max-width: 83.3333333333%;\n  }\n  .col-xl-11 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 91.6666666667%;\n            flex: 0 0 91.6666666667%;\n    max-width: 91.6666666667%;\n  }\n  .col-xl-12 {\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 100%;\n            flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-xl-first {\n    -webkit-box-ordinal-group: 0;\n        -ms-flex-order: -1;\n            order: -1;\n  }\n  .order-xl-last {\n    -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n            order: 13;\n  }\n  .order-xl-0 {\n    -webkit-box-ordinal-group: 1;\n        -ms-flex-order: 0;\n            order: 0;\n  }\n  .order-xl-1 {\n    -webkit-box-ordinal-group: 2;\n        -ms-flex-order: 1;\n            order: 1;\n  }\n  .order-xl-2 {\n    -webkit-box-ordinal-group: 3;\n        -ms-flex-order: 2;\n            order: 2;\n  }\n  .order-xl-3 {\n    -webkit-box-ordinal-group: 4;\n        -ms-flex-order: 3;\n            order: 3;\n  }\n  .order-xl-4 {\n    -webkit-box-ordinal-group: 5;\n        -ms-flex-order: 4;\n            order: 4;\n  }\n  .order-xl-5 {\n    -webkit-box-ordinal-group: 6;\n        -ms-flex-order: 5;\n            order: 5;\n  }\n  .order-xl-6 {\n    -webkit-box-ordinal-group: 7;\n        -ms-flex-order: 6;\n            order: 6;\n  }\n  .order-xl-7 {\n    -webkit-box-ordinal-group: 8;\n        -ms-flex-order: 7;\n            order: 7;\n  }\n  .order-xl-8 {\n    -webkit-box-ordinal-group: 9;\n        -ms-flex-order: 8;\n            order: 8;\n  }\n  .order-xl-9 {\n    -webkit-box-ordinal-group: 10;\n        -ms-flex-order: 9;\n            order: 9;\n  }\n  .order-xl-10 {\n    -webkit-box-ordinal-group: 11;\n        -ms-flex-order: 10;\n            order: 10;\n  }\n  .order-xl-11 {\n    -webkit-box-ordinal-group: 12;\n        -ms-flex-order: 11;\n            order: 11;\n  }\n  .order-xl-12 {\n    -webkit-box-ordinal-group: 13;\n        -ms-flex-order: 12;\n            order: 12;\n  }\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n  .offset-xl-1 {\n    margin-left: 8.3333333333%;\n  }\n  .offset-xl-2 {\n    margin-left: 16.6666666667%;\n  }\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n  .offset-xl-4 {\n    margin-left: 33.3333333333%;\n  }\n  .offset-xl-5 {\n    margin-left: 41.6666666667%;\n  }\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n  .offset-xl-7 {\n    margin-left: 58.3333333333%;\n  }\n  .offset-xl-8 {\n    margin-left: 66.6666666667%;\n  }\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n  .offset-xl-10 {\n    margin-left: 83.3333333333%;\n  }\n  .offset-xl-11 {\n    margin-left: 91.6666666667%;\n  }\n}\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 1rem;\n  background-color: transparent;\n}\n\n.table th,\n.table td {\n  padding: 0.75rem;\n  vertical-align: top;\n  border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n  background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem;\n}\n\n.table-bordered {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n  border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: #ecf0f1;\n}\n\n.table-hover tbody tr:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #c4c9ce;\n}\n\n.table-hover .table-primary:hover {\n  background-color: #b6bcc2;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n  background-color: #b6bcc2;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #e1e6e6;\n}\n\n.table-hover .table-secondary:hover {\n  background-color: #d3dada;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n  background-color: #d3dada;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #beece3;\n}\n\n.table-hover .table-success:hover {\n  background-color: #aae6db;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n  background-color: #aae6db;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #c6e2f5;\n}\n\n.table-hover .table-info:hover {\n  background-color: #b0d7f1;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n  background-color: #b0d7f1;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #fce3bd;\n}\n\n.table-hover .table-warning:hover {\n  background-color: #fbd9a5;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n  background-color: #fbd9a5;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f8cdc8;\n}\n\n.table-hover .table-danger:hover {\n  background-color: #f5b8b1;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n  background-color: #f5b8b1;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fafbfb;\n}\n\n.table-hover .table-light:hover {\n  background-color: #ecf0f0;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n  background-color: #ecf0f0;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #dadedf;\n}\n\n.table-hover .table-dark:hover {\n  background-color: #ccd2d3;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n  background-color: #ccd2d3;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n  color: #fff;\n  background-color: #212529;\n  border-color: #32383e;\n}\n\n.table .thead-light th {\n  color: #7b8a8b;\n  background-color: #ecf0f1;\n  border-color: #dee2e6;\n}\n\n.table-dark {\n  color: #fff;\n  background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n  border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n  border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n  background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-sm > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-md > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-lg > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-xl > .table-bordered {\n    border: 0;\n  }\n}\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n  border: 0;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.9375rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n\n.form-control:focus {\n  color: #7b8a8b;\n  background-color: #fff;\n  border-color: #597ea2;\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control::placeholder {\n  color: #95a5a6;\n  opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n  background-color: #ecf0f1;\n  opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n  height: calc(2.15625rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n  color: #7b8a8b;\n  background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.171875rem;\n  line-height: 1.5;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(1.73046875rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(2.7578125rem + 2px);\n}\n\n.form-group {\n  margin-bottom: 1rem;\n}\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem;\n}\n\n.form-row {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n  padding-right: 5px;\n  padding-left: 5px;\n}\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n  color: #95a5a6;\n}\n\n.form-check-label {\n  margin-bottom: 0;\n}\n\n.form-check-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n  position: static;\n  margin-top: 0;\n  margin-right: 0.3125rem;\n  margin-left: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #18BC9C;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(24, 188, 156, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n  border-color: #18BC9C;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n  border-color: #18BC9C;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #18BC9C;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #18BC9C;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n  background-color: #68ecd2;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  background-color: #24e3be;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n          box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #18BC9C;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.25);\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #E74C3C;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(231, 76, 60, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n  border-color: #E74C3C;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n  border-color: #E74C3C;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #E74C3C;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #E74C3C;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n  background-color: #f5b4ae;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  background-color: #ed7669;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #E74C3C;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25);\n}\n\n.form-inline {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-flow: row wrap;\n          flex-flow: row wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.form-inline .form-check {\n  width: 100%;\n}\n\n@media (min-width: 576px) {\n  .form-inline label {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-group {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 0;\n        -ms-flex: 0 0 auto;\n            flex: 0 0 auto;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-plaintext {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    width: auto;\n  }\n  .form-inline .form-check {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    width: auto;\n    padding-left: 0;\n  }\n  .form-inline .form-check-input {\n    position: relative;\n    margin-top: 0;\n    margin-right: 0.25rem;\n    margin-left: 0;\n  }\n  .form-inline .custom-control {\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n  }\n  .form-inline .custom-control-label {\n    margin-bottom: 0;\n  }\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 0.9375rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n\n.btn:hover, .btn:focus {\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n  background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-primary:hover {\n  color: #fff;\n  background-color: #1e2b37;\n  border-color: #1a252f;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #1a252f;\n  border-color: #151e27;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-secondary {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #809395;\n  border-color: #798d8f;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #798d8f;\n  border-color: #738789;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-success:hover {\n  color: #fff;\n  background-color: #149a80;\n  border-color: #128f76;\n}\n\n.btn-success:focus, .btn-success.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #128f76;\n  border-color: #11836d;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-info {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-info:hover {\n  color: #fff;\n  background-color: #2384c6;\n  border-color: #217dbb;\n}\n\n.btn-info:focus, .btn-info.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n  color: #fff;\n  background-color: #217dbb;\n  border-color: #1f76b0;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-warning {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-warning:hover {\n  color: #fff;\n  background-color: #d4860b;\n  border-color: #c87f0a;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n  color: #fff;\n  background-color: #c87f0a;\n  border-color: #bc770a;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-danger:hover {\n  color: #fff;\n  background-color: #e12e1c;\n  border-color: #d62c1a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #d62c1a;\n  border-color: #ca2a19;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-light {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-light:hover {\n  color: #212529;\n  background-color: #d6dfe1;\n  border-color: #cfd9db;\n}\n\n.btn-light:focus, .btn-light.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n  color: #212529;\n  background-color: #cfd9db;\n  border-color: #c7d3d6;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-dark:hover {\n  color: #fff;\n  background-color: #697677;\n  border-color: #636f70;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #636f70;\n  border-color: #5d696a;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-outline-primary {\n  color: #2C3E50;\n  background-color: transparent;\n  background-image: none;\n  border-color: #2C3E50;\n}\n\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n  color: #2C3E50;\n  background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.5);\n}\n\n.btn-outline-secondary {\n  color: #95a5a6;\n  background-color: transparent;\n  background-image: none;\n  border-color: #95a5a6;\n}\n\n.btn-outline-secondary:hover {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n  color: #95a5a6;\n  background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n  color: #212529;\n  background-color: #95a5a6;\n  border-color: #95a5a6;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(149, 165, 166, 0.5);\n}\n\n.btn-outline-success {\n  color: #18BC9C;\n  background-color: transparent;\n  background-image: none;\n  border-color: #18BC9C;\n}\n\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n  color: #18BC9C;\n  background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n  color: #fff;\n  background-color: #18BC9C;\n  border-color: #18BC9C;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(24, 188, 156, 0.5);\n}\n\n.btn-outline-info {\n  color: #3498DB;\n  background-color: transparent;\n  background-image: none;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:hover {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n  color: #3498DB;\n  background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n  color: #fff;\n  background-color: #3498DB;\n  border-color: #3498DB;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.5);\n}\n\n.btn-outline-warning {\n  color: #F39C12;\n  background-color: transparent;\n  background-image: none;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:hover {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n  color: #F39C12;\n  background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n  color: #212529;\n  background-color: #F39C12;\n  border-color: #F39C12;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(243, 156, 18, 0.5);\n}\n\n.btn-outline-danger {\n  color: #E74C3C;\n  background-color: transparent;\n  background-image: none;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n  color: #E74C3C;\n  background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #E74C3C;\n  border-color: #E74C3C;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.5);\n}\n\n.btn-outline-light {\n  color: #ecf0f1;\n  background-color: transparent;\n  background-image: none;\n  border-color: #ecf0f1;\n}\n\n.btn-outline-light:hover {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n  color: #ecf0f1;\n  background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n  color: #212529;\n  background-color: #ecf0f1;\n  border-color: #ecf0f1;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(236, 240, 241, 0.5);\n}\n\n.btn-outline-dark {\n  color: #7b8a8b;\n  background-color: transparent;\n  background-image: none;\n  border-color: #7b8a8b;\n}\n\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n  color: #7b8a8b;\n  background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #7b8a8b;\n  border-color: #7b8a8b;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n          box-shadow: 0 0 0 0.2rem rgba(123, 138, 139, 0.5);\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #18BC9C;\n  background-color: transparent;\n}\n\n.btn-link:hover {\n  color: #0f7864;\n  text-decoration: underline;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: underline;\n  border-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #95a5a6;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n.btn-block + .btn-block {\n  margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n\n.fade.show {\n  opacity: 1;\n}\n\n.collapse {\n  display: none;\n}\n\n.collapse.show {\n  display: block;\n}\n\ntr.collapse.show {\n  display: table-row;\n}\n\ntbody.collapse.show {\n  display: table-row-group;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition: height 0.35s ease;\n  transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n.dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 0.9375rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n\n.dropup .dropdown-menu {\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n  display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #ecf0f1;\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1.5rem;\n  clear: both;\n  font-weight: 400;\n  color: #7b8a8b;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #2C3E50;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #2C3E50;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #95a5a6;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1.5rem;\n  margin-bottom: 0;\n  font-size: 0.8203125rem;\n  color: #95a5a6;\n  white-space: nowrap;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  -webkit-box-flex: 0;\n      -ms-flex: 0 1 auto;\n          flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n  z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n  margin-left: -1px;\n}\n\n.btn-toolbar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-pack: start;\n      -ms-flex-pack: start;\n          justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after {\n  margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n  width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n\n.input-group {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: stretch;\n      -ms-flex-align: stretch;\n          align-items: stretch;\n  width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n  position: relative;\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  width: 1%;\n  margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n  z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n  margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::before {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label,\n.input-group > .custom-file:not(:first-child) .custom-file-label::before {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n  margin-left: -1px;\n}\n\n.input-group-prepend {\n  margin-right: -1px;\n}\n\n.input-group-append {\n  margin-left: -1px;\n}\n\n.input-group-text {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.9375rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #7b8a8b;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #ecf0f1;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n  display: -webkit-inline-box;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  margin-right: 1rem;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #2C3E50;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n  -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #7997b5;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n  color: #95a5a6;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n  background-color: #ecf0f1;\n}\n\n.custom-control-label {\n  margin-bottom: 0;\n}\n\n.custom-control-label::before {\n  position: absolute;\n  top: 0.25rem;\n  left: 0;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  pointer-events: none;\n  content: \"\";\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n  position: absolute;\n  top: 0.25rem;\n  left: 0;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  content: \"\";\n  background-repeat: no-repeat;\n  background-position: center center;\n  background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #2C3E50;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  background-color: #2C3E50;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(44, 62, 80, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(44, 62, 80, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #2C3E50;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(44, 62, 80, 0.5);\n}\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  vertical-align: middle;\n  background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n  background-size: 8px 10px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n}\n\n.custom-select:focus {\n  border-color: #597ea2;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(89, 126, 162, 0.5);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(89, 126, 162, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n  color: #7b8a8b;\n  background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n  height: auto;\n  padding-right: 0.75rem;\n  background-image: none;\n}\n\n.custom-select:disabled {\n  color: #95a5a6;\n  background-color: #ecf0f1;\n}\n\n.custom-select::-ms-expand {\n  opacity: 0;\n}\n\n.custom-select-sm {\n  height: calc(1.73046875rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 75%;\n}\n\n.custom-select-lg {\n  height: calc(2.7578125rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 125%;\n}\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.15625rem + 2px);\n  margin: 0;\n  opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-control {\n  border-color: #597ea2;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-control::before {\n  border-color: #597ea2;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n  content: \"Browse\";\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.15625rem + 2px);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  background-color: #fff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 3;\n  display: block;\n  height: calc(calc(2.15625rem + 2px) - 1px * 2);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #7b8a8b;\n  content: \"Browse\";\n  background-color: #ecf0f1;\n  border-left: 1px solid #ced4da;\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 2rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n  text-decoration: none;\n}\n\n.nav-link.disabled {\n  color: #95a5a6;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #ecf0f1;\n}\n\n.nav-tabs .nav-item {\n  margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #ecf0f1 #ecf0f1 #ecf0f1;\n}\n\n.nav-tabs .nav-link.disabled {\n  color: #95a5a6;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #7b8a8b;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #2C3E50;\n}\n\n.nav-fill .nav-item {\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified .nav-item {\n  -ms-flex-preferred-size: 0;\n      flex-basis: 0;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  text-align: center;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n  padding: 1rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n}\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.32421875rem;\n  padding-bottom: 0.32421875rem;\n  margin-right: 1rem;\n  font-size: 1.171875rem;\n  line-height: inherit;\n  white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n  text-decoration: none;\n}\n\n.navbar-nav {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n  position: static;\n  float: none;\n}\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  -ms-flex-preferred-size: 100%;\n      flex-basis: 100%;\n  -webkit-box-flex: 1;\n      -ms-flex-positive: 1;\n          flex-grow: 1;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.171875rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n  text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row nowrap;\n            flex-flow: row nowrap;\n    -webkit-box-pack: start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n    right: 0;\n    left: auto;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    -ms-flex-wrap: nowrap;\n        flex-wrap: nowrap;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n        flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .dropup .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n  }\n}\n\n.navbar-expand {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-flow: row nowrap;\n          flex-flow: row nowrap;\n  -webkit-box-pack: start;\n      -ms-flex-pack: start;\n          justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: row;\n          flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  -ms-flex-wrap: nowrap;\n      flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important;\n  -ms-flex-preferred-size: auto;\n      flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n\n.navbar-expand .dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.5);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: #18BC9C;\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n  color: #fff;\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n    margin-right: -15px;\n    margin-left: -15px;\n  }\n  .card-deck .card {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n            flex: 1 0 0%;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    margin-right: 15px;\n    margin-bottom: 0;\n    margin-left: 15px;\n  }\n}\n\n.card-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-flow: row wrap;\n            flex-flow: row wrap;\n  }\n  .card-group > .card {\n    -webkit-box-flex: 1;\n        -ms-flex: 1 0 0%;\n            flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:first-child {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-top,\n  .card-group > .card:first-child .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-bottom,\n  .card-group > .card:first-child .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:last-child {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-top,\n  .card-group > .card:last-child .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-bottom,\n  .card-group > .card:last-child .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:only-child {\n    border-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-top,\n  .card-group > .card:only-child .card-header {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-bottom,\n  .card-group > .card:only-child .card-footer {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n    border-radius: 0;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n    border-radius: 0;\n  }\n}\n\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n            column-count: 3;\n    -webkit-column-gap: 1.25rem;\n            column-gap: 1.25rem;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n\n.breadcrumb {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n      flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: #ecf0f1;\n  border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n  display: inline-block;\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n  color: #95a5a6;\n  content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none;\n}\n\n.breadcrumb-item.active {\n  color: #95a5a6;\n}\n\n.pagination {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: 0;\n  line-height: 1.25;\n  color: #fff;\n  background-color: #18BC9C;\n  border: 0 solid transparent;\n}\n\n.page-link:hover {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0f7864;\n  border-color: transparent;\n}\n\n.page-link:focus {\n  z-index: 2;\n  outline: 0;\n  -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n          box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #0f7864;\n  border-color: transparent;\n}\n\n.page-item.disabled .page-link {\n  color: #ecf0f1;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #3be6c4;\n  border-color: transparent;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.171875rem;\n  line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.8203125rem;\n  line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #fff;\n  background-color: #2C3E50;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1a252f;\n}\n\n.badge-secondary {\n  color: #212529;\n  background-color: #95a5a6;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #798d8f;\n}\n\n.badge-success {\n  color: #fff;\n  background-color: #18BC9C;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #128f76;\n}\n\n.badge-info {\n  color: #fff;\n  background-color: #3498DB;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #217dbb;\n}\n\n.badge-warning {\n  color: #212529;\n  background-color: #F39C12;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #c87f0a;\n}\n\n.badge-danger {\n  color: #fff;\n  background-color: #E74C3C;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #d62c1a;\n}\n\n.badge-light {\n  color: #212529;\n  background-color: #ecf0f1;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #cfd9db;\n}\n\n.badge-dark {\n  color: #fff;\n  background-color: #7b8a8b;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #636f70;\n}\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #ecf0f1;\n  border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n  .jumbotron {\n    padding: 4rem 2rem;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0;\n}\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3.90625rem;\n}\n\n.alert-dismissible .close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 0.75rem 1.25rem;\n  color: inherit;\n}\n\n.alert-primary {\n  color: #17202a;\n  background-color: #d5d8dc;\n  border-color: #c4c9ce;\n}\n\n.alert-primary hr {\n  border-top-color: #b6bcc2;\n}\n\n.alert-primary .alert-link {\n  color: #050709;\n}\n\n.alert-secondary {\n  color: #4d5656;\n  background-color: #eaeded;\n  border-color: #e1e6e6;\n}\n\n.alert-secondary hr {\n  border-top-color: #d3dada;\n}\n\n.alert-secondary .alert-link {\n  color: #353b3b;\n}\n\n.alert-success {\n  color: #0c6251;\n  background-color: #d1f2eb;\n  border-color: #beece3;\n}\n\n.alert-success hr {\n  border-top-color: #aae6db;\n}\n\n.alert-success .alert-link {\n  color: #06352b;\n}\n\n.alert-info {\n  color: #1b4f72;\n  background-color: #d6eaf8;\n  border-color: #c6e2f5;\n}\n\n.alert-info hr {\n  border-top-color: #b0d7f1;\n}\n\n.alert-info .alert-link {\n  color: #113249;\n}\n\n.alert-warning {\n  color: #7e5109;\n  background-color: #fdebd0;\n  border-color: #fce3bd;\n}\n\n.alert-warning hr {\n  border-top-color: #fbd9a5;\n}\n\n.alert-warning .alert-link {\n  color: #4e3206;\n}\n\n.alert-danger {\n  color: #78281f;\n  background-color: #fadbd8;\n  border-color: #f8cdc8;\n}\n\n.alert-danger hr {\n  border-top-color: #f5b8b1;\n}\n\n.alert-danger .alert-link {\n  color: #4f1a15;\n}\n\n.alert-light {\n  color: #7b7d7d;\n  background-color: #fbfcfc;\n  border-color: #fafbfb;\n}\n\n.alert-light hr {\n  border-top-color: #ecf0f0;\n}\n\n.alert-light .alert-link {\n  color: #626363;\n}\n\n.alert-dark {\n  color: #404848;\n  background-color: #e5e8e8;\n  border-color: #dadedf;\n}\n\n.alert-dark hr {\n  border-top-color: #ccd2d3;\n}\n\n.alert-dark .alert-link {\n  color: #282d2d;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 10px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 10px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 10px;\n  overflow: hidden;\n  font-size: 10px;\n  background-color: #ecf0f1;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  color: #fff;\n  text-align: center;\n  background-color: #2C3E50;\n  -webkit-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 10px 10px;\n}\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n          animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n}\n\n.media-body {\n  -webkit-box-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n}\n\n.list-group {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #7b8a8b;\n  text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  color: #7b8a8b;\n  text-decoration: none;\n  background-color: #ecf0f1;\n}\n\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #ecf0f1;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n  z-index: 1;\n  text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #95a5a6;\n  background-color: #ecf0f1;\n}\n\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #2C3E50;\n  border-color: #2C3E50;\n}\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n  border-bottom: 0;\n}\n\n.list-group-item-primary {\n  color: #17202a;\n  background-color: #c4c9ce;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #17202a;\n  background-color: #b6bcc2;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #17202a;\n  border-color: #17202a;\n}\n\n.list-group-item-secondary {\n  color: #4d5656;\n  background-color: #e1e6e6;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #4d5656;\n  background-color: #d3dada;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #4d5656;\n  border-color: #4d5656;\n}\n\n.list-group-item-success {\n  color: #0c6251;\n  background-color: #beece3;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0c6251;\n  background-color: #aae6db;\n}\n\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0c6251;\n  border-color: #0c6251;\n}\n\n.list-group-item-info {\n  color: #1b4f72;\n  background-color: #c6e2f5;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #1b4f72;\n  background-color: #b0d7f1;\n}\n\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #1b4f72;\n  border-color: #1b4f72;\n}\n\n.list-group-item-warning {\n  color: #7e5109;\n  background-color: #fce3bd;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #7e5109;\n  background-color: #fbd9a5;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #7e5109;\n  border-color: #7e5109;\n}\n\n.list-group-item-danger {\n  color: #78281f;\n  background-color: #f8cdc8;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #78281f;\n  background-color: #f5b8b1;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #78281f;\n  border-color: #78281f;\n}\n\n.list-group-item-light {\n  color: #7b7d7d;\n  background-color: #fafbfb;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #7b7d7d;\n  background-color: #ecf0f0;\n}\n\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #7b7d7d;\n  border-color: #7b7d7d;\n}\n\n.list-group-item-dark {\n  color: #404848;\n  background-color: #dadedf;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #404848;\n  background-color: #ccd2d3;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #404848;\n  border-color: #404848;\n}\n\n.close {\n  float: right;\n  font-size: 1.40625rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-shadow: none;\n  opacity: .5;\n}\n\n.close:hover, .close:focus {\n  color: #fff;\n  text-decoration: none;\n  opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.modal-open {\n  overflow: hidden;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  outline: 0;\n}\n\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n  -webkit-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n  -webkit-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n  position: relative;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-orient: vertical;\n  -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n          flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  -webkit-box-pack: justify;\n      -ms-flex-pack: justify;\n          justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #ecf0f1;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n  padding: 1rem;\n  margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  -webkit-box-flex: 1;\n      -ms-flex: 1 1 auto;\n          flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: end;\n      -ms-flex-pack: end;\n          justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #ecf0f1;\n}\n\n.modal-footer > :not(:first-child) {\n  margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n  margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n  .modal-dialog-centered {\n    min-height: calc(100% - (1.75rem * 2));\n  }\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n\n@media (min-width: 992px) {\n  .modal-lg {\n    max-width: 800px;\n  }\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.8203125rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n\n.tooltip.show {\n  opacity: 0.9;\n}\n\n.tooltip .arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n  bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n  top: 0;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n  right: 0;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n  top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n  bottom: 0;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n  left: 0;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: \"Lato\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.8203125rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n\n.popover .arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n  margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n  bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n  bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  bottom: 1px;\n  border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n  left: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n  left: 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  left: 1px;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n  top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n  top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  top: 1px;\n  border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n  right: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n  right: 0;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  right: 1px;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 0.9375rem;\n  color: inherit;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  width: 100%;\n  -webkit-transition: -webkit-transform 0.6s ease;\n  transition: -webkit-transform 0.6s ease;\n  transition: transform 0.6s ease;\n  transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-perspective: 1000px;\n          perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  -webkit-transform: translateX(0);\n          transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next.carousel-item-left,\n  .carousel-item-prev.carousel-item-right {\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n  -webkit-transform: translateX(100%);\n          transform: translateX(100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next,\n  .active.carousel-item-right {\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  -webkit-transform: translateX(-100%);\n          transform: translateX(-100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-prev,\n  .active.carousel-item-left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: .9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  position: relative;\n  -webkit-box-flex: 0;\n      -ms-flex: 0 1 auto;\n          flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n  position: absolute;\n  top: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators li::after {\n  position: absolute;\n  bottom: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.bg-primary {\n  background-color: #2C3E50 !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #1a252f !important;\n}\n\n.bg-secondary {\n  background-color: #95a5a6 !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #798d8f !important;\n}\n\n.bg-success {\n  background-color: #18BC9C !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #128f76 !important;\n}\n\n.bg-info {\n  background-color: #3498DB !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #217dbb !important;\n}\n\n.bg-warning {\n  background-color: #F39C12 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #c87f0a !important;\n}\n\n.bg-danger {\n  background-color: #E74C3C !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #d62c1a !important;\n}\n\n.bg-light {\n  background-color: #ecf0f1 !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #cfd9db !important;\n}\n\n.bg-dark {\n  background-color: #7b8a8b !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #636f70 !important;\n}\n\n.bg-white {\n  background-color: #fff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #2C3E50 !important;\n}\n\n.border-secondary {\n  border-color: #95a5a6 !important;\n}\n\n.border-success {\n  border-color: #18BC9C !important;\n}\n\n.border-info {\n  border-color: #3498DB !important;\n}\n\n.border-warning {\n  border-color: #F39C12 !important;\n}\n\n.border-danger {\n  border-color: #E74C3C !important;\n}\n\n.border-light {\n  border-color: #ecf0f1 !important;\n}\n\n.border-dark {\n  border-color: #7b8a8b !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.d-none {\n  display: none !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: -webkit-box !important;\n  display: -ms-flexbox !important;\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: -webkit-inline-box !important;\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important;\n  }\n  .d-sm-inline {\n    display: inline !important;\n  }\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n  .d-sm-block {\n    display: block !important;\n  }\n  .d-sm-table {\n    display: table !important;\n  }\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n  .d-sm-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-sm-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important;\n  }\n  .d-md-inline {\n    display: inline !important;\n  }\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n  .d-md-block {\n    display: block !important;\n  }\n  .d-md-table {\n    display: table !important;\n  }\n  .d-md-table-row {\n    display: table-row !important;\n  }\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n  .d-md-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-md-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important;\n  }\n  .d-lg-inline {\n    display: inline !important;\n  }\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n  .d-lg-block {\n    display: block !important;\n  }\n  .d-lg-table {\n    display: table !important;\n  }\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n  .d-lg-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-lg-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important;\n  }\n  .d-xl-inline {\n    display: inline !important;\n  }\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n  .d-xl-block {\n    display: block !important;\n  }\n  .d-xl-table {\n    display: table !important;\n  }\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n  .d-xl-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-xl-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media print {\n  .d-print-none {\n    display: none !important;\n  }\n  .d-print-inline {\n    display: inline !important;\n  }\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n  .d-print-block {\n    display: block !important;\n  }\n  .d-print-table {\n    display: table !important;\n  }\n  .d-print-table-row {\n    display: table-row !important;\n  }\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n  .d-print-flex {\n    display: -webkit-box !important;\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-print-inline-flex {\n    display: -webkit-inline-box !important;\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n}\n\n.embed-responsive::before {\n  display: block;\n  content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n\n.embed-responsive-21by9::before {\n  padding-top: 42.8571428571%;\n}\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n  padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n  padding-top: 100%;\n}\n\n.flex-row {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: normal !important;\n      -ms-flex-direction: row !important;\n          flex-direction: row !important;\n}\n\n.flex-column {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: normal !important;\n      -ms-flex-direction: column !important;\n          flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  -webkit-box-orient: horizontal !important;\n  -webkit-box-direction: reverse !important;\n      -ms-flex-direction: row-reverse !important;\n          flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  -webkit-box-orient: vertical !important;\n  -webkit-box-direction: reverse !important;\n      -ms-flex-direction: column-reverse !important;\n          flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n      flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n      flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n      flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  -webkit-box-pack: start !important;\n      -ms-flex-pack: start !important;\n          justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  -webkit-box-pack: end !important;\n      -ms-flex-pack: end !important;\n          justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  -webkit-box-pack: center !important;\n      -ms-flex-pack: center !important;\n          justify-content: center !important;\n}\n\n.justify-content-between {\n  -webkit-box-pack: justify !important;\n      -ms-flex-pack: justify !important;\n          justify-content: space-between !important;\n}\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n      justify-content: space-around !important;\n}\n\n.align-items-start {\n  -webkit-box-align: start !important;\n      -ms-flex-align: start !important;\n          align-items: flex-start !important;\n}\n\n.align-items-end {\n  -webkit-box-align: end !important;\n      -ms-flex-align: end !important;\n          align-items: flex-end !important;\n}\n\n.align-items-center {\n  -webkit-box-align: center !important;\n      -ms-flex-align: center !important;\n          align-items: center !important;\n}\n\n.align-items-baseline {\n  -webkit-box-align: baseline !important;\n      -ms-flex-align: baseline !important;\n          align-items: baseline !important;\n}\n\n.align-items-stretch {\n  -webkit-box-align: stretch !important;\n      -ms-flex-align: stretch !important;\n          align-items: stretch !important;\n}\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n      align-content: flex-start !important;\n}\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n      align-content: flex-end !important;\n}\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n      align-content: center !important;\n}\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n      align-content: space-between !important;\n}\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n      align-content: space-around !important;\n}\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n      align-content: stretch !important;\n}\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n      align-self: auto !important;\n}\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n      align-self: flex-start !important;\n}\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n      align-self: flex-end !important;\n}\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n      align-self: center !important;\n}\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n      align-self: baseline !important;\n}\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n      align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-sm-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-sm-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-sm-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-sm-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-sm-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-sm-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-sm-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-sm-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-sm-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-sm-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-sm-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-sm-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-md-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-md-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-md-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-md-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-md-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-md-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-md-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-md-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-md-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-md-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-md-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-md-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-lg-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-lg-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-lg-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-lg-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-lg-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-lg-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-lg-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-lg-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-lg-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-lg-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-lg-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-lg-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: row !important;\n            flex-direction: row !important;\n  }\n  .flex-xl-column {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: normal !important;\n        -ms-flex-direction: column !important;\n            flex-direction: column !important;\n  }\n  .flex-xl-row-reverse {\n    -webkit-box-orient: horizontal !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: row-reverse !important;\n            flex-direction: row-reverse !important;\n  }\n  .flex-xl-column-reverse {\n    -webkit-box-orient: vertical !important;\n    -webkit-box-direction: reverse !important;\n        -ms-flex-direction: column-reverse !important;\n            flex-direction: column-reverse !important;\n  }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n        flex-wrap: wrap !important;\n  }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n        flex-wrap: nowrap !important;\n  }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n        flex-wrap: wrap-reverse !important;\n  }\n  .justify-content-xl-start {\n    -webkit-box-pack: start !important;\n        -ms-flex-pack: start !important;\n            justify-content: flex-start !important;\n  }\n  .justify-content-xl-end {\n    -webkit-box-pack: end !important;\n        -ms-flex-pack: end !important;\n            justify-content: flex-end !important;\n  }\n  .justify-content-xl-center {\n    -webkit-box-pack: center !important;\n        -ms-flex-pack: center !important;\n            justify-content: center !important;\n  }\n  .justify-content-xl-between {\n    -webkit-box-pack: justify !important;\n        -ms-flex-pack: justify !important;\n            justify-content: space-between !important;\n  }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n        justify-content: space-around !important;\n  }\n  .align-items-xl-start {\n    -webkit-box-align: start !important;\n        -ms-flex-align: start !important;\n            align-items: flex-start !important;\n  }\n  .align-items-xl-end {\n    -webkit-box-align: end !important;\n        -ms-flex-align: end !important;\n            align-items: flex-end !important;\n  }\n  .align-items-xl-center {\n    -webkit-box-align: center !important;\n        -ms-flex-align: center !important;\n            align-items: center !important;\n  }\n  .align-items-xl-baseline {\n    -webkit-box-align: baseline !important;\n        -ms-flex-align: baseline !important;\n            align-items: baseline !important;\n  }\n  .align-items-xl-stretch {\n    -webkit-box-align: stretch !important;\n        -ms-flex-align: stretch !important;\n            align-items: stretch !important;\n  }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n        align-content: flex-start !important;\n  }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n        align-content: flex-end !important;\n  }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n        align-content: center !important;\n  }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n        align-content: space-between !important;\n  }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n        align-content: space-around !important;\n  }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n        align-content: stretch !important;\n  }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n        align-self: auto !important;\n  }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n        align-self: flex-start !important;\n  }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n        align-self: flex-end !important;\n  }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n        align-self: center !important;\n  }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n        align-self: baseline !important;\n  }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n        align-self: stretch !important;\n  }\n}\n\n.float-left {\n  float: left !important;\n}\n\n.float-right {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important;\n  }\n  .float-sm-right {\n    float: right !important;\n  }\n  .float-sm-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important;\n  }\n  .float-md-right {\n    float: right !important;\n  }\n  .float-md-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important;\n  }\n  .float-lg-right {\n    float: right !important;\n  }\n  .float-lg-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important;\n  }\n  .float-xl-right {\n    float: right !important;\n  }\n  .float-xl-none {\n    float: none !important;\n  }\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  -webkit-clip-path: inset(50%);\n          clip-path: inset(50%);\n  border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n  -webkit-clip-path: none;\n          clip-path: none;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important;\n  }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important;\n  }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important;\n  }\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n  }\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n  }\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important;\n  }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important;\n  }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important;\n  }\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important;\n  }\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important;\n  }\n  .m-sm-auto {\n    margin: auto !important;\n  }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important;\n  }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important;\n  }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important;\n  }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important;\n  }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important;\n  }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important;\n  }\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important;\n  }\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important;\n  }\n  .p-md-0 {\n    padding: 0 !important;\n  }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important;\n  }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important;\n  }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important;\n  }\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important;\n  }\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important;\n  }\n  .m-md-auto {\n    margin: auto !important;\n  }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important;\n  }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important;\n  }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important;\n  }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important;\n  }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important;\n  }\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n  }\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n  }\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important;\n  }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important;\n  }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important;\n  }\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important;\n  }\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important;\n  }\n  .m-lg-auto {\n    margin: auto !important;\n  }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important;\n  }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important;\n  }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important;\n  }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important;\n  }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important;\n  }\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n  }\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n  }\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important;\n  }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important;\n  }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important;\n  }\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important;\n  }\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important;\n  }\n  .m-xl-auto {\n    margin: auto !important;\n  }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important;\n  }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important;\n  }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important;\n  }\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important;\n  }\n  .text-sm-right {\n    text-align: right !important;\n  }\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important;\n  }\n  .text-md-right {\n    text-align: right !important;\n  }\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important;\n  }\n  .text-lg-right {\n    text-align: right !important;\n  }\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important;\n  }\n  .text-xl-right {\n    text-align: right !important;\n  }\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-white {\n  color: #fff !important;\n}\n\n.text-primary {\n  color: #2C3E50 !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #1a252f !important;\n}\n\n.text-secondary {\n  color: #95a5a6 !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #798d8f !important;\n}\n\n.text-success {\n  color: #18BC9C !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #128f76 !important;\n}\n\n.text-info {\n  color: #3498DB !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #217dbb !important;\n}\n\n.text-warning {\n  color: #F39C12 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #c87f0a !important;\n}\n\n.text-danger {\n  color: #E74C3C !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #d62c1a !important;\n}\n\n.text-light {\n  color: #ecf0f1 !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #cfd9db !important;\n}\n\n.text-dark {\n  color: #7b8a8b !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #636f70 !important;\n}\n\n.text-muted {\n  color: #95a5a6 !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\";\n  }\n  pre {\n    white-space: pre-wrap !important;\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  @page {\n    size: a3;\n  }\n  body {\n    min-width: 992px !important;\n  }\n  .container {\n    min-width: 992px !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .badge {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n\n.bg-primary .navbar-nav .active > .nav-link {\n  color: #18BC9C !important;\n}\n\n.bg-dark {\n  background-color: #18BC9C !important;\n}\n\n.bg-dark.navbar-dark .navbar-nav .nav-link:focus,\n.bg-dark.navbar-dark .navbar-nav .nav-link:hover,\n.bg-dark.navbar-dark .navbar-nav .active > .nav-link {\n  color: #2C3E50 !important;\n}\n\n.btn-secondary, .btn-secondary:hover, .btn-warning, .btn-warning:hover {\n  color: #fff;\n}\n\n.table .thead-dark th {\n  background-color: #2C3E50;\n}\n\n.table-success, .table-info, .table-warning, .table-danger {\n  color: #fff;\n}\n\n.table-success, .table-success > th, .table-success > td {\n  background-color: #18BC9C;\n}\n\n.table-info, .table-info > th, .table-info > td {\n  background-color: #3498DB;\n}\n\n.table-danger, .table-danger > th, .table-danger > td {\n  background-color: #E74C3C;\n}\n\n.table-warning, .table-warning > th, .table-warning > td {\n  background-color: #F39C12;\n}\n\n.table-hover .table-success:hover, .table-hover .table-success:hover > th, .table-hover .table-success:hover > td {\n  background-color: #15a589;\n}\n\n.table-hover .table-info:hover, .table-hover .table-info:hover > th, .table-hover .table-info:hover > td {\n  background-color: #258cd1;\n}\n\n.table-hover .table-danger:hover, .table-hover .table-danger:hover > th, .table-hover .table-danger:hover > td {\n  background-color: #e43725;\n}\n\n.table-hover .table-warning:hover, .table-hover .table-warning:hover > th, .table-hover .table-warning:hover > td {\n  background-color: #e08e0b;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-link.active:focus,\n.nav-tabs .nav-link.active:hover,\n.nav-tabs .nav-item.open .nav-link,\n.nav-tabs .nav-item.open .nav-link:focus,\n.nav-tabs .nav-item.open .nav-link:hover {\n  color: #2C3E50;\n}\n\n.pagination a:hover {\n  text-decoration: none;\n}\n\n.close {\n  text-decoration: none;\n  opacity: 0.4;\n}\n\n.close:hover, .close:focus {\n  opacity: 1;\n}\n\n.badge-secondary, .badge-warning {\n  color: #fff;\n}\n\n.alert {\n  border: none;\n  color: #fff;\n}\n\n.alert a,\n.alert .alert-link {\n  color: #fff;\n  text-decoration: underline;\n}\n\n.alert-primary {\n  background-color: #2C3E50;\n}\n\n.alert-secondary {\n  background-color: #95a5a6;\n}\n\n.alert-success {\n  background-color: #18BC9C;\n}\n\n.alert-info {\n  background-color: #3498DB;\n}\n\n.alert-warning {\n  background-color: #F39C12;\n}\n\n.alert-danger {\n  background-color: #E74C3C;\n}\n\n.alert-light {\n  background-color: #ecf0f1;\n}\n\n.alert-dark {\n  background-color: #7b8a8b;\n}\n\n.alert-light,\n.alert-light a,\n.alert-light .alert-link {\n  color: #212529;\n}\n\n.modal .close {\n  color: #000;\n}\n"
  },
  {
    "path": "src/Console/Keys.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Illuminate\\Console\\Command;\n\nclass Keys extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'cms:keygen';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Grafite CMS will generate keys for the API Internal and External access';\n\n    /**\n     * Execute the console command.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $keyOne = sha1(str_random(12));\n        $keyTwo = sha1(str_random(40));\n\n        $content = file_get_contents(base_path('.env'));\n\n        if (strpos($content, 'CMS_API_TOKEN=') > -1) {\n            $content = str_replace('CMS_API_TOKEN=', 'CMS_API_TOKEN='.$keyOne, $content);\n        } else {\n            $content .= \"\\nCMS_API_TOKEN=\".$keyOne;\n        }\n\n        if (strpos($content, 'CMS_API_KEY=') > -1) {\n            $content = str_replace('CMS_API_KEY=', 'CMS_API_KEY='.$keyTwo, $content).\"\\n\";\n        } else {\n            $content .= \"\\nCMS_API_KEY=\".$keyTwo.\"\\n\";\n        }\n\n        file_put_contents(base_path('.env'), $content);\n\n        $this->info('Your keys have been generated.');\n    }\n}\n"
  },
  {
    "path": "src/Console/ModuleComposer.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Filesystem\\Filesystem;\nuse Illuminate\\Support\\Facades\\Config;\n\nclass ModuleComposer extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'module:composer {module} {namespace} {--directory=}';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Convert a Cms module to a composer package';\n\n    /**\n     * Execute the console command.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $moduleDir = base_path(config('cms.module-directory')).'/'.ucfirst($this->argument('module'));\n        if (is_dir($moduleDir)) {\n            $readMeStub = file_get_contents(__DIR__.'/../Templates/Composer/readme.stub');\n            $composerStub = file_get_contents(__DIR__.'/../Templates/Composer/composer.stub');\n            $packageDir = $this->option('directory');\n            $namespace = $this->argument('namespace');\n            $module = $this->argument('module');\n            $system = app(Filesystem::class);\n\n            if (is_null($packageDir)) {\n                $packageDir = $moduleDir.'/../../packages/'.ucfirst($module);\n            }\n\n            if (!is_dir($moduleDir.'/../../packages/')) {\n                $system->makeDirectory($moduleDir.'/../../packages/');\n            }\n\n            if (!is_dir($packageDir)) {\n                $system->makeDirectory($packageDir);\n            }\n\n            $system->put($packageDir.'/README.md', $readMeStub);\n            $system->put($packageDir.'/composer.json', $composerStub);\n\n            $this->copyModuleToPackageDir($moduleDir, $packageDir);\n\n            $files = $system->glob($packageDir.'/*');\n\n            foreach ($files as $file) {\n                if ($system->isFile($file)) {\n                    $this->updateFile($file, $namespace, $module);\n                }\n            }\n\n            $this->line('Your comploser package is now complete.');\n        } else {\n            $this->line('We\\'ve encountered an issue, please check you spelled the module name correctly');\n        }\n    }\n\n    public function updateFile($file, $namespace, $module)\n    {\n        $system = app(Filesystem::class);\n        $contents = $system->get($file);\n\n        $provider = explode('\\\\', $namespace);\n        $escapaedNamespace = str_replace('\\\\', '\\\\\\\\', $namespace);\n\n        $contents = str_replace('{package}', strtolower($provider[0]).'/'.strtolower($module), $contents);\n        $contents = str_replace('{module}', strtolower($module), $contents);\n        $contents = str_replace('{namespace}', $namespace, $contents);\n        $contents = str_replace('{escapedNamespace}', $escapaedNamespace, $contents);\n        $contents = str_replace('Cms\\\\Modules', $provider[0], $contents);\n\n        $system->put($file, $contents);\n    }\n\n    public function copyModuleToPackageDir($moduleDir, $packageDir)\n    {\n        $system = app(Filesystem::class);\n        $system->copyDirectory($moduleDir, $packageDir);\n    }\n}\n"
  },
  {
    "path": "src/Console/ModuleCrud.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Artisan;\nuse Config;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Filesystem\\Filesystem;\nuse Grafite\\CrudMaker\\Generators\\CrudGenerator;\n\nclass ModuleCrud extends Command\n{\n    public $table;\n    public $filesystem;\n\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'module:crud {table} {--migration} {--schema=}';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Generate a CRUD module for Cms';\n\n    /**\n     * Generate a CRUD stack.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $this->filesystem = new Filesystem();\n        $crudGenerator = new CrudGenerator();\n\n        $this->table = ucfirst(str_singular(strtolower($this->argument('table'))));\n\n        $moduleDirectory = base_path('cms/Modules/'.ucfirst(str_plural($this->table)));\n\n        $this->directorySetup();\n\n        if (!is_dir($moduleDirectory)) {\n            mkdir($moduleDirectory);\n            mkdir($moduleDirectory.'/Assets', 0777, true);\n            mkdir($moduleDirectory.'/Publishes', 0777, true);\n            mkdir($moduleDirectory.'/Publishes/database', 0777, true);\n            mkdir($moduleDirectory.'/Publishes/app/Http', 0777, true);\n            mkdir($moduleDirectory.'/Publishes/routes', 0777, true);\n            mkdir($moduleDirectory.'/Publishes/app/Http/Controllers/Cms', 0777, true);\n            mkdir($moduleDirectory.'/Publishes/resources/themes/default', 0777, true);\n            mkdir($moduleDirectory.'/Migrations', 0777, true);\n            mkdir($moduleDirectory.'/Controllers', 0777, true);\n            mkdir($moduleDirectory.'/Services', 0777, true);\n            mkdir($moduleDirectory.'/Models', 0777, true);\n            mkdir($moduleDirectory.'/Routes', 0777, true);\n            mkdir($moduleDirectory.'/Views', 0777, true);\n            mkdir($moduleDirectory.'/Tests', 0777, true);\n            mkdir($moduleDirectory.'/Tests/Feature', 0777, true);\n            mkdir($moduleDirectory.'/Tests/Unit', 0777, true);\n        }\n\n        file_put_contents($moduleDirectory.'/config.php', \"<?php \\n\\n\\n return [ 'asset_path' => __DIR__.'/Assets', 'url' => '\".strtolower(str_plural($this->table)).\"', ];\");\n        file_put_contents($moduleDirectory.'/Views/menu.blade.php', \"<li class=\\\"nav-item @if (Request::is(config('cms.backend-route-prefix', 'cms').'/\".strtolower(str_plural($this->table)).\"') || Request::is(config('cms.backend-route-prefix', 'cms').'/\".strtolower(str_plural($this->table)).\"/*')) active @endif\\\"><a class=\\\"nav-link\\\" href=\\\"{{ url(config('cms.backend-route-prefix', 'cms').'/\".strtolower(str_plural($this->table)).\"') }}\\\"><span class=\\\"fa fa-fw fa-file\\\"></span> \".ucfirst(str_plural($this->table)).'</a></li>');\n\n        $config = [\n            'bootstrap' => false,\n            'semantic' => false,\n            '_path_facade_' => $moduleDirectory.'/Facades',\n            '_path_service_' => $moduleDirectory.'/Services',\n            '_path_model_' => $moduleDirectory.'/Models',\n            '_path_model_' => $moduleDirectory.'/Models',\n            '_path_controller_' => $moduleDirectory.'/Controllers',\n            '_path_views_' => $moduleDirectory.'/Views',\n            '_path_tests_' => $moduleDirectory.'/Tests',\n            '_path_request_' => $moduleDirectory.'/Requests',\n            '_path_routes_' => $moduleDirectory.'/Routes/web.php',\n            'routes_prefix' => \"<?php \\n\\nRoute::group(['namespace' => 'Cms\\Modules\\\\\".ucfirst(str_plural($this->table)).\"\\Controllers', 'prefix' => config('cms.backend-route-prefix', 'cms'), 'middleware' => ['web', 'auth', 'cms']], function () { \\n\\n\",\n            'routes_suffix' => \"\\n\\n});\",\n            '_app_namespace_' => app()->getInstance()->getNamespace(),\n            '_namespace_services_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($this->table)).'\\Services',\n            '_namespace_facade_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($this->table)).'\\Facades',\n            '_namespace_model_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($this->table)).'\\Models',\n            '_namespace_controller_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($this->table)).'\\Controllers',\n            '_namespace_request_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($this->table)).'\\Requests',\n            '_table_name_' => str_plural(strtolower($this->table)),\n            '_lower_case_' => strtolower($this->table),\n            '_lower_casePlural_' => str_plural(strtolower($this->table)),\n            '_camel_case_' => ucfirst(camel_case($this->table)),\n            '_camel_casePlural_' => ucfirst(str_plural(camel_case($this->table))),\n            '_ucCamel_casePlural_' => ucfirst(str_plural(camel_case($this->table))),\n            'template_source' => __DIR__.'/../Templates/CRUD/',\n            'tests_generated' => 'integration,service,repository',\n        ];\n\n        $this->makeTheProvider($config, $moduleDirectory, $this->table);\n\n        $appConfig = $config;\n        $appConfig['template_source'] = __DIR__.'/../Templates/AppCRUD';\n        $appConfig['_path_controller_'] = $moduleDirectory.'/Publishes/app/Http/Controllers/Cms';\n        $appConfig['_path_views_'] = $moduleDirectory.'/Publishes/resources/themes/default';\n        $appConfig['_path_routes_'] = $moduleDirectory.'/Publishes/routes/'.$config['_lower_casePlural_'].'-web.php';\n        $appConfig['_namespace_controller_'] = $config['_app_namespace_'].'Http\\Controllers\\Cms';\n        $appConfig['routes_prefix'] = \"<?php \\n\\nRoute::group(['namespace' => 'Cms', 'middleware' => ['web']], function () {\\n\\n\";\n        $appConfig['routes_suffix'] = \"\\n\\n});\";\n\n        try {\n            $this->info('Building the admin side...');\n\n            $this->line('Building controller...');\n            $crudGenerator->createController($config);\n\n            $this->line('Building model...');\n            $crudGenerator->createModel($config);\n\n            $this->line('Building request...');\n            $crudGenerator->createRequest($config);\n\n            $this->line('Building service...');\n            $crudGenerator->createService($config);\n\n            $this->line('Building views...');\n            $crudGenerator->createViews($config);\n\n            $this->line('Building routes...');\n            $crudGenerator->createRoutes($config);\n\n            $this->line('Building tests...');\n            $crudGenerator->createTests($config, false);\n\n            $this->info('Building the theme side...');\n\n            $this->line('Building controller...');\n            $crudGenerator->createController($appConfig);\n\n            $this->line('Building views...');\n            $crudGenerator->createViews($appConfig);\n\n            $this->line('Building routes...');\n            @file_put_contents($moduleDirectory.'/Publishes/routes/'.$config['_lower_casePlural_'].'-web.php', '');\n            $crudGenerator->createRoutes($appConfig, false);\n\n            $this->line('You will need to publish your module to make it available to your vistors:');\n            $this->comment('php artisan module:publish '.str_plural($this->table));\n            $this->line('');\n            $this->info('Add this to your `app/Providers/RouteServiceProver.php` in the `mapWebRoutes` method:');\n            $this->comment(\"\\nrequire base_path('routes/\".$config['_lower_casePlural_'].\"-web.php');\\n\");\n        } catch (Exception $e) {\n            throw new Exception('Unable to generate your Module', 1);\n        }\n\n        Artisan::call('make:migration', [\n            'name' => 'create_'.str_plural(strtolower($this->table)).'_table',\n            '--path' => 'cms/Modules/'.ucfirst(str_plural($this->table)).'/Migrations',\n            '--table' => str_plural(strtolower($this->table)),\n            '--create' => true,\n        ]);\n\n        $this->setSchema();\n\n        $this->line('You may wish to add this as your testing database');\n        $this->line(\"'testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '' ],\");\n        $this->info('Module for '.$this->table.' is done.');\n    }\n\n    /**\n     * Generate the provider file.\n     *\n     * @param array $config\n     *\n     * @return bool\n     */\n    public function makeTheProvider($config, $moduleDirectory, $table)\n    {\n        $provider = file_get_contents(__DIR__.'/../Templates/CRUD/Provider.txt');\n\n        foreach ($config as $key => $value) {\n            $provider = str_replace($key, $value, $provider);\n        }\n\n        return file_put_contents($moduleDirectory.'/'.ucfirst(str_plural($table)).'ModuleProvider.php', $provider);\n    }\n\n    /**\n     * Setup the directories for modules.\n     */\n    public function directorySetup()\n    {\n        if (!is_dir(base_path('cms'))) {\n            @mkdir(base_path('cms'));\n        }\n\n        if (!is_dir(base_path('cms/Modules'))) {\n            mkdir(base_path('cms/Modules'));\n        }\n    }\n\n    public function setSchema()\n    {\n        if ($this->option('schema')) {\n            $migrationFiles = $this->filesystem->allFiles(base_path('cms/Modules/'.ucfirst(str_plural($this->table)).'/Migrations'));\n            $migrationName = 'create_'.str_plural(strtolower($this->table)).'_table';\n            foreach ($migrationFiles as $file) {\n                if (stristr($file->getBasename(), $migrationName)) {\n                    $migrationData = file_get_contents($file->getPathname());\n                    $parsedTable = '';\n\n                    foreach (explode(',', $this->option('schema')) as $key => $column) {\n                        $columnDefinition = explode(':', $column);\n                        if ($key === 0) {\n                            $parsedTable .= \"\\$table->$columnDefinition[1]('$columnDefinition[0]');\\n\";\n                        } else {\n                            $parsedTable .= \"\\t\\t\\t\\$table->$columnDefinition[1]('$columnDefinition[0]');\\n\";\n                        }\n                    }\n\n                    $migrationData = str_replace(\"\\$table->increments('id');\", $parsedTable, $migrationData);\n                    file_put_contents($file->getPathname(), $migrationData);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/Console/ModuleMake.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Artisan;\nuse Config;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Grafite\\CrudMaker\\Generators\\CrudGenerator;\n\nclass ModuleMake extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'module:make {name}';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Generate a module for Cms';\n\n    /**\n     * Generate a CRUD stack.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $crudGenerator = new CrudGenerator();\n\n        $name = ucfirst(str_singular($this->argument('name')));\n\n        $moduleDirectory = base_path('cms/Modules/'.ucfirst(str_plural($name)));\n\n        if (!is_dir(base_path('cms'))) {\n            @mkdir(base_path('cms'));\n        }\n\n        if (!is_dir(base_path('cms/Modules'))) {\n            @mkdir(base_path('cms/Modules'));\n        }\n\n        @mkdir($moduleDirectory);\n        @mkdir($moduleDirectory.'/Assets');\n        @mkdir($moduleDirectory.'/Publishes');\n        @mkdir($moduleDirectory.'/Publishes/app/Http', 0777, true);\n        @mkdir($moduleDirectory.'/Publishes/routes', 0777, true);\n        @mkdir($moduleDirectory.'/Publishes/app/Http/Controllers/Cms', 0777, true);\n        @mkdir($moduleDirectory.'/Publishes/resources/themes/default', 0777, true);\n        @mkdir($moduleDirectory.'/Controllers');\n        @mkdir($moduleDirectory.'/Services');\n        @mkdir($moduleDirectory.'/Views');\n        @mkdir($moduleDirectory.'/Routes');\n        @mkdir($moduleDirectory.'/Tests');\n\n        file_put_contents($moduleDirectory.'/config.php', \"<?php \\n\\n\\nreturn [\\n\\t'asset_path' => __DIR__.'/Assets',\\n\\t'url' => '\".strtolower(str_plural($name)).\"',\\n\\t'is_ignored_in_menu' => false\\n];\");\n        file_put_contents($moduleDirectory.'/Views/menu.blade.php', \"<li class=\\\"nav-item @if (Request::is('cms/\".strtolower(str_plural($name)).\"') || Request::is('cms/\".strtolower(str_plural($name)).\"/*')) active @endif\\\"><a class=\\\"nav-link\\\" href=\\\"{{ url('cms/\".strtolower(str_plural($name)).\"') }}\\\"><span class=\\\"fa fa-fw fa-file\\\"></span> \".ucfirst(str_plural($name)).'</a></li>');\n\n        $config = [\n            'bootstrap' => false,\n            'semantic' => false,\n            '_path_service_' => $moduleDirectory.'/Services',\n            '_path_controller_' => $moduleDirectory.'/Controllers',\n            '_path_views_' => $moduleDirectory.'/Views',\n            '_path_tests_' => $moduleDirectory.'/Tests',\n            '_path_routes_' => $moduleDirectory.'/Routes/web.php',\n            'routes_prefix' => \"<?php \\n\\nRoute::group(['namespace' => 'Cms\\Modules\\\\\".ucfirst(str_plural($name)).\"\\Controllers', 'prefix' => 'cms', 'middleware' => ['web', 'auth', 'cms']], function () { \\n\\n\",\n            'routes_suffix' => \"\\n\\n});\",\n            '_app_namespace_' => app()->getInstance()->getNamespace(),\n            '_namespace_services_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($name)).'\\Services',\n            '_namespace_controller_' => 'Cms\\Modules\\\\'.ucfirst(str_plural($name)).'\\Controllers',\n            '_name_name_' => strtolower($name),\n            '_lower_case_' => strtolower($name),\n            '_lower_casePlural_' => str_plural(strtolower($name)),\n            '_camel_case_' => ucfirst(camel_case($name)),\n            '_camel_casePlural_' => ucfirst(str_plural(camel_case($name))),\n            '_ucCamel_casePlural_' => ucfirst(str_plural(camel_case($name))),\n            'template_source' => __DIR__.'/../Templates/Basic/',\n        ];\n\n        $this->makeTheProvider($config, $moduleDirectory, $name);\n\n        $appConfig = $config;\n        $appConfig['template_source'] = __DIR__.'/../Templates/AppBasic/';\n        $appConfig['_path_controller_'] = $moduleDirectory.'/Publishes/app/Http/Controllers/Cms';\n        $appConfig['_path_views_'] = $moduleDirectory.'/Publishes/resources/themes/default';\n        $appConfig['_path_routes_'] = $moduleDirectory.'/Publishes/routes/'.$config['_lower_casePlural_'].'-web.php';\n        $appConfig['_namespace_controller_'] = $config['_app_namespace_'].'Http\\Controllers\\Cms';\n        $appConfig['routes_prefix'] = \"<?php \\n\\nRoute::group(['namespace' => 'Cms', 'middleware' => ['web']], function () {\\n\\n\";\n        $appConfig['routes_suffix'] = \"\\n\\n});\";\n\n        try {\n            $this->info('Building the admin side...');\n\n            $this->line('Building controller...');\n            $crudGenerator->createController($config);\n\n            $this->line('Building service...');\n            $crudGenerator->createService($config);\n\n            $this->line('Building views...');\n            $crudGenerator->createViews($config);\n\n            $this->line('Building routes...');\n            $crudGenerator->createRoutes($config);\n\n            $this->info('Building the theme side...');\n\n            $this->line('Building controller...');\n            $crudGenerator->createController($appConfig);\n\n            $this->line('Building views...');\n            $crudGenerator->createViews($appConfig);\n\n            $this->line('Building routes...');\n            $crudGenerator->createRoutes($appConfig);\n\n            $this->line('You will need to publish your module to make it available to your vistors:');\n            $this->comment('php artisan module:publish '.str_plural($name));\n            $this->line('');\n            $this->info('Add this to your `app/Providers/RouteServiceProver.php` in the `mapWebRoutes` method:');\n            $this->comment(\"\\nrequire base_path('routes/\".$config['_lower_casePlural_'].\"-web.php');\\n\");\n        } catch (Exception $e) {\n            throw new Exception('Unable to generate your Module', 1);\n        }\n\n        $this->info('Module for '.$name.' is done.');\n    }\n\n    /**\n     * Generate the provider file.\n     *\n     * @param array $config\n     *\n     * @return bool\n     */\n    public function makeTheProvider($config, $moduleDirectory, $table)\n    {\n        $provider = file_get_contents(__DIR__.'/../Templates/Basic/Provider.txt');\n\n        foreach ($config as $key => $value) {\n            $provider = str_replace($key, $value, $provider);\n        }\n\n        return file_put_contents($moduleDirectory.'/'.ucfirst(str_plural($table)).'ModuleProvider.php', $provider);\n    }\n}\n"
  },
  {
    "path": "src/Console/ModulePublish.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Filesystem\\Filesystem;\nuse Illuminate\\Support\\Facades\\Config;\nuse Symfony\\Component\\Console\\Input\\InputArgument;\n\nclass ModulePublish extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $name = 'module:publish';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Publish a Cms module';\n\n    /**\n     * Execute the console command.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        if (is_dir(base_path(Config::get('cms.module-directory')).DIRECTORY_SEPARATOR.ucfirst($this->argument('module')).DIRECTORY_SEPARATOR.'Publishes')) {\n            $fileSystem = new Filesystem();\n\n            $files = $fileSystem->allFiles(base_path(Config::get('cms.module-directory')).DIRECTORY_SEPARATOR.ucfirst($this->argument('module')).DIRECTORY_SEPARATOR.'Publishes');\n            $this->line(\"\\n\");\n            foreach ($files as $file) {\n                if ($file->getType() == 'file') {\n                    $this->line(str_replace(base_path(Config::get('cms.module-directory')).DIRECTORY_SEPARATOR.ucfirst($this->argument('module')).DIRECTORY_SEPARATOR.'Publishes'.DIRECTORY_SEPARATOR, '', $file));\n                }\n            }\n\n            $this->info(\"\\n\\nThese files will be published\\n\");\n\n            $result = $this->confirm('Are you sure you want to overwrite any files of the same name?');\n\n            if ($result) {\n                foreach ($files as $file) {\n                    $newFileName = str_replace(base_path(Config::get('cms.module-directory').DIRECTORY_SEPARATOR.ucfirst($this->argument('module')).DIRECTORY_SEPARATOR.'Publishes'.DIRECTORY_SEPARATOR), '', $file);\n                    if (strstr($newFileName, 'resources'.DIRECTORY_SEPARATOR.'themes'.DIRECTORY_SEPARATOR)) {\n                        $newFileName = str_replace(DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR.Config::get('cms.frontend-theme').DIRECTORY_SEPARATOR, $newFileName);\n                        $this->line('Copying '.$newFileName.' using current Cms theme...');\n                    } else {\n                        $this->line('Copying '.$newFileName.'...');\n                    }\n                    if (is_dir($file)) {\n                        $fileSystem->copyDirectory($file, base_path($newFileName));\n                    } else {\n                        @mkdir(base_path(str_replace(basename($newFileName), '', $newFileName)), 0755, true);\n                        $fileSystem->copy($file, base_path($newFileName));\n                    }\n                }\n\n                $this->info('Finished publishing this module.');\n            } else {\n                $this->info('You cancelled publishing this module');\n            }\n        } else {\n            $this->line('This module may have been installed via composer, if so please run:');\n            $this->info('php artisan vendor:publish');\n            $this->line('You will need to ensure that you copy the published views of this module in the default theme into your custom themes.');\n        }\n    }\n\n    /**\n     * Get the console command arguments.\n     *\n     * @return array\n     */\n    protected function getArguments()\n    {\n        return [\n            ['module', null, InputArgument::REQUIRED, 'Module to publish'],\n        ];\n    }\n\n    /**\n     * Get the console command options.\n     *\n     * @return array\n     */\n    protected function getOptions()\n    {\n        return [];\n    }\n}\n"
  },
  {
    "path": "src/Console/ThemeGenerate.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Filesystem\\Filesystem;\n\nclass ThemeGenerate extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'theme:generate {name}';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Generate a base Cms theme';\n\n    /**\n     * Execute the console command.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $name = $this->argument('name');\n\n        $fileSystem = new Filesystem();\n\n        $files = $fileSystem->allFiles(__DIR__.'/../PublishedAssets/Theme');\n        $this->line(\"\\n\");\n        foreach ($files as $file) {\n            $this->line(str_replace(__DIR__.'/../PublishedAssets/Theme/', '', str_replace('themeTemplate', strtolower($name), $file)));\n        }\n\n        $this->info(\"\\n\\nThese files will be generated\\n\");\n\n        $result = $this->confirm('Are you sure you want to generate this theme?');\n\n        if ($result) {\n            foreach ($files as $file) {\n                $newFileName = str_replace(__DIR__.'/../PublishedAssets/Theme', '', $file);\n                $newFileName = str_replace('themeTemplate', strtolower($name), $newFileName);\n                $this->line('Copying '.$newFileName.'...');\n                if (is_dir($file)) {\n                    $fileSystem->copyDirectory($file, base_path($newFileName));\n                } else {\n                    @mkdir(base_path(str_replace(basename($newFileName), '', $newFileName)), 0755, true);\n                    $fileSystem->copy($file, base_path($newFileName));\n                }\n            }\n\n            $sass = file_get_contents(base_path('resources/themes/'.strtolower($name).'/assets/sass/_theme.scss'));\n            $sassRepairs = str_replace('themeTemplate', strtolower($name), $sass);\n            file_put_contents(base_path('resources/themes/'.strtolower($name).'/assets/sass/_theme.scss'), $sassRepairs);\n\n            $layout = file_get_contents(base_path('resources/themes/'.strtolower($name).'/layout/master.blade.php'));\n            $layoutRepairs = str_replace('themeTemplate', strtolower($name), $layout);\n            file_put_contents(base_path('resources/themes/'.strtolower($name).'/layout/master.blade.php'), $layoutRepairs);\n\n            $this->info('Finished generating your theme');\n            $this->line(\"\\n\");\n            $this->info('Please add this to your gulpfile.js in the scripts elixir:');\n            $this->comment('../../themes/'.strtolower($name).'/assets/js/theme.js');\n            $this->line(\"\\n\");\n            $this->info('Please add this to your app.scss:');\n            $this->comment('@import \"resources/themes/'.strtolower($name).'/assets/sass/_theme.scss\"');\n        } else {\n            $this->info('Nothing has been changed or added');\n        }\n    }\n}\n"
  },
  {
    "path": "src/Console/ThemeLink.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Filesystem\\Filesystem;\n\nclass ThemeLink extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'theme:link';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Create a symlink to your theme\\'s assets';\n\n    /**\n     * Execute the console command.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $name = config('cms.frontend-theme');\n\n        $result = 'Symlink failed to generate';\n\n        if (symlink(base_path('resources/themes/'.strtolower($name).'/public'), base_path('public/theme'))) {\n            $result = 'Symlink generated';\n        }\n\n        $this->info($result);\n    }\n}\n"
  },
  {
    "path": "src/Console/ThemePublish.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Console;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Filesystem\\Filesystem;\n\nclass ThemePublish extends Command\n{\n    /**\n     * The console command name.\n     *\n     * @var string\n     */\n    protected $signature = 'theme:publish {name} {--forced}';\n\n    /**\n     * The console command description.\n     *\n     * @var string\n     */\n    protected $description = 'Publish a Cms theme\\'s public assets';\n\n    /**\n     * Execute the console command.\n     *\n     * @return mixed\n     */\n    public function handle()\n    {\n        $name = $this->argument('name');\n\n        $fileSystem = new Filesystem();\n\n        $files = $fileSystem->allFiles(base_path('resources/themes/'.strtolower($name).'/public'));\n\n        foreach ($files as $file) {\n            if ($file->getType() === 'file') {\n                $this->line(public_path($file->getBasename()));\n            }\n        }\n\n        $this->info(\"\\n\\nThese files will be overwritten\\n\");\n\n        if (!$this->option('forced')) {\n            $result = $this->confirm('Are you sure you want to overwrite any files of the same name?');\n        } else {\n            $result = true;\n        }\n\n        if ($result) {\n            foreach ($files as $file) {\n                $newFileName = str_replace(base_path('resources/themes/'.strtolower($name).'/public'), '', $file);\n                $this->line('Copying '.public_path($newFileName).'...');\n                if (is_dir($file)) {\n                    $fileSystem->copyDirectory($file, public_path($newFileName));\n                } else {\n                    @mkdir(public_path(str_replace(basename($newFileName), '', $newFileName)), 0755, true);\n                    $fileSystem->copy($file, public_path($newFileName));\n                }\n            }\n        } else {\n            $this->info(\"\\n\\nNo files were published\\n\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/Controllers/ApiController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Support\\Facades\\Config;\n\nclass ApiController extends GrafiteCmsController\n{\n    protected $model;\n\n    public function __construct(Request $request)\n    {\n        parent::construct();\n\n        $url = $request->segment(3) ?? 'page';\n\n        $this->modelName = str_singular($url);\n\n        if (! empty($this->modelName)) {\n            $this->model = app('Grafite\\Cms\\Models\\\\'.ucfirst($this->modelName));\n        }\n    }\n\n    /**\n     * Find an item in the API\n     *\n     * @param  int $id\n     *\n     * @return mixed\n     */\n    public function find($id)\n    {\n        return $this->model->find($id);\n    }\n\n    /**\n     * Collect all items of a resource\n     *\n     * @return Collection\n     */\n    public function all()\n    {\n        $query = $this->model;\n\n        if (Schema::hasColumn(str_plural($this->modelName), 'is_published')) {\n            $query = $query->where('is_published', true);\n        }\n\n        if (Schema::hasColumn(str_plural($this->modelName), 'published_at')) {\n            $query = $query->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'));\n        }\n\n        if (Schema::hasColumn(str_plural($this->modelName), 'finished_at')) {\n            $query = $query->where('finished_at', '>=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'));\n        }\n\n        return $query\n            ->orderBy('created_at', 'desc')\n            ->paginate(Config::get('cms.pagination', 24));\n    }\n\n    /**\n     * Search for the API Item\n     *\n     * @param  string $term\n     *\n     * @return array\n     */\n    public function search($term)\n    {\n        $query = $this->model->orderBy('created_at', 'desc');\n        $query->where('id', 'LIKE', '%'.$input['term'].'%');\n\n        $columns = Schema::getColumnListing(str_plural($this->modelName));\n\n        foreach ($columns as $attribute) {\n            $query->orWhere($attribute, 'LIKE', '%'.$input['term'].'%');\n        }\n\n        return [\n            'term' => $input['term'],\n            'result' => $query->paginate(Config::get('cms.pagination', 24)),\n        ];\n    }\n}\n"
  },
  {
    "path": "src/Controllers/AssetController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Illuminate\\Filesystem\\Filesystem;\nuse Grafite\\Cms\\Services\\AssetService;\nuse Grafite\\Cms\\Controllers\\GrafiteCmsController;\n\nclass AssetController extends GrafiteCmsController\n{\n    public function __construct(AssetService $service)\n    {\n        parent::construct();\n\n        $this->service = $service;\n    }\n\n    /**\n     * Provide the File as a Public Asset.\n     *\n     * @param string $encFileName\n     *\n     * @return Download\n     */\n    public function asPublic($encFileName)\n    {\n        return $this->service->asPublic($encFileName);\n    }\n\n    /**\n     * Provide the File as a Public Preview.\n     *\n     * @param string $encFileName\n     *\n     * @return Download\n     */\n    public function asPreview($encFileName, Filesystem $fileSystem)\n    {\n        return $this->service->asPreview($encFileName, $fileSystem);\n    }\n\n    /**\n     * Provide file as download.\n     *\n     * @param string $encFileName\n     * @param string $encRealFileName\n     *\n     * @return Downlaod\n     */\n    public function asDownload($encFileName, $encRealFileName)\n    {\n        return $this->service->asDownload($encFileName, $encRealFileName);\n    }\n\n    /**\n     * Gets an asset.\n     *\n     * @param string $encPath\n     * @param string $contentType\n     *\n     * @return Provides the valid\n     */\n    public function asset($encPath, $contentType, Filesystem $fileSystem)\n    {\n        return $this->service->asset($encPath, $contentType, $fileSystem);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/BlogController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Grafite\\Cms\\Models\\Blog;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Requests\\BlogRequest;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\BlogRepository;\n\nclass BlogController extends GrafiteCmsController\n{\n    public function __construct(BlogRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Blog.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $blogs = $this->repository->paginated();\n\n        return view('cms::modules.blogs.index')\n            ->with('blogs', $blogs)\n            ->with('pagination', $blogs->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.blogs.index')\n            ->with('blogs', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Blog.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.blogs.create');\n    }\n\n    /**\n     * Store a newly created Blog in storage.\n     *\n     * @param BlogRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = app(ValidationService::class)->check(Blog::$rules);\n\n        if (!$validation['errors']) {\n            $blog = $this->repository->store($request->all());\n            Cms::notification('Blog saved successfully.', 'success');\n        } else {\n            return $validation['redirect'];\n        }\n\n        if (!$blog) {\n            Cms::notification('Blog could not be saved.', 'warning');\n        }\n\n        return redirect(route($this->routeBase.'.blog.edit', [$blog->id]));\n    }\n\n    /**\n     * Show the form for editing the specified Blog.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $blog = $this->repository->find($id);\n\n        if (empty($blog)) {\n            Cms::notification('Blog not found', 'warning');\n\n            return redirect(route($this->routeBase.'.blog.index'));\n        }\n\n        return view('cms::modules.blogs.edit')->with('blog', $blog);\n    }\n\n    /**\n     * Update the specified Blog in storage.\n     *\n     * @param int         $id\n     * @param BlogRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, BlogRequest $request)\n    {\n        $blog = $this->repository->find($id);\n\n        if (empty($blog)) {\n            Cms::notification('Blog not found', 'warning');\n\n            return redirect(route($this->routeBase.'.blog.index'));\n        }\n\n        $validation = app(ValidationService::class)->check(Blog::$rules);\n\n        if (!$validation['errors']) {\n            $blog = $this->repository->update($blog, $request->all());\n\n            Cms::notification('Blog updated successfully.', 'success');\n\n            if (! $blog) {\n                Cms::notification('Blog could not be saved.', 'warning');\n            }\n        } else {\n            return $validation['redirect'];\n        }\n\n        return back();\n    }\n\n    /**\n     * Remove the specified Blog from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $blog = $this->repository->find($id);\n\n        if (empty($blog)) {\n            Cms::notification('Blog not found', 'warning');\n\n            return redirect(route($this->routeBase.'.blog.index'));\n        }\n\n        $blog->delete();\n\n        Cms::notification('Blog deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.blog.index'));\n    }\n\n    /**\n     * Blog history.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function history($id)\n    {\n        $blog = $this->repository->find($id);\n\n        return view('cms::modules.blogs.history')\n            ->with('blog', $blog);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/DashboardController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Grafite\\Cms\\Services\\AnalyticsService;\nuse Illuminate\\Support\\Facades\\Schema;\nuse Spatie\\Analytics\\Analytics;\nuse Spatie\\Analytics\\Period;\n\nclass DashboardController extends GrafiteCmsController\n{\n    protected $service;\n\n    public function __construct(AnalyticsService $service)\n    {\n        parent::construct();\n\n        $this->service = $service;\n    }\n\n    public function main()\n    {\n        if (!is_null(config('analytics.view_id')) && config('cms.analytics') == 'google') {\n            $period = Period::days(7);\n\n            foreach (app(Analytics::class)->fetchVisitorsAndPageViews($period) as $view) {\n                $visitStats['date'][] = $view['date']->format('Y-m-d');\n                $visitStats['visitors'][] = $view['visitors'];\n                $visitStats['pageViews'][] = $view['pageViews'];\n            }\n\n            return view('cms::dashboard.analytics-google', compact('visitStats', 'period'));\n        } elseif (is_null(config('cms.analytics')) || config('cms.analytics') == 'internal') {\n            if (Schema::hasTable(config('cms.db-prefix', '').'analytics')) {\n                return view('cms::dashboard.analytics-internal')\n                    ->with('stats', $this->service->getDays(15))\n                    ->with('topReferers', $this->service->topReferers(15))\n                    ->with('topBrowsers', $this->service->topBrowsers(15))\n                    ->with('topPages', $this->service->topPages(15));\n            }\n        }\n\n        return view('cms::dashboard.empty');\n    }\n}\n"
  },
  {
    "path": "src/Controllers/EventController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse URL;\nuse Cms;\nuse Grafite\\Cms\\Models\\Event;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Requests\\EventRequest;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\EventRepository;\n\nclass EventController extends GrafiteCmsController\n{\n    public function __construct(EventRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Event.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.events.index')\n            ->with('events', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.events.index')\n            ->with('events', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Event.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.events.create');\n    }\n\n    /**\n     * Store a newly created Event in storage.\n     *\n     * @param EventRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = app(ValidationService::class)->check(Event::$rules);\n\n        if (!$validation['errors']) {\n            $event = $this->repository->store($request->all());\n            Cms::notification('Event saved successfully.', 'success');\n        } else {\n            return $validation['redirect'];\n        }\n\n        if (!$event) {\n            Cms::notification('Event could not be saved.', 'warning');\n        }\n\n        return redirect(route($this->routeBase.'.events.edit', [$event->id]));\n    }\n\n    /**\n     * Show the form for editing the specified Event.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $event = $this->repository->find($id);\n\n        if (empty($event)) {\n            Cms::notification('Event not found', 'warning');\n\n            return redirect(route($this->routeBase.'.events.index'));\n        }\n\n        return view('cms::modules.events.edit')->with('event', $event);\n    }\n\n    /**\n     * Update the specified Event in storage.\n     *\n     * @param int          $id\n     * @param EventRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, EventRequest $request)\n    {\n        $event = $this->repository->find($id);\n\n        if (empty($event)) {\n            Cms::notification('Event not found', 'warning');\n\n            return redirect(route($this->routeBase.'.events.index'));\n        }\n\n        $event = $this->repository->update($event, $request->all());\n        Cms::notification('Event updated successfully.', 'success');\n\n        if (!$event) {\n            Cms::notification('Event could not be saved.', 'warning');\n        }\n\n        return redirect(URL::previous());\n    }\n\n    /**\n     * Remove the specified Event from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $event = $this->repository->find($id);\n\n        if (empty($event)) {\n            Cms::notification('Event not found', 'warning');\n\n            return redirect(route($this->routeBase.'.events.index'));\n        }\n\n        $event->delete();\n\n        Cms::notification('Event deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.events.index'));\n    }\n\n    /**\n     * Page history.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function history($id)\n    {\n        $event = $this->repository->find($id);\n\n        return view('cms::modules.events.history')\n            ->with('event', $event);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/FAQController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse URL;\nuse Cms;\nuse Grafite\\Cms\\Models\\FAQ;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Requests\\FAQRequest;\nuse Grafite\\Cms\\Repositories\\FAQRepository;\nuse Grafite\\Cms\\Services\\ValidationService;\n\nclass FAQController extends GrafiteCmsController\n{\n    public function __construct(FAQRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the FAQ.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.faqs.index')\n            ->with('faqs', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.faqs.index')\n            ->with('faqs', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new FAQ.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.faqs.create');\n    }\n\n    /**\n     * Store a newly created FAQ in storage.\n     *\n     * @param FAQRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = app(ValidationService::class)->check(FAQ::$rules);\n\n        if (!$validation['errors']) {\n            $faq = $this->repository->store($request->all());\n            Cms::notification('FAQ saved successfully.', 'success');\n        } else {\n            return $validation['redirect'];\n        }\n\n        if (!$faq) {\n            Cms::notification('FAQ could not be saved.', 'warning');\n        }\n\n        return redirect(route($this->routeBase.'.faqs.edit', [$faq->id]));\n    }\n\n    /**\n     * Show the form for editing the specified FAQ.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $faq = $this->repository->find($id);\n\n        if (empty($faq)) {\n            Cms::notification('FAQ not found', 'warning');\n\n            return redirect(route($this->routeBase.'.faqs.index'));\n        }\n\n        return view('cms::modules.faqs.edit')->with('faq', $faq);\n    }\n\n    /**\n     * Update the specified FAQ in storage.\n     *\n     * @param int        $id\n     * @param FAQRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, FAQRequest $request)\n    {\n        $faq = $this->repository->find($id);\n\n        if (empty($faq)) {\n            Cms::notification('FAQ not found', 'warning');\n\n            return redirect(route($this->routeBase.'.faqs.index'));\n        }\n\n        $validation = app(ValidationService::class)->check(FAQ::$rules);\n\n        if (!$validation['errors']) {\n            $faq = $this->repository->update($faq, $request->all());\n            Cms::notification('FAQ updated successfully.', 'success');\n\n            if (!$faq) {\n                Cms::notification('FAQ could not be saved.', 'warning');\n            }\n        } else {\n            return $validation['redirect'];\n        }\n\n        return redirect(URL::previous());\n    }\n\n    /**\n     * Remove the specified FAQ from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $faq = $this->repository->find($id);\n\n        if (empty($faq)) {\n            Cms::notification('FAQ not found', 'warning');\n\n            return redirect(route($this->routeBase.'.faqs.index'));\n        }\n\n        $faq->delete();\n\n        Cms::notification('FAQ deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.faqs.index'));\n    }\n}\n"
  },
  {
    "path": "src/Controllers/FilesController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Config;\nuse Storage;\nuse Redirect;\nuse Response;\nuse Exception;\nuse CryptoService;\nuse Grafite\\Cms\\Models\\File;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Requests\\FileRequest;\nuse Grafite\\Cms\\Services\\FileService;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\FileRepository;\nuse Grafite\\Cms\\Services\\CmsResponseService;\n\nclass FilesController extends GrafiteCmsController\n{\n    public function __construct(\n        FileRepository $repository,\n        FileService $fileService,\n        ValidationService $validationService,\n        CmsResponseService $cmsResponseService\n    ) {\n        parent::construct();\n        $this->repository = $repository;\n        $this->fileService = $fileService;\n        $this->validation = $validationService;\n        $this->responseService = $cmsResponseService;\n    }\n\n    /**\n     * Display a listing of the Files.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.files.index')\n            ->with('files', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.files.index')\n            ->with('files', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Files.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.files.create');\n    }\n\n    /**\n     * Store a newly created Files in storage.\n     *\n     * @param FileRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = $this->validation->check(File::$rules);\n\n        if (!$validation['errors']) {\n            $file = $this->repository->store($request->all());\n        } else {\n            return $validation['redirect'];\n        }\n\n        Cms::notification('File saved successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.files.index'));\n    }\n\n    /**\n     * Store a newly created Files in storage.\n     *\n     * @param FileRequest $request\n     *\n     * @return Response\n     */\n    public function upload(Request $request)\n    {\n        $validation = $this->validation->check([\n            'location' => [],\n        ]);\n\n        if (!$validation['errors']) {\n            $file = $request->file('location');\n            $fileSaved = $this->fileService->saveFile($file, 'files/');\n            $fileSaved['name'] = CryptoService::encrypt($fileSaved['name']);\n            $fileSaved['mime'] = $file->getClientMimeType();\n            $fileSaved['size'] = $file->getClientSize();\n            $response = $this->responseService->apiResponse('success', $fileSaved);\n        } else {\n            $response = $this->responseService->apiErrorResponse($validation['errors'], $validation['inputs']);\n        }\n\n        return $response;\n    }\n\n    /**\n     * Remove a file.\n     *\n     * @param string $id\n     *\n     * @return Response\n     */\n    public function remove($id)\n    {\n        try {\n            Storage::delete($id);\n            $response = $this->responseService->apiResponse('success', 'success!');\n        } catch (Exception $e) {\n            $response = $this->responseService->apiResponse('error', $e->getMessage());\n        }\n\n        return $response;\n    }\n\n    /**\n     * Show the form for editing the specified Files.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $files = $this->repository->find($id);\n\n        if (empty($files)) {\n            Cms::notification('File not found', 'warning');\n\n            return redirect(route($this->routeBase.'.files.index'));\n        }\n\n        return view('cms::modules.files.edit')->with('files', $files);\n    }\n\n    /**\n     * Update the specified Files in storage.\n     *\n     * @param int         $id\n     * @param FileRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, FileRequest $request)\n    {\n        $files = $this->repository->find($id);\n\n        if (empty($files)) {\n            Cms::notification('File not found', 'warning');\n\n            return redirect(route($this->routeBase.'.files.index'));\n        }\n\n        $files = $this->repository->update($files, $request->all());\n\n        Cms::notification('File updated successfully.', 'success');\n\n        return Redirect::back();\n    }\n\n    /**\n     * Remove the specified Files from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $files = $this->repository->find($id);\n\n        if (empty($files)) {\n            Cms::notification('File not found', 'warning');\n\n            return redirect(route($this->routeBase.'.files.index'));\n        }\n\n        if (is_file(storage_path($files->location))) {\n            Storage::delete($files->location);\n        } else {\n            Storage::disk(config('cms.storage-location', 'local'))->delete($files->location);\n        }\n\n        $files->delete();\n\n        Cms::notification('File deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.files.index'));\n    }\n\n    /**\n     * Display the specified Images.\n     *\n     * @return Response\n     */\n    public function apiList(Request $request)\n    {\n        if (config('cms.api-key') != $request->header('cms')) {\n            return $this->responseService->apiResponse('error', []);\n        }\n\n        $files = $this->repository->apiPrepared();\n\n        return $this->responseService->apiResponse('success', $files);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/GrafiteCmsController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Routing\\Controller as BaseController;\nuse Illuminate\\Foundation\\Validation\\ValidatesRequests;\nuse Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;\n\nabstract class GrafiteCmsController extends BaseController\n{\n    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;\n\n    protected $routeBase;\n\n    protected $repository;\n\n    public function construct()\n    {\n        $this->routeBase = config('cms.backend-route-prefix', 'cms');\n    }\n}\n"
  },
  {
    "path": "src/Controllers/GrafiteCmsFeatureController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Grafite\\Cms\\Models\\Archive;\nuse Grafite\\Cms\\Services\\FileService;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\URL;\nuse Illuminate\\Support\\Facades\\View;\n\nclass GrafiteCmsFeatureController extends GrafiteCmsController\n{\n    public function sendHome()\n    {\n        return redirect('/');\n    }\n\n    /**\n     * Rollback to a previous version of an entity, a specific moment.\n     *\n     * @param int $id\n     *\n     * @return Redirect\n     */\n    public function revert($id)\n    {\n        $archive = Archive::find($id);\n\n        $model = app($archive->entity_type);\n        $modelInstance = $model->find($archive->entity_id);\n\n        $archiveData = (array) json_decode($archive->entity_data);\n\n        $modelInstance->fill($archiveData);\n        $modelInstance->save();\n\n        Cms::notification('Reversion was successful', 'success');\n\n        return redirect(URL::previous());\n    }\n\n    /**\n     * Rollback to a previous version of an entity.\n     *\n     * @param string $entity\n     * @param int    $id\n     *\n     * @return Redirect\n     */\n    public function rollback($entity, $id)\n    {\n        $modelString = str_replace('_', '\\\\', $entity);\n\n        if (!class_exists($modelString)) {\n            Cms::notification('Could not rollback Model not found', 'warning');\n\n            return redirect(URL::previous());\n        }\n\n        $model = app($modelString);\n        $modelInstance = $model->find($id);\n\n        $archive = Archive::where('entity_id', $id)->where('entity_type', $modelString)->limit(1)->offset(1)->orderBy('id', 'desc')->first();\n\n        if (!$archive) {\n            Cms::notification('Could not rollback', 'warning');\n\n            return redirect(URL::previous());\n        }\n\n        $archiveData = (array) json_decode($archive->entity_data);\n\n        $modelInstance->fill($archiveData);\n        $modelInstance->save();\n\n        Cms::notification('Rollback was successful', 'success');\n\n        return redirect(URL::previous());\n    }\n\n    /**\n     * Preview content.\n     *\n     * @param string $entity\n     * @param int    $id\n     *\n     * @return Response\n     */\n    public function preview($entity, $id)\n    {\n        $modelString = 'Grafite\\Cms\\Models\\\\'.ucfirst($entity);\n\n        if (!class_exists($modelString)) {\n            $modelString = 'Grafite\\Cms\\Models\\\\'.ucfirst($entity).'s';\n        }\n\n        $model = new $modelString();\n        $modelInstance = $model->find($id);\n\n        $data = [\n            $entity => $modelInstance,\n        ];\n\n        if (config('app.locale') != config('cms.default-language', Cms::config('cms.default-language'))) {\n            if ($modelInstance->translation(config('app.locale'))) {\n                $data = [\n                    $entity => $modelInstance->translation(config('app.locale'))->data,\n                ];\n            }\n        }\n\n        $view = 'cms-frontend::'.$entity.'.show';\n\n        if (!View::exists($view)) {\n            $view = 'cms-frontend::'.$entity.'s.show';\n        }\n\n        if ($entity === 'page') {\n            $view = 'cms-frontend::pages.'.$modelInstance->template;\n        }\n\n        if ($entity === 'blog') {\n            $view = 'cms-frontend::blog.'.$modelInstance->template;\n        }\n\n        return view($view, $data);\n    }\n\n    /**\n     * Set the default lanugage for the session.\n     *\n     * @param Request $request\n     * @param string  $lang\n     */\n    public function setLanguage(Request $request, $lang)\n    {\n        return back()->withCookie('language', $lang);\n    }\n\n    /**\n     * Delete the hero image\n     *\n     * @param  string $entity\n     * @param  int $id\n     *\n     * @return Response\n     */\n    public function deleteHero($entity, $id)\n    {\n        $entity = app('Grafite\\Cms\\Models\\\\'.ucfirst($entity))->find($id);\n\n        if (app(FileService::class)->delete($entity->hero_image)) {\n            $entity->update([\n                'hero_image' => null,\n            ]);\n            Cms::notification('Hero image deleted.', 'success');\n            return back();\n        }\n\n        Cms::notification('Hero image could not be deleted', 'error');\n        return back();\n    }\n}\n"
  },
  {
    "path": "src/Controllers/HelpController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nclass HelpController extends GrafiteCmsController\n{\n    public function main()\n    {\n        return view('cms::help');\n    }\n}\n"
  },
  {
    "path": "src/Controllers/ImagesController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Config;\nuse CryptoService;\nuse FileService;\nuse Illuminate\\Http\\Request;\nuse Cms;\nuse Storage;\nuse Grafite\\Cms\\Models\\Image;\nuse Grafite\\Cms\\Repositories\\ImageRepository;\nuse Grafite\\Cms\\Requests\\ImagesRequest;\nuse Grafite\\Cms\\Services\\CmsResponseService;\nuse Grafite\\Cms\\Services\\ValidationService;\n\nclass ImagesController extends GrafiteCmsController\n{\n    public function __construct(ImageRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Images.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function index(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.images.index')\n            ->with('images', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.images.index')\n            ->with('images', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Images.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.images.create');\n    }\n\n    /**\n     * Store a newly created Images in storage.\n     *\n     * @param ImagesRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        try {\n            $validation = app(ValidationService::class)->check(['location' => 'required']);\n            if (!$validation['errors']) {\n                foreach ($request->input('location') as $image) {\n                    $imageSaved = $this->repository->store([\n                        'location' => $image,\n                        'is_published' => $request->input('is_published'),\n                        'tags' => $request->input('tags'),\n                    ]);\n                }\n\n                Cms::notification('Image saved successfully.', 'success');\n\n                if (!$imageSaved) {\n                    Cms::notification('Image was not saved.', 'danger');\n                }\n            } else {\n                Cms::notification('Image could not be saved', 'danger');\n\n                return $validation['redirect'];\n            }\n        } catch (Exception $e) {\n            Cms::notification($e->getMessage() ?: 'Image could not be saved.', 'danger');\n        }\n\n        return redirect(route($this->routeBase.'.images.index'));\n    }\n\n    /**\n     * Store a newly created Files in storage.\n     *\n     * @param FileRequest $request\n     *\n     * @return Response\n     */\n    public function upload(Request $request)\n    {\n        $validation = app(ValidationService::class)->check([\n            'location' => ['required'],\n        ]);\n\n        if (!$validation['errors']) {\n            $file = $request->file('location');\n            $fileSaved = app(FileService::class)->saveFile($file, 'public/images', [], true);\n            $fileSaved['name'] = CryptoService::encrypt($fileSaved['name']);\n            $fileSaved['mime'] = $file->getClientMimeType();\n            $fileSaved['size'] = $file->getClientSize();\n            $response = app(CmsResponseService::class)->apiResponse('success', $fileSaved);\n        } else {\n            $response = app(CmsResponseService::class)->apiErrorResponse($validation['errors'], $validation['inputs']);\n        }\n\n        return $response;\n    }\n\n    /**\n     * Show the form for editing the specified Images.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $images = $this->repository->find($id);\n\n        if (empty($images)) {\n            Cms::notification('Image not found', 'warning');\n\n            return redirect(route($this->routeBase.'.images.index'));\n        }\n\n        return view('cms::modules.images.edit')->with('images', $images);\n    }\n\n    /**\n     * Update the specified Images in storage.\n     *\n     * @param int           $id\n     * @param ImagesRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, ImagesRequest $request)\n    {\n        try {\n            $images = $this->repository->find($id);\n\n            Cms::notification('Image updated successfully.', 'success');\n\n            if (empty($images)) {\n                Cms::notification('Image not found', 'warning');\n\n                return redirect(route($this->routeBase.'.images.index'));\n            }\n\n            $images = $this->repository->update($images, $request->all());\n\n            if (!$images) {\n                Cms::notification('Image could not be updated', 'danger');\n            }\n        } catch (Exception $e) {\n            Cms::notification($e->getMessage() ?: 'Image could not be saved.', 'danger');\n        }\n\n        return redirect(route($this->routeBase.'.images.edit', $id));\n    }\n\n    /**\n     * Remove the specified Images from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $image = $this->repository->find($id);\n\n        if (is_file(storage_path($image->location))) {\n            Storage::delete($image->location);\n        } else {\n            Storage::disk(Config::get('cms.storage-location', 'local'))->delete($image->location);\n        }\n\n        if (empty($image)) {\n            Cms::notification('Image not found', 'warning');\n\n            return redirect(route($this->routeBase.'.images.index'));\n        }\n\n        $image->forgetCache();\n        $image->delete();\n\n        Cms::notification('Image deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.images.index'));\n    }\n\n    /**\n     * Bulk image delete\n     *\n     * @param  string $ids\n     *\n     * @return Redirect\n     */\n    public function bulkDelete($ids)\n    {\n        $ids = explode('-', $ids);\n\n        foreach ($ids as $id) {\n            $image = $this->repository->find($id);\n\n            if (is_file(storage_path($image->location))) {\n                Storage::delete($image->location);\n            } else {\n                Storage::disk(Config::get('cms.storage-location', 'local'))->delete($image->location);\n            }\n\n            $image->delete();\n        }\n\n        Cms::notification('Bulk Image deletes completed successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.images.index'));\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Api\n    |--------------------------------------------------------------------------\n    */\n\n    /**\n     * Display the specified Images.\n     *\n     * @return Response\n     */\n    public function apiList(Request $request)\n    {\n        if (config('cms.api-key') != $request->header('cms')) {\n            return app(CmsResponseService::class)->apiResponse('error', []);\n        }\n\n        $images =  $this->repository->apiPrepared();\n\n        return app(CmsResponseService::class)->apiResponse('success', $images);\n    }\n\n    /**\n     * Store a newly created Images in storage.\n     *\n     * @param ImagesRequest $request\n     *\n     * @return Response\n     */\n    public function apiStore(Request $request)\n    {\n        $image = $this->repository->apiStore($request->all());\n\n        return app(CmsResponseService::class)->apiResponse('success', $image);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/LinksController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Exception;\nuse Grafite\\Cms\\Models\\Link;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\URL;\nuse Grafite\\Cms\\Requests\\LinksRequest;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\LinkRepository;\n\nclass LinksController extends GrafiteCmsController\n{\n    public function __construct(LinkRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Links.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.links.index')\n            ->with('links', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Show the form for creating a new Links.\n     *\n     * @return Response\n     */\n    public function create(Request $request)\n    {\n        $menu = $request->get('m');\n\n        return view('cms::modules.links.create')->with('menu_id', $menu);\n    }\n\n    /**\n     * Store a newly created Links in storage.\n     *\n     * @param LinksRequest $request\n     *\n     * @return Response\n     */\n    public function store(LinksRequest $request)\n    {\n        try {\n            $validation = app(ValidationService::class)->check(Link::$rules);\n\n            if (!$validation['errors']) {\n                $links = $this->repository->store($request->all());\n                Cms::notification('Link saved successfully.', 'success');\n\n                if (!$links) {\n                    Cms::notification('Link could not be saved.', 'danger');\n                }\n            } else {\n                return $validation['redirect'];\n            }\n        } catch (Exception $e) {\n            Cms::notification($e->getMessage() ?: 'Link could not be saved.', 'danger');\n        }\n\n        return redirect(route($this->routeBase.'.menus.edit', [$request->get('menu_id')]));\n    }\n\n    /**\n     * Show the form for editing the specified Links.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $links = $this->repository->find($id);\n\n        if (empty($links)) {\n            Cms::notification('Link not found', 'warning');\n\n            return redirect(route($this->routeBase.'.links.index'));\n        }\n\n        return view('cms::modules.links.edit')->with('links', $links);\n    }\n\n    /**\n     * Update the specified Links in storage.\n     *\n     * @param int          $id\n     * @param LinksRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, LinksRequest $request)\n    {\n        try {\n            $links = $this->repository->find($id);\n\n            if (empty($links)) {\n                Cms::notification('Link not found', 'warning');\n\n                return redirect(route($this->routeBase.'.links.index'));\n            }\n\n            $links = $this->repository->update($links, $request->all());\n            Cms::notification('Link updated successfully.', 'success');\n\n            if (!$links) {\n                Cms::notification('Link could not be updated.', 'danger');\n            }\n        } catch (Exception $e) {\n            Cms::notification($e->getMessage() ?: 'Links could not be updated.', 'danger');\n        }\n\n        return redirect(route($this->routeBase.'.links.edit', [$id]));\n    }\n\n    /**\n     * Remove the specified Links from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $link = $this->repository->find($id);\n        $menu = $link->menu_id;\n\n        if (empty($link)) {\n            Cms::notification('Link not found', 'warning');\n\n            return redirect(route($this->routeBase.'.menus.index'));\n        }\n\n        $order = json_decode($link->menu->order);\n        $key = array_search($id, $order);\n        unset($order[$key]);\n\n        $link->menu->update([\n            'order' => json_encode(array_values($order)),\n        ]);\n\n        $link->delete();\n\n        Cms::notification('Link deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.menus.edit', [$link->menu_id]));\n    }\n}\n"
  },
  {
    "path": "src/Controllers/MenuController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Exception;\nuse Illuminate\\Http\\Request;\nuse Cms;\nuse Grafite\\Cms\\Models\\Menu;\nuse Grafite\\Cms\\Repositories\\LinkRepository;\nuse Grafite\\Cms\\Repositories\\MenuRepository;\nuse Grafite\\Cms\\Requests\\MenuRequest;\nuse Grafite\\Cms\\Services\\CmsResponseService;\nuse Grafite\\Cms\\Services\\ValidationService;\n\nclass MenuController extends GrafiteCmsController\n{\n    protected $linkRepository;\n\n    public function __construct(MenuRepository $repository, LinkRepository $linkRepository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n        $this->linkRepository = $linkRepository;\n    }\n\n    /**\n     * Display a listing of the Menu.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.menus.index')\n            ->with('menus', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.menus.index')\n            ->with('menus', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Menu.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.menus.create');\n    }\n\n    /**\n     * Store a newly created Menu in storage.\n     *\n     * @param MenuRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        try {\n            $validation = app(ValidationService::class)->check(Menu::$rules);\n\n            if (!$validation['errors']) {\n                $menu = $this->repository->store($request->all());\n                Cms::notification('Menu saved successfully.', 'success');\n\n                if (!$menu) {\n                    Cms::notification('Menu could not be saved.', 'danger');\n                }\n            } else {\n                return $validation['redirect'];\n            }\n        } catch (Exception $e) {\n            Cms::notification($e->getMessage() ?: 'Menu could not be saved.', 'danger');\n        }\n\n        return redirect(route($this->routeBase.'.menus.edit', [$menu->id]));\n    }\n\n    /**\n     * Show the form for editing the specified Menu.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $menu = $this->repository->find($id);\n\n        if (empty($menu)) {\n            Cms::notification('Menu not found', 'warning');\n\n            return redirect(route($this->routeBase.'.menus.index'));\n        }\n\n        $links = $this->linkRepository->getLinksByMenu($menu->id);\n\n        return view('cms::modules.menus.edit')->with('menu', $menu)->with('links', $links);\n    }\n\n    /**\n     * Update the specified Menu in storage.\n     *\n     * @param int         $id\n     * @param MenuRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, MenuRequest $request)\n    {\n        try {\n            $menu = $this->repository->find($id);\n\n            if (empty($menu)) {\n                Cms::notification('Menu not found', 'warning');\n\n                return redirect(route($this->routeBase.'.menus.index'));\n            }\n\n            $menu = $this->repository->update($menu, $request->all());\n            Cms::notification('Menu updated successfully.', 'success');\n\n            if (!$menu) {\n                Cms::notification('Menu could not be updated.', 'danger');\n            }\n        } catch (Exception $e) {\n            Cms::notification($e->getMessage() ?: 'Menu could not be updated.', 'danger');\n        }\n\n        return redirect(route($this->routeBase.'.menus.edit', [$id]));\n    }\n\n    /**\n     * Remove the specified Menu from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $menu = $this->repository->find($id);\n\n        if (empty($menu)) {\n            Cms::notification('Menu not found', 'warning');\n\n            return redirect(route($this->routeBase.'.menus.index'));\n        }\n\n        $menu->delete();\n\n        Cms::notification('Menu deleted successfully.');\n\n        return redirect(route($this->routeBase.'.menus.index'));\n    }\n\n\n    /*\n    |--------------------------------------------------------------------------\n    | Api\n    |--------------------------------------------------------------------------\n    */\n\n    /**\n     * Set the order\n     *\n     * @return Response\n     */\n    public function setOrder($id, Request $request)\n    {\n        $menu = $this->repository->find($id);\n        $result = $this->repository->setOrder($menu, $request->except('_token'));\n\n        return app(CmsResponseService::class)->apiResponse('success', $result);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/PagesController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Grafite\\Cms\\Models\\Page;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Requests\\PagesRequest;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\PageRepository;\n\nclass PagesController extends GrafiteCmsController\n{\n    public function __construct(PageRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Pages.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.pages.index')\n            ->with('pages', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.pages.index')\n            ->with('pages', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Pages.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.pages.create');\n    }\n\n    /**\n     * Store a newly created Pages in storage.\n     *\n     * @param PagesRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = app(ValidationService::class)->check(Page::$rules);\n\n        if (!$validation['errors']) {\n            $pages = $this->repository->store($request->all());\n            Cms::notification('Page saved successfully.', 'success');\n        } else {\n            return $validation['redirect'];\n        }\n\n        if (!$pages) {\n            Cms::notification('Page could not be saved.', 'warning');\n        }\n\n        return redirect(route($this->routeBase.'.pages.edit', [$pages->id]));\n    }\n\n    /**\n     * Show the form for editing the specified Pages.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $page = $this->repository->find($id);\n\n        if (empty($page)) {\n            Cms::notification('Page not found', 'warning');\n\n            return redirect(route($this->routeBase.'.pages.index'));\n        }\n\n        return view('cms::modules.pages.edit')->with('page', $page);\n    }\n\n    /**\n     * Update the specified Pages in storage.\n     *\n     * @param int          $id\n     * @param PagesRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, PagesRequest $request)\n    {\n        $pages = $this->repository->find($id);\n\n        if (empty($pages)) {\n            Cms::notification('Page not found', 'warning');\n\n            return redirect(route($this->routeBase.'.pages.index'));\n        }\n\n        $pages = $this->repository->update($pages, $request->all());\n        Cms::notification('Page updated successfully.', 'success');\n\n        if (!$pages) {\n            Cms::notification('Page could not be saved.', 'warning');\n        }\n\n        return redirect(url()->previous());\n    }\n\n    /**\n     * Remove the specified Pages from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $pages = $this->repository->find($id);\n\n        if (empty($pages)) {\n            Cms::notification('Page not found', 'warning');\n\n            return redirect(route($this->routeBase.'.pages.index'));\n        }\n\n        $pages->delete();\n\n        Cms::notification('Page deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.pages.index'));\n    }\n\n    /**\n     * Page history.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function history($id)\n    {\n        $page = $this->repository->find($id);\n\n        return view('cms::modules.pages.history')\n            ->with('page', $page);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/PromotionsController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Models\\Promotion;\nuse Grafite\\Cms\\Requests\\PromotionRequest;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\PromotionRepository;\n\nclass PromotionsController extends GrafiteCmsController\n{\n    public function __construct(PromotionRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Promotions.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.promotions.index')\n            ->with('promotions', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.promotions.index')\n            ->with('promotion', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Promotions.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.promotions.create');\n    }\n\n    /**\n     * Store a newly created Promotions in storage.\n     *\n     * @param PromotionRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = app(ValidationService::class)->check(Promotion::$rules);\n\n        if (!$validation['errors']) {\n            $promotion = $this->repository->store($request->all());\n        } else {\n            return $validation['redirect'];\n        }\n\n        Cms::notification('Promotions saved successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.promotions.edit', [$promotion->id]));\n    }\n\n    /**\n     * Show the form for editing the specified Promotions.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $promotion = $this->repository->find($id);\n\n        if (empty($promotion)) {\n            Cms::notification('Promotions not found', 'warning');\n\n            return redirect(route($this->routeBase.'.promotions.index'));\n        }\n\n        return view('cms::modules.promotions.edit')->with('promotion', $promotion);\n    }\n\n    /**\n     * Update the specified Promotions in storage.\n     *\n     * @param int            $id\n     * @param PromotionRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, PromotionRequest $request)\n    {\n        $promotion = $this->repository->find($id);\n\n        if (empty($promotion)) {\n            Cms::notification('Promotions not found', 'warning');\n\n            return redirect(route($this->routeBase.'.promotions.index'));\n        }\n\n        $promotion = $this->repository->update($promotion, $request->all());\n\n        Cms::notification('Promotions updated successfully.', 'success');\n\n        return redirect(url()->previous());\n    }\n\n    /**\n     * Remove the specified Promotions from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $promotion = $this->repository->find($id);\n\n        if (empty($promotion)) {\n            Cms::notification('Promotions not found', 'warning');\n\n            return redirect(route($this->routeBase.'.promotions.index'));\n        }\n\n        $promotion->delete();\n\n        Cms::notification('Promotions deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.promotions.index'));\n    }\n}\n"
  },
  {
    "path": "src/Controllers/RssController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Http\\Response;\n\nclass RssController extends GrafiteCmsController\n{\n    protected $repo;\n\n    public function __construct(Request $request)\n    {\n        parent::construct();\n\n        $url = $request->segment(1) ?? 'page';\n\n        $this->module = str_singular($url);\n\n        if (! empty($this->module)) {\n            $this->repo = app('Grafite\\Cms\\Repositories\\\\'.ucfirst($this->module).'Repository');\n        }\n    }\n\n    public function index()\n    {\n        $module = $this->module;\n\n        $meta = config('cms.rss', [\n            'title' => config('app.name'),\n            'link' => url('/'),\n        ]);\n\n        $items = $this->repo->published();\n\n        $contents = view('cms::rss', compact('items', 'meta', 'module'));\n\n        return new Response($contents, 200, [\n            'Content-Type' => 'application/xml;charset=UTF-8',\n        ]);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/SiteMapController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Grafite\\Cms\\Services\\CmsService;\nuse Illuminate\\Http\\Response;\n\nclass SiteMapController extends GrafiteCmsController\n{\n    protected $service;\n\n    public function __construct(CmsService $service)\n    {\n        parent::construct();\n\n        $this->service = $service;\n    }\n\n    public function index()\n    {\n        $items = $this->service->collectSiteMapItems();\n\n        $contents = view('cms::site-map', compact('items'));\n\n        return new Response($contents, 200, [\n            'Content-Type' => 'application/xml;charset=UTF-8',\n        ]);\n    }\n}\n"
  },
  {
    "path": "src/Controllers/WidgetsController.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Controllers;\n\nuse Cms;\nuse Illuminate\\Http\\Request;\nuse Grafite\\Cms\\Models\\Widget;\nuse Grafite\\Cms\\Requests\\WidgetRequest;\nuse Grafite\\Cms\\Services\\ValidationService;\nuse Grafite\\Cms\\Repositories\\WidgetRepository;\n\nclass WidgetsController extends GrafiteCmsController\n{\n    public function __construct(WidgetRepository $repository)\n    {\n        parent::construct();\n\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display a listing of the Widgets.\n     *\n     * @return Response\n     */\n    public function index()\n    {\n        $result = $this->repository->paginated();\n\n        return view('cms::modules.widgets.index')\n            ->with('widgets', $result)\n            ->with('pagination', $result->render());\n    }\n\n    /**\n     * Search.\n     *\n     * @param Request $request\n     *\n     * @return Response\n     */\n    public function search(Request $request)\n    {\n        $input = $request->all();\n\n        $result = $this->repository->search($input);\n\n        return view('cms::modules.widgets.index')\n            ->with('widgets', $result[0]->get())\n            ->with('pagination', $result[2])\n            ->with('term', $result[1]);\n    }\n\n    /**\n     * Show the form for creating a new Widgets.\n     *\n     * @return Response\n     */\n    public function create()\n    {\n        return view('cms::modules.widgets.create');\n    }\n\n    /**\n     * Store a newly created Widgets in storage.\n     *\n     * @param WidgetRequest $request\n     *\n     * @return Response\n     */\n    public function store(Request $request)\n    {\n        $validation = app(ValidationService::class)->check(Widget::$rules);\n\n        if (!$validation['errors']) {\n            $widgets = $this->repository->store($request->all());\n        } else {\n            return $validation['redirect'];\n        }\n\n        Cms::notification('Widgets saved successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.widgets.edit', [$widgets->id]));\n    }\n\n    /**\n     * Show the form for editing the specified Widgets.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function edit($id)\n    {\n        $widget = $this->repository->find($id);\n\n        if (empty($widget)) {\n            Cms::notification('Widgets not found', 'warning');\n\n            return redirect(route($this->routeBase.'.widgets.index'));\n        }\n\n        return view('cms::modules.widgets.edit')->with('widget', $widget);\n    }\n\n    /**\n     * Update the specified Widgets in storage.\n     *\n     * @param int            $id\n     * @param WidgetRequest $request\n     *\n     * @return Response\n     */\n    public function update($id, WidgetRequest $request)\n    {\n        $widgets = $this->repository->find($id);\n\n        if (empty($widgets)) {\n            Cms::notification('Widgets not found', 'warning');\n\n            return redirect(route($this->routeBase.'.widgets.index'));\n        }\n\n        $widgets = $this->repository->update($widgets, $request->all());\n\n        Cms::notification('Widgets updated successfully.', 'success');\n\n        return redirect(url()->previous());\n    }\n\n    /**\n     * Remove the specified Widgets from storage.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function destroy($id)\n    {\n        $widgets = $this->repository->find($id);\n\n        if (empty($widgets)) {\n            Cms::notification('Widgets not found', 'warning');\n\n            return redirect(route($this->routeBase.'.widgets.index'));\n        }\n\n        $widgets->delete();\n\n        Cms::notification('Widgets deleted successfully.', 'success');\n\n        return redirect(route($this->routeBase.'.widgets.index'));\n    }\n}\n"
  },
  {
    "path": "src/Facades/BlogServiceFacade.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass BlogServiceFacade extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'BlogService';\n    }\n}\n"
  },
  {
    "path": "src/Facades/CmsServiceFacade.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass CmsServiceFacade extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'CmsService';\n    }\n}\n"
  },
  {
    "path": "src/Facades/CryptoServiceFacade.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass CryptoServiceFacade extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'CryptoService';\n    }\n}\n"
  },
  {
    "path": "src/Facades/EventServiceFacade.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass EventServiceFacade extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'EventService';\n    }\n}\n"
  },
  {
    "path": "src/Facades/ModuleServiceFacade.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass ModuleServiceFacade extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'ModuleService';\n    }\n}\n"
  },
  {
    "path": "src/Facades/PageServiceFacade.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Facades;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass PageServiceFacade extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'PageService';\n    }\n}\n"
  },
  {
    "path": "src/GrafiteCmsProvider.php",
    "content": "<?php\n\nnamespace Grafite\\Cms;\n\nuse Cms;\nuse Devfactory\\Minify\\Facades\\MinifyFacade;\nuse Devfactory\\Minify\\MinifyServiceProvider;\nuse Grafite\\Cms\\Console\\Keys;\nuse Grafite\\Cms\\Console\\ModuleComposer;\nuse Grafite\\Cms\\Console\\ModuleCrud;\nuse Grafite\\Cms\\Console\\ModuleMake;\nuse Grafite\\Cms\\Console\\ModulePublish;\nuse Grafite\\Cms\\Console\\ThemeGenerate;\nuse Grafite\\Cms\\Console\\ThemeLink;\nuse Grafite\\Cms\\Console\\ThemePublish;\nuse Grafite\\Cms\\Providers\\CmsEventServiceProvider;\nuse Grafite\\Cms\\Providers\\CmsModuleProvider;\nuse Grafite\\Cms\\Providers\\CmsRouteProvider;\nuse Grafite\\Cms\\Providers\\CmsServiceProvider;\nuse GrahamCampbell\\Markdown\\Facades\\Markdown;\nuse GrahamCampbell\\Markdown\\MarkdownServiceProvider;\nuse Illuminate\\Foundation\\AliasLoader;\nuse Illuminate\\Support\\Facades\\Blade;\nuse Illuminate\\Support\\Facades\\View;\nuse Illuminate\\Support\\ServiceProvider;\nuse Illuminate\\Support\\Str;\nuse Intervention\\Image\\Facades\\Image;\nuse Intervention\\Image\\ImageServiceProvider;\n\nclass GrafiteCmsProvider extends ServiceProvider\n{\n    /**\n     * Alias the services in the boot.\n     */\n    public function boot()\n    {\n        $this->publishes([\n            __DIR__.'/PublishedAssets/Views/themes' => base_path('resources/themes'),\n            __DIR__.'/PublishedAssets/Controllers' => app_path('Http/Controllers/Cms'),\n            __DIR__.'/PublishedAssets/Middleware' => app_path('Http/Middleware'),\n            __DIR__.'/PublishedAssets/Routes' => base_path('routes'),\n            __DIR__.'/PublishedAssets/Config' => base_path('config'),\n        ]);\n\n        $this->publishes([\n            __DIR__.'/Views' => base_path('resources/views/vendor/cms'),\n        ], 'backend');\n\n        $this->loadMigrationsFrom(__DIR__.'/Migrations');\n\n        $theme = config('cms.frontend-theme', 'default');\n\n        $this->loadViewsFrom(__DIR__.'/Views', 'cms');\n\n        View::addLocation(base_path('resources/themes/'.$theme));\n        View::addNamespace('cms-frontend', base_path('resources/themes/'.$theme));\n\n        /*\n        |--------------------------------------------------------------------------\n        | Blade Directives\n        |--------------------------------------------------------------------------\n        */\n\n        Blade::directive('theme', function ($expression) {\n            if (Str::startsWith($expression, '(')) {\n                $expression = substr($expression, 1, -1);\n            }\n\n            $theme = config('cms.frontend-theme');\n            $view = '\"cms-frontend::'.str_replace('\"', '', str_replace(\"'\", '', $expression)).'\"';\n\n            return \"<?php echo \\$__env->make($view, array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>\";\n        });\n\n        Blade::directive('menu', function ($expression) {\n            return \"<?php echo Cms::menu($expression); ?>\";\n        });\n\n        Blade::directive('block', function ($expression) {\n            $module = Cms::getModule();\n            return \"<?php echo optional(\\$\".$module.\")->block($expression); ?>\";\n        });\n\n        Blade::directive('languages', function ($expression) {\n            return \"<?php echo Cms::languageLinks($expression); ?>\";\n        });\n\n        Blade::directive('modules', function ($expression) {\n            return \"<?php echo Cms::moduleLinks($expression); ?>\";\n        });\n\n        Blade::directive('widget', function ($expression) {\n            return \"<?php echo Cms::widget($expression); ?>\";\n        });\n\n        Blade::directive('promotion', function ($expression) {\n            return \"<?php echo Cms::promotion($expression); ?>\";\n        });\n\n        Blade::directive('image', function ($expression) {\n            return \"<?php echo Cms::image($expression); ?>\";\n        });\n\n        Blade::directive('image_link', function ($expression) {\n            return \"<?php echo Cms::imageLink($expression); ?>\";\n        });\n\n        Blade::directive('images', function ($expression) {\n            return \"<?php echo Cms::images($expression); ?>\";\n        });\n\n        Blade::directive('edit', function ($expression) {\n            return \"<?php echo Cms::editBtn($expression); ?>\";\n        });\n\n        Blade::directive('editBtn', function ($expression) {\n            return \"<?php echo Cms::editBtnSecondary($expression); ?>\";\n        });\n\n        Blade::directive('markdown', function ($expression) {\n            return \"<?php echo Markdown::convertToHtml($expression); ?>\";\n        });\n    }\n\n    /**\n     * Register the services.\n     */\n    public function register()\n    {\n        $this->app->register(CmsServiceProvider::class);\n        $this->app->register(CmsEventServiceProvider::class);\n        $this->app->register(CmsRouteProvider::class);\n        $this->app->register(CmsModuleProvider::class);\n\n        $this->app->register(MinifyServiceProvider::class);\n        $this->app->register(MarkdownServiceProvider::class);\n        $this->app->register(ImageServiceProvider::class);\n\n        $loader = AliasLoader::getInstance();\n\n        $loader->alias('Minify', MinifyFacade::class);\n        $loader->alias('Markdown', Markdown::class);\n        $loader->alias('Image', Image::class);\n\n        /*\n        |--------------------------------------------------------------------------\n        | Register the Commands\n        |--------------------------------------------------------------------------\n        */\n\n        $this->commands([\n            ThemeGenerate::class,\n            ThemePublish::class,\n            ThemeLink::class,\n            ModulePublish::class,\n            ModuleMake::class,\n            ModuleComposer::class,\n            ModuleCrud::class,\n            Keys::class,\n        ]);\n    }\n}\n"
  },
  {
    "path": "src/Helpers/blade.php",
    "content": "<?php\n\nif (!function_exists('menu')) {\n    function menu($slug, $view = null)\n    {\n        return app('CmsService')->menu($slug, $view);\n    }\n}\n\nif (!function_exists('images')) {\n    function images($tag = null)\n    {\n        return app('CmsService')->images($tag);\n    }\n}\n\nif (!function_exists('widget')) {\n    function widget($slug)\n    {\n        return app('CmsService')->widget($slug);\n    }\n}\n\nif (!function_exists('editBtn')) {\n    function edit($module, $id = null)\n    {\n        return app('CmsService')->module($module, $id);\n    }\n}\n"
  },
  {
    "path": "src/Helpers/general.php",
    "content": "<?php\n\nif (!function_exists('sortable')) {\n    function sortable($label, $field)\n    {\n        $query = request()->query();\n        $newQuery = $query;\n\n        foreach (['field', 'dir'] as $value) {\n            if (isset($newQuery[$value])) {\n                unset($newQuery[$value]);\n            }\n        }\n\n        $newQuery['field'] = $field;\n        $newQuery['dir'] = 'asc';\n\n        if (isset($query['field'])) {\n            if ($query['field'] == $field && $query['dir'] == 'asc') {\n                $newQuery['dir'] = 'desc';\n            }\n        }\n\n        return '<a href=\"'.request()->url().'?'.http_build_query($newQuery).'\">'.$label.' <span class=\"fa fa-sort\"></span></a>';\n    }\n}\n\nif (!function_exists('cms')) {\n    function cms()\n    {\n        return app(Grafite\\Cms\\Services\\CmsService::class);\n    }\n}\n"
  },
  {
    "path": "src/Middleware/GrafiteCmsAnalytics.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Middleware;\n\nuse Closure;\nuse Grafite\\Cms\\Services\\AnalyticsService;\n\nclass GrafiteCmsAnalytics\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param \\Illuminate\\Http\\Request $request\n     * @param \\Closure                 $next\n     *\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        if (!$request->ajax()) {\n            app(AnalyticsService::class)->log($request);\n        }\n\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_07_03_133637_create_files_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateFilesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'files', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('name');\n            $table->string('location');\n            $table->integer('user');\n            $table->string('tags')->nullable();\n            $table->text('details')->nullable();\n            $table->string('mime');\n            $table->string('size');\n            $table->boolean('is_published')->default(0);\n            $table->integer('order');\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'files');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_09_29_193916_create_images_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateImagesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'images', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('location');\n            $table->string('name')->nullable();\n            $table->string('original_name');\n            $table->string('storage_location')->default('local');\n            $table->string('alt_tag')->nullable();\n            $table->string('title_tag')->nullable();\n            $table->boolean('is_published')->default(0);\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'images');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_09_29_211249_create_blogs_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateBlogsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'blogs', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('title');\n            $table->text('entry')->nullable();\n            $table->string('tags')->nullable();\n            $table->boolean('is_published')->default(0);\n            $table->string('seo_description')->nullable();\n            $table->string('seo_keywords')->nullable();\n            $table->string('url');\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'blogs');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_03_021221_create_pages_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreatePagesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'pages', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('title');\n            $table->string('url');\n            $table->text('entry')->nullable();\n            $table->string('seo_description')->nullable();\n            $table->string('seo_keywords')->nullable();\n            $table->boolean('is_published')->default(0);\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'pages');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_03_032000_create_widgets_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateWidgetsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'widgets', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('name');\n            $table->string('slug');\n            $table->text('content')->nullable();\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'widgets');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_03_032005_create_archives_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateArchivesTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'archives', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('token');\n            $table->integer('entity_id');\n            $table->string('entity_type');\n            $table->text('entity_data');\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'archives');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_12_195952_create_faqs_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateFaqsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'faqs', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('question');\n            $table->text('answer');\n            $table->boolean('is_published')->default(0);\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'faqs');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_12_196052_create_events_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateEventsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'events', function (Blueprint $table) {\n            $table->increments('id');\n            $table->date('start_date');\n            $table->date('end_date');\n            $table->string('title');\n            $table->text('details');\n            $table->string('seo_description')->nullable();\n            $table->string('seo_keywords')->nullable();\n            $table->boolean('is_published')->default(0);\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'events');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_28_174809_create_menus_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateMenusTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'menus', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('name');\n            $table->string('slug');\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'menus');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2015_10_28_175046_create_links_table.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass CreateLinksTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'links', function (Blueprint $table) {\n            $table->increments('id');\n            $table->string('name');\n            $table->boolean('external')->default(0);\n            $table->integer('page_id');\n            $table->integer('menu_id');\n            $table->string('external_url')->nullable();\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'links');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_02_03_175046_add_tags_to_images.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass AddTagsToImages extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'images', function (Blueprint $table) {\n            $table->text('tags')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'images', function ($table) {\n            $table->dropColumn('tags');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_02_03_185046_add_templates_to_pages.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass AddTemplatesToPages extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'pages', function (Blueprint $table) {\n            $table->string('template')->default('show');\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'pages', function ($table) {\n            $table->dropColumn('template');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_03_20_185046_add_templates_to_blogs.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass AddTemplatesToBlogs extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'blogs', function (Blueprint $table) {\n            $table->string('template')->default('show');\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'blogs', function ($table) {\n            $table->dropColumn('template');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_03_20_186046_add_templates_to_events.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass AddTemplatesToEvents extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'events', function (Blueprint $table) {\n            $table->string('template')->default('show');\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'events', function ($table) {\n            $table->dropColumn('template');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_06_01_002825_convert_to_published_at.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass ConvertToPublishedAt extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'pages', function (Blueprint $table) {\n            $table->dateTime('published_at')->nullable();\n        });\n\n        Schema::table(config('cms.db-prefix', '').'blogs', function (Blueprint $table) {\n            $table->dateTime('published_at')->nullable();\n        });\n\n        Schema::table(config('cms.db-prefix', '').'events', function (Blueprint $table) {\n            $table->dateTime('published_at')->nullable();\n        });\n\n        Schema::table(config('cms.db-prefix', '').'faqs', function (Blueprint $table) {\n            $table->dateTime('published_at')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'pages', function ($table) {\n            $table->dropColumn('published_at');\n        });\n\n        Schema::table(config('cms.db-prefix', '').'blogs', function ($table) {\n            $table->dropColumn('published_at');\n        });\n\n        Schema::table(config('cms.db-prefix', '').'events', function ($table) {\n            $table->dropColumn('published_at');\n        });\n\n        Schema::table(config('cms.db-prefix', '').'faqs', function ($table) {\n            $table->dropColumn('published_at');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_10_27_224359_create_translations_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateTranslationsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'translations', function (Blueprint $table) {\n            $table->increments('id');\n            $table->integer('entity_id');\n            $table->string('entity_type');\n            $table->text('entity_data')->nullable();\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'translations');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2016_12_11_034855_add_lang_to_translations_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass AddLangToTranslationsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'translations', function (Blueprint $table) {\n            $table->string('language')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'translations', function ($table) {\n            $table->dropColumn('language');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2017_01_11_132526_create_analytics_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreateAnalyticsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::create(config('cms.db-prefix', '').'analytics', function (Blueprint $table) {\n            $table->increments('id');\n            $table->text('data')->nullable();\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::drop(config('cms.db-prefix', '').'analytics');\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2017_06_10_234231_add_order_to_menus.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass AddOrderToMenus extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'menus', function (Blueprint $table) {\n            $table->text('order')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'menus', function ($table) {\n            $table->dropColumn('order');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2017_07_05_002825_add_blocks.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\n\nclass AddBlocks extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'pages', function (Blueprint $table) {\n            $table->text('blocks')->nullable();\n        });\n\n        Schema::table(config('cms.db-prefix', '').'blogs', function (Blueprint $table) {\n            $table->text('blocks')->nullable();\n        });\n\n        Schema::table(config('cms.db-prefix', '').'events', function (Blueprint $table) {\n            $table->text('blocks')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'pages', function ($table) {\n            $table->dropColumn('blocks');\n        });\n\n        Schema::table(config('cms.db-prefix', '').'blogs', function ($table) {\n            $table->dropColumn('blocks');\n        });\n\n        Schema::table(config('cms.db-prefix', '').'events', function ($table) {\n            $table->dropColumn('blocks');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2017_07_08_223935_add_entity_to_images.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass AddEntityToImages extends Migration\n{\n    /**\n     * Run the migrations.\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'images', function (Blueprint $table) {\n            $table->integer('entity_id')->nullable();\n            $table->string('entity_type')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     */\n    public function down()\n    {\n        // Dropping these columns seems to break tests\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2017_12_14_045216_add_hero_images.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass AddHeroImages extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::table(config('cms.db-prefix', '').'blogs', function (Blueprint $table) {\n            $table->string('hero_image')->nullable();\n        });\n\n        Schema::table(config('cms.db-prefix', '').'pages', function (Blueprint $table) {\n            $table->string('hero_image')->nullable();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::table(config('cms.db-prefix', '').'blogs', function ($table) {\n            $table->dropColumn('hero_image');\n        });\n\n        Schema::table(config('cms.db-prefix', '').'pages', function ($table) {\n            $table->dropColumn('hero_image');\n        });\n    }\n}\n"
  },
  {
    "path": "src/Migrations/2018_08_24_191305_create_promotions_table.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migrations\\Migration;\n\nclass CreatePromotionsTable extends Migration\n{\n    /**\n     * Run the migrations.\n     *\n     * @return void\n     */\n    public function up()\n    {\n        Schema::create('promotions', function (Blueprint $table) {\n            $table->increments('id');\n            $table->dateTime('published_at')->nullable();\n            $table->dateTime('finished_at')->nullable();\n            $table->string('slug');\n            $table->text('details')->nullable();\n            $table->nullableTimestamps();\n        });\n    }\n\n    /**\n     * Reverse the migrations.\n     *\n     * @return void\n     */\n    public function down()\n    {\n        Schema::dropIfExists('promotions');\n    }\n}\n"
  },
  {
    "path": "src/Models/Analytics.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass Analytics extends CmsModel\n{\n    public $table = 'analytics';\n\n    public $primaryKey = 'id';\n\n    public $fillable = [\n        'token',\n        'data',\n    ];\n\n    public static $rules = [];\n}\n"
  },
  {
    "path": "src/Models/Archive.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass Archive extends CmsModel\n{\n    public $table = 'archives';\n\n    public $primaryKey = 'id';\n\n    public $fillable = [\n        'token',\n        'entity_id',\n        'entity_type',\n        'entity_data',\n    ];\n\n    public static $rules = [];\n}\n"
  },
  {
    "path": "src/Models/Blog.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Services\\Normalizer;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass Blog extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'blogs';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'title' => 'required|string',\n        'url' => 'required|string',\n    ];\n\n    protected $appends = [\n        'translations',\n    ];\n\n    protected $fillable = [\n        'title',\n        'entry',\n        'tags',\n        'is_published',\n        'seo_description',\n        'seo_keywords',\n        'url',\n        'template',\n        'published_at',\n        'hero_image',\n        'blocks',\n    ];\n\n    protected $dates = [\n        'published_at' => 'Y-m-d H:i'\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    public function getEntryAttribute($value)\n    {\n        return new Normalizer($value);\n    }\n\n    public function getHeroImageUrlAttribute($value)\n    {\n        return url(str_replace('public/', 'storage/', $this->hero_image));\n    }\n\n    public function history()\n    {\n        return Archive::where('entity_type', get_class($this))->where('entity_id', $this->id)->get();\n    }\n\n    public function getBlocksAttribute($value)\n    {\n        $blocks = json_decode($value, true);\n\n        if (is_null($blocks)) {\n            $blocks = [];\n        }\n\n        return $blocks;\n    }\n}\n"
  },
  {
    "path": "src/Models/CmsModel.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Support\\Facades\\Log;\nuse Grafite\\Cms\\Models\\Link;\n\nclass CmsModel extends Model\n{\n    /**\n     * Model contructuor.\n     *\n     * @param array $attributes\n     */\n    public function __construct(array $attributes = [])\n    {\n        parent::__construct($attributes);\n\n        if (!empty(config('cms.db-prefix', ''))) {\n            $this->table = config('cms.db-prefix', '').$this->table;\n        }\n    }\n\n    /**\n     * Get a model as a translatable object\n     *\n     * @return Object\n     */\n    public function asObject()\n    {\n        if (! is_null(request('lang')) && request('lang') !== config('cms.default-language', 'en')) {\n            return $this->translationData(request('lang'));\n        }\n\n        return $this;\n    }\n\n    /**\n     * After the item is saved to the database.\n     *\n     * @param object $payload\n     */\n    public function afterSaved($payload)\n    {\n        if (!request()->is('cms/revert/*') && !request()->is('cms/rollback/*/*')) {\n            unset($payload->attributes['created_at']);\n            unset($payload->attributes['updated_at']);\n            unset($payload->original['created_at']);\n            unset($payload->original['updated_at']);\n\n            if ($payload->attributes != $payload->original) {\n                Archive::create([\n                    'token' => md5(time()),\n                    'entity_id' => $payload->attributes['id'],\n                    'entity_type' => get_class($payload),\n                    'entity_data' => json_encode($payload->attributes),\n                ]);\n                Log::info(get_class($payload).' #'.$payload->attributes['id'].' was archived');\n            }\n        }\n    }\n\n    /**\n     * When the item is being deleted.\n     *\n     * @param object $payload\n     */\n    public function beingDeleted($payload)\n    {\n        $type = get_class($payload);\n        $id = $payload->id;\n\n        Translation::where('entity_id', $id)->where('entity_type', $type)->delete();\n        Archive::where('entity_id', $id)->where('entity_type', $type)->delete();\n\n        Archive::where('entity_type', 'Grafite\\Cms\\Models\\Translation')\n            ->where('entity_data', 'LIKE', '%\"entity_id\":'.$id.'%')\n            ->where('entity_data', 'LIKE', '%\"entity_type\":\"'.$type.'\"%')\n            ->delete();\n\n        if ($type == 'Grafite\\Cms\\Models\\Page') {\n            Link::where('page_id', $id)->delete();\n        }\n    }\n\n    /**\n     * A method for getting / setting blocks\n     *\n     * @param  string $slug\n     * @return string\n     */\n    public function block($slug)\n    {\n        $block = $this->findABlock($slug);\n\n        if (!$block) {\n            $this->update([\n                'blocks' => json_encode(array_merge($this->blocks, [ $slug => '' ]))\n            ]);\n        }\n\n        return $block;\n    }\n\n    /**\n     * Find a block based on slug\n     *\n     * @param  string $slug\n     * @return string\n     */\n    public function findABlock($slug)\n    {\n        if (isset($this->blocks[$slug])) {\n            return $this->blocks[$slug];\n        }\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "src/Models/Event.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Services\\Normalizer;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass Event extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'events';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'title' => 'required',\n    ];\n\n    protected $appends = [\n        'translations',\n    ];\n\n    protected $fillable = [\n        'start_date',\n        'end_date',\n        'title',\n        'details',\n        'seo_description',\n        'seo_keywords',\n        'is_published',\n        'template',\n        'published_at',\n    ];\n\n    protected $dates = [\n        'published_at' => 'Y-m-d H:i'\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    public function getDetailsAttribute($value)\n    {\n        return new Normalizer($value);\n    }\n\n    public function history()\n    {\n        return Archive::where('entity_type', get_class($this))->where('entity_id', $this->id)->get();\n    }\n}\n"
  },
  {
    "path": "src/Models/FAQ.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass FAQ extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'faqs';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'question' => 'required',\n        'answer' => 'required',\n    ];\n\n    protected $appends = [\n        'translations',\n    ];\n\n    protected $fillable = [\n        'question',\n        'answer',\n        'is_published',\n        'published_at',\n    ];\n\n    protected $dates = [\n        'published_at'\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n}\n"
  },
  {
    "path": "src/Models/File.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass File extends CmsModel\n{\n    public $table = 'files';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'location' => 'required',\n    ];\n\n    protected $fillable = [\n        'name',\n        'location',\n        'user',\n        'tags',\n        'details',\n        'mime',\n        'size',\n        'is_published',\n        'order',\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n}\n"
  },
  {
    "path": "src/Models/Image.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Carbon\\Carbon;\nuse Config;\nuse Exception;\nuse FileService;\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Services\\AssetService;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Illuminate\\Support\\Facades\\Log;\nuse Intervention\\Image\\ImageManagerStatic as InterventionImage;\nuse Storage;\n\nclass Image extends CmsModel\n{\n    public $table = 'images';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    protected $appends = [\n        'url',\n        'js_url',\n    ];\n\n    public static $rules = [\n        'location' => 'mimes:jpeg,jpg,bmp,png,gif',\n    ];\n\n    protected $fillable = [\n        'location',\n        'name',\n        'original_name',\n        'storage_location',\n        'alt_tag',\n        'title_tag',\n        'is_published',\n        'tags',\n        'entity_id',\n        'entity_type',\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    /**\n     * Get the images url location.\n     *\n     * @param string $value\n     *\n     * @return string\n     */\n    public function getUrlAttribute()\n    {\n        if ($this->isLocalFile()) {\n            return url(str_replace('public/', 'storage/', $this->location));\n        } elseif ($this->fileExists()) {\n            return $this->getS3Image();\n        }\n\n        return $this->lostImage();\n    }\n\n    /**\n     * Get an S3 image\n     *\n     * @return string\n     */\n    public function getS3Image()\n    {\n        $url = Storage::disk(Config::get('cms.storage-location', 'local'))->url($this->location);\n\n        if (!is_null(config('cms.cloudfront'))) {\n            $url = str_replace(config('filesystems.disks.s3.bucket').'.s3.'.config('filesystems.disks.s3.region').'.amazonaws.com', config('cms.cloudfront'), $url);\n        }\n\n        return $url;\n    }\n\n    /**\n     * Get the images url location.\n     *\n     * @param string $value\n     *\n     * @return string\n     */\n    public function getJsUrlAttribute()\n    {\n        return $this->url;\n    }\n\n    /**\n     * Set Image Caches\n     */\n    public function setCaches()\n    {\n        if ($this->url && $this->js_url) {\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Simple caching tool\n     *\n     * @param  string $attribute\n     * @param  Clousre $closure\n     *\n     * @return mixed\n     */\n    public function remember($attribute, $closure)\n    {\n        $key = $attribute.'_'.$this->location;\n\n        if (!Cache::has($key)) {\n            $result = $closure();\n            Cache::forever($key, $result);\n        }\n\n        return Cache::get($key);\n    }\n\n    /**\n     * Forget the current Image caches\n     */\n    public function forgetCache()\n    {\n        foreach (['url', 'js_url'] as $attribute) {\n            $key = $attribute.'_'.$this->location;\n            Cache::forget($key);\n        }\n    }\n\n    /**\n     * Check the location of the file.\n     *\n     * @return bool\n     */\n    private function isLocalFile()\n    {\n        try {\n            if (file_exists(storage_path('app/'.$this->location))) {\n                return true;\n            }\n        } catch (Exception $e) {\n            Log::debug('Could not find the image');\n\n            return false;\n        }\n\n        return false;\n    }\n\n    /**\n     * Check if file exists\n     *\n     * @return  string\n     */\n    public function fileExists()\n    {\n        return Storage::disk(Config::get('cms.storage-location', 'local'))->exists($this->location);\n    }\n\n    /**\n     * Staged image if none are found\n     *\n     * @return string\n     */\n    public function lostImage()\n    {\n        $imagePath = app(AssetService::class)->generateImage('File Not Found');\n\n        $image = InterventionImage::make($imagePath)->resize(config('cms.preview-image-size', 800), null, function ($constraint) {\n            $constraint->aspectRatio();\n        });\n\n        return (string) $image->encode('data-url');\n    }\n}\n"
  },
  {
    "path": "src/Models/Link.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Models\\Menu;\nuse Grafite\\Cms\\Models\\Page;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass Link extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'links';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'name' => 'required',\n    ];\n\n    protected $fillable = [\n        'name',\n        'external',\n        'page_id',\n        'menu_id',\n        'external_url',\n    ];\n\n    public $with = [\n        'page'\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    public function page()\n    {\n        return $this->belongsTo(Page::class);\n    }\n\n    public function menu()\n    {\n        return $this->belongsTo(Menu::class);\n    }\n}\n"
  },
  {
    "path": "src/Models/Menu.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass Menu extends CmsModel\n{\n    public $table = 'menus';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'name' => 'required',\n        'slug' => 'required',\n    ];\n\n    protected $fillable = [\n        'name',\n        'slug',\n        'order',\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    public function getOrderAttribute($value)\n    {\n        if (is_null($value)) {\n            return '[]';\n        }\n\n        return $value;\n    }\n}\n"
  },
  {
    "path": "src/Models/Page.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Services\\Normalizer;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass Page extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'pages';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'title' => 'required',\n        'url' => 'required',\n    ];\n\n    protected $appends = [\n        'translations',\n    ];\n\n    protected $fillable = [\n        'title',\n        'url',\n        'entry',\n        'seo_description',\n        'seo_keywords',\n        'is_published',\n        'template',\n        'published_at',\n        'blocks',\n        'hero_image',\n    ];\n\n    protected $dates = [\n        'published_at' => 'Y-m-d H:i'\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    public function getEntryAttribute($value)\n    {\n        return new Normalizer($value);\n    }\n\n    public function getHeroImageUrlAttribute($value)\n    {\n        return url(str_replace('public/', 'storage/', $this->hero_image));\n    }\n\n    public function history()\n    {\n        return Archive::where('entity_type', get_class($this))->where('entity_id', $this->id)->get();\n    }\n\n    public function getBlocksAttribute($value)\n    {\n        $blocks = json_decode($value, true);\n\n        if (is_null($blocks)) {\n            $blocks = [];\n        }\n\n        return $blocks;\n    }\n}\n"
  },
  {
    "path": "src/Models/Promotion.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Services\\Normalizer;\nuse Grafite\\Cms\\Traits\\Translatable;\nuse Illuminate\\Support\\Carbon;\n\nclass Promotion extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'promotions';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'slug' => 'required',\n    ];\n\n    protected $appends = [\n        'translations',\n        'is_published',\n    ];\n\n    protected $fillable = [\n        'slug',\n        'details',\n        'published_at',\n        'finished_at',\n    ];\n\n    protected $dates = [\n        'published_at' => 'Y-m-d H:i',\n        'finished_at' => 'Y-m-d H:i',\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n\n    public function getDetailsAttribute($value)\n    {\n        return new Normalizer($value);\n    }\n\n    public function getPublishedAtAttribute($value)\n    {\n        return Carbon::parse($value)->timezone(config('app.timezone'));\n    }\n\n    public function getFinishedAtAttribute($value)\n    {\n        return Carbon::parse($value)->timezone(config('app.timezone'));\n    }\n\n    public function getIsPublishedAttribute()\n    {\n        $published = Carbon::parse($this->published_at)->timezone(config('app.timezone'));\n        $finished = Carbon::parse($this->finished_at)->timezone(config('app.timezone'));\n\n        return Carbon::now(config('app.timezone'))->between($published, $finished);\n    }\n}\n"
  },
  {
    "path": "src/Models/Translation.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass Translation extends CmsModel\n{\n    public $table = 'translations';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [];\n\n    protected $fillable = [\n        'entity_id',\n        'entity_type',\n        'entity_data',\n        'language',\n    ];\n\n    public function getDataAttribute()\n    {\n        $object = app($this->entity_type);\n\n        $attributes = (array) json_decode($this->entity_data);\n        $object->attributes = array_merge($attributes, [\n            'id' => $this->entity_id,\n        ]);\n\n        return $object;\n    }\n}\n"
  },
  {
    "path": "src/Models/Widget.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Models;\n\nuse Grafite\\Cms\\Models\\CmsModel;\nuse Grafite\\Cms\\Traits\\Translatable;\n\nclass Widget extends CmsModel\n{\n    use Translatable;\n\n    public $table = 'widgets';\n\n    public $primaryKey = 'id';\n\n    protected $guarded = [];\n\n    public static $rules = [\n        'name' => 'required',\n        'slug' => 'required',\n    ];\n\n    protected $appends = [\n        'translations',\n    ];\n\n    protected $fillable = [\n        'name',\n        'slug',\n        'content',\n    ];\n\n    public function __construct(array $attributes = [])\n    {\n        $keys = array_keys(request()->except('_method', '_token'));\n        $this->fillable(array_values(array_unique(array_merge($this->fillable, $keys))));\n        parent::__construct($attributes);\n    }\n}\n"
  },
  {
    "path": "src/Providers/CmsEventServiceProvider.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider as ServiceProvider;\n\nclass CmsEventServiceProvider extends ServiceProvider\n{\n    /**\n     * The event listener mappings for the application.\n     *\n     * @var array\n     */\n    protected $listen = [\n        'eloquent.saved: Grafite\\Cms\\Models\\Blog' => [\n            'Grafite\\Cms\\Models\\Blog@afterSaved',\n        ],\n        'eloquent.saved: Grafite\\Cms\\Models\\Page' => [\n            'Grafite\\Cms\\Models\\Page@afterSaved',\n        ],\n        'eloquent.saved: Grafite\\Cms\\Models\\Event' => [\n            'Grafite\\Cms\\Models\\Event@afterSaved',\n        ],\n        'eloquent.saved: Grafite\\Cms\\Models\\FAQ' => [\n            'Grafite\\Cms\\Models\\FAQ@afterSaved',\n        ],\n        'eloquent.saved: Grafite\\Cms\\Models\\Translation' => [\n            'Grafite\\Cms\\Models\\Translation@afterSaved',\n        ],\n        'eloquent.saved: Grafite\\Cms\\Models\\Widget' => [\n            'Grafite\\Cms\\Models\\Widget@afterSaved',\n        ],\n\n        'eloquent.created: Grafite\\Cms\\Models\\Blog' => [\n            'Grafite\\Cms\\Models\\Blog@afterCreate',\n        ],\n        'eloquent.created: Grafite\\Cms\\Models\\Page' => [\n            'Grafite\\Cms\\Models\\Page@afterCreate',\n        ],\n        'eloquent.created: Grafite\\Cms\\Models\\Event' => [\n            'Grafite\\Cms\\Models\\Event@afterCreate',\n        ],\n        'eloquent.created: Grafite\\Cms\\Models\\FAQ' => [\n            'Grafite\\Cms\\Models\\Event@afterCreate',\n        ],\n        'eloquent.created: Grafite\\Cms\\Models\\Widget' => [\n            'Grafite\\Cms\\Models\\Widget@afterCreate',\n        ],\n        'eloquent.created: Grafite\\Cms\\Models\\Link' => [\n            'Grafite\\Cms\\Models\\Link@afterCreate',\n        ],\n\n        'eloquent.deleting: Grafite\\Cms\\Models\\Blog' => [\n            'Grafite\\Cms\\Models\\Blog@beingDeleted',\n        ],\n        'eloquent.deleting: Grafite\\Cms\\Models\\Page' => [\n            'Grafite\\Cms\\Models\\Page@beingDeleted',\n        ],\n        'eloquent.deleting: Grafite\\Cms\\Models\\Event' => [\n            'Grafite\\Cms\\Models\\Event@beingDeleted',\n        ],\n        'eloquent.deleting: Grafite\\Cms\\Models\\FAQ' => [\n            'Grafite\\Cms\\Models\\FAQ@beingDeleted',\n        ],\n        'eloquent.deleting: Grafite\\Cms\\Models\\Translation' => [\n            'Grafite\\Cms\\Models\\Translation@beingDeleted',\n        ],\n        'eloquent.deleting: Grafite\\Cms\\Models\\Widget' => [\n            'Grafite\\Cms\\Models\\Widget@beingDeleted',\n        ],\n    ];\n\n    /**\n     * Register any other events for your application.\n     *\n     * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n     */\n    public function boot()\n    {\n        parent::boot();\n    }\n}\n"
  },
  {
    "path": "src/Providers/CmsModuleProvider.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Providers;\n\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass CmsModuleProvider extends ServiceProvider\n{\n    /**\n     * Register the services.\n     */\n    public function register()\n    {\n        if (Config::get('cms.load-modules', false)) {\n            $modulePath = base_path(Config::get('cms.module-directory').'/');\n            $modules = glob($modulePath.'*');\n\n            foreach ($modules as $module) {\n                if (is_dir($module)) {\n                    $module = lcfirst(str_replace($modulePath, '', $module));\n                    $moduleProvider = '\\Cms\\Modules\\_module_\\_module_ModuleProvider';\n                    $moduleProvider = str_replace('_module_', ucfirst($module), $moduleProvider);\n                    $this->app->register($moduleProvider);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/Providers/CmsRouteProvider.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider as ServiceProvider;\nuse Illuminate\\Routing\\Router;\n\nclass CmsRouteProvider extends ServiceProvider\n{\n    /**\n     * This namespace is applied to the controller routes in your routes file.\n     *\n     * In addition, it is set as the URL generator's root namespace.\n     *\n     * @var string\n     */\n    protected $namespace = 'Grafite\\Cms\\Controllers';\n\n    /**\n     * Define your route model bindings, pattern filters, etc.\n     *\n     * @param \\Illuminate\\Routing\\Router $router\n     */\n    public function boot()\n    {\n        parent::boot();\n    }\n\n    /**\n     * Define the routes for the application.\n     *\n     * @param \\Illuminate\\Routing\\Router $router\n     */\n    public function map(Router $router)\n    {\n        $router->group(['namespace' => $this->namespace], function ($router) {\n            require __DIR__.'/../Routes/web.php';\n            require __DIR__.'/../Routes/api.php';\n        });\n    }\n}\n"
  },
  {
    "path": "src/Providers/CmsServiceProvider.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Providers;\n\nuse App;\nuse Illuminate\\Foundation\\AliasLoader;\nuse Illuminate\\Support\\ServiceProvider;\nuse Grafite\\Cms\\Services\\BlogService;\nuse Grafite\\Cms\\Services\\CryptoService;\nuse Grafite\\Cms\\Services\\EventService;\nuse Grafite\\Cms\\Services\\ModuleService;\nuse Grafite\\Cms\\Services\\PageService;\nuse Grafite\\Cms\\Services\\CmsService;\n\nclass CmsServiceProvider extends ServiceProvider\n{\n    /**\n     * Register the services.\n     */\n    public function register()\n    {\n        $loader = AliasLoader::getInstance();\n\n        $loader->alias('Cms', \\Grafite\\Cms\\Facades\\CmsServiceFacade::class);\n        $loader->alias('PageService', \\Grafite\\Cms\\Facades\\PageServiceFacade::class);\n        $loader->alias('EventService', \\Grafite\\Cms\\Facades\\EventServiceFacade::class);\n        $loader->alias('CryptoService', \\Grafite\\Cms\\Facades\\CryptoServiceFacade::class);\n        $loader->alias('ModuleService', \\Grafite\\Cms\\Facades\\ModuleServiceFacade::class);\n        $loader->alias('BlogService', \\Grafite\\Cms\\Facades\\BlogServiceFacade::class);\n        $loader->alias('FileService', \\Grafite\\Cms\\Services\\FileService::class);\n\n        $this->app->bind('CmsService', function ($app) {\n            return new CmsService();\n        });\n\n        $this->app->bind('PageService', function ($app) {\n            return new PageService();\n        });\n\n        $this->app->bind('EventService', function ($app) {\n            return App::make(EventService::class);\n        });\n\n        $this->app->bind('CryptoService', function ($app) {\n            return new CryptoService();\n        });\n\n        $this->app->bind('ModuleService', function ($app) {\n            return new ModuleService();\n        });\n\n        $this->app->bind('BlogService', function ($app) {\n            return new BlogService();\n        });\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Config/cms.php",
    "content": "<?php\n\n/*\n * --------------------------------------------------------------------------\n * Grafite CMS Config\n * --------------------------------------------------------------------------\n*/\n\nreturn [\n\n    /*\n     * --------------------------------------------------------------------------\n     * Analytics\n     * --------------------------------------------------------------------------\n    */\n\n    'analytics' => 'internal',   // google, internal\n\n    /*\n     * --------------------------------------------------------------------------\n     * Pixabay\n     * --------------------------------------------------------------------------\n    */\n\n    'pixabay' => env('PIXABAY'),\n\n    /*\n     * --------------------------------------------------------------------------\n     * Database prefix\n     * --------------------------------------------------------------------------\n    */\n\n    'db-prefix' => '',\n\n    /*\n     * --------------------------------------------------------------------------\n     * Live preview in editor\n     * --------------------------------------------------------------------------\n    */\n\n    'live-preview' => false,\n\n    /*\n     * --------------------------------------------------------------------------\n     * Front-end\n     * --------------------------------------------------------------------------\n    */\n\n    'frontend-namespace' => '\\App\\Http\\Controllers\\Cms',\n    'frontend-theme' => 'default',\n\n    /*\n     * --------------------------------------------------------------------------\n     * Modules\n     * --------------------------------------------------------------------------\n    */\n\n    'load-modules' => true,\n    'module-directory' => 'cms/modules',\n    'active-core-modules' => [\n        'blog',\n        'menus',\n        'files',\n        'images',\n        'pages',\n        'widgets',\n        'promotions',\n        'events',\n        'faqs',\n    ],\n\n    /*\n     * --------------------------------------------------------------------------\n     * RSS\n     * --------------------------------------------------------------------------\n    */\n\n    'rss' => [\n        'title' => '',\n        'link' => '',\n        'description' => '',\n        'name' => '',\n    ],\n\n    /*\n     * --------------------------------------------------------------------------\n     * Site Mapped Modules\n     * --------------------------------------------------------------------------\n    */\n\n    'site-mapped-modules' => [\n        'blog' => 'Grafite\\Cms\\Repositories\\BlogRepository',\n        'page' => 'Grafite\\Cms\\Repositories\\PageRepository',\n        'events' => 'Grafite\\Cms\\Repositories\\EventRepository',\n    ],\n\n    /*\n     * --------------------------------------------------------------------------\n     * Languages\n     * --------------------------------------------------------------------------\n    */\n\n    'auto-translate' => false,\n\n    'default-language' => 'en',\n\n    'languages' => [\n        'en' => 'english',\n        'fr' => 'french',\n    ],\n\n    /*\n     * --------------------------------------------------------------------------\n     * Images and File Storage\n     * --------------------------------------------------------------------------\n    */\n\n    'storage-location' => 'local', // s3, local\n    'max-file-upload-size' => 6291456, // 6MB\n    'preview-image-size' => 800, // width - auto height\n    'cloudfront' => null, // do not include http\n\n    /*\n     * --------------------------------------------------------------------------\n     * Admin management\n     * --------------------------------------------------------------------------\n    */\n\n    'backend-title' => 'Grafite CMS',\n    'backend-route-prefix' => 'cms',\n    'backend-theme' => 'standard', // dark, standard\n    'registration-available' => false,\n    'pagination' => 24,\n\n    /*\n     * --------------------------------------------------------------------------\n     * API key and token\n     * --------------------------------------------------------------------------\n    */\n\n    'api-key' => env('CMS_API_KEY', 'apis-are-cool'),\n    'api-token' => env('CMS_API_TOKEN', 'cms-token'),\n\n    /*\n     * --------------------------------------------------------------------------\n     * Core Module Forms\n     * --------------------------------------------------------------------------\n    */\n\n    'forms' => [\n        'blog' => [\n            'identity' => [\n                'title' => [\n                    'type' => 'string',\n                ],\n                'url' => [\n                    'type' => 'string',\n                ],\n                'tags' => [\n                    'type' => 'string',\n                    'class' => 'tags',\n                ],\n            ],\n            'content' => [\n                'entry' => [\n                    'type' => 'text',\n                    'class' => 'redactor',\n                    'alt_name' => 'Content',\n                ],\n                'hero_image' => [\n                    'type' => 'file',\n                    'alt_name' => 'Hero Image',\n                ],\n            ],\n            'seo' => [\n                'seo_description' => [\n                    'type' => 'text',\n                    'alt_name' => 'SEO Description',\n                ],\n                'seo_keywords' => [\n                    'type' => 'string',\n                    'class' => 'tags',\n                    'alt_name' => 'SEO Keywords',\n                ],\n            ],\n            'publish' => [\n                'is_published' => [\n                    'type' => 'checkbox',\n                    'alt_name' => 'Published',\n                ],\n                'published_at' => [\n                    'type' => 'string',\n                    'class' => 'datetimepicker',\n                    'alt_name' => 'Publish Date',\n                    'custom' => 'autocomplete=\"off\"',\n                    'after' => '<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>',\n                ],\n            ],\n        ],\n\n        'images' => [\n            'is_published' => [\n                'type' => 'checkbox',\n                'value' => 1,\n                'custom' => 'checked',\n            ],\n            'tags' => [\n                'custom' => 'data-role=\"tagsinput\"',\n            ],\n        ],\n\n        'images-edit' => [\n            'location' => [\n                'type' => 'file',\n                'alt_name' => 'File',\n            ],\n            'name' => [\n                'type' => 'string',\n            ],\n            'alt_tag' => [\n                'type' => 'string',\n                'alt_name' => 'Alt Tag',\n            ],\n            'title_tag' => [\n                'type' => 'string',\n                'alt_name' => 'Title Tag',\n            ],\n            'tags' => [\n                'type' => 'string',\n                'class' => 'tags',\n            ],\n            'is_published' => [\n                'type' => 'checkbox',\n                'alt_name' => 'Published',\n            ],\n        ],\n\n        'page' => [\n            'identity' => [\n                'title' => [\n                    'type' => 'string',\n                ],\n                'url' => [\n                    'type' => 'string',\n                ],\n            ],\n            'content' => [\n                'entry' => [\n                    'type' => 'text',\n                    'class' => 'redactor',\n                    'alt_name' => 'Content',\n                ],\n                'hero_image' => [\n                    'type' => 'file',\n                    'alt_name' => 'Hero Image',\n                ],\n            ],\n            'seo' => [\n                'seo_description' => [\n                    'type' => 'text',\n                    'alt_name' => 'SEO Description',\n                ],\n                'seo_keywords' => [\n                    'type' => 'string',\n                    'class' => 'tags',\n                    'alt_name' => 'SEO Keywords',\n                ],\n            ],\n            'publish' => [\n                'is_published' => [\n                    'type' => 'checkbox',\n                    'alt_name' => 'Published',\n                ],\n                'published_at' => [\n                    'type' => 'string',\n                    'class' => 'datetimepicker',\n                    'alt_name' => 'Publish Date',\n                    'custom' => 'autocomplete=\"off\"',\n                    'after' => '<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>',\n                ],\n            ],\n        ],\n\n        'widget' => [\n            'name' => [\n                'type' => 'string',\n            ],\n            'slug' => [\n                'type' => 'string',\n            ],\n            'content' => [\n                'type' => 'text',\n                'class' => 'redactor',\n            ],\n        ],\n\n        'faqs' => [\n            'question' => [\n                'type' => 'string',\n            ],\n            'answer' => [\n                'type' => 'text',\n                'class' => 'redactor',\n            ],\n            'is_published' => [\n                'type' => 'checkbox',\n                'alt_name' => 'Published',\n            ],\n            'published_at' => [\n                'type' => 'string',\n                'class' => 'datetimepicker',\n                'alt_name' => 'Publish Date',\n                'custom' => 'autocomplete=\"off\"',\n                'after' => '<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>',\n            ],\n        ],\n\n        'menu' => [\n            'name' => [\n                'type' => 'string',\n            ],\n            'slug' => [\n                'type' => 'string',\n            ],\n        ],\n\n        'link' => [\n            'name' => [\n                'type' => 'string',\n            ],\n            'external' => [\n                'type' => 'checkbox',\n                'custom' => 'value=\"1\"',\n            ],\n            'external_url' => [\n                'type' => 'string',\n                'alt_name' => 'Url',\n            ],\n        ],\n\n        'files' => [\n            'is_published' => [\n                'type' => 'checkbox',\n                'value' => 1,\n            ],\n            'tags' => [\n                'custom' => 'data-role=\"tagsinput\"',\n            ],\n            'details' => [\n                'type' => 'textarea',\n            ],\n        ],\n\n        'file-edit' => [\n            'name' => [],\n            'is_published' => [\n                'type' => 'checkbox',\n                'value' => 1,\n            ],\n            'tags' => [\n                'custom' => 'data-role=\"tagsinput\"',\n            ],\n            'details' => [\n                'type' => 'textarea',\n            ],\n        ],\n\n        'event' => [\n            'identity' => [\n                'title' => [\n                    'type' => 'string',\n                ],\n                'start_date' => [\n                    'type' => 'string',\n                    'class' => 'datepicker',\n                    'custom' => 'autocomplete=\"off\"',\n                ],\n                'end_date' => [\n                    'type' => 'string',\n                    'class' => 'datepicker',\n                    'custom' => 'autocomplete=\"off\"',\n                ],\n            ],\n            'content' => [\n                'details' => [\n                    'type' => 'text',\n                    'class' => 'redactor',\n                    'alt_name' => 'Details',\n                ],\n            ],\n            'seo' => [\n                'seo_description' => [\n                    'type' => 'text',\n                    'alt_name' => 'SEO Description',\n                ],\n                'seo_keywords' => [\n                    'type' => 'string',\n                    'class' => 'tags',\n                    'alt_name' => 'SEO Keywords',\n                ],\n            ],\n            'publish' => [\n                'is_published' => [\n                    'type' => 'checkbox',\n                    'alt_name' => 'Published',\n                ],\n                'published_at' => [\n                    'type' => 'string',\n                    'class' => 'datetimepicker',\n                    'alt_name' => 'Publish Date',\n                    'custom' => 'autocomplete=\"off\"',\n                    'after' => '<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>',\n                ],\n            ],\n        ],\n        'promotion' => [\n            'identity' => [\n                'slug' => [\n                    'type' => 'string',\n                ],\n                'published_at' => [\n                    'type' => 'string',\n                    'class' => 'datetimepicker',\n                    'custom' => 'autocomplete=\"off\"',\n                    'alt_name' => 'Publish Date',\n                    'after' => '<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>',\n                ],\n                'finished_at' => [\n                    'type' => 'string',\n                    'class' => 'datetimepicker',\n                    'custom' => 'autocomplete=\"off\"',\n                    'alt_name' => 'Finish Date',\n                    'after' => '<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>',\n                ],\n            ],\n            'content' => [\n                'details' => [\n                    'type' => 'text',\n                    'class' => 'redactor',\n                    'alt_name' => 'Details',\n                ],\n            ],\n        ],\n    ],\n];\n"
  },
  {
    "path": "src/PublishedAssets/Controllers/BlogController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Cms;\n\nuse App\\Http\\Controllers\\Controller;\nuse Grafite\\Cms\\Repositories\\BlogRepository;\n\nclass BlogController extends Controller\n{\n    protected $repository;\n\n    public function __construct(BlogRepository $repository)\n    {\n        $this->repository = $repository;\n\n        if (!in_array('blog', config('cms.active-core-modules'))) {\n            return redirect('/')->send();\n        }\n    }\n\n    /**\n     * Display all Blog entries.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function all()\n    {\n        $blogs = $this->repository->published();\n        $tags = $this->repository->allTags();\n\n        if (empty($blogs)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::blog.all')\n            ->with('tags', $tags)\n            ->with('blogs', $blogs);\n    }\n\n    /**\n     * Display all Blog entries.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function tag($tag)\n    {\n        $blogs = $this->repository->tags($tag);\n        $tags = $this->repository->allTags();\n\n        if (empty($blogs)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::blog.all')\n            ->with('tags', $tags)\n            ->with('blogs', $blogs);\n    }\n\n    /**\n     * Display the specified Blog.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function show($url)\n    {\n        $blog = $this->repository->findBlogsByURL($url);\n\n        if (empty($blog)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::blog.'.$blog->template)->with('blog', $blog);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Controllers/EventsController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Cms;\n\nuse App\\Http\\Controllers\\Controller;\nuse Grafite\\Cms\\Services\\EventService;\nuse Grafite\\Cms\\Repositories\\EventRepository;\n\nclass EventsController extends Controller\n{\n    protected $repository;\n\n    public function __construct(EventRepository $repository, EventService $service)\n    {\n        $this->repository = $repository;\n        $this->service = $service;\n\n        if (!in_array('events', config('cms.active-core-modules'))) {\n            return redirect('/')->send();\n        }\n    }\n\n    /**\n     * Calendar.\n     *\n     * @param string $date\n     *\n     * @return Response\n     */\n    public function calendar($date = null)\n    {\n        if (is_null($date)) {\n            $date = date('Y-m-d');\n        }\n\n        $events = $this->service->calendar($date);\n        $calendar = $this->service->generate($date);\n\n        if (empty($calendar)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::events.calendar')\n            ->with('events', $events)\n            ->with('calendar', $calendar);\n    }\n\n    /**\n     * Display page list.\n     *\n     * @return Response\n     */\n    public function date($date)\n    {\n        $events = $this->repository->findEventsByDate($date);\n\n        if (empty($events)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::events.date')->with('events', $events);\n    }\n\n    /**\n     * Display page list.\n     *\n     * @return Response\n     */\n    public function all()\n    {\n        $events = $this->repository->published();\n\n        if (empty($events)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::events.all')->with('events', $events);\n    }\n\n    /**\n     * Display the specified Page.\n     *\n     * @param string $date\n     *\n     * @return Response\n     */\n    public function show($id)\n    {\n        $event = $this->repository->find($id);\n\n        if (empty($event)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::events.'.$event->template)->with('event', $event);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Controllers/FaqController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Cms;\n\nuse App\\Http\\Controllers\\Controller;\nuse Grafite\\Cms\\Repositories\\FAQRepository;\n\nclass FaqController extends Controller\n{\n    protected $repository;\n\n    public function __construct(FAQRepository $repository)\n    {\n        $this->repository = $repository;\n\n        if (!in_array('faqs', config('cms.active-core-modules'))) {\n            return redirect('/')->send();\n        }\n    }\n\n    /**\n     * Display all Faq entries.\n     *\n     * @param int $id\n     *\n     * @return Response\n     */\n    public function all()\n    {\n        $faqs = $this->repository->published();\n\n        if (empty($faqs)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::faqs.all')->with('faqs', $faqs);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Controllers/GalleryController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Cms;\n\nuse Config;\nuse App\\Http\\Controllers\\Controller;\nuse Grafite\\Cms\\Repositories\\ImageRepository;\n\nclass GalleryController extends Controller\n{\n    protected $repository;\n\n    public function __construct(ImageRepository $repository)\n    {\n        $this->repository = $repository;\n    }\n\n    /**\n     * Display page list.\n     *\n     * @return Response\n     */\n    public function all()\n    {\n        $images = $this->repository->published();\n        $tags = $this->repository->allTags();\n\n        if (empty($images)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::gallery.all')\n            ->with('tags', $tags)\n            ->with('images', $images);\n    }\n\n    /**\n     * Display the specified Gallery.\n     *\n     * @param string $url\n     *\n     * @return Response\n     */\n    public function show($tag)\n    {\n        $images = $this->repository->getImagesByTag($tag)->paginate(Config::get('cms.pagination'));\n        $tags = $this->repository->allTags();\n\n        if (empty($images)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::gallery.show')\n            ->with('tags', $tags)\n            ->with('images', $images)\n            ->with('title', $tag);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Controllers/PagesController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Cms;\n\nuse App\\Http\\Controllers\\Controller;\nuse Grafite\\Cms\\Repositories\\PageRepository;\n\nclass PagesController extends Controller\n{\n    protected $repository;\n\n    public function __construct(PageRepository $repository)\n    {\n        $this->repository = $repository;\n    }\n\n    /**\n     * Homepage.\n     *\n     * @param string $url\n     *\n     * @return Response\n     */\n    public function home()\n    {\n        $page = $this->repository->findPagesByURL('home');\n\n        $view = view('cms-frontend::pages.home');\n\n        if (is_null($page)) {\n            return $view;\n        }\n\n        return $view->with('page', $page);\n    }\n\n    /**\n     * Display page list.\n     *\n     * @return Response\n     */\n    public function all()\n    {\n        $pages = $this->repository->published();\n\n        if (empty($pages)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::pages.all')->with('pages', $pages);\n    }\n\n    /**\n     * Display the specified Page.\n     *\n     * @param string $url\n     *\n     * @return Response\n     */\n    public function show($url)\n    {\n        $page = $this->repository->findPagesByURL($url);\n\n        if (empty($page)) {\n            abort(404);\n        }\n\n        return view('cms-frontend::pages.'.$page->template)->with('page', $page);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Middleware/GrafiteCms.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Gate;\n\nclass GrafiteCms\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param \\Illuminate\\Http\\Request $request\n     * @param \\Closure                 $next\n     *\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        if (Gate::allows('cms')) {\n            return $next($request);\n        }\n\n        return response('Unauthorized.', 401);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Middleware/GrafiteCmsApi.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Config;\n\nclass GrafiteCmsApi\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param \\Illuminate\\Http\\Request $request\n     * @param \\Closure                 $next\n     *\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        if (Config::get('cms.api-token') == $request->get('token')) {\n            return $next($request);\n        }\n\n        return response('Unauthorized.', 401);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Middleware/GrafiteCmsLanguage.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Cookie;\n\nclass GrafiteCmsLanguage\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param \\Illuminate\\Http\\Request $request\n     * @param \\Closure                 $next\n     *\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        if (Cookie::has('language')) {\n            Config::set('app.locale', Cookie::get('language'));\n        }\n\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Routes/cms.php",
    "content": "<?php\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cms Routes\n    |--------------------------------------------------------------------------\n    */\n\n    Route::group(['namespace' => 'Cms', 'middleware' => ['cms-language', 'cms-analytics']], function () {\n        Route::get('', 'PagesController@home');\n        Route::get('pages', 'PagesController@all');\n        Route::get('page/{url}', 'PagesController@show');\n        Route::get('p/{url}', 'PagesController@show');\n\n        Route::get('gallery', 'GalleryController@all');\n        Route::get('gallery/{tag}', 'GalleryController@show');\n\n        Route::get('blog', 'BlogController@all');\n        Route::get('blog/{url}', 'BlogController@show');\n        Route::get('blog/tags/{tag}', 'BlogController@tag');\n\n        Route::get('faqs', 'FaqController@all');\n\n        Route::get('events', 'EventsController@calendar');\n        Route::get('events/{month}', 'EventsController@calendar');\n        Route::get('events/all', 'EventsController@all');\n        Route::get('events/date/{date}', 'EventsController@date');\n        Route::get('events/event/{id}', 'EventsController@show');\n    });\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/dashboard.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Admin Dashboard @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-4\">\n        <div class=\"row\">\n            @if (Session::get('original_user'))\n                <a class=\"btn btn-dark pull-right\" href=\"{{ url('/users/switch-back') }}\">Return to your Login</a>\n            @endif\n        </div>\n        <div class=\"row\">\n            <div class=\"col-lg-2\">\n                <div class=\"card card-dark text-center\">\n                    <div class=\"card-header\">\n                        Users\n                    </div>\n                    <div class=\"card-body\">\n                        <span class=\"lead\">{{ app(App\\Models\\User::class)->count() }}</span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-2\">\n                <div class=\"card card-dark text-center\">\n                    <div class=\"card-header\">\n                        Blogs\n                    </div>\n                    <div class=\"card-body\">\n                        <span class=\"lead\">{{ app(Grafite\\Cms\\Models\\Blog::class)->count() }}</span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-2\">\n                <div class=\"card card-dark text-center\">\n                    <div class=\"card-header\">\n                        Pages\n                    </div>\n                    <div class=\"card-body\">\n                        <span class=\"lead\">{{ app(Grafite\\Cms\\Models\\Page::class)->count() }}</span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-2\">\n                <div class=\"card card-dark text-center\">\n                    <div class=\"card-header\">\n                        Widgets\n                    </div>\n                    <div class=\"card-body\">\n                        <span class=\"lead\">{{ app(Grafite\\Cms\\Models\\Widget::class)->count() }}</span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-2\">\n                <div class=\"card card-dark text-center\">\n                    <div class=\"card-header\">\n                        Events\n                    </div>\n                    <div class=\"card-body\">\n                        <span class=\"lead\">{{ app(Grafite\\Cms\\Models\\Event::class)->count() }}</span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-2\">\n                <div class=\"card card-dark text-center\">\n                    <div class=\"card-header\">\n                        FAQs\n                    </div>\n                    <div class=\"card-body\">\n                        <span class=\"lead\">{{ app(Grafite\\Cms\\Models\\FAQ::class)->count() }}</span>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-4\">\n                <h2 class=\"text-center\">Server</h2>\n                <table class=\"table table-striped raw-margin-top-48\">\n                    <tr>\n                        <td>PHP Version</td>\n                        <td class=\"text-right\">{{ phpversion() }}</td>\n                    </tr>\n                    <tr>\n                        <td>Server Address</td>\n                        <td class=\"text-right\">{{ request()->server('SERVER_ADDR') }}</td>\n                    </tr>\n                    <tr>\n                        <td>Server Name</td>\n                        <td class=\"text-right\">{{ request()->server('SERVER_NAME') }}</td>\n                    </tr>\n                    <tr>\n                        <td>Server Software</td>\n                        <td class=\"text-right\">{{ request()->server('SERVER_SOFTWARE') }}</td>\n                    </tr>\n                    <tr>\n                        <td>Server Port</td>\n                        <td class=\"text-right\">{{ request()->server('SERVER_PORT') }}</td>\n                    </tr>\n                    <tr>\n                        <td>Server Protocol</td>\n                        <td class=\"text-right\">{{ request()->server('SERVER_PROTOCOL') }}</td>\n                    </tr>\n                    <tr>\n                        <td>Your Address</td>\n                        <td class=\"text-right\">{{ request()->server('REMOTE_ADDR') }}</td>\n                    </tr>\n                </table>\n            </div>\n            <div class=\"col-md-6 mt-4\">\n                <h2 class=\"text-center\">Database</h2>\n                <table class=\"table table-striped raw-margin-top-48\">\n                    <tr>\n                        <td>Type</td>\n                        <td class=\"text-right\">{{ ucfirst(app(Illuminate\\Database\\Connection::class)->getName()) }}</td>\n                    </tr>\n                    <tr>\n                        <td>Name</td>\n                        <td class=\"text-right\">{{ app(Illuminate\\Database\\Connection::class)->getDatabaseName() }}</td>\n                    </tr>\n                    @foreach (DB::select('SHOW VARIABLES LIKE \"%version%\";') as $dbVar)\n                        <tr>\n                            <td>{{ ucfirst(str_replace('_', ' ', $dbVar->Variable_name)) }}</td>\n                            <td class=\"text-right\">{{ $dbVar->Value }}</td>\n                        </tr>\n                    @endforeach\n                </table>\n            </div>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/roles/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Roles: Create @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <form method=\"POST\" action=\"{{ url('/admin/roles') }}\">\n            {!! csrf_field() !!}\n\n            <div class=\"form-group\">\n                @input_maker_label('Name')\n                @input_maker_create('name', ['type' => 'string'])\n            </div>\n\n            <div class=\"form-group\">\n                @input_maker_label('Label')\n                @input_maker_create('label', ['type' => 'string'])\n            </div>\n\n            <div class=\"form-group\">\n                <h3>Permissions</h3>\n                @foreach(Config::get('permissions', []) as $permission => $name)\n                    <div class=\"checkbox\">\n                        <label for=\"{{ $name }}\">\n                            <input type=\"checkbox\" name=\"permissions[{{ $permission }}]\" id=\"{{ $name }}\">\n                            {{ $name }}\n                        </label>\n                    </div>\n                @endforeach\n            </div>\n\n            <div class=\"form-group\">\n                <a class=\"btn btn-secondary float-left\" href=\"{{ url()->previous() }}\">Cancel</a>\n                <button class=\"btn btn-primary float-right\" type=\"submit\">Create</button>\n            </div>\n        </form>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/roles/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Roles: Edit @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <form method=\"POST\" action=\"{{ url('/admin/roles/'. $role->id) }}\">\n            <input name=\"_method\" type=\"hidden\" value=\"PATCH\">\n            {!! csrf_field() !!}\n\n            <div class=\"form-group\">\n                @input_maker_label('Name')\n                @input_maker_create('name', ['type' => 'string'], $role)\n            </div>\n\n            <div class=\"form-group\">\n                @input_maker_label('Label')\n                @input_maker_create('label', ['type' => 'string'], $role)\n            </div>\n\n            <div class=\"form-group\">\n                <h3>Permissions</h3>\n                @foreach(Config::get('permissions', []) as $permission => $name)\n                    <div class=\"checkbox\">\n                        <label for=\"{{ $name }}\">\n                            @if (stristr($role->permissions, $permission))\n                                <input type=\"checkbox\" name=\"permissions[{{ $permission }}]\" id=\"{{ $name }}\" checked>\n                            @else\n                                <input type=\"checkbox\" name=\"permissions[{{ $permission }}]\" id=\"{{ $name }}\">\n                            @endif\n                            {{ $name }}\n                        </label>\n                    </div>\n                @endforeach\n            </div>\n\n            <div class=\"form-group\">\n                <a class=\"btn btn-secondary float-left\" href=\"{{ url()->previous() }}\">Cancel</a>\n                <button class=\"btn btn-primary float-right\" type=\"submit\">Save</button>\n            </div>\n        </form>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/roles/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Roles @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <nav class=\"navbar px-0 navbar-light justify-content-between\">\n            <ul class=\"navbar-nav\">\n                <li class=\"nav-item\">\n                    <a class=\"btn btn-primary\" href=\"{{ url('admin/roles/create') }}\">Create New Role</a>\n                </li>\n            </ul>\n            {!! Form::open(['url' => 'admin/users/search', 'method' => 'post', 'class' => 'form-inline mt-2']) !!}\n                <input class=\"form-control mr-sm-2\" name=\"search\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\">\n                <button class=\"btn btn-outline-success my-2 my-sm-0\" type=\"submit\">Search</button>\n            {!! Form::close() !!}\n        </nav>\n    </div>\n\n    <div class=\"col-md-12\">\n        @if ($roles->count() === 0)\n            <div class=\"card card-dark text-center mt-4\">\n                @if (request('search'))\n                    <div class=\"card-header\">Searched for \"{{ request('search') }}\"</div>\n                @endif\n                <div class=\"card-body\">No roles found.</div>\n            </div>\n        @else\n            <table class=\"table table-striped\">\n                <thead>\n                    <th>Name</th>\n                    <th>Label</th>\n                    <th width=\"170px\" class=\"text-right\">Actions</th>\n                </thead>\n                <tbody>\n                    @foreach($roles as $role)\n                        <tr>\n                            <td>{{ $role->name }}</td>\n                            <td>{{ $role->label }}</td>\n                            <td class=\"text-right\">\n                                <div class=\"btn-toolbar justify-content-between\">\n                                    <a class=\"btn btn-outline-primary btn-sm mr-2\" href=\"{{ url('admin/roles/'.$role->id.'/edit') }}\"><span class=\"fa fa-edit\"></span> Edit</a>\n                                    <form method=\"post\" action=\"{!! url('admin/roles/'.$role->id) !!}\">\n                                        {!! csrf_field() !!}\n                                        {!! method_field('DELETE') !!}\n                                        <button class=\"btn btn-danger btn-sm\" type=\"submit\" onclick=\"return confirm('Are you sure you want to delete this role?')\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                    </form>\n                                </div>\n                            </td>\n                        </tr>\n                    @endforeach\n                </tbody>\n            </table>\n        @endif\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/users/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Users: Edit @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-4\">\n        @if (! Session::get('original_user'))\n            <a class=\"btn btn-outline-primary float-right\" href=\"{{ url('/admin/users/switch/'. $user->id) }}\">Login as this User</a>\n        @endif\n    </div>\n    <div class=\"col-md-12 mt-4\">\n        <form method=\"POST\" action=\"{{ url('/admin/users/'. $user->id) }}\">\n            <input name=\"_method\" type=\"hidden\" value=\"PATCH\">\n            {!! csrf_field() !!}\n\n            <div class=\"mt-3\">\n                @input_maker_label('Email')\n                @input_maker_create('email', ['type' => 'string'], $user)\n            </div>\n\n            <div class=\"mt-3\">\n                @input_maker_label('Name')\n                @input_maker_create('name', ['type' => 'string'], $user)\n            </div>\n\n            @include('user.meta')\n\n            <div class=\"mt-3\">\n                @input_maker_label('Role')\n                @input_maker_create('roles', ['type' => 'relationship', 'model' => 'App\\Models\\Role', 'label' => 'label', 'value' => 'name'], $user)\n            </div>\n\n            <div class=\"mt-4\">\n                <a class=\"btn btn-secondary float-left\" href=\"{{ URL::previous() }}\">Cancel</a>\n                <button class=\"btn btn-primary float-right\" type=\"submit\">Save</button>\n            </div>\n        </form>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/users/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Users @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <nav class=\"navbar px-0 navbar-light justify-content-between\">\n            <ul class=\"navbar-nav\">\n                <li class=\"nav-item\">\n                    <a class=\"btn btn-primary\" href=\"{{ url('admin/users/invite') }}\">Invite New User</a>\n                </li>\n            </ul>\n            {!! Form::open(['url' => 'admin/users/search', 'method' => 'post', 'class' => 'form-inline mt-2']) !!}\n                <input class=\"form-control mr-sm-2\" name=\"search\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\">\n                <button class=\"btn btn-outline-success my-2 my-sm-0\" type=\"submit\">Search</button>\n            {!! Form::close() !!}\n        </nav>\n    </div>\n\n    <div class=\"col-md-12\">\n        @if ($users->count() === 0)\n            <div class=\"card card-dark text-center mt-4\">\n                @if (request('search'))\n                    <div class=\"card-header\">Searched for \"{{ request('search') }}\"</div>\n                @endif\n                <div class=\"card-body\">No users found.</div>\n            </div>\n        @else\n            <table class=\"table table-striped\">\n                <thead>\n                    <th>Email</th>\n                    <th width=\"170px\" class=\"text-right\">Actions</th>\n                </thead>\n                <tbody>\n                    @foreach($users as $user)\n                        @if ($user->id !== Auth::id())\n                            <tr>\n                                <td>{{ $user->email }}</td>\n                                <td class=\"text-right\">\n                                    <div class=\"btn-toolbar justify-content-between\">\n                                        <a class=\"btn btn-outline-primary btn-sm mr-2\" href=\"{{ url('admin/users/'.$user->id.'/edit') }}\"><span class=\"fa fa-edit\"></span> Edit</a>\n                                        <form method=\"post\" action=\"{!! url('admin/users/'.$user->id) !!}\">\n                                            {!! csrf_field() !!}\n                                            {!! method_field('DELETE') !!}\n                                            <button class=\"btn btn-danger btn-sm\" type=\"submit\" onclick=\"return confirm('Are you sure you want to delete this user?')\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                        </form>\n                                    </div>\n                                </td>\n                            </tr>\n                        @endif\n                    @endforeach\n                </tbody>\n            </table>\n        @endif\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/admin/users/invite.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Users: Invite @stop\n\n@section('content')\n\n    <form class=\"form\" method=\"POST\" action=\"{{ url('/admin/users/invite') }}\">\n        {!! csrf_field() !!}\n\n        <div class=\"col-md-12\">\n            <div class=\"form-group\">\n                @input_maker_label('Email')\n                @input_maker_create('email', ['type' => 'string'])\n            </div>\n        </div>\n\n        <div class=\"col-md-12\">\n            @input_maker_label('Name')\n            @input_maker_create('name', ['type' => 'string'])\n        </div>\n\n        <div class=\"col-md-12 mt-4\">\n            @input_maker_label('Role')\n            @input_maker_create('roles', ['type' => 'relationship', 'model' => 'App\\Models\\Role', 'label' => 'label', 'value' => 'name'])\n        </div>\n\n        <div class=\"col-md-12 mt-4\">\n            <a class=\"btn btn-secondary float-left\" href=\"{{ url()->previous() }}\">Cancel</a>\n            <button class=\"btn btn-primary float-right\" type=\"submit\">Invite</button>\n        </div>\n    </form>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/auth/activate/email.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"row\">\n        <div class=\"col-md-12 form-small text-center\">\n\n            <h1 class=\"text-center\">Activate</h1>\n\n            <p>Please check your email to activate your account.</p>\n\n            <a class=\"btn btn-primary\" href=\"{{ url('activate/send-token') }}\">Request new Token</a>\n\n        </div>\n    </div>\n\n@stop\n\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/auth/activate/token.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"row\">\n        <div class=\"col-md-4 offset-md-4 text-center\">\n\n            <h1 class=\"text-center\">Activate</h1>\n\n            <p>A new token has been emailed to you.</p>\n        </div>\n    </div>\n\n@stop\n\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/auth/login.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"form-small\">\n\n        <h2 class=\"text-center\">Please sign in</h2>\n\n        <form method=\"POST\" action=\"{{ url('/login') }}\">\n            {!! csrf_field() !!}\n            <div class=\"col-md-12 mt-3\">\n                <label>Email</label>\n                <input class=\"form-control\" type=\"email\" name=\"email\" placeholder=\"Email\" value=\"{{ old('email') }}\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <label>Password</label>\n                <input class=\"form-control\" type=\"password\" name=\"password\" placeholder=\"Password\" id=\"password\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <label>\n                    Remember Me <input type=\"checkbox\" name=\"remember\">\n                </label>\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <div class=\"btn-toolbar justify-content-between\">\n                    <button class=\"btn btn-primary\" type=\"submit\">Login</button>\n                    <a class=\"btn btn-link\" href=\"{{ url('/password/reset') }}\">Forgot Password</a>\n                </div>\n            </div>\n\n            @if (config('cms.registration-available'))\n                <div class=\"col-md-12 mt-3\">\n                    <a class=\"btn raw100 btn-info btn-block\" href=\"{{ url('/register') }}\">Register</a>\n                </div>\n            @endif\n        </form>\n\n    </div>\n\n@stop\n\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/auth/passwords/email.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"form-small\">\n\n        <h2 class=\"text-center\">Forgot Password</h2>\n\n        <form method=\"POST\" action=\"{{ url('/password/email') }}\">\n            {!! csrf_field() !!}\n            @include('partials.errors')\n            @include('partials.status')\n\n            <div class=\"col-md-12 mt-3\">\n                <label>Email</label>\n                <input class=\"form-control\" type=\"email\" name=\"email\" placeholder=\"Email\" value=\"{{ old('email') }}\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <button class=\"btn btn-primary btn-block\" type=\"submit\" class=\"button\">Send Password Reset Link</button>\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <a class=\"btn btn-link\" href=\"{{ url('/login') }}\">Wait I remember!</a>\n            </div>\n        </form>\n\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/auth/passwords/reset.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"row\">\n        <div class=\"col-md-12 form-small\">\n\n            <h1 class=\"text-center\">Password Reset</h1>\n\n            <form method=\"POST\" action=\"{{ url('/password/reset') }}\">\n                {!! csrf_field() !!}\n                <input type=\"hidden\" name=\"token\" value=\"{{ $token }}\">\n\n                <div class=\"col-md-12 mt-3\">\n                    <label>Email</label>\n                    <input class=\"form-control\" type=\"email\" name=\"email\" value=\"{{ old('email') }}\">\n                </div>\n                <div class=\"col-md-12 mt-3\">\n                    <label>Password</label>\n                    <input class=\"form-control\" type=\"password\" name=\"password\">\n                </div>\n                <div class=\"col-md-12 mt-3\">\n                    <label>Confirm Password</label>\n                    <input class=\"form-control\" type=\"password\" name=\"password_confirmation\">\n                </div>\n                <div class=\"col-md-12 mt-3\">\n                    <button class=\"btn btn-primary\" type=\"submit\">Reset Password</button>\n                </div>\n            </form>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/auth/register.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"form-small\">\n        <h2 class=\"text-center\">Register</h2>\n\n        <form method=\"POST\" action=\"{{ url('/register') }}\">\n            {!! csrf_field() !!}\n\n            <div class=\"col-md-12 mt-3\">\n                <label>Name</label>\n                <input class=\"form-control\" type=\"text\" name=\"name\" value=\"{{ old('name') }}\" placeholder=\"Name\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <label>Email</label>\n                <input class=\"form-control\" type=\"email\" name=\"email\" value=\"{{ old('email') }}\" placeholder=\"Email\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <label>Password</label>\n                <input class=\"form-control\" type=\"password\" name=\"password\" placeholder=\"Password\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <label>Confirm Password</label>\n                <input class=\"form-control\" type=\"password\" name=\"password_confirmation\" placeholder=\"Password Confirmation\">\n            </div>\n            <div class=\"col-md-12 mt-3\">\n                <div class=\"btn-toolbar justify-content-between\">\n                    <button class=\"btn btn-primary\" type=\"submit\">Register</button>\n                    <a class=\"btn btn-link\" href=\"{{ url('/login') }}\">Login</a>\n                </div>\n            </div>\n        </form>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/emails/new-account.blade.php",
    "content": "<h1>Welcome {{ $user->email }}</h1>\n\n<p>You have a brand new account! We're so delighted to bring you on board.</p>\n\n<p>Email: {{ $user->email }}</p>\n<p>Password: {{ $password }}</p>\n\n<p>Go here to login: <a href=\"{{ url('login') }}\">Login</a></p>"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/errors/401.blade.php",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>AHH</title>\n\n        <link href=\"https://fonts.googleapis.com/css?family=Lato:100\" rel=\"stylesheet\" type=\"text/css\">\n\n        <style>\n            html, body {\n                height: 100%;\n            }\n\n            body {\n                margin: 0;\n                padding: 0;\n                width: 100%;\n                color: #B0BEC5;\n                display: table;\n                font-weight: 100;\n                font-family: 'Lato';\n            }\n\n            .container {\n                text-align: center;\n                display: table-cell;\n                vertical-align: middle;\n            }\n\n            .content {\n                text-align: center;\n                display: inline-block;\n            }\n\n            .title {\n                font-size: 72px;\n                margin-bottom: 40px;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n            <div class=\"content\">\n                <div class=\"title\">Unauthorized Access Denied</div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/errors/404.blade.php",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>AHH</title>\n\n        <link href=\"https://fonts.googleapis.com/css?family=Lato:100\" rel=\"stylesheet\" type=\"text/css\">\n\n        <style>\n            html, body {\n                height: 100%;\n            }\n\n            body {\n                margin: 0;\n                padding: 0;\n                width: 100%;\n                color: #B0BEC5;\n                display: table;\n                font-weight: 100;\n                font-family: 'Lato';\n            }\n\n            .container {\n                text-align: center;\n                display: table-cell;\n                vertical-align: middle;\n            }\n\n            .content {\n                text-align: center;\n                display: inline-block;\n            }\n\n            .title {\n                font-size: 72px;\n                margin-bottom: 40px;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n            <div class=\"content\">\n                <div class=\"title\">Where am I?</div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/errors/503.blade.php",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>Be right back.</title>\n\n        <link href=\"https://fonts.googleapis.com/css?family=Lato:100\" rel=\"stylesheet\" type=\"text/css\">\n\n        <style>\n            html, body {\n                height: 100%;\n            }\n\n            body {\n                margin: 0;\n                padding: 0;\n                width: 100%;\n                color: #B0BEC5;\n                display: table;\n                font-weight: 100;\n                font-family: 'Lato';\n            }\n\n            .container {\n                text-align: center;\n                display: table-cell;\n                vertical-align: middle;\n            }\n\n            .content {\n                text-align: center;\n                display: inline-block;\n            }\n\n            .title {\n                font-size: 72px;\n                margin-bottom: 40px;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n            <div class=\"content\">\n                <div class=\"title\">Be right back.</div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/partials/errors.blade.php",
    "content": "@if (isset($errors))\n    @if ($errors->count() > 0)\n        <div class=\"alert alert-danger alert-dismissible\" role=\"alert\">\n            <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\n            <ul class=\"app-errors\">\n                @foreach ($errors->all() as $error)\n                    <li>{{ $error }}</li>\n                @endforeach\n            </ul>\n        </div>\n    @endif\n@endif"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/partials/message.blade.php",
    "content": "@if (Session::has('message') && ! is_array(Session::get('message')))\n    <div class=\"alert alert-success alert-dismissible\" role=\"alert\">\n        <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\n        <span> {{ Session::get('message') }} </span>\n    </div>\n@endif"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/partials/status.blade.php",
    "content": "@if (Session::has('status'))\n    <div class=\"alert alert-success alert-dismissible\" role=\"alert\">\n        <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\n        <span> {{ Session::get('status') }} </span>\n    </div>\n@endif"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/user/meta.blade.php",
    "content": "\n    <div class=\"mt-3\">\n        @input_maker_label('Phone')\n        @input_maker_create('meta[phone]', ['type' => 'string', 'placeholder' => 'Phone'], $user)\n    </div>\n\n    <div class=\"mt-3\">\n        @input_maker_create('meta[marketing]', ['type' => 'checkbox', 'class' => 'form-check-inline'], $user)\n        @input_maker_label('I agree to recieve marketing materials')\n    </div>\n\n    <div class=\"mt-3\">\n        <input type=\"checkbox\" name=\"meta[terms_and_cond]\" class=\"form-check-inline\" value=\"1\" @if ($user->meta->terms_and_cond) checked @endif>\n        <label>I agree to the <a href=\"{{ url('terms-and-conditions') }}\">Terms &amp; Conditions</a></label>\n    </div>"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/user/password.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('pageTitle') Password @stop\n\n@section('content')\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <form method=\"POST\" action=\"{{ url('/user/password') }}\">\n                    {!! csrf_field() !!}\n\n                    <div>\n                        @input_maker_label('Old Password')\n                        @input_maker_create('old_password', ['type' => 'password', 'placeholder' => 'Old Password'])\n                    </div>\n\n                    <div class=\"mt-3\">\n                        @input_maker_label('New Password')\n                        @input_maker_create('new_password', ['type' => 'password', 'placeholder' => 'New Password'])\n                    </div>\n\n                    <div class=\"mt-3\">\n                        @input_maker_label('Confirm Password')\n                        @input_maker_create('new_password_confirmation', ['type' => 'password', 'placeholder' => 'Confirm Password'])\n                    </div>\n\n                    <div class=\"mt-3\">\n                        <div class=\"btn-toolbar justify-content-between\">\n                            <button class=\"btn btn-primary pull-right\" type=\"submit\">Save</button>\n                            <a class=\"btn btn-secondary pull-left\" href=\"{{ URL::previous() }}\">Cancel</a>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Setup/resources/views/user/settings.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('pageTitle') Settings @stop\n\n@section('content')\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <form method=\"POST\" action=\"{{ url('/user/settings') }}\">\n                    {!! csrf_field() !!}\n\n                    <div>\n                        @input_maker_label('Email')\n                        @input_maker_create('email', ['type' => 'string'], $user)\n                    </div>\n\n                    <div class=\"mt-3\">\n                        @input_maker_label('Name')\n                        @input_maker_create('name', ['type' => 'string'], $user)\n                    </div>\n\n                    @include('user.meta')\n\n                    @if ($user->roles->first()->name === 'admin' || $user->id == 1)\n                        <div class=\"mt-3\">\n                            @input_maker_label('Role')\n                            @input_maker_create('roles', ['type' => 'relationship', 'model' => 'App\\Models\\Role', 'label' => 'label', 'value' => 'name'], $user)\n                        </div>\n                    @endif\n\n                    <div class=\"mt-3\">\n                        <div class=\"btn-toolbar justify-content-between\">\n                            <button class=\"btn btn-primary\" type=\"submit\">Save</button>\n                            <a class=\"btn btn-link\" href=\"/user/password\">Change Password</a>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/assets/js/theme.js",
    "content": "$(function(){\n\n\n\n});"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/assets/sass/_basic.scss",
    "content": "/*\n|--------------------------------------------------------------------------\n| Base\n|--------------------------------------------------------------------------\n*/\n\nhtml, body {\n    height: 100%;\n    min-height: 100%;\n    overflow-y: auto;\n}\n\n.homepage {\n    background-image: url('/img/pexels-photo-28938.jpg');\n    background-size: cover;\n    background-position: center center;\n}\n\n.site-wrapper {\n    margin: 50px auto;\n    min-height: calc(100% - 98px);\n    padding: 24px 0;\n}\n\n.menu {\n    margin-top: 15px;\n}\n\n.menu a {\n    padding: 0 8px;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Calendar\n|--------------------------------------------------------------------------\n*/\n\n.calendar {\n    width: 100%;\n    min-height: 100%;\n}\n\n    .calendar th {\n        background-color: #DDD;\n        padding: 8px;\n    }\n\n    .calendar td {\n        vertical-align: top;\n        padding: 8px;\n        text-align: left;\n        border: 1px solid #EEE;\n        height: 160px;\n        width: calc(100% / 7);\n    }\n\n    .calendar td .today {\n        background-color: #DDD;\n    }\n\n    .calendar td .date {\n        float: right;\n        text-align: right;\n        width: 100%;\n    }\n    .calendar td .content {\n        float: right;\n        width: 100%;\n    }\n\n.cal-link {\n    margin-top: 24px;\n}\n\n.calendar-links {\n    margin-bottom: 84px;\n}\n\n.previous {\n    float: left;\n}\n\n.next {\n    float: right;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Footer\n|--------------------------------------------------------------------------\n*/\n\n.footer {\n    width: 100%;\n    height: 50px;\n    background-color: #222;\n    color: #FFF;\n}\n\n.footer p {\n    line-height: 50px;\n    margin: 0 0 0 24px;\n    padding: 0;\n}\n\n.footer {\n    .btn {\n        margin: 14px 8px 0 8px;\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/assets/sass/_theme.scss",
    "content": "/*\n|--------------------------------------------------------------------------\n| Packages\n|--------------------------------------------------------------------------\n*/\n\n@import '~bootstrap/scss/bootstrap';\n\n/*\n|--------------------------------------------------------------------------\n| Base\n|--------------------------------------------------------------------------\n*/\n\n@import \"resources/themes/themeTemplate/assets/sass/_basic.scss\";\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/blog/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') A delightful collection of posts by me over the years. Feel free to browse through the past and present while I build software for the future. @endsection\n@section('seoKeywords') @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Blog</h1>\n\n    <div class=\"row\">\n        <div class=\"col-md-8\">\n            @foreach($blogs as $blog)\n                <div class=\"card entry-row\">\n                    <div class=\"card-header\">\n                        @if (config('app.locale') !== config('cms.default-language'))\n                            @if ($blog->translation(config('app.locale')))\n                                <a href=\"{!! URL::to('blog/'.$blog->translation(config('app.locale'))->data->url) !!}\">{!! $blog->translation(config('app.locale'))->data->title !!} - <span>{!! $blog->published_at !!}</span></a>\n                            @endif\n                        @else\n                            <a href=\"{!! URL::to('blog/'.$blog->url) !!}\">{!! $blog->title !!} - <span>{!! \\Carbon\\Carbon::parse($blog->published_at)->format('d M, Y') !!}</span></a>\n                        @endif\n                    </div>\n                    <div class=\"card-body\">\n                    {!! str_limit($blog->entry->plain(), 300) !!}\n                    </div>\n                </div>\n            @endforeach\n\n            {!! $blogs !!}\n        </div>\n\n        <div class=\"col-md-4\">\n            @foreach($tags as $tag)\n                <a href=\"{{ url('blog/tags/'.$tag) }}\" class=\"btn btn-default\">{{ $tag }}</a>\n            @endforeach\n        </div>\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('blog')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/blog/featured-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $blog->seo_description }} @endsection\n@section('seoKeywords') {{ $blog->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">{!! $blog->title !!} <span class=\"pull-right\">{!! \\Carbon\\Carbon::parse($blog->published_at)->format('d M, Y') !!}</span></h1>\n\n    <div class=\"well entry-row\">\n        <img class=\"thumbnail img-responsive\" src=\"{{ $blog->hero_image_url }}\" alt=\"\">\n    </div>\n\n    <div class=\"entry-row\">\n        {!! $blog->entry !!}\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('blog', $blog->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/blog/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $blog->seo_description }} @endsection\n@section('seoKeywords') {{ $blog->seo_keywords }} @endsection\n\n@section('content')\n\n    <div class=\"container\">\n\n        <h1 class=\"page-header\">{!! $blog->title !!} <span class=\"pull-right\">{!! \\Carbon\\Carbon::parse($blog->published_at)->format('d M, Y') !!}</span></h1>\n@widget('test')\n        <div class=\"entry-row\">\n            {!! $blog->entry !!}\n        </div>\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('blog', $blog->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/events/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"container\">\n\n        <h1 class=\"page-header\">Events</h1>\n\n        @foreach($events as $event)\n            @if (config('app.locale') !== config('cms.default-language'))\n                <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->translationData(config('app.locale'))->title }}</a><br>\n            @else\n                <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->title }}</a><br>\n            @endif\n        @endforeach\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/events/calendar.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <div class=\"row\">\n        <div class=\"col-md-12 mb-4\">\n            {!! $calendar->asHtml([ 'class' => 'calendar', 'dates' => $events ]); !!}\n            {!! $calendar->links('cal-link btn btn-secondary'); !!}\n        </div>\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/events/date.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Events ({{ $date->format('d M, Y') }})</h1>\n\n    @foreach($events as $event)\n        @if (config('app.locale') !== config('cms.default-language'))\n            <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->translationData(config('app.locale'))->title }}</a><br>\n        @else\n            <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->title }}</a><br>\n        @endif\n    @endforeach\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/events/featured-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $event->seo_description }} @endsection\n@section('seoKeywords') {{ $event->seo_keywords }} @endsection\n\n@section('content')\n\n    <div class=\"container\">\n\n        <div class=\"jumbotron\">\n            <h1>Featured Event</h1>\n            <h2>{{ $event->title }}</h2>\n        </div>\n\n        @if (config('app.locale') !== config('cms.default-language'))\n            <h1>{!! $event->translationData(config('app.locale'))->title !!}</h1>\n            <p>{!! $event->translationData(config('app.locale'))->start_date !!} - {!! $event->translationData(config('app.locale'))->end_date !!}</p>\n            {!! $event->translationData(config('app.locale'))->details !!}\n        @else\n            <h1>{!! $event->title !!}</h1>\n            <p>{!! $event->start_date !!} - {!! $event->end_date !!}</p>\n            {!! $event->details !!}\n        @endif\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events', $event->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/events/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $event->seo_description }} @endsection\n@section('seoKeywords') {{ $event->seo_keywords }} @endsection\n\n@section('content')\n\n    <div class=\"container\">\n\n        @if (config('app.locale') !== config('cms.default-language'))\n            <h1>{!! $event->translationData(config('app.locale'))->title !!}</h1>\n            <p>{!! $event->translationData(config('app.locale'))->start_date !!} - {!! $event->translationData(config('app.locale'))->end_date !!}</p>\n            {!! $event->translationData(config('app.locale'))->details !!}\n        @else\n            <h1>{!! $event->title !!}</h1>\n            <p>{!! $event->start_date !!} - {!! $event->end_date !!}</p>\n            {!! $event->details !!}\n        @endif\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events', $event->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/faqs/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">FAQs</h1>\n\n    <div class=\"entry-row\">\n        @widget('faq-description')\n    </div>\n\n    @foreach($faqs as $faq)\n        @if (config('app.locale') !== config('cms.default-language'))\n            <blockquote>{!! $faq->translationData(config('app.locale'))->question !!}</blockquote>\n            <div class=\"well\">\n                {!! $faq->translationData(config('app.locale'))->answer !!}\n            </div>\n            @editBtn('faqs', $faq->id)\n        @else\n            <blockquote>{!! $faq->question !!}</blockquote>\n            <div class=\"well\">\n                {!! $faq->answer !!}\n            </div>\n            @editBtn('faqs', $faq->id)\n        @endif\n    @endforeach\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('faqs')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/gallery/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Gallery</h1>\n\n    <div class=\"col-md-6\">\n        @foreach ($images as $image)\n            <img class=\"thumbnail img-responsive\" alt=\"{{ $image->alt_tag }}\" src=\"{{ $image->url }}\" />\n        @endforeach\n    </div>\n    <div class=\"col-md-6\">\n        @foreach($tags as $tag)\n            <a href=\"{{ url('gallery/'.$tag) }}\" class=\"btn btn-default\">{{ $tag }}</a>\n        @endforeach\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('images')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/gallery/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1>Gallery ({{ $title }})</h1>\n\n    <div class=\"col-md-8\">\n        @foreach ($images as $image)\n            <img alt=\"{{ $image->alt_tag }}\" src=\"{{ $image->url }}\" />\n        @endforeach\n    </div>\n    <div class=\"col-md-4\">\n        @foreach($tags as $tag)\n            <a href=\"{{ url('gallery/'.$tag) }}\" class=\"btn btn-default\">{{ $tag }}</a>\n        @endforeach\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('images')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/layout/master.blade.php",
    "content": "<!doctype html>\n\n<html lang=\"{{ app()->getLocale() }}\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <meta name=\"viewport\" content=\"width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1\">\n\n        <title>{{ config('app.name') }} @if (isset($page) && !is_null($page->title)) - {{ $page->title }} @endif</title>\n\n        <meta name=\"description\" content=\"@yield('seoDescription')\">\n        <meta name=\"keywords\" content=\"@yield('seoKeywords')\">\n        <meta name=\"author\" content=\"\">\n\n        <meta property=\"og:title\" content=\"@if (isset($page) && !is_null($page->title)) - {{ $page->title }} @endif\">\n        <meta property=\"og:description\" content=\"@yield('seoDescription')\">\n        <meta property=\"og:image\" content=\"\">\n        <meta property=\"og:url\" content=\"\">\n\n        <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css\">\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"{{ asset('css/app.css') }}\">\n\n        @yield('stylesheets')\n    </head>\n\n    <body>\n\n        @theme('partials.navigation')\n\n        <div class=\"site-wrapper @if (Request::is('/')) homepage @endif\">\n            <div class=\"container-fluid\">\n                @yield('content')\n            </div>\n        </div>\n\n        <div class=\"footer container-fluid navbar-fixed-bottom\">\n            <ul class=\"nav\">\n                <li class=\"nav-item\">\n                    <span class=\"nav-text\">&copy; {{ date('Y') }}</span>\n                </li>\n                @can('cms')\n                    <li class=\"nav-item\"><a class=\"btn btn-sm btn-link\" href=\"{{ url(config('cms.backend-route-prefix', 'cms').'/dashboard') }}\">CMS</a></li>\n                    @yield('cms')\n                @else\n                    <li class=\"nav-item\"><a class=\"btn btn-sm btn-link\" href=\"{{ url('login') }}\">Login</a></li>\n                @endcan\n            </ul>\n        </div>\n    </body>\n\n    <script type=\"text/javascript\">\n        var _token = '{!! csrf_token() !!}';\n        var _url = '{!! url(\"/\") !!}';\n    </script>\n    @yield(\"pre-javascript\")\n    <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-1.12.0.min.js\"></script>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js\" integrity=\"sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q\" crossorigin=\"anonymous\"></script>\n    <script type=\"text/javascript\" src=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js\"></script>\n    <script type=\"text/javascript\" src=\"{{ asset('js/app.js') }}\"></script>\n    @yield('javascript')\n</html>\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/pages/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Pages Directory</h1>\n\n    <table class=\"table table-striped\">\n        @foreach($pages as $page)\n            <tr>\n                <td><a href=\"{!! url('page/'.$page->url) !!}\">{{ $page->title }}</a></td>\n            </tr>\n        @endforeach\n    </table>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages')\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/pages/featured-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $page->seo_description }} @endsection\n@section('seoKeywords') {{ $page->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <div class=\"jumbotron\">\n        <img class=\"thumbnail img-responsive\" src=\"{{ $page->hero_image_url }}\" alt=\"\">\n    </div>\n\n    <h2>{{ $page->title }}</h2>\n\n    {!! $page->block('main') !!}\n\n    {!! $page->entry !!}\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages', $page->id)\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/pages/home.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@if (isset($page))\n    @section('seoDescription') {{ $page->seo_description }} @endsection\n    @section('seoKeywords') {{ $page->seo_keywords }} @endsection\n@endif\n\n@section('content')\n\n<div class=\"homepage-banner\">\n    <h1>{{ config('app.name') }}</h1>\n    <p class=\"lead\">Fluent, Minimalism</p>\n</div>\n\n<div class=\"container\">\n\n    @if (isset($page))\n        {!! $page->entry !!}\n    @else\n        <div class=\"row homepage-container\">\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Basics</h3>\n                    <p>In order to add content to this page login to Cms and add a home page. Remember you can set up\n                        your own Auth for Cms or run the artisan command: <code>php artisan cms:setup</code> to get\n                        a prebuilt auth system.</p>\n                    <p>Once you're all set up try building a menu with slug: main, and a widget with the slug: widget. You'll see the theme display them right away!</p>\n                </div>\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Custom Templates</h3>\n                    <p>By default the homepage has its own template but you can add any by following these details:</p>\n                    <p>To create custom templates for different purposes simply make a view in <br>\n                        the <code>resources/themes/{theme-name}/{module-name}</code> directory that looks similar to: `xxxx-template.blade.php`. <br>\n                        This means you still have full control of blade templating but your pages can easily swap out views.</p>\n                </div>\n            </div>\n        </div>\n        <div class=\"row homepage-container\">\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Custom Themes</h3>\n                    <p>You can easily generate a theme template via the command: <code>php artisan theme:generate {name}</code> </p>\n                    <p>The theme's files will be placed in the following directory: <code>resources/themes/{name}</code></p>\n                    <p>To include files either use the blade code: <code>&#64;theme</code> or include a file with the <code>cms-frontend::</code> namespace.</p>\n                </div>\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Widgets, Menus, Images &amp; Includes</h3>\n                    <p>Widgets are easy to add to any template since they can be injected with the <code>&#64;menu('slug')</code>, <code>&#64;widget('slug')</code> or <code>&#64;images('tag')</code>. If you don't suppy a tag for the images you will get all images. To include a theme view you can easily use: <code>&#64;theme('path.in.theme')</code>.</p>\n                </div>\n                <br>\n            </div>\n        </div>\n    @endif\n\n</div>\n@endsection\n\n@section('cms')\n    @if (isset($page))\n        @edit('pages', $page->id)\n    @endif\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/pages/markdown-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $page->seo_description }} @endsection\n@section('seoKeywords') {{ $page->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">{{ $page->title }}</h1>\n\n    @markdown($page->entry)\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages', $page->id)\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/pages/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $page->seo_description }} @endsection\n@section('seoKeywords') {{ $page->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">{!! $page->title !!}</h1>\n\n    <div class=\"entry-row\">\n        {!! $page->entry !!}\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages', $page->id)\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/partials/main-menu.blade.php",
    "content": "@foreach($links as $link)\n    @if ($link->external)\n        <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url($link->external_url) }}\">{{ $link->name }}</a></li>\n    @else\n        <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('p/'.$link->page->url) }}\">{{ $link->name }}</a></li>\n    @endif\n@endforeach"
  },
  {
    "path": "src/PublishedAssets/Theme/resources/themes/themeTemplate/partials/navigation.blade.php",
    "content": "<nav class=\"navbar navbar-expand-md navbar-dark fixed-top bg-dark\">\n    <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarCollapse\" aria-controls=\"navbarCollapse\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n        <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse\" id=\"navbarCollapse\">\n        <ul class=\"navbar-nav mr-auto\">\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('/') }}\">Home</a></li>\n            @menu('main', 'cms-frontend::partials.main-menu')\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('blog') }}\">Blog</a></li>\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('events') }}\">Events</a></li>\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('faqs') }}\">FAQs</a></li>\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('gallery') }}\">Gallery</a></li>\n            @modules()\n            @languages()\n        </ul>\n        <ul class=\"navbar-nav px-3\">\n            <li class=\"nav-item text-nowrap\">\n                @if (auth()->user())\n                    <a class=\"nav-link\" href=\"{!! url('user/settings') !!}\"><span class=\"fa fa-fw fa-user\"></span> Settings</a>\n                @else\n                    <a class=\"nav-link\" href=\"{!! url('login') !!}\"><span class=\"fa fa-fw fa-sign-in\"></span> Login</a>\n                @endif\n            </li>\n        </ul>\n    </div>\n</nav>\n\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/assets/js/theme.js",
    "content": "$(function(){\n\n\n\n});"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/assets/sass/_basic.scss",
    "content": "/*\n|--------------------------------------------------------------------------\n| Base\n|--------------------------------------------------------------------------\n*/\n\nhtml, body {\n    height: 100%;\n    min-height: 100%;\n    overflow-y: auto;\n}\n\n.homepage {\n    background-position: center center;\n}\n\n.homepage-container {\n    .col-md-6 .well {\n        height: 260px;\n    }\n    h3 {\n        margin: 0px 0px 16px 0px;\n    }\n}\n\n.homepage-banner {\n    text-align: center;\n    height: 600px;\n    margin: -100px -15px 24px -15px;\n    background-color: #DFDBE5;\n    background-image: url($triangles);\n    h1 {\n        margin: 0;\n        padding: 250px 0 0 0;\n        font-size: 6em;\n        font-weight: bold;\n        color: #FFF;\n    }\n    p.lead {\n        text-transform: uppercase;\n        color: #FFF;\n    }\n}\n\n.entry-row {\n    margin-bottom: 24px;\n}\n\n.site-wrapper {\n    margin: 50px auto;\n    min-height: calc(100% - 98px);\n    padding: 24px 0;\n    .container-fluid {\n        .container {\n            h1 {\n                margin: 0;\n            }\n            .page-header {\n                margin-bottom: 24px;\n            }\n        }\n    }\n}\n\n.menu a {\n    padding: 0 8px;\n}\n\n.profile-image {\n    display: block;\n    width: 300px;\n    height: 300px;\n    border-radius: 50%;\n    background-color: #222;\n    background-position: center center;\n    background-size: cover;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Nav\n|--------------------------------------------------------------------------\n*/\n\n.user-tabs {\n    margin-bottom: 24px;\n}\n\n/*\n|--------------------------------------------------------------------------\n| Calendar\n|--------------------------------------------------------------------------\n*/\n\n.calendar {\n    width: 100%;\n    min-height: 100%;\n}\n\n    .calendar th {\n        background-color: #DDD;\n        padding: 8px;\n    }\n\n    .calendar td {\n        vertical-align: top;\n        padding: 8px;\n        text-align: left;\n        border: 1px solid #EEE;\n        height: 160px;\n        width: calc(100% / 7);\n    }\n\n    .calendar td .today {\n        background-color: #DDD;\n    }\n\n    .calendar td .date {\n        float: right;\n        text-align: right;\n        width: 100%;\n    }\n    .calendar td .content {\n        float: right;\n        width: 100%;\n    }\n\n.cal-link {\n    margin-top: 24px;\n}\n\n.calendar-links {\n    margin-bottom: 84px;\n}\n\n.previous {\n    float: left;\n}\n\n.next {\n    float: right;\n}\n\n.footer {\n    .nav-link {\n        padding: 0 1rem;\n    }\n}\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/assets/sass/_patterns.scss",
    "content": "$triangles: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAPXCAYAAADKZlaaAAAgAElEQVR4Xuy9CZAlyVkm6Fe8eC/P917my7uy7urqW6J1dOtAahok0TuLkMkWdpEMzNbAhNmuGSZshjFsQSNYG2DRSMOsBIwGdhljh2WWnZ0BhoHhkBCS+lSf1dXV1XWfeVTlu8+I8GPtj8ysriMz3xURLyKee3dZWfcLd//98z883P3//+/H//Spryq0SxFCiIsrV+jZyxd2e0T//z4RwBhzjDGihLI+m9LVNQJ3IIAxEhgTMj46hkeSKY2OTwjY3BFrN9epT81Hqll3PUN4MGsZRkJJRRXa9ZMWKSxvF5ZSqh499iA2E4nIjmEvwaWUaG1jXV1evY79HmAikZAPHTlO/O5nkO0rpdSp82ew7diDFMPTvgkhHCFEYb9kGIZIJkxmGgmUSCQQweGfTsuxxeqNtY6+ExhjmEJf3gVo22BMmgmzI1k8nUTdWCwRSJom/8zTn2ZPPf5hd3xCCPQrv/tl1LRasRxvr4MiGItEIkEp0a9erxhGoR7GhE+MjtKJsTFf1vBtDJ4/8QpyOHwW41EyE5NoeW5RYYIRUshX7OKBWAhHgZGybBs2MPcIxyhFsH8bjoK5UmowZ+EhAJgSKgjFJJeZwtnJDCIe6tXk+IRKj010qqhcSIlaViuwuZZKIttxkMMd1bQtyTmnGGGJkJJS61xH2g/r0P75JQRnyL4KRso0EpiQ8J9BdxonHDSv+HHvgrFASsGCL5SUg93wKiQbVkuVquWBynFlbUW+ffHcjopi2Raq1KtSShlNRWrzEsGdA8YYz03PisWZOTY7lev5tZNK8WtrK6zaqHXcBsYItiRCf5PfgQzvZgAWUvKVG6v45LnTA31hOp7dCD8IhjoERmBM3ctNXTQC/SIAepRKpsTE6JjWqX7B3KO+Qkqt3ljDXAgfe4lO0xhjgREe2DdDYcSVlIEdxIKcmbGRUfHw0fsHhq1PYxVccHL28kVcqpZ96uLOZsGQODuVo/O52dh+bKWU4sK1y7Ra73yDHAj4HnaCMYYDhZJSUgYGTSMBRk0GThKJfg/1HsoJTSml5I3CBmm2mh633FtzW46HOGUmaVQvLnobua7lBwKjqRH1e1/8srueCin4N194hv3Ns9/yo6tItwn7I4MxajAj0uPQwu+NAKNUzedmfN1fwCXYpetX2fUba5GfDnCIWJ5f4OMj44REwZsr8oj7OQAsLccidxuAKaWeGun8HIFHbQulUNzOax5B03szlBJlJpIil8myybHx3hvapSZ8ozMTk3R8ZKyLtjEHJ+am1RzY3YPNHdcobNktbnNO0aYDhtAG4d2nEe5UFnNzfb2jcA5NmmaUjXa8WCmzSq3ahb7v/OiWkc390S8H5l6ELFUrqBGCs3ej2RDPvPbSrvpWqpa5ZVsDW0N6wbaXOgZjAu5tclM5sTy7QOemZ1A39xCw971+Y7UbndXOWDtM1I4GYKEkv5m/iV49fTL2itiL8vpVBy4zKQF7na/nRr/E1+2GAAFCiICD1sToOE0Y+pLJzymBA+5GMa+jXLZAdh1ZEAZPVD9h37ttDC6wcoAC+Dd0Simfm8rR5fmlWIwPdoCVakWeuXKBweE5yALf2GMHDqPR1EiQ3QbWl1KKX11bYflSIbA+w9ARJoRjhODykTAGUcIJnEyYBKKE2QBJVhzBxfW1lY4vGvyMAL57npKmibRBKgzaG00ZEobBP/XU0+yTT37CHQAXHH3xd76MwKNdl3sRYJRycFTR2MQTAUKIyk5OgnON7wO0HFu++MZrUb58RpPjE27ULyUENoEdfyN9B1d30CsCwnYcClGKUGAvQzBwkUVaTbvGAiMMxjetz10jd28FggmXSrL0ZJrnJjMslfRvbQUH4anJDOuBNU+Czrese50fPICg6yYgKAGMwpZtC9uxIEiBwP0gGObgfNR1gzGsAPcAy7OLCM5AvRXMDQb+x9HezkEgy9XVlR1ZGzrEBRZ7uJeCgOKw6BZcMeF8uUQc7nQ4DH8fgzvjb7zwXTcUdacCzEkbpby/QoSsdcaoEELSXDrLl+YWGRiD29kuFFJ85cYaA8P+jmU7+hwhbfjdY77vMQCDZb1QKqHvvflKtFe0kCl5N+KAN+ywbZa7wUc/ey8Cmu45WK1QSolyrUK98JoLVnIfe3PpnxEbqAEYIbR98eDjSAfWNFBBH953AE9NZgYmgxcdwwb4wrXL6EZhw4vmemoDGBLuP3Q0thc0N4ob6vraaiycBXqa4K1Kg6aOlkqJfLFA681658MAZ5qAokcwwZJRJoFSu3MB9ZMagU0EwOHw61/4EoILUyEE/8YL32F/+9y3NTy7IEAIVikzNfTrchwVBGMkU2ZKTqXTgaylcMN56vwZsutFWIhB3rp855MT45S4nM+6xAMBzB1uQ4gPWH8ldW2/YbEJBIgwxlLJ0BhDAhy4d11RQgT4Dkxnsi7NM1CI+10IoWImM0V7TbcExrSWZeGgnZrb4QJnbogQtrkNznkQJQx3NUNPGz2SGuH7ZuZ7/l6D8TgGQVu8VK2w8m4GtZ2U69YZVXGlUM/4tdPbXn5XCAnbtlWhUmK7GVt7abffOmDpfOX0SVKq7M52V282UL3ViC2T4V4YMsa44IKlJyb58vymMXgnR0qFEF+9uc6KldIdzWEw+CJXF2WIHBH6VRvf6t9hAAajRqVWQc++vnuIum+S6IZvIbDpMUmGzmNSq0BvCGi6595w66OWsCxLrRduhmrT08d4PKnqOiGgASe3i3Ee4O1J2swH/AA2E716rXoy3T01IqXiLauJ3758gbYGnB8SIqrnp2fYTB+5SHoCIaBK1XqNn7tyUa9Rd+EdNHW0kEJd7TbHEsYcBZjLa8uBzI2WBoOeLhqBThAghMiPPfER9JM/8mPuDT942kP0b5xyj3eCQ7fPgLE8BpeG3Q479s9D9O/8dC7Qs3u+VOKnLpyJ1Hd+YnQMLc9D1C+FNA76gxOrNwMMwA6w+ghMMKXDaPzdnk8Fqax16RYBWBcMxlQuO0UhL3iQBRy05qfncJ/GZtWyWth1gghxgf3aJm00GIQdChGTwKIkY5pGa6epgG/2Ym4O9xDxjQgBNhcjUt/e3dQRDKXX1ldRG8cFjjYNbKGNrIRxVBt1VGt04XAd0DsKNrZzVy7RSytX9+wxX8pLiNgPSKxQdgP3c5CvF2ja980t0vnpGTQ2MrolqxJrGzdpvlx0/xsMvwhjd/0K5WBCKtQ7BmCMVK1el8+8+uIt6paQyjwUYrkXcoQoigfIWzgUSEd3kJrueTBzJ6SQKzfW7slxNBhpwtMrOK5gSGY+wLKVExSrmB+7o5gPGCKzr6+vuoeMsBS4hH/g8H2oV2/vsIxjJzmAHvLUubeH+hDR6fz4Rh2tFM+XS6xa7z+/Uqdj6fc5cCxpR8HUbx+6fjwQgMv9r/zCr6JcZgqon/nfPf8d9o3nvxOPwfk0CoKxSCQSFJiedIkPAnAemxwbp2MjwaaVAAPT86+/jIDyMwpl3+yCyE6mgRV4oGeFKGAVRRkxQsKRgkAuHkKGfZHDOhKpQyUGx0yEEBkbHeUzmSk2yPQ8y3OLnjhotWwLWFE6RGDwjwkpNg3C3IEISnDoowQi2RGwA8vYblhSySRfnl3sypALuaINw4iRgwuwGtYgOvXu77Jr9AUjW9jzSUP0fbFcxvDehbUUqxX+0snX9tQ1y7ZRpV6JbTq7bucG9tZAI2Iahto3t0jmpmeVZVt4o1yAxZUoqfResltQwXD+T5/6quug1rRaYPwNDVd6D2OJXxWMOcEIU8Ji++GN36T5PyJN9+w/xnv1sLZxQ0e47AIQwSGwN2ElpIx37iVCKZ/NTpMDC/tCAPje76NSCI6T9OzliziMlOnjY+P86PLBrg5/g12BOusdkvG8dvqk3hh3Btc9T3lBHQ1zcHnlam9zECAN9O2DxwQLSqgCSmh9R9+j8gxJtfc//Bj/uc/+tLt2OtxR/+y3v4QdDvdFuuyGgHtxyBjVebfjpSNmwuQz2Wzg+whI23Xx2hW2cnM91IBC9Mb++SU33QDG4aKMDDVwIRUOohubVgu1Wi3371qzzputFm5aLXp0+SBamp13//+QF6ECSuURVZzdfbZSbDqdldl0hgza+RAiQvfNLvS2Z99hEsCYw0U090QubfRtUcKO4NSNaVcI8lsH/q3zS8ch4nx+eoZ043QAwQZJ0/RMT/waW7ftgoO+APYGhOBuSUoZBcO/4o4QuFAqUXBiCHMBRrBvvvBMW70p1crghAGBRm2fDfN4vZaNEHAUwmRxZj6WgRte47VXe64B2HYc9exrL8LGLci+dV8dIgAfGkqodpjtEK84P6bpngc3u+ACWayUSBipRQaHyjs9hyECGKQBOYS7f413YZSqQ0v78VQ6G9qBCgnvTFECFXGYcrHcDhilVC7NLpCpdLTzKt+tBID3ybNvRSYyKLRKvCVY99TRihcr5e7yKt0OwoAMwJtrKAIuOKCExpoSOuyaORj5zISpvvCzP48PLi670b9/+9y32Tdf+O5ghIlYr4wCdaDOuR2xadtT3LnpaTQoo37LtuX3Tr4WWmfAhdysgjyeoXAQjZPSBTCW5paBF+4HG80Gr7ea2LItwoXAlBCptowE2xfVZiKhPvGhH8DAdIAUwpV6lTRazQAkDWMXOLRUqYNGixAqgWY5l8mS7GTak4hbL8YE5+rFmXkv7w+U7dixcYwDY7a1TRvt2FRs0kYLFQlD4e4aYpqmODC31GmwlWSMYYNBYGy0CzCHQJQ6FwL+de9pStUyUlHhrldINuyWKlXKnc7dQCcMolNeOPEKhly/exUwZOdLBRTWe7NBgghO6rPZHB0fHdP49DER+B9/9Lfks69/D2ujRh8oBlQVLuL0ASogsEPWjaZ7HvSEKF5rNnGhVIjEJmMQaLlGAzT4hE/DYgCGOSaEoEePPYiSZvjyAUMumfPXLqGNYmEQ6thVn5BX+aEjx2Nl7JJKyrOXLgzx5VtXKtDTw3tRRwPF69W16+1yKu3aL6xjYfD+BXr0hJHoCR9dKb4I3H/oGP/lz33ejQIBJ+Iv/PZv4ijRHQ5yZiDPYMpMRf7ycJAYhqVvggkfHx1lE2NjAxNJSClPnnubhI1hBSKqlucXpcEMSTCOTcTYwCbap44hShEMvK6Rt9UU9UYdtRyb2LYNe2IwBUDEH25n5GGMqfc88AhemJm7XVIulaS1er3tpbdPwxtcswpzheITKekFkJQQiJyUuew0hVzgYSuJRELMT814fc8jbe4Qx3HCNty+5YFz/laUsGzZluLcoRiDYwgcX6LDxAbOLLNTM2T8Vp7RvaGBO5eoMSTBXMEeXUghOOeQoxpIRiXC7mS5Ou9wwWuNWmS+1aVqBb5ZfetxUA1IJflbF86ylRvtGVsazQaqtRpcDVFO7k7mAXJvL+RmIT+w5IKH1vGxk7EM8hn8/dM/pcDbQ5fwIwAXggR8aAdvYwk/WDGRUNM9h2Mibe6ItZvrXh8KwjE4j6TAGHOMQnDJg7G7YYp7HuDtaRtNjYhHjj0QGt2UUopGq6HOXL7A4GIpCgWiO9MTk/Lg4nJkDj7tcFVK8ssr11ixovd37bDy8negtJNSujnM4uBYCZS1hFCVMjUltJd6EuW2Usmk/PxnP0ceOnrcjf79m2f/gf39i89EeUiByz6SSiGMtA04cOA97pAxJuencwO/hNooFvhbF8+FZv8yO5VDc1O5yF2Se6weoWkOqPlb20Zey1L1Rk00rRaxbBvS6ymEIF8tuA3KnnQInNQXZ+bUex961271wRh6yxA8HJFNOgIYXgBwkgFDeGYyzacn0yxpJkPzXtwtSCqZEjOZKT/O04JzgSzH8qPtUOEJeYRtbiPLtrjNo0MbnTAS8mAHabUIwcJMmKGeR1hfIYp0O7oXqJy31lyh9qDvhk9AqVYZ+H5mT4XG4GvKSaFcxg6PnlPF2sYGf+PsqY6+s/lyXnIuwj0fAa8+4KwBuYBTZpJLpKgQ8Wd89ANi/Ij5o1EJ9Pdj/JFr0zUIEqooJh0tHpEboBb4FgKa7jkcygCejKs31jBQpeiyOwIYE45RSHJ7ga+6VEOxadrKB4wPLOwb+IEEDhhX1q6jlRtrkXtVINLhwMI+PDk+ETnZdxFYrtxYI+v5m3EZT3TGgZGElAEIDDw95soKSwTwNuhwSWwmEphRvfWMjiL6I+ny3KL4jc//kvu9sWzbjf6F6AJdOkMA6FETCZNS7czbGWAhfQrWxKnJNA4DAwvsvZ57/WXI3zdQtFJmEu1fWBIJllCEhMAhdKBoBNs5rMHbkbxuXt5GQzRbTWQ5NlFSYkKJlApJKYTnH/GEYahPfPBJzFjbpl1a5HqroeqNRsy/G8NtAKaECIhYyaWzGGieo5BOZHJsQqbHJ/y6O+CwPresVtuXJNiVw9/e4O7MdmxYh7jt2EAfD04nQilJlAqPFxwhVMxmp+jE6PiugECgg8EYC5suw9q/RecMVM4EonthnwksUmozn2/HJcxO4wopYduOKlRKoU0r1g5oy7blt19+vqM5gfemXKvAhab2Ft0CFlgkDi7uv7XXAEeH4XAoa6dZ3f2uDcDd4RWKp91IO4wwJWzgF/6hACRmQmi65/BMKHxUNop591Cty+4IAP0zQhjoZMICE6SfHZr1EYyXhxb34+nMYPIBK6W4zW1y9tJFUm3UwqIDXcsBl1gPHb0/NErc9QDuqlCqlvnFa1eG6rKhX8y8qH/rMIIxR0hhpFD3a9EAcwDvhgEYpROGAZTQsXlHvJjvYWoDImR+5tOfoY8/8hhyuMP/+plvsX946blhgqDvsUJUvcEMarQ3lvTdl27AHwRgDkfMlMqmJ0PxfZVK8QvXLrPVmzf8GXAHrc5kp9FCbraDJ/Uj/SCwbeRttVqofisvr004d4CyeTsvL1EqGCdYgzH57vsfJkuz810MSwmEMG22mqLaqEMUTxd1I/OoUL3s/SIzvJ0FhQt6iKbMZadoOkIOtbCmZ8Yn3dySPhZgCMJNq9X9mcBHoYJsWirlGoThT8uxgY6YulTESEnZo8OsV/IDjf3hxf17nm9SycFGsLvRvZtUzohz4VLsdxLd2wlGEPBSrdWAHrqTxwN9BsZYbdQjz6wF4/iHl56H81NH+JVrFW7ZVmDf846EGvBDxw8evSUBRkg4ApgGdOkGAW0A7gatED0LlJXAH0YxxVHLQxAiGEMliqZ7DtV0gEeRKNcqNGx5tcKF0pY0Lv0zYiEyACMJAXhDVOA78Oh9DyKIwAiyQKj1RrEgz1+7FPkNGND35jJTZHF2viPvzCBx7qWvltUSb104G/l56WXsg6gDBtJ7PHWBtQW5CX270ykwHg/4MmQnDMEBkRCCkwmT6nQkg9CywfY5lc6or/7ir7kXZJDz7Qtf+03Q7cEKFcHeGaPcNMxQGA8jCN/ARYbo3/npXKhSMrUsS3zvzdcD/94nEybk+hXJRFJH/XqkmRYYR1pbeXmtFuTlVU3boo4NRl43cE7CGaddXl6PxNm1GUywXJiele9/5Pt6WsswQmCwJk3b4rVajXHB/RY5yPaHxgAM0YZSKcjrK8DwCylQolYIxnwqnWUjyZSvooOheStaf9tw52t/UWgcjGGW42zRRjsUGAvgrBG0QZgSwqczUyw9tjMTGKWMJwL23NumchYC2IAdKqXCm9G9CCvU5bmyvTLwWqPBOjVOtm/OmycUQqpYLuGWbXnT4ABbEUKIE2ffohvFQkdSwFqxUcrrKNcttCDg5ejyoVtOGhghYFZgw3bn25Hy7PGQNgD3i2AI6gMVBcHd3S2GQGwtwm0IaLrn0KmDsCxLrRdu9nSoDd1ofBYInBfAmzssBmCMkRJDSJkykhoRjwaVDxgwFhKdv3IR58tFnzUsuOZhLT62/zAaHYneBcbdKAkp1Im3T+lozSDUZzPal6idqOeBIUF1R8MVhMj99AHviZkwUcB3If2IrOv2iUDSNPlnnv40e+rxD7vRv//1u3/Pvv3y8322OpzVwYCYMpN6bY7g9BNCZHp8nITNyAHf+zfOvo2r9eBYWKbTWbQ4M6dz/fagx2DsbG4ZeTcpm+sc8vLatk0QxnCvA0xGPefl7UGkrqsYhqE+/oGP4ISR6Lru3RXAkchxbF6p10NngOhlcBhtGkV7qRuVOoRQYCSk0+kMyk6mscGMqIh+j5zAvgf5f2FfG0SBaMtWy8LacHEv2hDhanPHjRC2bQtSsG3SRkugNPbc6HmHAIxSdXjpwD17Mwi8ShgGyOGbemxH98K3AQyFQrpMduBhuWfuXg8FkvANalnhMLQqpDgXEhfKxVixRFxavabOXrrQ8f6/0WqgWrPBlZRDfyedMAx5aOnAPS8hrBnKfVV06QQBbQDuBKUIPEMJRX5+lCIAQSRF1HTP4Zw2IYWbP1NHtnQ2PxD5BlFunT0dwFMYuxulYdsMQD7gXGYKH1pc9vXSQUopqo2aOnv5Yiwuau7WyGQyJR44dNRXDAN4C9wuXjt9UnuOBgE2RlxJtfvhrBcjcAhpoG+HEtZ9w2DSNMxYvCtBqEmU+xhNjajf++KX3e9802q50b9RHs+gZQ+bAXHQeESl/2TC5LlsNpQXcTcKef72pfO+ywapAPbP7eOppAlR0Hr930V5b8/L29rMy8sbVgvbtgV5GjElBMg2fcnL6/f7BNTPjx5/kCzPLXrdlXIcR1TqNQY0sdEtWHbN/BKRwQLVONw7zmSnCOT3jUMhBKv56VnMqO/L5+1wqZbVCiXlbpjmFO7ibMdBNre3ooQ5TJIC+levo4SBCWx6MssyE5N3QEAwlqZpemr9vUXlLDiYeyFJO0Q+C9eZeED5kR3uiFqjMfBvulJKNm1LlSrlgcvi9btQa9TEc6+/0tW48uWCS5futSxRaw/SEO2fX7oXB4U4l+66oEsHCGgDcAcgReER8EyCzQvBdOgXh2jMFxIYEzI+Oob9ppuJAh5hk3Ft44abn0SXzhEIGwuBcg0yw+ctxyiVBxaXSS4z1fnkdfnkxetXELwjcS2UUj43PcNmp3KRHiJEj5y+cA5bMaBNCvNE7Ej9vIPAwEzQ1aE+5AZgGCLQtMGNRcpMakroMCtpn7IlDIN/6qmn2Sef/IQb/ftX3/km+84rL/TZ6vBWBwq/RMKk1MdokuFF19+Rz03nQst8APkVn3vtJQR/+1WmJjMI8r3q9FPvIAzG3c3cvNZmXt5mA1uOTRzHwbAnV2DklTI2efxgzzM3nRNPPPoe3y5cIUISrCKVWo1Fcw8bLwMwzDls+UZTIzyXyTKfc+X6tXzt2S44MwxiXQNq25jmwfZtHh3OXYNwy7aF49iuQw0Yb6UH9z5AMwu5gN/RBcwNRhljvS93cPjjkLtXcFjXJBeCglEZvg0qROl+4ENVrlU9NXT3ogSlagU1Ws1eqoa+DujC3z3/na7khDvpcq1yb5qprlqJ/sPjY+N8MTd3z4sIjBtCCqoZFTqbY20A7gynaDwFudmAi4UE674WDXDCI6Wmew7PXNwtiUJKFsolUm/UwytkCCULXQSwa5nYvHAJIVy+iwRrzCPHHkBeOpdIqbjt2PjM5fO03mz4PoYwdPDAkfsQ5LeLaoFI7YvXr+g85j5PYDdMEbBWKgWO6+1LN8+2b83/J5ImUEJHlwLQf4Si2wOkmvn6F77kflMarab6Z7/9pY50OLoj9ldyiPIwmEE1hbq/OHvZOsGEj4+NsonRMS+b9bQtqSQ/f/UyW9u46Wm70Bhcfu+fW+KjqRFIAz90e2u4gAUDr2vobTVkrdGQLduituNAJK+bl1cpCQeP2DviM8rUxz7wEQzffN+LQpJLrqr1OgVDe4RKdw5/IR0YrHsKKZadSIupTIZG+Uy0F8RwbvYhmr3jWbVsG8UsB3bHY/fiQSGlG7hhc0datq0c7mwbWOHM1dWaDIbk7ESagbPTdoG1rhvnADe6Vwgw+nIhuZu7F8O7pMIdmACLFhhfB1QkGPKLlRKGiO+4FkgC/vKbr5NyrdrVEMu1CrfsFlYKdaXPXXUS8oenM1NqOp3d9fyp19DOJlAbgDvDKTJPubk4McYUw3dP38+EaeI03XOYZmMnWRSvNZu4UCoM7Ye11xnCGEmMwhfKMsyeYECT8q77HvREl8E9dT1/Q126fnWoLv3GRsf4sf2Henf57fWF8qqeUvza+iq7Wcx71aJu53YEMIKcVF2/Y1Ez7HY66ZhgySiTyYQZ3Xem08EO0XOQ8/RjT3wE/eSP/BiB6N//8u1vsGdefXGIEPBnqAZjPGEk9LviD7yet8oYk/PTudDvgZqtlnjp1Imuv0t7AQZ0mMtziwoTDBkJY3u5ABFaYOBtbeXmrTXrvNlqEstx3HmPQl5ezxX/rgaB+vmRYw+Q/QtLfnd1R/tKKTcHaKVRJZA7OfQFGF9kdN8VSqgAR4/pzBSemkzHPs0cRH0uzcwPcm1T4GQNka26eIMAGIQtx3Fpox3BKdpkxuiINhru0I8sHXD1HnJdmwlj170a3DVtGnyBzZ8riO4FZk4UsujeDlFV5VoVQ/qCIItCSti2owqVEuvGqTpIGb3qSykpzly+SK+sXu+qSdCzfKkwtFHAmBA+k5m+h579FogYKSkBHuHp/rerSYrIw9oAHJGJ6lZMuGCkBL4/g9zLdCt1PJ8Ho7ymew7/3NrcEWs31/VHo4epcmlAEQ7XReYQRwC7F1WQxyaTxYeXDvSs0y5tnRD47JULuFgp96AZ0a5CKRVLs/N0Kp2N7EA2SgVxdfV6zzoQ2YH7LTg42yG44Nsj72+fMkTRULy134HIIAI54nSJPgJAU/yVX/hVBGkF6s2G+uLv/At9sPBgWsGwnjKToTcoejDUyDdBCFFT6TSOQvSblFK9fuYtXPOAyQjW8OX5BT4+Mh6bqF+gx3Ypm7eMvEDZ3Gg1sWUDjaiIdF7eIF602ew0/+D3vW9g5z3XEA8mE/oAACAASURBVKwUqTZquNEML0XoZmqQzthegpi3TvuAtS6ZSMhcZopOjk90Wi3yzyWMhJifnhn0plXajgOOdpHHM4wDgOhAiCwFg7DFbSqEhOtZoXZgbSAY88xEmuYyU9JgjAILznbZiux1o3vB2CSljER0b4dzImqNOg3YEUFV6zVc9WDP0uEYB/5Yvlzir5w60fV3tNlqomqz1pPz+cAH3acAcK85n5tl4yN7sPBgJCGfdtydCPqEEmkDcL8Ihrw+HN7Ae0mXwSCg6Z4Hg3u3vUKuodUbaxi8v3XpHgGgtcEIdb2R6b6nLmpg7OYAVsi/XGhdSDOQRyH32P6FfWQmO911/0BRU61V5ZkrF9gw5yYCr/AHj9yHWUQzK9QbdX7m8oVwvZtda2MIK7jRHT5f7kUgB/BeM2MmTJQwNCV0CLW3K5He//Bj/Oc++9PMhujff/hb9uxrL3VVXz+8OwKjqRENT8gRALru0WQSZSbTgzYOdIzUev6mG2HScYUdHgTjD0T9UkIgFKivtvqRo9e6rW26ZqsFjisC8gm2bCu2eXl7xambenCf9LEPfMTT9DLd9H/XsxyoXcFwENa0ND6m4u4DtnurQk56qRQYfN38vl6mD/JUUB8bSyWTbnSZj1102rQAQ6Vl25FbczsdYFiegyhXmzuQS1i1bFtyzikGKn8ErNEKoqjQ4aUDykwYboJRITgYfbeje7umlg7LuNvIIZqtFoW81AEViPrF8L0epsIFV3//4rM9OdMWygXhcD506wOlRC7NLpKUmWynKooLuJbWZTcEtAE45roBHogufYXL26RLUAhouuegkO6/H/AS2ijmXdovXXpDADbJ8E/oCkZcynDnW/EbMzcf8NEH0Egq1XFX8E5cvH4Free9zyPXsRAheRBonNLjE/Lg0v4wXAx0jYrDHXny7GntBdY1cntXCMS7FGOOlH8Rxh5Dck9zmGBBCVVACa3ZaPxG25/2zYSpvvCzP48PLi6jWqOufuV3vxzCD70/Y/e7VUidkUwkiXbS9Rvp/tqH/K7zuZlIMWrBxfYzPTpquLkwZxf55MQ4DfvdAURzuZTNVgtyk8t6oyGbdsvNywuRjGiI8vL2p+XtaxvMEA8dvY/CtyBkBThzbxmCA9mbdQhA2A3AQG2LMaKQUzE7mUbDnJN+fHRMZifSITkrYcgbC0axoTPydPhq+fYYfFNsbm9GCTsOy0xOoo/80KNq7WoRb6xWEHfiHyhic87rjbrPdx6KO5Dvt1Skwxh8I5VUz776Eu7l7hkYAoqVErgp+PYehLFh2IsfWNyP232nMEJCKAUUhnr93GUitQE4jBrusUwuPSvs8EhEQ5g8xsPP5jTds5/oet82UEmVaxVaqVW9b3xYWnTpnxELqQF4aHNl3K5+KdOU7zr+cNuDrZSKt+wWPnP5PI1Ejq2A3jGIAt6/sA+nI0iHBgeE106fDAip+HcDRhspVdt3Kf5IdDZCNz88JkCdim+nUOustn5q0Ajcf+gY/+XPfd6N/v2Lb/0Ne+71lwctUmz6h7OZweAfn+/ZYoNY8AMBmu7M+ATpxoEueCnv7VEoyc9fucTW8xtdiTMxOoaW5yHqlwKnZSguz4CBBi5Jt//UGo2tvLy2zsvb1ez293Auk+UffuzxMC9WEBHMGq2GqjUageew3AndsN7PU0olsBrlMlkCht9hLxgTkR4fpxOj4yGCAgO9MKx7YX7nQoSX96JQSvnD7z/ADtw3izgXApigK6WGWL1UoGAMLufr3ncaghaVVKJUq/j2/VdKyZZtyWKlPLS6LaXkb54/w9Y2bvQ045V6VbSsJqS19m2eehLM50r3HTiCOnEohwBIiAIeNiN5p/BrA3CnSEX9OdcIjDAlFOgtoj6aUMqv6Z5DOS17CSUsy1LrhZtDuwHxYsbA6QEhHNp1RSpgrxvu4uYDTmfQ4X0Hd9V1iBhZubmGrq6tDDdYu4w+YRjqoaP3R+7jCfN66vzbKOB8PvHUIYjIRQr5kfd313y/EaeBvl0RzEQCJYxEPHUjhqNKJZPy85/9HHno6HFUrdfUr/7rr0Ru/Qv7tBiM8YSR0HvQkE5UMmHyXDYbyfmpN5vilbfe6PhycN/sgshOpskgQp3hku6WkbfVQo1mg9dbTWw7NuHinby8kKtRKZ9TL4RUFwcpFtxvAPVzRCjrIUSPNltNUW3U6SBT2ITJAAxsRgghMjoywmcyU2xsZHSQKhWqviHfa3Yyw8Km3xDJBjnLm1YL1r1QYTYMwjCD8ce+/wibX87eMVwIHpFCgXEJ59eqYvVygW2slZHdAjKCWBRVrJR92++XaxVUD3H+9qBmcOXGmnjz/JmO92i3y+WyV5byQxXkAsEYR5cPdaOXkguuHfZ3UGhtAA7qLQ9JP3DJSAmkL+jm/QmJ8CEVQ9M9h3Ri2oglpJArN9Z0ovg+pw8OlRjhcH5gMRJKKjrMeYC3pxc8vg/slA9YKeEITs5euYjL1Uqf2hDf6q4RPZMlS7ML4dT1XaBXUoqzVy7SsOZIi5TGbK0nfsm8oxE4RgZgyKVJCFUpU1NC+6VDXra7PLcofuPzvwR0qvzPv/XX7IUTr3jZvG4LbuMJlikzFalvyjBN3HwuhyBSLooFKAZfO32qbX5UMATtn1+CiECJMfJ1sJBXEOiagWGm3mqKRrOhmrZFHcfBjFIwcQgpJZzL9DsREqVjzBAPHj5GD+/bHxKJOhNjK5cnadoWr9VrjPPgjTNhsNkRTLhCik1NZsRUOkPBEU+XOxGAe7xcZoomE2YooYG13LJsrB3ag50ew6DyA594kGSmx/bsWABfN8asWbfEykWIDi6j4s1asMJ62BsYF4EZEZwPPCxSSokh3y/QbOuCwLFDfveVF3ve6zStJqo1akJK1ZMROWpzYBhMHl462DFeGCEulGQQCKHLnQhoA/CQagRQ8ZGQ2myiMiWa7jkqM7WznEC7YTt2tAcREunDupZs07VqA/A7ivLIsQduefELqWSpWpTnLl9i+mDZ/mUiGKMj+w+hKHnOKyX5ldXrrFAutR+gfmJPBILwwIc1Syl064Cza2RwROcKxgMOiGYigaNqWIko9F2JnUqmxM98+jP08Uceg4sg9b9+/V9qr9GuEOz84bBFHXUueXyfBKPJxNgYGx+NdJScWr15Q567emnXy8GF3KyazmSxl3t4yE8HBl6I6G1YW3l5rRaxHQfyXW/n5YXIFV+NzfHVzmBHlp3MiI++94lIXzDD3s3hDq/Ua8wJ0Pjgrf2ku3mnhApCMcllpnB2MoPg/KLLzggQgtXc1Gzb3JIDxk81rVYoqM0HjENg3TODqqc+9S6cGu3KMUByLuCOHefXK5vRwasV1GpE6r7RZU/wymlGISUcx1H5cokFcY4OTEH67AjM63//4jOoH5aKQqUgHIdH+vvcKYypZFLsn9/X9ViFFEOXL7kdptoA3A6hmP4Ol3DwcSKkY0eKmCLR27A03XNvuIWhFhB4FkolUm/GM3fHIDD28vLIa/kVRlzpi6ZbsCZNU777+MMEDL4Xrl5GN4t5ryGPdXvJZFI8cOhY1xvQQYGCMVIrN9Zxr3lmBiV3mPqF/RJ4LgcmU4yifnfDDDBNGAZQQgeHa2ATGP2OptIZ9dVf/DVs2bb482/9NX3xjVejP6gQjgAYVJIJEwxjIZRueEVKMEPMTk9H5ju/20xB5Ngzr750zxoLTgfL84vSYIYkGHdtiIULtW0jLxh6680Gb7SaxLI38/JCTk2lpDbyxuAV+qEnvh+Nj+4dAReVYSqkFOdcVGo15rcD+Oa+MXi6ckqJMhNJkctk2eRYmHLahltL9s0thD4wBpzZLdvuy2AU7lkIn3Sf/KknECa9H1MgOhghxKyWI9evlNCN6yWSXws72xrmjVaDga71W2DNrdXruNrQd653YymEEK+/fYrmy8WeYQaHu0If9XvueAAVx8fG+WJuruv9KjDLCDEcRvJOp0UbgDtFKobPuRGshCiKI8pvNYA50XTPAwDd0y4VrzWbuFAqRP5ix1NY+mjMjehC4XUtBgOYCNJ40weWQVUFwwsh1KXi06U7BAilfG4qx+amZ7qrOMCnS7WKuHj1sl7zepkDjDlGigZ5kQdrKoJMwwpBvg4V15yHGGNOCMFJ06RhdiLqRW2iXCdpmvwnnv40+8HHP4xKtYr651//rd5vv6IMRACywzuQYAZjrOs7jQCkG84uwME3l8kCS0HkARBK8nOXL7IbhXcc/WancmhuKofapYLazsvrUjZbFqo36jovb+Q1ovMBMMbEA4eO0iPLBzuvFJEnYVPFBZfVep1atuWP1BgpJVEg305gLJBKsvRkmucmMyyVTPozppi2Cmvh8txiZEYHhjkugqc0jwxAHglqJKj6bz7zfk/fYe4ICZH5pY06X720GR1cr4bvLsZxHFFrNvq6N4A9RLFaRi3LpzXWo3keVDMYIXnu6mVy4drlvkSoNuqi2aojuDPoq6GQV57OZNV0eqrr99GlgpZSMx3eNr/aABxyZfddPLiAwwhTwmK9aPSLo6Z77hfBcNS3uSPWbq5rXfdwOtx3A5FQY6rpje+ccIg2ggMv5MXQdDy9vQwPHD6GkmY0Llks2xKnzp8J9Tva2yz4W8s1viIFecQDt87AuqqQawjGKOaHOliLIPeaNoL5q8+dtj6aGlG/98Uvu9G/f/rN/0pfevO1Tqvq53pAwGCMJ4xE4GtMD6LGvgrGhI+lkjg9MRmb72Wt0RCvnj5JU2YS7V9YEgmWUIS8E/ULBjAw8LqRvJCXt1FXLcemtm1jSimwFAqpFIQzxgaT2CuyBwNMT0yKH3jfB+M950pJSKBYrdco6L+nBUPKVn9zWVNCBMaYAI070DwzGu/p8nR+bmsMoqaXZha6Niz4JU+7diESGKjMnQHktW4nW5x+Hxk15cd+7DHf6FmklByMdo7F0c3VMkQIu/mDpfQ0925PUyKlFOVatccFRXEO+X5LRcqF6Kn/YalUqdf4Cyde6Wv/D/d4G6V8sExlAU8QJljMZKZpZiLdc89Ata1TAm7Cpw3APatRfCpuRpsgRAkEm0Rm/xPYBGi658Cg9rUjoCFZubGG+8m14KuAEW089AZgjF0KaP3RB1o+BPnXEETdbe4AMEdKQU4hqg3B3b2Ao6Oj4r79h3s8HHXXV79Pwy3U66ff1B/3LoGE9yXIyN97xHOjjxG8m7GfO9iHGgaTpmFG4p3qUpUi83jCMPinnnqaffLJT0D0r/znX/8t3y6/IgOKz4ISgmXKTGmcfca5k+bBEDA/PROrszA4+l1evQ50+66Rt9lqqjpEjFgtYum8vJ2oxVA+89TjH0bDQiGslBKwz6rWa6TRano031gq5Y8BmBIqDcZULjtFMxOTHsk7vM0kjISYn56J1N4T7rQch2OggNXFHwQy02PiI//tI4HpBedCUEpopdDgK5fybnRwteTVetQdRqBfpUql67OnUkq2bEsWK+W+jJrdSRvdp2F/9o0Xvtv3AGBvV2tUwZ8pMH3tW+guGiCE8PnpWdZXOgqFOJdc66U2AHeheUPyKKU09DkwgpoKTfccFNL+9+N6RxXz7uWHLt4iEHYKaHe0riEnwBye3kLseWuwzt9dIDe2FFJfQneINqVULM7M0+lMtsMag3sMPLxOvP2mG/GtS+cIhMUpAt7X9PgEKlXKSMR4DoEOFywvKTNJdU7UzvXUyydB177+hS+BQ6j4T9/4S/ryqRNeNq/b2gUByMmqy2ARIITIzMQEGUmmBiuID70DBfTbl86rRqsppJT6AswHjOPSJGOMHz9whB07cCguQ+p4HFuGYFJr1HG92ei43k4PYjdy3jtKTsgXjxAiY6OjPJeeYmMj+pvR1wTdVjllJvlMdjpy66JSSAoplGVbsTT6eDW/vbazeGCKv/fJ+waiF8BSL4WiELSysVoRa1eKrkGYO8FF1Jaqla5Z4sq1Kup37ex1vqJYD97f7518HZyP+ha/UClxx7EHoq99C9+mAUqJWJpddJls+ihSSkk0K6SOAO5Dh+JblRIKEWLxHWCbkWm653hNPRzoyrUKrdSq8RpYGEazGaHGcDBpjnofMYY0wPH0iusWFIyxIJAA+O6yGQ1MwVAeFsNXt2ML+nn4Tj545DgyQp6/USopz1w8T7QDTIcaAvTLIVgv4MKPMaZMw8Tp8XE8OT6Jq/Uq3ygVWaPPy8kOkRjYY0nTRAYzBtb/MHYMBrCPPfER9JM/8mOkWC3LX/s3/2p4DwIBKgC858mESYb53BUg3Lt2BUaA6UwmVpdnQgixlr9JL167onKZKWQ5ttgoFRjkkNRFI7ATAhPjE+IH3/+hYTcocYUUrdU3DcG9nIm8MgBD5BNSik2nszKbzpCEofdFXr+5Y6NjYmoiHVGdx1xIgVpWK1bfLq/nuJf2jjy8oB56z4Guo2B76atdHYgOZozSSqkhVi8VKBiDy/l6u2q9/66UrDbqpBMKZ4wwOCLgQqWMbUfvLboBHQz9py+eY9fWV7uptuOznHOULxf6bieMDQA7z4GFZdz3vQBGinO4uh7uoimgh3v+dxw9pIbEhCiKhy+ZiKZ7jtcLoRASltVSNwobemPsx9RGxQCMEBpWjy9Yz5VCty7yMSGc4Hfyv92tFhDRLSEtltBRIu1eGcBqcnxCHlraH+qLA8gzdGnlKitXK+2GpH/HSCDIEiO9i9zoFdQES9zKi0sIUVPpDB4bGYW1THIuUL5UIBAVHMe1DRMsGWVgGNPf7l4VqMt6lBD0lX/yq2hibFz8x7/7L/SVt97osgX9eC8IQOR7ghlM58DuBT1v6sDZb246F6scmlwIeW19BZ089zYZSY3wpdycu5aCMavRavJ8uch0Dklv9CcurcB78NH3fgBpWuFbM8qVUgyMwPVGo8u9Fnbr9qobhFAJOX1zmSzJTqaRTtHWK5J71wPjVXp8gkyMjfvTQTCtcmAH0kZg78AGFsiH3rufHnpg3rtGPWoJAlukUOCsj/NrVbF6pcAgd7Dd4h714DbD680ma2fQVUhxx+GoUC6xOJ5FvQR0t7ZuFjfEa6dPeXKPVGvWZKPZhPQDPX97ghhzL33cd+BI/99BuBPdvOSMHT7dYKoNwN2gNUTPblHxAQ3cULwgmu45nsoNVqyVG2ukF+/deCLi7ahcZxEUfroAMNSBd6K3o49Aa66BHg4JW8YsjF3jb9uLBNcIhogUOhq43SxTSuX++SWSDnceLnF9fZXeKGy0G47+ffNwMPDIR9Mw0U5U7Qszs8hMmO48gecwQohVa1W+US6ypme568KhBlv7UJI0TQLMNLr4i8D7H36M/9xnf5oVykX567//1YG/A/6ONlytG4zxhJEYivNWuJBHiGAsJsbG6fjoaNhE61kesAacv3qRnL1y0W0jmTDF8tzirUUU9sRweVyuVWShXNaUeD0jHZ+KQP18bP8hdvzgkfgMyqORYIS4VIo1Wy1Za9QJRFy2L70ZgCkhKmmaMpedphOjY+270U/0hQDBmGcnMywGaRgEGOBalkX1nVdfKuFWZozyd3/4CFs8MNV/Yz63IISE9DmsWbfEykWIDi6j4s3+KYUt25aNVnPXswDkCQa6/Grdx0hkn7ELQ/MOd9S3vvecZ3eUG8UNoD30rL0wYATfxaP7D3szJoykEGKobQPaABwGrQ6pDGDcQRgjiilpazAI6RjaiaXpntshFO3f1zZuoHbea9Ee4eClJzgC98QYcyUlUwiyoQ5HgbVNuaGM6Nalsmuwx6Tj9Rye33SV0/TZe2mNwZh66Oj9kL40tMqVL5fElZWr2orWZoYGfXECkb4JlsC70cEyRtXCzBy+2yAKt/m2w2W+lKelarknysLQKi9CrtFbUx/6N0NmwlRf+Nmfxwu5OfEf/vYv6GunT/rXmW75HgQIwTJlpiKwmYrf5CUMQ8xOTcfm2yilVG9dPIsvXr96a7IMxuTBheWd9Ms1bBUrJQT5/nQZXgTGR8fFDz3x4di8Bz7NJFh+adNq8Vq9xvamR+3cAEwwAcpplplM8+nJNEv2l+fQp6HHs1kIAMmlszQWmGOklFSqZbUIUH/p0jsCRoKJx3/wOJ2anei9kcHUdBmiCCY4v14Rq5chOriCWo3uqZnBsFypV3d0TISzMuwZdGqp/icZovefefVF5FVqjpbVQtVGFbaCsTlTwD3b4X0HvbxkU1wMLxW0NgD3/94ORQuMsv7D7kOGlKZ7DtmEeCgOEHgWSkUCtE26+ItAJAzAAMGw5QEGB57bqJ+3tWCnqMK9NMR1BEIYCyF0buBdgIIcXVPpLN43txDay7N6qyHOXDwfWvn8XaXat+46OwzwsLQV7YpNw6TtHAnMhCkWZmZ3nEulJEcIs1KtIgqlIoWDYBwKJlhQwlQykWjPYBCHAQc8hvsPHeO//LnPs3ypIH/j//habC4NAoaxr+5iEIHU1/gHURluk2amplDCSAyie8/7hAiwN86cRlfXV+5om1KqDi/u3/XyDNgkpFI0Xy7iar3/yCHPB6Yb9BUBcDj7/sceR0A1rEsHCIChTSFs2ZZrCN6ZSr29AZgSIsDbL5fOYsC+2/NZB5LqR9ogQAmRs1M50nduyXAhrZpWC0spwyVVhKRhBlVPfvJRPDqejJDU94oKRlwIaLZajly/UkI3r5fIxlpnzl4QAFCuVu/eN3AuJYbzJReeUk5HGud+hIc0XSfPnWbree9Y2oqVErcdOzasQkkzKQ4s7PPsDgtYPYRSWErhWZv96EDQdbUBOGjEI9wfRJzsFpUSpWFpuucozVYvsipeazbczUkvtXWdzhEAGjkMNAFRKBgJKeVQ6MQ2vd/d0wL/nxDS23xt5hKWUgx33ozdVB2+jYf3HUDjIaVs44KrN8681dvcR+H97kdGjDkCqnQ5mEh3iNanlEHkb0eHNcjjPZZKoenM1J7PQ1Sw5TgyX9yMCo562WZsSSZMrC9KvZvNVDIpP//Zz5Fj+w+JP/mb/0xff/tN7xrXLXWEAMYY8l2TOJyxOhpwCB7CmPCx0RGSHhuPjcPDS6dOIGA+2mHvh47uO9gWdcgtyKVA+WKB1mOWUqDt4If0AUoZP7p8gD1w+NiQItDfsMESzDl3I+Vsx7mtsd0NwEBnmTAMl+Y5PR65CMP+AAtZbTgULc0uxOJ+83ZoQS8horAzuvKQTUoIxAFH3H/02fcjymKzPXBR5Y6QhGJS2qjz1Uub0cH16u6OwsXKO2dHpZRs2ZYsVsodnVVDMI2REeHa2op46+I5z+4owTifLxUiM/52go6NjomlmXnP8IH+4E4UooAHzfzWbux+/K4NwH6gGtM24YICLicIDn/Oz52mQNM9x1Qx7xqWzR2xdnPd04/EcCDX/SjddwpFJzkjREcMcwHDEeQA7hcD8Coexg1TO9xM05QPHr4vlKdFmC9N67rLDGIllNzKk91ukj3+HfZVjDFsUKMr4zwhVKTHx+lkB5eHW1HBtFgtAzMGtWzL41EE35yZSMQmai949O7scXluUfzG53+JbhQL4n/7P7+m904DmBBgAEgYBgO2JV2CQQCiYhdyM12tu8FI1n0vQCH4vZOvoY09LvyO7DsI+Y47alwpKS3HUXlgkYjB96KjQQ/pQ2MjI/JjH/hoKPetUZoSyIfJHS6rjRoFwxtGWEBU/fYYINc4/PfE6JjIZaeoZnwIx+yCoW95bjEcwvggBez396Yq96HTGDRJKEE/8pOPx2Akuw8BIk+VQtSxOLq5WoYIYTd/sJRb9OEKyUqjRoTYzHlerlWRZlb0RyUaraZ45tXveXr+qjfrCtjflFSRP1hk02k5k8n5sU+RXHA/2vVHUTxqVRuAPQJyWJrZoilElETrlkLTPQ+HhkLE08rNNaCrHY4BD3iU7nqA+jcoBjEMoHgVUsb6I79b5C/g223+3z3nBPILKyBaV1Qbgt9BilDK56ZybG56JgiV7qoPWBtPnX8b3xmh0FUTsXwY3hkpZWe34j4gANSjvRp9IF/wdCaLO75I3MwPhlq27eYKLkc45yPGWBBCVco0NSV0H3qZSqbEz3z6M/Tdxx8Wf/LXf0ZPnHmrj9Z01X4QMJghEobh6QVQP/LEuS4hRGYnJkkqGW16R5gjR3D1wolX8F45fCHicP/8Eu72WwNGrWazJTbKRebw26Mb46wdwzM2Sgj64Lvfh6Yz2eEZtN8jVQgulFWtWSeNZgsTQjnGiE6nM0CxjWNGNew3mr63D2vj0uzCwM4Avg8QIWQ5NkSpB9FVbPpIjiTUJ378PbHWi7sni3MhKCW0UmjwlUsF5hqFV/OkZVuqWC5j0CNd/EPgG89/x6Xa87JslPIKUrh52WbQbcF5fyY7TTMTvqSo4FJKNmwBQtoAHLQWx6A/iPoDawLFtG2uukEPV9M9D3oGgusfDFEbxTxqxiTnYXDI9d4TRK9hhKNhVMWYKymZQt5urnpHz9uasC6DJ+durW4xIHi+Zuto4HsRv//QMRS2i2UppTh/9RKtNereKl6EWxuk8RdOY4mECc50fSEIzm3zuVkEEbHdFKWkQAiTQrmkiuUiieLB3k1BgDGMvWvDRjdYxfnZqXRGffUXfw3fLGyI3/yD3+lPGeMMVABjg3yQSTOp58BnrGHdSCaSYjqTjnxURMtuqedefwW3i8qhlMil3DwxE2bP6FbqNZEvF6nOK9kzhKGqSCnlh/ftJw8dOR6NM1yo0OtMmBv5DTQ7lUNT6UxnFfRTgSNgGIZYmJ6N+3dX2Y6DtRNP5+o1mR0VT37y0bjrxa6AKKXc3MFvv7iC/upvv4t0vt/OdaeXJ4UQ4tXTJ+ntlNu9tHN3HWBwqdarUkY4AIYQwuenZ5mfKdaAKn+YAlq0AdiLt2tI24BDNCVgTwifY4mmex4upYS8VeVqhVbq1eEa+CBH69I/Y4pR+N7/3WBRGLlG4EHC5kvfmzlM4d89x+ZLmCRsegAAIABJREFU3kzoWykM+ZWHafO01zyOjIzy4wcOh0rP4DB3de06y5eKvqhg5BoFh4kB5PzdNlomjAQmHvnOMMbU4swc7jF/qJRKkpZlC4gKrtSi9w0FTA1m4G6N4JHTWY8FTpom/4mnP80+/Nj75L//qz8jJ8+e9rgH3Vy3CHQczd9tw/r5Wwi4TjPTOeTLfigonBUSYPR99sRLLt1su0IIFgvTc3QkmWr36F6/A/MLLVTKKA455fsBIg51R1Mp+fEPPqmNv55OJhhNMKs167xULrOW1QKnHnT/oWNU7088BdqzxmAfNJvNheq85tng7mxIQhSw5dj6ne8A4Ll9Wf74Dx4fBr3YGQ2FBK8o+sbzl9Sl6yvq6voK6WSv0QG0+pGdEFBKnL16iV66ftVzfIrVErdtO7K6TCkRSzMLNNXf/nVPXBVCQgg+NA4f2gDs+Ws2fA1CBEuPF4++gKXpnn2BNbSNwqJtWS11o7AR2Y9baMHdSzCX/hmxKBmAEUaR9oLbdTqAlWGP6F+oB0YSQoiv1noghZYi3jTbnbyrsFldmJmnucxUJ48H9syN/E11/caarzoQ2GD66Ajo0BVCMui8OECZD3ulBEt4SlsM73YiYcqF3ExfhxdwpFJIkXyxgOGCP0p04VvY4qRpUq8M632oWCSqjqZG1O998ct4PX9T/It/+7t96U4kBhxyITcjU81eHTlCPrpwiEcwEZPj43RsZCQcAvUghVSKV2oV/NzrL1PI/dtJgQiK2ew0Gx8Z6+TxvS/KlOJgCM6Xi7hSr/Xdnm4geAQYperxRx/DM9np4DuPYY+wmZRCqkKlRMCJ7u4oeYMZ6vjBI9jPCKYYwhrIkMZGRsXUZGZY9j9CCKladkvfl7XRrkP3z4tHHj84LHpxJxoKSVFEpHVDiBNnztKNUtmlJl65sYY0i5h/y1KxWuEvnXzN83cTcoDnS3n/BPe5ZUh3dXBhGRuG4VtPGAzAUtJhoYLWBmDfVGl4Gt6KaMH9Uhn2i5ime+4XwWjWF1LIlfU1Eldq37DOihtlj/rkLx3A4OL2cceQ11O1D8PGBAmCqb+Hmc1oYKAIxMMeDQyOSA8dOY783LB2+/pU6zV+7spFzw8X3cox6OfhnZFSBWoIhxw2lFIFxl8/xo8J4WOpETydyXrxjruRXk2rxTeKeVaN0CU/vHfJhIkY8wVmP6ZuIG0mDIN/6qmn2Sc+9KT847/8U/LmubcHIofu9B0EwIkhYRis2zytGsPOETANQ8xMTXuxRnbeqYdPCil5oVRCL5x8pasFDr4/ufQUTY9PeCYNOAxxKXC+VCTtKKg961Q31DcCQP18cGEJP3Lfg5F9D/oGwYMGtilSa40GL1VKrF36KdibHDtwGE1NajpoD+D3pgmMVHpsEk+OjXvTXjRa4eA41LK0EXi36YL0Zg++Zz858tBCNGbUQymVREhsICTKCHEh1Isn38S1RtPtAe51bhTyqFgpedijbmobASGF+uYLz/hyN1Fv1lG91YwsC+KxA0cQCYBxVgiIp4lnqsDb3zRtANbrjicIbFEuAyV0V4dSLzrXdM9eoBjdNtY21iMVqRRdpO+U3HX8gGTgUSpbtK/D8HG/e1oIwRJjEgj1k5tbFfzhRQzptjvUd8BgYmxcHN53IPBv4m4iWo4lT507E4gOdAjTQB4L2jkBdIFRhg3mn/cqAEkIkemJSeLlZRZc8gNF9HZUsMMhLVS4i0sJbTBpGqa+4N5lqoD+9utf+BKqVKviy3/4rzVOIVFpgxkiYRh6Pnyaj9mpaZTwMYrAJ7HdZiFH3Hp+Q71y+o2e9hRgePLD+KSUkjZ35EapwFqW5ScEum0PEEglk+qHP/QD0Tq7eTBur5pQYPnlXBYqJTdlRjf7SWAn2b+4D81Pz3gljm6nDwQIxjwzkWZjI6N9tBLFqphLJXDLsnTqph2mjzLK3/2BQ2zpcC6Kk9uXzM4qQnKL2AOifr/1vZfBEHyrTaDRqzRqau3mDb1P7QvpeyuDAfiFE69ivxzqNkp5JYSI3LcfnKfuO3DEY7R3aU4hziXvaY8djIDe9KINwN7gqFsBBIDeECNMCA0sL6imex5e1VNIqUKp6NuHcniR7XzkkaPaHFYDsLs2Y09pZ9tqCdBSI0SkGN5oYEqpXJ5fJJmJdFu4gngALq5eO30ycpt/z7AB6mepAjeAJ4wECiqqD/ZEQOs4kuor1+NOkAM9NG00G3yjWGS1RripPyGaEmOMU2aShilFiWe63EdD4CjwsSc+gn78h38U/d9/8R/JqQtn+mhNV/USAUoI5IzUF2teguoeTwmfGB2lE2Njkfz+gfH3yvp1/GYfDlyTYxNiNutf9DOcyZqtlsiXiyxK6QM8VrVQN8cYU+9/+N14dmr4DBv9TMx2tG+1XhWlaoX24+hAKZNzU9N4/8K+SK5F/eAYtrqYEJFLZ2nKTIZNtCDkgSOhalot0o0TQxCCDboPw6DifU8dp7n5yUGLElz/CinnOsJyM9jXLRAp/o0XvnePDLAetiwbXV2/zu6muw9O4Pj1pJTkb104x67fWPNlcJZtoUq9GrlUeAZj6vC+g0F9LyF6JfZrojYA+/KKDXejmGBFMYW7N9+A0HTPvkEbkYYVrzXrpFAqBX6ZHxGAfBczkhHAgApGXMpoR6a6OUwV6lj3gc4IY0z8XJN3UziQdTM/lhrKS23YuD549DgOg7MEHPLfOPsWRBL5vj6ErgOgJwdiH6kC8+yEvDUGMwJPjwHv+cLMnG+RblLB+VEC9ScuVcqIi3BHBSdNE/kdfR06fd9DIEoI+so/+VXEhSO+8of/ZijX5TDP12gquvlpw4or5Dydz834dyj1ceAQFXLuyiV89srFvnoZSY3wpdyc798/IM+rNuqiUCpSIYdwr9HXLPlXmRDKl+cX8ffd/5Be8zuDGexjyHGcW9G+nVVr/xSjjE+OT6D7Dhz2/X1sL83wPgHOcLPZHIkqK4QXMweOOy3LwtqQ9w6azKDqI//oETye9tyR1osp87wNxTeNv8q+s2nLseU/vPTqbndNUnCBrqyvEDAs6uINAusbG/zE2VO+fRdK1TK3bMu39r1B4c5WkmZSHFjYF9y+BSNg+YjkeaFT/LUBuFOk9HNdIwAUc15femu6566nIZYVbO6ItZvrwX0MYolif4MCwx5GwVAK9yfpXbXd/J8yuh92iGxDCiuFutJ/WI8HVUBXIAYHqGeGzdMYEyymJrNoeX5xcBOwNfFguDt76QJptG5z8R2UUgTdb4DRv1v7FGwa5kCcLgBaiPRZnJ3z1/FAKY4whmhgvlEqsnqjHvSsdtQfJlgyashkwp/8yx0JEaKH3v/wY/xnf/wnyb/7z/+BnL54LkSSaVHAsS5pmv6+t0MGMzjiZCcngQ0gciOXUqpTF87iSytX+5Y9mTDF8lww+xAMwUNK0WK1jIqVct+y6wb6RyBpmuoTH3pSry1toJRSCnCYrdSqslQtU8u+yyrS/1S4LYBBfiSZxA8cPkaDYojxSPTYNANxKoszCwic4oa5wLkc9Fw77GxqASEY/fD/8F5kxPzIoBQSyEHIuYao2sFXq1Kv8+dPnNzTWAi6s3JjDZy+hvkV8mzslm2rb7/8vG93lBAAsFHKeyZvEA2NjYzypdmF4IzWm/dFEAkcXJ9BAHlbH9oAHDDgw9QdXGQQOGp4tLHSdM/DpD27jxVcclduroExSQMyQARcik2EI/lxlEoOELneuwbDknLDGFFXuEMEMPFqIe5dfIi+hshlKUV8N1U7wUMpVYeW9uPx0bF+0Ou7rlSSX165xiBqc9hKUI4HsC4SQpE54JsDeOeTCVPO5Wa6Wit61Qs3KlhItFEqENCvsF0kbVFCk6RpEkoG7ovRK8x91zMTpvrCz/48TjBD/Na/+73hBaJvJP1pAPQ0YRhMGwS8wRecz1JmSk6l04Gsg95IvdkKbJZOnDmFrq2vetKswZg8uLAcqKVjizqXbpSLGPKl6jIYBICJ5j0PPornc7ODESD8vQJTEXFsR0Bu32o9mBQXcE9mGAZ64NAxPJIcjmjDsKnC/vmlsIk0MHkgkvP2fK8DE2TAHYMB+Ed+6okBS+Fz9wpx2XKNv7vujdY28vzE2XNt905wp7ZRLKBCueSz0PFvHrD89ssvAPOEb4OFHMP1VoOriLAhZibTLlODb4Ds1DBGbr7koO6OAh0bkGE+Yv4osPXoohHwBQE3EoZQRTFp+wHZTQBN9+zL1ESyUViIbxbzqGW1Iil/nITGGAuMcPQukKOcBxgiabugft7WN0yImwM4TPoHdFNx3VjthLNpJuSDh48Hu4G9RxAlV26sk/X8zTCpgq+ywAVbUBH/YHSFyFuDGqFYFwkhfGxkFE+lM4HJAxf+GGNWrVd5HqKCmw1f57eXxpMJE8Gl6zCW+w8d47/wP/5P5P/68/+XvH3p/DBCEPoxJwxDGCwca0jowWojIET/zk/nPHNEDgoP2Bu9fOoEWvPwWw2OaIcX9/sWWbIXNvBdEEqQfLFIaiH8JgQ1r4PoB+5QlmbnwQAcqjPAILC4u8/taN9SpYTKtRq2HX+ifduNFd7N+w4cxunxIco52g6UAH6nhKil2YWBrIkBDK+nLizHRpyHO61LTwPropKZMtQP//fvja9eKCRkHSlndc9gAnXu6jV84dr1jpCDvECVRl1pdsaO4Nr1ISGEeOPsaQp33X6WfCkvuRADvpNqP0K4a85lpml2Mt3+Ye+fUFzEkwpaG4C9Vxbd4t0IQEQMWIoI6+oSUtM9a1W6HQGllChXK7RS117kg9aMLUpfeK0HLUrX/W8bhCCMNkoF5FZKdQ84RoJgAknZwzVcMMQrNycrHQZDMKGEz2ZzbNARGJD/5eK1K8NxEbiZ95coqQI55CRYAqiXQ/WeQY6zzMQkmRgbD1wuiAp26aaKBVKqllFYcowBLTtEASfNJA3ZqujrHKWSSfn5z36OpMcnxL/6o9/vaj/uq2C68TsQoJSKZMLU89OnXoDha3JsnI6NRCunMrAnvHjyNZQvFftE4M7qsAc8uu+gp2122xh8ExzOVb5UpE3tyNstfD09byYS6uMffBKzAaaB6UlwvyopYFJSQO3Mi5USCyrat91w4Dx9ePkAmslOt3tU/+4RAsCKsJCbC+R84JHIQTSjbMfBDvcvAjGIQfTTx0R6RPzAp94Vzz2YQlIUEeFt7ItSSn7qwiW2crNzh3GlEG/ZFr62tkLDxgLVjz4EXffy6jV15tIFX4+nQPleqVcCc5DvFUNwZJ+bnmETo8HfYWCEuFAKSylitxZoA3CvGqnrdYUAGC+gAnXtEO3XNE333BW8sX9YISQg6vdmYSN2i3AkJ8+lf0YsigZgF2+MuIwI9Um/+rHlSBM+A/BtAxuWaGB4X+47dAQNkuqtabXE6Qtnh2MdxYgrqQKxyJqGiQaZZ3uvdQL2UzNT0wPTuy0aULho5flSgYUhB/W2g2EyYeKwzlu/a//d9ZfnFsWv/M+/QP7wz/4En7l8wevmdXseIjCaipbR0sOhe9aUmTD5TDYbyPrvldAOd9TzJ17F5VrFqybvaOfIvoOIdHAG96Xz2xpVSKmWZQnIHT+oqEu/xxiG9sHA9X0PPEIWZ+bCIM5AZQB/NIkQpKhw6cjDaOCCSODFmXm8NDs/UKyGpfOkabqOucMy3o7HqZB0hIPBENxxnRg9OLOQ5h/4+AOx0wvIfiY2EBIdZIHiQojX3j5LC+UOHr5z7iFqElJX4JZlxUgrghtKrVEXz73+su/3NKVaWdi2TXoKLgkIDkqJWJxZoIO8NwNnhrgFqmgDcEAKrLt5BwG4bCN4Z4c7TfesNWUnBIQU8vr6qvbSDIt6QFSpS/8czbMBOKQIKSIhfM+Rv7fpSugNHBCp6XrZydhHA4+kRsTxg0d839jvtlQIKdSJt09FQvf7We6Con4GitEES4SeYhSMwHAJPGjqY6AxcDiXG8U8hajgMByqzEQCJYxEP+oW+rqpZEr8zKc/Qxdn5vn//ke/H7uLrdBPQBcCwtqVNE282zmpi6aG+tG56WlksOhQvTdtSz7/+svEL9p8oDvdP7+Ew5RfGtb/erPB8+Ui07knvX1dCcEQ3Sjf9/C7h3a9B+YwhBFEm/NSucxqjbq3IPvQGqNUZCcz6MjywYGdE3wYViibHEuN8Kl0tJyEAgRSCCFVy24N3fpx4OiMeNeHBndO92uOnVWEZIfpzbkQ6oU3TuJ6s7eUe/BtX7m5jsLCsOAXpn60C9j93fPf8aPpO9oEw2a+VAjFOXy3wbr71oVlnBhs2ibJBY+VDUIbgH1/vXQHOyEA9HuEvPMuabpnrSe7IQBUvesbN5DtDC8dTdi0Ay4oMQpBGEGPwETFAAzrolKor0sAGCshJDIGPyCFlkLGaqN1u5qCN+NCbo7mBkjz9upbb/T45kSnmt+GRQwsCBhj0zBDHV1/+4xBNNDi7DzphIXF75nejgou1SqiOGA6UMgxRAhVKdNkYcDGD+yn0hn1L/7xF9G//dP/B5+7ctGPLnSbHiEAa0vCSDBN2doboAQTPj46yibGxnprIOBaYKQCo++zr79M/YyGpZTIpdw8MRNmwCNs251USJFSpYKKIXEKaitxBB5IGIb6+Ac/iqPkBOEVrEoqKZDEpXIZQ9qoqOU0pYTysZFR9MDhY7Hdk3g11722A2fjybFxPDk20WsTw1CPCylRyxoeIzDGSN3/fcv42CNL8ZlfhZRzHWHZ7HxIcIb+5osvIZj/Xguwu22UiqhQ9jadRa/yRKUeeF68fOoN4hcTzO04NJoNVGs1uAopKyIw5x3df+gOm9EA5tFljZQQQh+Tog3AMZnIqA0DYywJwYpg6l6eQnTCxOhYZC5So4Z3VOUFmrBCqYj98oiPKi5hkDvS0SkYu5udUOcB3sxfCv/25X2LCeRgJ321Eai+bUYDUyklJD0OtOugOoNv3oNH7htI1KFUUp2+cBZD/pdYFnCakKovp4l2uIBjBqUMIn+j814B8z3GImkm1dx0uCjvICrYdhy5UcrTUqVrurF209XR765TE8bITCRCFSHXkfBtHgKaw594+tPs6PIB8bU//gNf3w0v5NVtIIjUlwlmxNYRys85ZozJ+elcJLCTSvFKrYLB+Ot3jnRCsFiYnhsold7e8644ODzmy0VcrlX9VJHYtw3OXu86/hDZN7cQ+7HeNkCOEGL1VsON9o36vQHBWCQSJn7w8LEwOm1EXq8IxjwzkWZgaNdlLwQwl0rgVsuiob4z8WgSKaX80ScOsuWjMx61ONhmFN80/qouj/xSSvV3L3yv7+ABcHCr1evq+s21SJ2XBzlrgNnZyxfo5dXrgYiRL+cl5yKUe2Y4l9934EggOLTrJE5U0NoA3G629e9dI4Axkgjh290ktlOFYqQ2OWO3+ebBE3l8ZAyNpFJd96MrxBwBpXitWSeFcimUH6WYo7/n8KIeAewODligfTYU9aUjGAnkQfQvjPR2toW+ZAqwskvhqySwv8fy0DAxNs6PLB8MfGxSSnHx2mVaqXfIAxXgnPfdFbwzsL3wMe8vOK8xxrBBjb4Pxn2Pt4cGCCF8bHSUTE1mQvddhahghRQrVyuiUC7SQeWPAjpooIWOSxlNjaiv/S+/jv7gP/17fP7qpbgMK9bjoJSKZMLUxvouZxko+acm0zhphi7K9Z6RCCl5vlRCL558JZB9AKz9s9lpBmfuMBf4Dkgl6UapiKNA2Rs2LGGPMjc9I5949LFA9GrQ41dKSXCeKFRKBHL7CgHbwPgUgzF1/OBRPD4a7vc2aojDejidzrKUmYya6IOQV0L0W8uyIF/oIPoPrE/DoOI9T95HZxfTgfXpR0dKIYEchJxriKoelsSWbclvv/yaJ+dEpRC3bAtfXV+hcVuf/Zg7aLNQKfGX3zwRyDccmGfKtQp8SEN3r8EYU0f2HQyFXArB9oLH4lymDcB+vbkhbhcu1hGCOHb4+1a5w0h7d0JwOFTf9qwCigyECPyNMCYQWYIJtKAQ/Idr5d2m0tv8e5Mw1v1l6284pDQtizjcQZNj42hibDzEqGnRgkbA4Q5fvbkeyMcv6LFFvT9w8sDoNg73KA4IA7ONDOWHHNZXteUs0xe0GKJ/cXQpxDYNekSK+EUDU0rlvrlFkp0M9pAJl6vX1lfYRrHQl2qFsjK8N1L5elAA42CYcij2Mg+EEJmdTJOwXijC+ielQpZtu1HB5Wqll2H2XAcoeAmhKGmajEQ304E7/oRh8E899TR79L4H+W//8R/o/VTPWhFsRWBISpkpX9eyYEfkf2/AcDBiplQ2PRl6PedCiPX8hnr19BuByQr45NJTND0eDcpTiIJxBEf5UpE2Wl1wV/qvaqHuAS5MP/6Bj+I4OTHdC7jiCGHI6StKlXLs9QPu0Y7tP4ym0plQ616UhIN98Gx2msCeXpfOEABWvpZlYb/ZKjqTxp+nDIPJDz39IJnMRjgyXCEuW67xt+f9RalW4y++8WbP9e+eHTjXOUKg62uruGn1llfYnxkPZ6uQg/nvX3wmsDNAuVYBIz04eHhi9PcK1aSZFAcW9oXirhaDAVhKGgcqaG0A9kpDPW4HjKMQyPKOkRbWAEi7uRlBC5G0txtpYXO4adjd+hUe3jS8un/DH0j8Bn+5Ubh3GGl3NM66DfmZDw2oROrNzUOdUlJQStHUZIbqzZjHyhTB5oAScuXmGtaeYuGcPDdnNyKh+CD3g1AcPuJ7jT9q+X93Gws4HAB1sRT+Uvv2o0u91GWUqoeO3h94hPbNYl5eW1sJ1Sa/F/zuruOnZzrsphIJE9HoL3u3YJubnkGpZLijH2BvCCQGxUpJFcpFEiR1OTg+mkYCM+bZHYgXat5VG7Cv/tov/rr6o7/8//DFa1e6qqsfHhwC8O1OmkkcdQeEIBGE93V+Ohf497TbMXIh5JW16+jU+TOBf4OnJjNwzu5W5IE+D0YHy7bERqnIglz/BzroHjsH48Wjxx4ky/OLPbYQ7moQ7Qv3AtvRvnE2RN09E8DktH9+Cc3nZsM9SRGRDu43F3NzCPZIunSFgGpZLdxPbtiuegv4YUIJ+vh/9xgyU0bAPXvUnUJC1pFyVns3/oIkqxsb/I2z5z0//MA5ffXmOoolC5lHUwjNAAX3s6+/hJutYIzlm/ma8270SZjK6Mgo3ze74Lke9jNG2INEnQ5fG4D70IBuqI6hm7uNtJtRtNuGW9dA60bSIoToOxG0dxlnXcPtO1G0/z9779ljR5amiR0T5t7Ma9N7MsmkKzfV1aaq2ld3T/f0zM70tjQasxJmZlfCAtoPErRfBegH6BdIkCAsBGkBLaSRPuwKAmYa0zNd0+WLRVaxWPQuPTOvy+vjGOGNm0kmybyZETd83IgGi53MY97znBMnznnN8x5E0zoYRmBVuRSs1W6bL7VEkgvOzVNYPptD+Uw0PJQDAy/GHcPH53F5F7UTD7HQzjLGhGHk7HAZ9OBg/+ZC+K6A83vccbnc7n9vwSkkNrmBMcF8LF+Up2YXfD3c1hsNduvhXV/79HLdmw4Cwhuv1YPcsJqq4UjnPT9iAigYTKZmsBoNAyc4gZBut8t2yiWlWvcnKhjmX1VVMARH7lsBES4/ffuH+DtvvMn/h//j38TmffdyLwlL2xCFrqmaoiTKaUtTAmu9kM2S0fSIpfJBFeKCy1sP7+PbD+8FIkI+k+PTYxORtHjA3RDyu+5WKgrjkO41eQ4jAN+q6fEJ/u3XvxmrvR5YayC3b73VZJVaRfFLIR7G1UWpIqbHJ9DpucXInUfCiCcY1JNnMATa3U7s6NYPdPW/+Ku3BwMl6FoSCV5GhO06FkTceviI3Ftbd9zQUQ1AkM9OpYR3K2VP2o9Do0II9uWdm8rGzrZvw2m2mwi+s1KEJ/VaMVfg0+OToTqzAqU5FyzS56xYG4BDRHXs28sboY5Yx+gqBtu/xGHMpBRUcA7e24xSisdyRRpvCqMIzZZPogLlV3WvRmuNPZ96TLqxi8A+08A+h4Dd2iEqD3uOEEpYvLjAiCWBQt/FByj/CHCZxunp4SQE55E+fB1MCaVULs8vYT9TIHQNQ1y7/ZWray2wJYYxM13IPMj726MCJkhTtOjSqJ8wMaqqioXp2UitBQgCghwkpWoZlatVDPmLvHxgHYBzZlpP0SjlU6eEoP/+X/938q9/9f/i+2uPvIQoadsDBDRVFaqiRurd9AAGS02mNJ1Njo2F+kzABUfX795G99eDexdH0iNsYXIm1DgdO+HgOC8RrtRrslytYDgMJk8PAdjvf/qdH6K45DQFIwFjTJRrFQq5fZO5PphnheWzGXxx+Vy87nY+v8jAGLE4PecbxarPw/OlO2BkiJszjqYr8vf/2bcity4gsSPfQYhXnU89GB+v3b2nbDzecd5YnxZA31tvNuTa9mZ0zyOeodNreP3xFrt2+4av+OxWS5yxcOS5BTbcyeI4GQsfa43ggkc6H3rgBuBhoDr2eH+IZvMYyWar9czlDQxLnLMn0V0QDJ3LZGU+k4vchziakxKs1JBcHaJ+H5d2kktNsFNxfO+gDEdIOWCjD7OoJ8kmMQqHp5uJqcRSIlfXPibEzAF8Eg5R/T1Q1oSNrmYQLDVNE6+sXPRN0Q/U51e+ujaIqOGrgxGXwn1qcHCeAOM8GH/DN2j3JIJxplMpOT0+GcVxciklbXfaZlSwH45jKT2FIhIxjd567Rvi97//Y/E//rv/NYpz694ij2hLlFKe0nRXzwQRheJEsWcmJkP9XsI55crNL9Hq1saJY/GyQErT+dLMfBzWFJNI0lKlAsZgLyGLRNuqqvJXVy7S0/OLkZC3n5AH0b57zYYZ7dvudCI9Hq+EJ4SyEV3Hl85eoFE5j3iFxaDtqooi5iZnfLt3DSpnyOvJrtHFT4J5Qi6sFfFGsynxu3/8RuTWhbGBkKhbGeHJZTjn/NNZ7esRAAAgAElEQVSvbtJyzdtvK0RSdowuXt1co4zzkwUbshLtTkf85tMPfF2L4FBdrdekECJw2wsEBM6MTyl+BkhYXmIYgYNa4BhZlve5gpYMwAnV8aDwJvWOQUDWW80XXxyMJD/0QoEBA0IuxnJFktL1BNAYI8AEE+tbm75+6GIMp2dDg/y/CGEaBwMwMqljg6WBBjylGcLoMqU2RC9iHNvIRXOBA3bSjP6kUTYEwyEXKG5mJ6d9OUyCAfja7RuIHTBweLZbeN+wF/MOzmgKVbCqRDQHlE3YYf3lMllazOV9WX82xbNUHLzJgSJ6t1LGlVoVGcywVM9uIUywUKkqdC3cjgG6psv/9l/+1+j/+83f4Qcbq3aHmZQPAQKEYJnW05F9J/2AkGDCsplRJTea8aO7gfqAb9THX15FW7uPB6rvZiUweizPLcXmngUGQyEFhX1/r9lwE6pItTVVHGff/fqbkXT0gXRoQkhkGIYo16omA5gX57pITagFYffTU6BLy+dw2KnvLQzH9yK6pvGZ8ak4OMP4jt1zHQqDMWDiicVZZWImx77781eis5dKJI01hEXLvWXAzfyzV3Gr7Y8DDqTGWN3a8C3frXtIedsSfAd//dFvkd/G8Wq9xjrdtutBKXbRIoTwhek5OpJK263qeXlwnheCSx4iumw7g8avp/8jASlYe/loCfyNMCZmLloCGn6gpNwn++ylp+3lsu3lrjX/C/8x/z74vR0BkrLDiYDBOe90Oy8cvOBAK0CRx5/lVoe1lRnJ8GIunxzWYrhk4CO3tbuNuoY3StsYQhbYkMycmObuH48HjGGBPhgJ8zvr8gOOWxgTMizf5ahHA8M8XTh9Fo34kMMQvB5uP7xHGq2my6vOv+bMs4JHHqqaqiGFRuf+7wbqQIc3li/gbIgNKRbHaUYFt9ottlMpKXsNl1ziD3W+TwlNUnqKAO1mGJ+Xzp6Xf/LTX/D/6f/634ZrIYdxMgaUCfa4tJ6C6/iALcS/mqIoYnZiMpwvIUJISCE/+PxyaHLdAavF2flTsVtQ4ABkcI52KyXabLuoCY/AK0QwQT/99g/QSDp8StLj4NuP9gV6Z1HZq9FO1x9jQwSm1JaIkJbi4ukVVMjlbdUb9sKj6TSbKIwn5yN3FgIEjaL2EXpdd5r3r5XFs5Ps698/F4l1IVnP+Cs9yILzt+9/6Dvt/vrjLQR0/8nTQwBeqis3vwQHN18hAb3obqXkmY7F6mAoIfLU3CIGnUwoHwha5PwJc20oZewjFP7e+F8kCVSiNGPxkJXDIaGvRwtGXHBB5XOGmf1oYFrMFSAXWzyQSEYBoY+yVCnjKBsjhm0aQeEQiyfgCGBQ8EopPVPGUTpE/jKQC1ZKLAR8O6J5rEmnR/il5RXPJ01KwR5srCnlaiWar3GPMp0K4e67A0ZQVVExjVnabDuTPDM5FZscggKur1Lg3XIvKtiLXGUpTUeqGq5I8XQqJf6rP/8vyN9/8j56tLlmZ/qTsiFCABwNNFVTlGH6jtvAH/br8UIBwzsYxsdghnz/6qe4GiKFJjgTnFtcDiNcrsgkpRQdoyt2K2WlPQQGRVVR+csr5+mZhVOu4Od1IxghwaUghmFwM9o3RO+G12P3sn14r88unkZTYxNedhOrtvOZLCpkE6O5i5PKuBCo3WlHwnjab9wXX19EF78Wbip9KRFHBkLGKqLSA+Zkzrn81Ycfe6ab6oc9KMSAzWOnUnJxWUa6KXnn0QN8d/WB74MAR7p6q+5Jii2rgzHPq0tnEDg5hfiRjEePCjoxAId4RcVZNDD2naSiF4IfSQMEl/6RVFoUcwWaeMZHfJVIyerNBinVKqHe3SOOsuvix8gAbB5ugH85bg8Ylwkhvh/gw4AjkEILHiy19yA4UEr47OQM9VyJg5Hc2N7Cmzvbg4gZaB3TaQJJeG9dUzIADTtw3uiqPjQR8/0mESLE5iansaK4Bm+g68XsXEqGMFbqzQbbrZTgb9dkwgRzcBhI6ynPHTesCr00Oy//+S/+nP/Pf/2/x2gSrY4+XuU0VTWdUuI1KuejAfq10VQKFfOF0Lx3h0fV6rTFe1c+IWGMRl1ZXEYk5lHlQkrUbrfZTrWkxCk/5fNvzkShyL7/jbdDv88LITgQC1bqe7JaqxLIM5g87iIAZ7f5qRm8MD3nbsMxbI1gzAq5vJIdCW/qgGjCjhmwcbU6rdDvSUfhSyllr755Wjl9YTq88EvERNs0/nqGcbPTFu9+eiUQvSywedRbTbm2teHZ+MI7uS9KVmvs8Q+uXg7knFuqlrjBWCB9AxI9ZryVUE8XRoiBU1vQ6QTtgpQYgO0ilpR3jABQPDfbLSsbiuR9vCrg8g+5gc1o4BBywzsGaUgaMAyDbexsJR/5CM133CigEUZwYfF1DXod+WsenAgxcwBHaGm5J2ovGpgCRXDUooHhwPvS2QtI17ylvIEcL3cfPYjc+tjPF+eaQQSi7AihSFfDndPVvZfj5JZUVeML0zNWzmgnNxayEmZUsBB4p1zClb0qUGw5lnDfgYCkNB0HzbqQTqX5v/jln9OPv/gMrW5tOB5b0kCwCIBCMqXpkdunvUYNqOFmJ6dCR48NyktwcP7tlY9pGFPamJR6MwvxcvA5YbFVG3uiVK2Ags7rZelr+3BW/N23v48yI6O+9mujMzMdQ8fosnK14kk6BhuyDEVRhVJeLBTlucXl5JtxzIwTQth4vqiEMbdkDBaqgEjOVqcdOTYuRVXY17+/oswujYVzGiTiooGkseGd8RcGXt7bYx998WVge4iUiBlGFz/cWqeMsXDOhU9SwbnlVx+861Nvz3ZjMAOVa5Ujg/H8EEhRFLmyuOyavsdLmXmfoEUv+3TSdmIAdoJeUtc+AhjzbrdLu8xCrleM4PIgBed9P0IQDZzWU7yYLyixiUq0j2oka8Dcrm9vYtg0kyc6CJjKbhQjjlQM4aLCtwMG4Ccl8tS4Mmz5f/u9Pb2c8gJSCgR2kRnkzc5msuzckrcKnHa3w6/fuenpOhxk7CfVcdOgjzEWcMFQqRo5HE7CycnvMSZsJJ3CU2MTscUF8g9ijJVas85L5RJ1KwWFrulIC5ASeqI4Jv/LP/nn/H/5v/9tpPY8J+s1znUJgTzAad/OJ1HAkhAiitkcCVvOUyElq+5V8XtXPqWQQy2MD6VELEzOEtinhugxDZGlWgVV9mqxGLaiqPylM+foytLp0I0Hon0RRqRcreBao44Mw4K+J3SjiK5AlFA2OjKKXjpzTgk5dWZgIBNMxNT4BNHDmlsyMGTc6xjSu7U7HUjL5F6jHrekqlR8+/deJsWJEEaGSyR4GRG26zEICKG17cf82p27gd//gOprbXMDh5FJxftZ6PUAHssffvEZ2WvU/erymX4gArndaSGv9ZZHDU7XdL48vxT4OrQIvGCcBRI1b1G+Z4olBuBBUEvqOEFAtDptAnkiLD2Qo5ML8nw+4MN1IRqYEEyK2QIeSY9YajYpFCwCoMR/XN6FXCHBCpL0bhsBiJjDKF6Rpb4p6yAyFeimpbfem/sRaQlFPqxujMDDhAgenWhgSqlYnJkjY/mi7ffTagUuhLx641p0DAvgOCGkqxcBTdFQrKiOrU6+hXKEEJ7LZGkxF/8caRAVDJHAO+USgahgJwqr3nmUyrSuK36nKEnrOvuzn/9SuXb7Blrb3rQwy0mRKCAAUUp+r6Uw45LSdDY5NhYqBwcuBNutlNGHX1wOlVzPzyMhmM9NzNBhjHwDpx8wBO9Wy6ZhMspPMV/g73zz266eh5zgAZHvCCHa7nbMaF830yw4kWtY6xKMuabp+KWz54GZZFhh6DtuCB6ZnZjGCg3NKxTXOZLtThtb1vkGjIKiUvnjX76O06PhemfAn4zvIMSr3gMEKbRuPXhE7q+Hh0Fo4/EWqg5pvng4t9y4f0d5tLnu/eQf0QPo63cqu74GyhyIMToyyhan50J9pj6Q1aSCFkLxTZ/scDUkBmCHACbVbSMg662mbaWz4BydlKcTvMJTmi7H8kVgh7YtWFLBHwTgoljZq9G9xp4/HSa9uIoAwVhCZgZXGw2ysX3D0kn7iysigjHS4+jfAzmDpiJ1BS8XG4GoaGHGA7trRHRRxGeagnxer6xc9JRS9spX11AkDqumER+upe5FzuuqjpJ35PjVC0qy8UIRh5hi0tXXDy7aCCGgqjRzBQ/qdQ6R5cBNq2u6rwpGMOr8N3/xL/m/+X/+XaLVdHVlBNcYONwBPX2yVz2dg9nJSaTQ8OiEOOd8c2dHXr7xeXiE6rNkgfp0emxiqHNfwh2UCYZ3KxXiFvOD3zvET976Hsplsn53+0J/QNImpMCVWhXX6nsozvmWAwd7AAFURZEXlldwbjT4tTKA+J5WWZqdRxjFR5XhKVgOG293O66kW3EohqXqv/jLtxEm4VoXxgZCwiefJXBmu3bnrrK540OosaUZQaCnkKVqBVL3WKwRr2I7lRK7fP2LwM6XrU4L1Zt1iBvw9W5ZzBX49Pikr306XTlRoYJODMBOZzqpbwsB+LC0Ou1BNjHO+cmJyA8Ub5AbeDSJBrY1N34UlggBlYR8XNodZA34IWLSx3EImNG/SInTpck0DApJvDYAQ+5SKf25bQL1MSEhu8GE4M2CuQbnBc556HMDY4J5IZuXy/NLnuyVcKG6ce8OjgQLAzbvf654dYFRU1M0nDiJWX8hZyenUUoPl0e8dekHKwkLjjEmdyslUq5VB86BBLm8NR9oBjVVZf/0Rz9X7q4+ROAtnzzxQAC+5QpVcJC04mFBkmDCcpmMkh0NT85Txrl4uLmGvrxz05Xvk9dYA0PBZGGcFrI5r7sKfftgvOwyQ+xUSkq70wm9vCCgoijs0vKKcu7UmSDlNR2lGu0Wq1QrSlSN6EEC6Hff50+fRROFkOY19RsMoIQiRC5Oz4XLyhcADn522el2EePhzueqalT+wX/6ZnjWhUTSWENYtPybKcaZ+PT6TVLZC1eQDjhu1VtNtLa1ESmDoBszZzBD/vqj9wJdl6VaiRvGyXYYN8YLbYA9Z7I47ikTnluyHm4H7BxW7FVe9G2nzcQAbAetpKxTBFi721UGOgBgBNRNRHBu6ZIN0cC6pomxXDHxnHc6ay7Wh4PF+vampTl0sdukKbcQiKEBGKCRsL+IaOWJPW5KMUGc4ITbqi9GYFCUkF6gf355t14ZJ+1AFPDp+UWcz7ivrBVCsPtrj5RqPfw58dzI+2tS10NUpqon1Og2FyWsw7mpGV+jWW2K6Fnxg6jgWn2P7VZLSqttL20FrDtwxknpKUo8JM6ACNF//Rf/iv3b//B/euIw4hnAScMnIqBQynRNH/p51RSVT0+EJy85F1zeenAP3350/8Q5DFOB8XwRwZ/k6SEAuSqbrbbYrZapwcKdrzafzfMfv/mdQBTgYDDngj+J9mUcWJ+TJwoIgMPjqdkFBM58yYOQShUxNzWT6KL8XQyya3RxmFkCRkZ18dM/+Xoo1oVkPeOv7Po7SRAR8e5nV3EYnaIkQswwDPxoc42GeR25PWOQlugfL3+EIJI+qAfORqVq2bfuTbaa8SklHwKmEzuDxmAAFoKGnV0vMQDbmdWkrGMEGm1IJC4Hagc84TlntiK3IG9WMVdAw0JhOBCwPlWCed/a3UZdI9wXbJ/giGQ3ZoQ9wqE4HLsJIETnciEC9a5zczyEAAVpwoNvBVM4WA/6TbLSvtMymqaZVNBO2zmiPl/d2qCPSzseNO1OkwfR+U5bg5zYlCoQ+Tv0RpRBsdQ0nc9PTQeieB5UZrfrSSll1zDEbmWXViAq2EYHEHGiqxr2Iuc0pUT85K0fEKBH29zZtiFVUjQKCBCCZVpPe/ENiMLwTRnhLjdZHEMQUR+GB2jert+9he6vr4ZBHFsy5DM5Pj0WHkO6LeE9Llxr1nmpUqZhzFkJ78A73/oO8jd6G9IiYKXebprRvs2Wj6FoHs/1sDVPqSKmxibQ8vxi7O7wdudS1zQ+Mz411OdZu5i5VF4YzCBh1QMWJzL8B3/4WqDrQkrEkYGQsYqomVk9gOdv3vvA1v3GbxGBoWl1cwMPmqbHb3md9gcO+1/cvqFs7T522pSj+nvNBm+1G0j6kMqOUMLnJ2dpVNlcBwp2dDQ79ionBmB7eCWlHSAAGfwarZajgycYahgDFlrrDyGEq6omx/MFJUx5o6yPIPolwcO6VCnjhCoq+nNJ4mf/BeWiBM92t2cHDFhSIkd7nm2ZIOIMYwWURcljAQHIAS3h6yRpGA3B4AU5OTZO56dmXZ/QnUqZP9pYDfSy23eGMGYQmw/zYmEWj2kGC0VRsEpV1/FzIlfU6mJC2GgqjSbHxofeiC6lYBIhpbq3x0vVMrVKow7fGU1VpaZqrn4TKCHoX/35f87/+m/+vaN3JWprcpjkhfzOw/pNx5iwTDqFC7l8KNY3nBM+u3ENrW1vRnIJjqRH2MLkzNDv430mD86DFGj/y3vV0MwvUD9fOH1WuXD6rC8ymdG+nKNyrUJq9ToCh4fkiT4ClCgMckdfOrMy1O//SCrNJovJWTagFc3BONLpdkPxPT+MwfzpcfbNdy4E925IxETbNP4GJoPBufy7Dz+OxH15Y2cbVffCz2Lmxnu2trnBv7x3K9B3Bs6+O5VdKXwImAHH5qWZRRIWp0+7cwjsYVyEk2UQ7pKJAdjujCblB0bA4Ex0ul3Hii+ggBCc2f44woIvZPMoO5oZeAxJxQEQkJLtNeuQR8/x3A/Qe1LFZQTiaABGGJsU0K7mATbpsiX2w1Pu8BTv50Enw6osdrLcwxoNDHMJObzc9oSst5r81v07gV4o+ltuJZcCOZYN8q8mjl9O3oqndcGZLp/J0ULOfUpydyT0txUw6MKe0TG6YrdcohULBgOTEhrjHiW0SyQNb732ddQ1umhrN7zR/P7OTLx6gzWjq9rQprOhlMjZiSlg8A98YkEB9vGXV1HQkRhOgEhpOl+amXf8bXUiQ9jr7lP/051KGdcawedCzGWy/Cdvfc/TOZMISEcR5PRl5VpVabWTaN+wr9NB5COEsrSu45fOnqeqog7SROTr5DNZWcjmg/+gRB7JQQeAwTiC2p22bV3uoD1aqbfy6px85Rung1kXEnHRQNLYCM74Cxg1223+7uUrnn5rrMyFlTIQCQzOWo9Lu8HMmRUhXSrTbLf4P17+KPB5aXXaqN7c48Khc/5JsMB5f2VpGVES+JBPErXf7yFlBglbYAmllM1PzSqJAXjQaU3q2UWAtzod6ooXKQZnVEGlFHZlQIRgrii9aOBhPfjaBs1hha7RZZs726E65Dkc0tBWB4U3RiHQwnkxAxgJIYQrTgpAOSvN1GLBHOQhH2TyDIAARJ1KiYWA74sdgtcB+rJZJZ1K80tnzrk6sQZj8otb10N3cdo3rDmSCyprmh7ly4PNFeJPcaAyHi8UcZJW41m8ISoYIUzLexVZqlRIx0KuppSeQqri7GgE3tF/9Ud/Kv79P/ytK98uf1ZR0osdBID5SFVUPIx3FkKIKOZyBCKgg34gN94Hn1/Guz7mQfNizKqiiOW5pWS/sACulJIDO9BOpUyCYrCC3PE/+ObbZjorLx5IbcAZlyWI9m3swUXIi26SNkOGAKSXubR8DrvtWBqyYb4gDsaYF7N5mgSDBD5TDKj2w2IEBgfXV755ip55adZ/YCQSvIwI2/W/6+d73K3W2CdfXnd2MfFxGEBW0Wi3gBI6MjIPCs+vPng3FN/nUq3CDKPrKd5gAL5wemVQqMJSTzJuj7XWa8FHUmn+2vmXaGIA9hrppP0nCNRbTVfREII7yt1YyOVRbjTrqkxJY88rRaVc397Erhj+E3ADRwAMmxhF1x3rWACBBdotjzaMBPKb+nl/cBABTNwKLQt8xQUnAJBCC+6OQ4AbowCvvZmJKWV6fNKN5sw2TCrLr75wrT03GnJq/DWdVDBGmqrhWLIVuAGyC23MTU0jXdNdaCl2TZiORB2jyyEquFrvT0+GCRYqVYWuDZ6b+qWz52Gtgwd87IBMBvQUAYVSpmu6pwqXMOKd1lNsolgMfNxdZsj3r36Ka/Xgo0GdzhOlVJ6dP+XIwcqpDFGrL6QQ4DC3WylTiIDx6wHq53NLy8qlM+dc7XI/wlmpNxtmtK/VNAauCpE0FjgCcFUEJXsxlw9cFr8EIBiz8cKYEganIr/GHNZ+MMJcSIFanXbgTteKQtnXvreizJ8e9xUuiGXiOwjxkGQcWN3c4l/eu++qs7kPgHKDMfRoc42GNb+0Uww45/zyV9douVZx2pTj+owxtFstOW7nuAYURZEri8uRPqeCsxE4joaFChq+95eWz5lMuIkB2NPlmzR+gACXgrXaLlN9YCS5zXzAh2cEcisqCsVjuTGqqcNJg+PlCoXwR1BKJhdLL1H2t22gIsQIB66M82rUcBFx+oABSkoZ2KEFcnVCDmCn4xj6+r1oYAq5TsIUDfzyygXXDG+wUK/duYENwwjHdEPkvAMnDJNelxCkKVqSA9vjGVUUKucmZ3DCNtAfaPBMlwiTUrWEytUqBprm5x/zm4oxSekpArl87TxpPYX+9Ge/EH/z/j/Yq2ink6RsKBAgBMu0ng7sXBEECODIMzMxiZQgGU0wkq12W7535RPSjAklLuB6bnE5iCmNfJ8SSdlut/lOtaz4oWjOjI6Kn779A9f2dzjzMcZEqVah4MwQprNt5BdHRAcA+8GZhVPITefSMENBCOVTxXEa1dySYcZ2UNmAyrfT6WI3dDCDyqBqCn/rJxfp+LS/KW6MDYREfVCp3a0nkeQ37z+kDzY23W3Yp9bg+7a6tYGDYuvwdJgSiduP7pF7a4887cZq4/VWXTRbLSGl9ETfqGs6X55fipojwovwga2K88D1iGDzmh6bwKfmFk1MEwOw1ZWelHOCAOsYXQW8c1x9QFksQcXmPMl2PptD+Yy/H31XsQhZY8AoVdmr0r1GSE41IcMnquKY+WURdk0ZESYcwHALVG9hksm2LBhxggkNQ64827KHtIIZkSohlYfw5JBrd9iZ0Qw7f+qMK7JAjPPtR/dpvdmwK4br5TFGQiIEeoCBxgaelhDZBMZf14VLGjwSAbigzU1NR/+C5vn8SiElIu1Om+1USkq/KMKUpiPVhjPiqdkFVMjm0U7FW09sz+FJOrCEAEQsDcu3nWDMc5kszY6OWsLGi0Jwj6k3m+i9qx/HLqpkZXEZAbVw8gyGADg47zWbvFQtU875YI2cUAuc2b73xptovFB01D7YfCWSyl6jzqu1Gm1bSE/gqMOkcuQQgLMzOPQtzsxFTna7AoMz1ezENFZoclWwi53H5WWr04YUTB53c3TzikrlO7/4HTyaTfnTv0TSWENYhCjVOheCfXH7jrK1G907BSTv2trZRpW9/uxL/kyw+71U6jX20eefhWbj2invAHWiJwfJ0fQIW5yZD81YHc5m4FTQqqrKNy6+ig/ukIkB2OGMJtUtIICRbLba3nh2Qd5OLsgg+YAPSw6eEZRCNHAx8Qq0MKUnFGGtdgs9Lu/GZeN2jkgcWjDpnzHFyJNvffAIYcykEAoodgZ5go78BZlNiu7EADzI9B1fByPQ8BHBg48GppSKhek54lQpCAMGxeCjzTVlt1J2HzObLUKeSyEGi5yHd0+hylDmyLQJs6vFgW0gk06jieJ48q23iCwYlYSUpFQp4fJeFR2OvgdKaIUqImWB6ncknZZ/+MOfonc/+TCmH2SLgA5JMTCIaqpGhyXiXlNVPj0+EZhziZCSVfdq6LdXPlbiFiVJCZGnZhaw4jD/+JC8escNE6JfCOzjoGx2c51Ayo+VxdP05ZULA+3vGGEhpMBdwxDl/WjfZL4SBI5DQKGUF/NFCZTjcUdqaWZ+aJypojSXoH3pdDvIK6ea47AAw8g/+c/eRFTxPsZBsp7xV75IChTodDHBxSfXviLVerSDdyA2rFKroa3SY+8n08cZAzrhX33w7kBnAi/EBIbPveYeiOU6zoVcns+MTwV2B3ATL4wQE1IQLoJJKwd6wzMLp8h4/qkzYWIAdnOGk7b6ISDrraanG5bTfMAHgoOQ+WxO5jI5T+WN81JhnIn17U3XPwZxxiwSYzPpn5ESWwOwaUEdLA8wGF6lRKE4qAyLgjiIdwaiVCFEVXAZ6FyDt/7LKxexG9SYW7uPzTztQeB5uE8nylPIgZp48wczg0CnV8hmKbCoJI8tBIDBhrbaLTMq+IAtZd+Jh6Q0/Vh67YnCGJqbnEG71eCdN2yNOik8GAIYCU1RiarEP10NfIymxsfN3NZBPBAFs1suow+vXY6lIYRSIhYmZ0mSw92t1SUZnP93q2VcdSlH9Gh6RPzsOz+0fY8WQnBIKVCt78nqXpV0uiGzMLgFedKOJwhQQtloegS9dPa8AhHocXzA0AcG4OQJLwKwbzHuMmvkCcMllKA/+ou3PAVFSsSRgZCxiqj0hjjCkfxcCPTu5SsoDt8NKRFrtZvo0dZGbJz4uODyw88vY2CmCctTrlVY1+i6elYGtsmJwrgrgQ5hwQnk4IK76ihodWyFXIFdPH32mTlKDMBW0UvKDYwA45y1ux1XN4cjhOGcM1eU8hDVQgkhY/kiKOEGHvcwVgQl/ubONjJYSHJKDuMkeDRmMH5hFNMb4QFmYOCz66EFuWIhalgir/e4E2cWIiEJIYEb804UNMIF4D2AWOsgc3rA4biQy4vl+SXHa26vscduP7zvuJ2BpxSonwf0HiWESFVRMSWufPoHHsKwV4R5mCiOYVAcJo99BCAqmEtBSuVeVDDbT5cCBhrtCErokVRa/vTbP0AffXEl2evtwx3ZGgqlTLcQHR7ZAZosJoRlRkdIIZMNxPrAOecbO1vysxtfBvdN9HgCCcF8bmKGAqV48riHADCqwD6+WykTJ2k1IBf8t7/2TTRZHLcqnABWia5hsHK1/MSZyGrlpFyCwGEE4I6ja9cZfngAACAASURBVCn00plzJKX7RIfr4xSAA+3C1GxydvIRc7tdgS4R9Iiupw48RpDUiCZ/70+/4d26kIiJtmn8De3ZAnD/m/c/tDtdYS7PDcPAj7bW4fsYZjktySalYNfv3lbWtsOToxkcNXZdTkNk5qsdn1TilpoTI8wNbviqsAKHp9cvvoL05xxqEwOwpVcuKeQAAdP4yzzKkfNELqBvlRwLLlx7seClyYxmRDGbD0QR4QDzQKpKJGWpUsaNVng8kwIBIqadgnERA8lwzB8hbeafAXrgkET/YoIZwSS0l4tYLR0wXEpIQeA8B/0guIAS4/TcInYaedk1uvza7RuufTdtjWXfecJu3t/9KEmsqzoZlpyYtnANoDDMw+zkNNK1YKL2AhiyB11KhhBWGq0G2ymXlEaraea1Bkrow+t8JDWCziycQuVaxQMZkibDigA4WqT1VKzPYL1clFOBjJFxLh5srOLrd28F0r9f685Uro1NKNmRjF9dDlU/4NDTBaVouURbnbatsQP185mFJfLquUsn6h0kcNEgRIB+urZXA7pnW30lhRMEjkNAoYq8uLyCc5lsrIDSVI3PTsSDWjRWE/PcYECnaBgM+xVQkh8b5e/84ne8uQtLxEUDSWMjvMZfgN9gTP7dR5/E7vwjpZSrWxux0E9vlXfZ1a+uhUrP12g1ZKPd5HZ1Of32L0IJn5+cpXFzKgcqaC6EYlvPPOBGTynli9NzdGZi6oUWEgPwgKAm1awj0Gi3fAl5hxyCbkdl7UcD07FcAcfRE9L6LJ5QUkpWa9ZJpVY98dLqWp9JQ74jQHDMp9dmBDDsOVKGIykyGOghgCautF2+L3YbHQohfPnGPS+SpqrylXOXHF3W4GL02VdfOGrDBlTPFh0g+hdjzAih4M0YqgvQwBjEqKKiKHJ+aibZg1yYUyGBjELg3XIJVxt7Zo5roHzXNV2+863voM9vXg/mnXVhbEkTgyMAUZtxdXohhIixXJ6kU/5HnQG13q0H9/DtR/cHn5yI1MQY88nCOC0ktP2ezhgYMNqdDt+tlJWOYY2KeSSVEr/33R/1v2hJCUZf2u52WLlaUZxEGns6+KTx2CBw/tRZNFEci814RlJpNlkcT+4PEZhRjBA3OANKYm8Ms4cwmFkcY2/95KL760IiwcuIsN3wA95otfg/fnbVc6yDQAKUddulHVSuVYPo3rU+O0ZX/sPH74fu/rdT2TVtMG4MFNKULM0sxDZNiV9U0KPpEf7quUtHvs+JAdiNlZq00RcBgSRvtlq+fUzAIMMYpCp19wHP+5HUiCjm8zTWOVAHhK1jdPnWzrZv8zygmEk1BwgMRQQwMAkIoUigdI7aA4YxjJ+JFIvaECIrr5kDWiIpJHWSy9bu+CGSZ6I4Rham5wb2zAB5P7953cxN4vdjFyugvgYjo0rV5Fvj92RZ6A++EZqmi7nJJLrCAlyWigCtKMZYqTX2IMoLPHzQKysX0U65ZKl+Uig+CBCMuaZpNI6U97B3pLQUnygW3FfAnrAEIO/dl3duogcbq/FZLCeMZDxfRPAnebxHAM45jXaT7VYqynF5LeFs8+arb+Dp8YkXhIJoX6B5rtSquFbf85Ua1XuEkh7CjACwMizOzOG5yZkwi2lZtlwmmzD7WUYrDAUxg/tpu9P29Gxw5tIsf+2tZVfvlkAox3cQ4hGxOe5UKuzT6zc8xTnIFSWFFJV6DW3tPh5YZxKk/NA3BBz85tMPUNgYP9rdDtpr7NlPo3cEoODkurK4jCh19XUMeuqe9C8Rci1tab9BAYYvn72AMiOjRxZJDMChWQ4xFAQj0e0apOtzPliJJBecu75rQG4qSjAt5go4neROerqRSSnXtzdxEAaEGL41oR2SSbuK4p9sU2JkGoFDOxF9BEvy/4ZjxvyOBiZwUD51pu8h7yRU4LR+88Fd0mq3Tirq2u9hrUJ0o90GNUVDihK5V9PuMCNdHlhTMukRPFEcc/0MFmlgXBJ+bWsDjeWLR+YGdqmLpJmwIoCR0BSVqIoaVgkHlsukkJ+Y9F3hA8a5z25cQ2HKqTYwiDYq5jM5Pj02kezRNjBzVBQjgSTQNVdlqVbFzzu/EUrZ6dkF/PrFlw/PCUMIKc12i5VrVaXRbDgSIamcIDAoApQqYnpsXJ6eX4r0ngHsB4VsnuZGE/r7QddCQPWAOtUzIzA4F7/8jVNk5ZU5V4dnbCAk6q426WljDzY3xY17DyJrHLUCDjjVQmqGR5vril0ndCvte12Gc84/v/0VfVwKX0h5ea/Cut2uYyUN3AcunF7xGsrA2gdmAy4E9YoKej+HMj01u9BXz5YYgAOb/qHoWLQ6bQIfbV8fjBnkZZR2c3laFNLMw5VK87FcYeij7SBS8nFpB7U7HYvoJcWiigBQr2KEHX/YQz9+jI41TuFe7tdQHpDj6i0X+jVzWEDIayslFkL4Fg2cSqX5S2fODaSYEUKwB+urSmXPJxflXt5fIoW09Q7pqu67cSBS6y5EwgKVayGXJ/mY5Y4LCmKgEu10u7hSq4hGq2U6IKZ0HaU0HetqknM5qHkJol+FUqZreqzOYQQTns9maWZkxFdIQfn38bUraKu042u/YehsJD3CFiZnYrWOwoDryTJIBhTOu5UKrtZrT4qnUyn5e995B4PiU5rhvhxXajUz2ve4qOGT+0tKJAi4gwClCgPD6aUz5yK7bxCC2ViuqMQtt6Q7Mxz6VkymrVan7frdmiqUfe3bZ5SFs5PugCCRNNYQFv75VTuWW0jBb95/SB9ubjluK+wNmNTijOFHm+vEanqGMI3pwcaauHn/ji0dih/yM87RbsW5YRpYJ84tnbEdJODHGN3sw6uznaZp8o2Lrx6LX2IAdnMmk7aeR0DWW83AXmAhuGd5GcGLkBBCIBoYcnIN4yMl4pW9Ct1rRMi9bRgnyqUxw5rHCA9kZHJJBN+a6euVZRrBJZYShQ6H/T0pdHL5Nmkh7AhIoQUXnh/SKaVsZnxKmZ6wf3kFGde3t8j27mN/EDQj7KVlBRI4XGmKluSV9Wd2XOsFFNlTYxNoJD2c5yOnQIIdQAiJW502L9cq8Lc4/N5kM1mkKQpDGFNd1UxDcFxzwzrFMk71TQdUPRXYvcoLLHVV5VPj/kajCiHk+59/ikvVihdDCn2bKU3nSzPzyXkxoJmCKCQhBd2tlHG725HfePlrcnZykgBVdKVaVRqtZkCSJd0mCPRHgGDK0rqGL529QDU1ekwUhBA+WRynKU1PpjmiCICDTLvTJuCJ79ajqpR/68cX6eRs3nGTkvWMv9Ja2nfH/bnVABeCfX7rtrJdKrvVZOjbAV3f+vYWqkeMXaPRavDffvZJKM9vjVYDNdotR0yKuqbz5YizTZy0+PeZ8DgX3LI+7KQ24fdgPF9ZPI2LucKxxRMDsBU0kzIDIQAfk5bHORuOX91Icg/yAR/uEyJdUnpKQDQwIZ7r+QeaB48qMaAMfVzedXXj8kjWpFmHCEDUK0KYDEX+a8jnCrlcn8sDDBTYEiH451CueaBehRzADqc6qe4mAr1oYAp0x35QDb109oIZGWj3Kdcq7P7aI8/Xjh3qZ5NxAGOsqzpNDFt2ZzQc5WHe5qamkZZEqdqZEEjGTWuNOq/UKtRgzEzODYwCz58989mceeiEdwW+S7quCV3VCMFDdRa1g20syoLTaZz2RMh56qcxoWsY8v2rn+DaEDuvqooilueWko0i4B0BLhTtdgetnDota/W6YJyFUqkbMExJ9yFDQFNVeenMeRy1SFpCsJwZn8ZqkkomZCvKtjiy1WkD05btikdVUFQqf/BPXsPZwuAOqxAUgwyEjFVEpXlqj9bDBBcff3Gd1BrDlWoAdDPbpR1UrvnEgubCsgCZ//b937jQkjdN7FR2Jed8YEdVYKhZmpn3XCflzehttQpsL8Qt/SBQ2RdzBXH+1JkTsUsMwLbmKSlsAwHW6XYVg0MKm4AeMNhIgQR/VnHmtjTwwoGiGqKBo3YYHhQLxplY395MlAeDAhi1embkK1KG2QCM9nN4hXLqMDaNv3FSCocS5wGFMg2fJquft7mlR0dH2YVTZ088+D0/jFa7xb+6d9tzxaPVQy44W1CqQOSv7bEMOEVJNY8QUBRFzk/P4MQoeTzAEBGGMKKVatWkBuWcI/ObgxCGSODna4PRV1FUlBkZefKOAAuElBIigpmuaQolnr/SHq2apNl+CMAc65pG4zC3GBOWHR2l+UxmYEWRzZUim522fP/KJ6TpY857mzL6UhyiBM7On/ILd1/GFLVOAHxgclAV5YkxA6Oe45tEEhzfgP0fHE/hrp3ct6M2wTGXl0CexuUVdFKkUdhgWJyZRyB78kQbAbhPAn2veVZ2+BCC0c///JtIHfTKKRETbdP4G9k7K6Rr/M2nn6GuYThEM3rVhZCi1tyTm4+3I3FpggSyn16/Sip7T9NIhAn1TreDao09IcRgDHiFbJ7NTExF9l2yOReScVCxO38gEPFrF19BqnIyO0diAHaOd9JCHwQa7ZZnFMyWQccIlO7Uq3zAh+WAaGBd081o4Djn4oRD1+bONjLY8B0SLK+7mBUEgwxGw6NNliZN7VNjHShipHxRCR+WaYYIbYwJSQzAYZmRI+TACG6pRHDvooEppXx+apZOFMdsAcE5l1dvfunKAfTIjvej6q0IBQ5ViqJglareyWNFkKSMKwjAfKY0XcxMDs1lzhZuUkoupCDlagVXD13mYU8XQpLjSO4wwSKtp4jeh85QVVSW0nRFoZHQadjCbVgLgwFYVRRq5YIfdowUSuXs5JQv+zy8Z0Dz99srn9Dk7mKyBqBzi8thXyKxlA9oaFWqyHw2B7oC3u50KBdcdg3jBaaYJ3Yq8w5m/gS2K7iGc3AYQhL58v7EciKSQTlGAPaRMwun0PS4/fQzjjsfoAGQd2lmfoCaSZWwIgDGJsg96uQBA/Af/eXbgzUhERcNJI2N6Bp/YeDwUfmb9z8cDIMY1AIn3Hanix5trSluRZZ7BQucZ289vEcfrK961YXjdit7VdbpdmwbcUHfOlEYw+MFe3osxwIH1ABGGHQA0ikVNJwlIa2L1W9xYgAOaMLj3i3kFWy0WqHxWPUyH/DhuTQ9dhEyudczI6Oxm2ZwRy5VyjjJTxS7qT12QLCu95UPwzFwM/+iiJRiJc5OJ3FadKZhx4wHlp5YZSCy5+WzF7Bik+Ls8vXPvYG5Z/iWVvP+Al2wQm3fGbyRPWnVFQQIISwzMorHC0VP1rwrQvrciJRCMC5kuVqme89R0R5QpVvNcAZRZP2MvNAWJZSDITihPfR5kj3qTqGU6Zoe6U0SchmP5fM4rac8Qulps1wKVq3V0HtXP1GsslB4LlQIOlhZXE4i4XychwP9QC6TRUDjvv/IVruNIRehlIh1ja6l9/rAMIwRMvPAg95hn6UIWCMsteHj0JOuYowA3DnmJqcxRNaG/QFZF6ZmI3W3DzumQcsHNPqGYSCDDc44qadV+fM/+6b9dSGR4GVE2G7QKDjvH1Jj/PrjT+1j4LzrMLUgIOvOo6010umGO4lzqVZln1y7EtpvPUTm71TsvxiQzm5mbFLJZ3NhWheeygJOfYxzR6niMiOj/JWVi5Z1LIkB2NMpHd7GDc55p9uxvBB9QIpzH3PrgIevpmpyLF9QYqPMlpLVmnVaqVWH/YDgw3INXxfDRuEJCpmwR/4erBKQk4ALa/JEAoH9nNoYcqS4rZCGiMt8NifOLJyyfDEQUsqv7t7Enlx4IFrlCArb5ycKFq+m6SgO1KaRWIQ+CwkMKcVcnoDye5gfoJLoGF0Bht9mq/UCFHaNv9AAGNPy2dyx+z/sC1AupelUs0APNcxzFPaxQx7DtJ6O7Pcevn9pPS3GCwXL36hB54QLwXbKu/ija1fCdB8ddDiu1aOEyFMzC7YdxVwTYMgaIgQLTdHgbKYATd/h55BDNWecUyeUpmAY7lFH70cIg2EYmakEEsPwkK05P4erUMqLuYI8ZyH3oJ9yPd+Xpmp8dmIq+RYEOQme9C1l12B4UHaPXGGE/+iXr9taF1IgxHcQ4tFJHXss8nvNJn/vyue2MPBkKkPQKOhl1rY3EbDGhPVhnMu/+/AfQ30PgLNNo918hlHxJDwJpWx+cloZTccviO6EsQ9MBQ3MFq+sXER20pAmBuCTVmLy+0EQ4K1ux9ElZpBOj62DMZOSY6/zAT8vA7yUhVweZUcyrg/JzwbhQtnudsTWTjTyI/iJzTD0NYQRwBxJSUSIaZ8PrzvwmIMcwMOwFmM1RoyElEgIzl2dO/ByPzW3gAvZvCW4hBD87uqDFyIRLVU+6UQrj49jNPcWjJGmakmeWDcAD3EbMM9T4xOHo59CLK2rooGPBeQd5eVqhQJlXb8HFA9WI38P2gBaYMi1nBkZPXEfwZhwjBFJaTrWVc3VQSaN+YcARBBGNeUDOCLMTkzi5w1hbqPHOefrO1voyo0vE6Xmc+BSSsTC5Gxf+ni352JY24O9GWMMjk/9ot1lo9V8RokLORjddww0Y4QFRlgcUEcD9SCweiURw8O6Ot0dNyWUjabT+NLZ86HNUZ9OpdhUceLEc5K7yCSt+YKAlAKooDtG1zb75NRcgX37Zy/ZWhfGBkKi7svIfOlku1Tin924lZyV9tEG5cxOeReVqhVf8LfbCeQIeu/KJ7jZftGR2G5bXpbfrezCe2n5nYSz6dLMwtCdTYHNRSAJtjNbRn1KCJudnFYWpudsTSN+Z/pfANUlJJuyVTEpnCBwHAL1VjN0AEGIvRcRVycNlBDMVYgGzhUjS8EHUSvr2xuYJ/vESdMdy9+bOWbRc27rMRwpJhi0IRxJpOiahs4tLaMb9++g4xT2QcOQ5P8Negbc6R/OYG4q/VRVla+sXMRWjASQ+2Z1a13ZKZfcGQzoGvdzmB7XIMaYgRFAUzTFipyuCZc0FBgCMM/zUzNIVdXAZPCvY8mkRMpes8Er1cqJuUcHMf4ejAUTwtO6TvvlA35+zARjkzpUVzUM3zrgD02eaCBAMOaapoVWyX4cisCOlM9kaWZkxFOwGefiwcYqvn73VrKwj0Aa7qVzEzP0EBWxp/MxjI1DpH5K03kuk+t7voF0Wc0X02XxTrfriyJ+P2LYTKAJjkFSmomGzZ8lQr7IMIxrI65jBqYROINcOnOO+EHvbxfH7GiGj+UKybq2C1x0ynMuhGx32raMuafPTfHXv7tibV1IJI01hEW47W62Z+ze+oa89eBhcl46hJwQQtSadbn5OHzBT0II9uXdW8rG4y3bc+1nBWCWqzVqltPqgY7g7OJy37RGfsoeRF9cQPyRdTdwXdPE1y6+atnA/kRnAAZgsDpLhAjnnNjpNAhgkj7Dj4CQkjXbLVsfX79GBdFGjBmBfeAgN3B2NFrRwBCP8ri0g9qd/lErfs1f0k8wCIChBqN4RZhiYnq/IyQxNameTcOvNPetfaMqXlk8jd751nfwvbWH/POb1+na9kYwE3BMrxgjjjGBMYROtkQgGwhgxE0DkJDUjXMY5F0dL4zhxZk5S5fax+Vdsbq5bvsQeeQIwbiEzLH0PQdAZAxEKoPx1wZKSdEYIKAqipifniVx3bPAoQIhRMu1Cq7u1Sw52Dox/h5eEtlMxlYObfi2QwRYStNlLwo/+Y6E/RWDvVNVVBrFnM66prOpsTFP93wuuLz54C6+8+hB2KcyMPngfDA9NqFEnZ0qMACPPZODYxum+UwOn+SQA0rc1gvGCsy44JQxFshm/DS/MGbgQSiRNO9IkMwDwojh5zDinsgUHgQUSuWF5XM4H6KUHxD9XsjlSG50uNOQhGeVeCYJg2AVq0ZgCA669MYSPv/awokCSdYz/spwp4c9cRzPF4A7y1f37iuPtrZt1417BSkRa3fb+NHmOg1bsOTm4232+e2vPD1PuzG/lXqVd7tdsDGeeKYBZ+QLyytudBvJNsABz7CYshR0aOeWli2z/R0GxIwAfvIPGAn4HxdccUMBGUnkE6GdIYCxmfvXYKBTCucjIcyes0A2TPC6VhQNgQeiFoEIGCkRr+xVPKEGDefqSKQ6CgGMCWgiAnlnXJkRYiq5QXNB4bAvEX5i7O3XPug6VFXjF0+fxd/52reIwZiASOArN66RsEUFU5roY1xZJyFpxK1oYIiuXVlaRpmRk3Op1BsNduvhXXfecTBmi/5KQlAmKlTBapKLNCQrzl8xwICV0lNyZmLSnfXmr/h9e5NSciEFKVcquFqvWZbKLeMvdAj0ukA3atu4js1vIkQQc12F6FJ3fEEsg5AUtIWAQinTNT1y78/MxATyct8H7/kv79xCDzZWbeE5bIVhD54sjNNCNjdsQ/d0vGA8HU2P8uxoxtKhnDHGO8bR0b6gRwmTwvmJYRhDhLD5E/gLweeLI4wIkij5aHi6uqLX+PlTZ9BEcTwUggPryVi+qNjJkxgKwRMhBkEAzuIQuHKiQzWllP3O28vK0rmpY872iCMDIWMVUWnyI8Tr4UKwqzdvKY/L4aQ7DhptjJAwOMOrmxu4fUwKH7/lbHc64jeffhD67y6cy3crJUuRrT2j5pkTDcV+Y+1XfxCUy4VQYP867oF0TuP5olxZOj3QPfBZA/ChngQoMji3dID1C5SknwgggJFstts4TJeWF1DDmEHORdOZNcAH8jPmQuQdeQQUrNVuocfl3YE2lwChTbp2EQGgdDIv+lGhiOwZe01lBETySsh5tR/ZaxkWqCeEeajSVI2/dv4S/cbLr5vVueCMEqqEJSoYjGmEkKE9LFme0ygVhKg8KeE7euLl9aRh6bouXj574cQLQtfoimu3b5xY7qT+4PcnORBqqmYrStFKn0mZaCEAEWiZ0VEyni+6suaCHD18LBjnslwp03qzYVkU2Lu5EK7u3XbyAR8lqMmGISU4Z/CUplMlcS6yPJ9+FgRDf1pPubp2vJSfYMKyo6NKLuMdAxJ8dy7fuIbWtze9HEps2h7PFxH8SR7nCIBxiRBC8tkcgfONlQciPTqGcVxqANnpdkP/jh8yDDOEMHzPSS9Q2KSSTvQHVhZDTMuAMn9xeg7PTc0EPkJIPwBOLyldD1yWRABfEICzrGx12seym6oq5d945wKdni8cLZRETLRN429s9zIuuPjw8y/JXjN86Rt9WSkWO4Ez5vrjLbTXCEfyZ5Dn1x+9hxgPb9DdAbTNVhPV200mhTj2PdI0VZyZPx15vYDFJdW3GOeQjbA/FTR8W7928RWs0MG2pb4GYIQxx0gSzkW4jXlOEU7qu42ArLeaob+wwKCFTZ51t4ECBSilFI/ni9TqhdFtGY5rj3Em1rc3h34T9hPzUPZl0j8jJZQGYGLKRiGkF5le6WbiKueOS1g+E8Goqap449Jr5PWLrzwzRWGICsYEcYITLX0o3x0XhAIiZcF7zgiDPIRSNjM+qcxM9Pdu7n0PBUS3D9LFkzpgPBLHGLTAaKEqKqbE+SvqSNCkcigQIISIsXyBRC0txgF4wInZ6XR4qVpRwFnOzgORU1ycTIdlp82DsmY+YE2nukNFpxmpTyjXdV1RB7xkDiJ/UscaAiPpkai45SFFUcTsxOTA37GTEAFF2EfXrqDt0s5JRZPf7yOQz+T49NhE8jF2YUUAy8oA3zHW6XYUxo8OKQMDMRdSGswYTMPnwricNLGfX7hnCMbmvQx0Q+BQDH8iOSYneAxrXUqpmCpOyOWFpUD3GsjJPTM+lTAPDd9CBCNwX1uGqiriu7//MsmPHcGUJREXDSSNjXjvV3D///tPLqMws3eGZdkCVjuVEipVg4+W5pzzqzevU5AnCs9udVcwxo+9B4yk02xpZmHozweQlpD3oYKmlPJTswt0amxi4GnvbwDebxIjzKRpCE7yAw+M8hBVBBqJF/PZhBQAUMAFlGPneUTymRzKh4iKC5QpmzvbyGBGSCcvEcsvBCDHLEKYBm4ABkM07hl7QSbTL8oNY+/zQGK876H2rOeVpqryzVe/jl9eufAC9EFGBROCBcYJX6df74Pv/fSigSH3DITmDdz9pbPnUVpP9a0vpETXbn01uCep6SgCcr5o1NrPU411VY9t3teBJyapiMA5IZ3qvzZDBpHJiNFsNlmpVlEgLYDtB4NXhzfG38OygEFCUZzfo4EFhBAqU5pGtYS23fZ0e1GBYMw1TY8EVTc4/oznC9iryCvI+fvB55dxGBRyXsy1V22OpEfYwuSM8w3CKwFD3i5E/YITdz6bo4PQmkuERLvTJsczpmFhMOOEMiEH6jnxzIhhjIH6QpiGYXDgRcj8WSaG4WhNpkVpKaEsm8mil86cC2y/gUW2MD0HaTIsSp0UiwsCcHfudLvA4PbCkAgl6Gf/ydeRnlaf/Z1EgpcRYbtxQaH/OOAb9LcffBT/gbo0QiGEqDcbYv3xVmD72f5Q5N3VB/jOowcujczbZrpGF1XrtWMDBfLZPJudmAoaV2+BsNB6zwFQ0KOooLOjGfby2QuOMDrRAPxERqBzERKESfIDW5i4IS3C2sd4s4YNE6CHFRKiq7ijl8iNcWFCmEIJGcsVia4FS08DUS27lTIGuobkSRCAKCDcy/fky4MJBjMXxwgD/a0Z2YsRBgof32ToRw8PdJjf+/rb6MLps32x8DUqGGjnMFZs53v0ZSaTTtxEwIyulQKYmgb6Xo2OjLILp8/2rQthxrce3ieD7PsmbSwyo+ZfaB+b1IgU6ao2kNxuYpi0FU4EKCFydmoGqy4YKz0boZQMlNN7jT1RrlUJYwNSbvlk/AUcBs4H3AdEyDmEMcIpTSe6RZpTz+ZjyBsGqm9VUWmo3xnTzoP5iJ6WY4W8J/t/1zDke1c/wWGh5IvSskxpOl+amQ80Ki9KeD0vKzjYQOTvoA+Exrba7RNTZoCra9cwHDkADiqjn/X2I4Z7FppeTmH4J/NniVxgdvJzMElfLyAATkvghHrp7PlAWO/gnrw0M5/MzBAjKto5FQAAIABJREFUAA6bzzMuwLr4xV+9/QwqkCGQ7yDEq8MBVrvblf/wyWXfdGxxQFVKxMCp4NHmmnKUY4FfY9xr1Pn7Vz+NzDmuWq8B8wnodF/wxAFd0nhhDE8UxvyCL/T9HEXv/TvnX0LpVNqR7NYNwIe6kVIKiAh21HNSOZYINNotK5eZ8Iwdg0MY5FkMNh/wASBwEMllMiKfyQf0fklWa9RppVZNDgLhWaWBS0LMtE7uP5hgbuY4kJj2jEiI287X67ZYGIFbSN/1TwlBP37r++jMwqlje/YjKhgiszDGSVSl22sgrO31aM6J4PajgYEyZn5qhk4Ux48cnZSCPVhfU8o1+7RGQGd7dOQvFoqiSJWqkbmchHXq4y6XqqpiYXrWmw+NA/CklGDppeVqBVfrNZMqfZBn30kC3hPfxug0H3C/cULkG8KY6qoGxuBB4EjquICAolCuq3qo91ZwQpidmMQeRF3JZrsl37vyCWl12i6gOXxNqIoilueWfNuP4oAwwYQrCpX5bE4ZNPfaYRwaFh2tQdncNbqeOFGEeV6e5BdGwACFsUTSvCvCLQ2sxPBzmOVPZHsRAVVV5aXlc9iJ88QguFJK5MLUXKLbGgS8GNXpGF102IFT0xX5+//sW8+sC2MDIRGONK++IF8zjYjXkr3UPtoSDHSrWxu43RmADcp+fy/UgDvprz5414WW/GmiR6G9e6StCILhpscmlEI2748wIe9lP60a56IXqEgJYXNTM8r81KxjyQcyAGOMwBOeghJyUGWIY8mTBkKHABhvGq1mJD8gQecDPjyZsAFSAtHABZI6hrLT7QUAG02n2+GbO9tDd8l0G8u4teeKAZhgUKTDjZ2CwUgiHLyx96iJgu+bODnK8g++/xO0aNGb2MuoYJqk/43b63bieHrsFRAPbE/5RTBGL5+7iPrQFYqNx1sEqP/tPv2oqTVFc4WC1q48SfnoIQDGynQqJafHJ0Nx/pASGI84LlcrpFbfcwYohpyHZn5s38/HkA84penUC/rdw4ZgiAhOmCicLRO7tcG4mtZToVVoQ47vQjZLRtMjdod2bHl4N+vNBvrtlY9pkrNucGgppfLs/KnQrp/BR+ZNTdNBezSDIPe2S49stJqW8IdIWINzyvvkC3ZJnsg089QwjMAZCZwYwBEWDMNc9qKHE8eGEM8mvEsXTq+gsXzBNylVVeNzE1O+n8F8G2DSkVUETEaFgxR3o9mU+N0/fqO3X0gkjTWERctqU/Eot1UqsSs3boXi7hVFREEHsv54CwXBRCO4EB9d+4zUGtHxWGi2m6jear6gayWEsrnJacVv56BQrzmMzKBbWGMpXRevX3jFlbPNQAbgJ0BhUOADSTUDqs5Q45cI5y0CYNDpGAbuGpHNGSs4Z668VG4hDcqdkfSIGMsVfDmwgkFhfXszcepwawJj0g682xgRS0qKJ0PuGXvNSzgYqyTCIvDIXivz0Sf/71FVIaLlD3/wUzQ7OW2lZbOM21HBvdyMSUIjyxMQo4LwXgHBJufcMjUgKMhymSw/u3j6yIteZa/K7q0+tH4JhFzc4mgjtK7qKHFOiNGC82EohBCWy2RpMZe3971xUTZgOOoyQ1aqFQpGJsePeU+CDDr2nDUc9/tcA27lAz5KLqB5l1IqQCmrqxr4L7otftJeHwTcNq66CXRK09nk2Jj174mFzrkUrFqrgfHX1XYtdB27ImCEObe4HLtxuT0gQrBQFVXkMznFzTMNODI02y1b93vQsST6tv4z/MQwjBFDqGcY7gUKm+w5yZ7h9svhoD3Yf5bnl9DMxJSDVqxXTes6mxoLh4OhdamTkh4hIMB5rGt0ycRMjn33568okvWMv7LrUY8hbvbO6hq682g1xBKGXzQppdwpl/ButeyrsMBSdeP+HeXR5rqv/TrtbLda4oyxZ84/lBKxOLNAEmapF9CFNGvo/KmzOJ/JOoXerO/MALwvAhgIuID8b0l+YFdmJZqNiFanTfiA9HiBD9lUYHEMdNCBy3JIgF40MKbFXBFD7hSvHnDfeLz7GLW7wVBYeDWupF3nCGAzBy/p/14QzDBCFEJ6IV+v2aOMZr6mHt0Gt2x80BRV/tE7v4cnivbzVbgRFQz7A+QAdj7LSQuRRQAcLCSynMueUiqWZhdIMfcixU670+bX796y9g0033WJpHj2XQfHJU3RvKD8jOwUJYJbRwDWz1i+gMFg6ecjpEDdbpeVqmUF8jK68vQMo6CwD3yPdjsf8FH4mM5eEhFN1VhK0xR6zLHBFXyHvBHAW9dSBNJShPGZmZhEbuYo5kKwndIO/ujLq9a+UWEEJWQyrSwum16ayfMiAvB+QYaV3GgGO823dhS+sJ7bnbbdbwPvdLvJ+re5YA9TSSNsnlnhviqQBEfKxDBsE07XilOqiNnJKeJHbt7MyCgfzxeTd8e12Yt8Q6YBamopL99465wwVhGVPQ3WUD1CSnb97n1lbds++9dQAWVhsPvsNHJte9Pud91C6/2L7FTK7PL1z33t05HACIHzBarWa8CM9eQACk5BZxdPIzfSaziVL8D6AoFmzcyOCNFX5ukFg0P6T97+HhdCmkG3Th0BXTEAHwYJKKETWugAl01AXcNChPy/UX5MRwYb0VR+jtWkekul+ViuoLhNswcRL5W9KgmCusJPDJO+BkMAbslP1hyGPEw9Yy8Yhk3eh4gae49Co5fLtH/+36PqpPSU/Kc/+jkuZHMDATxwVDBGnGAC+bAG6jepFD8E4Oxl5VCoKop85dwlSKn2DAhccHn1xpfWFhQYew7lM4UoQGgQclImazJ+a8vvEc1MTiEvnd72xwPqHtpoNlipVlG6XRdd/0Nk/IWxgjGDKqrIjoz6piRQFYWlNN2VXJl+r78o9Ad7rqrA/3ybUkuwEExYNjOqAF2uWw/nnK8/3kRXbl5PFPgugUoJkadmFrASsvXj0vAcNQNRv7qqiVwmp3jFaGBwJrvdrrXz1pPRYMYFp4yB323yOEWgp1rFcOmD6yx40sC/gFE4MQw7BddifYVSXsgV5PlTZzz7kAFbVj6TI25FT1kcWlIsJAgAdX6r0zb/tDttk3623mxQoIJeXlhCf/azn4VEUv/FYJzzqzdv0Z1K1f/OY9ijlIh1jC5e3VyjzKeUDQYz5K8/ei9yZ4JqvcY63TaWh/TIF5fPxWtVHDCQgNF236Br/j84cfR0zlIIKbkARmyJGWf0wJYKf3Np2lWlFAL98U//EI4sTIITGxiIzVRVveBbK7q/w8C6bgA2BYP8wCLJDxyvFXz8aICWq9W27ckaSoh6OXbCR2kOOfKA7rWYK+CRVNot7Fiz3UI75V3PDt5uCZq04w0CEPUKTP5PW5fwgSHml0lKDFE80owCxpCDIHIHDFuoWcz/+3ybmZER+csf/wF2SsdoJyrYjMxODMC2pjf2hcEpAw6C+x6C/cZLCOZjhTG0NDP/gjL9s6++sHSQPHzYhLVIqQKRv8l3JPaLzJ8BQn7KuclpT4wTQJkFUT+1+p6o1KqEcfjRxSdkxt+DkXmZD7gfenC+IISKtKbRPrnHXQR++JoCI7umhmvfVRRFzE5MuhaWzDgX99cf4q/u3Yn3+dPn5Qt0ewuTs0TXdJ97Dm93cM/GGIOhCKc8ZN1CCLOO0VEYG+zbA/SlSbCFd+sILsGwFsweejmF4Z/Mn0HH6V3Pw9ky5H4cTaXRS2fPu0qzfoAmwZgV80Ul417+7uGcqBCPGuhnwLgLDD5g6G20mqzZauKOYRAuOOiyBNyOhRAQQWeeJcC5R1GofHXlIv/Zt98eyvsr41x++MU1XG9GO4grbEsTHOpXNzcwrEWvH2Bf/e1nH6F2J1osnsC8tVspPQm8gXv/uaUzoT7nmzpzCVwBYHQ1mUR65wOIIALtmWnMBaMuh78x45wKwSFiwjyzPfljI3Uu6NsgSO8vf/En6HlmLbC7AqsJNGfHIOy6AfjpIscc+KoF50l+YK/f/ODbB28XBS4kcXgkMJpzHtoDPiFEpPQU5AZ27JnMOBPr25uuKWriMP9RG8NJBtwnyl+Me58H8/4K/9808RKgbOw3Zsh3BR8bv7zYAsXeRv7fo+TMZ3PiP/7JHwD9peNhWI0KdjMfmWOhkwZChcBJ0cBw0D6zcOoZql0I6b1x7zY+7hIBkYTi2chfoSgKVqka6kN7qCYnEcYSAqqq8YXpGdfOYmD4lUjScrWCq3s1S44OlgQ9XAibdx+4BIZWmZQZzbhKzWsFIzNfPcYopaWIpqpWqiRlLCAA94G0ngrNGR7YisYLBexWDi9Qot28fxffWX1gAY2kiB0EwBFsbmKGuuhQbKf70JUlBMuUlhKQh94HFhPe7nZoz+F8oEd2bEcPD9RPUmkfgcM00qa2FyPTKbpnGDaVv66dVYYRdDgjwP35pTPnSTrlbsozQgifKIxRH1hlhnHqfB3zQRRvq9NBjXaTN5tN1Da6xDAMDPdaeB+5EPBu9jkXYSExUKz2zuiqorJiNoeWFxbRT958M7Tndq9ABsP5rz/6ZDj0fF6BeEy764+3UK2+52nPQgj2xe0bytbuY0/78aJxCEKrt+ocAhc0VRVnFk77fp+BICgz5KnHAAIfc7J/BgTjNOK9EFzJhMCcMQrGXDC6PzXmest+zARnsL/96FvfpfNTM8dOA4ZAJmmmtdi3RR8dIeyhAbgnHxgnuBBgUBu6TdWLFyWUbWIkm60Who9ILB7TEMSVMHvX7ivTcCFXGDjqELa6zZ1tZDAjFtMW1UHAHmnu06ZR9kmELfD+mxG4B+PaLwcvGTgdWTLgDoKJ2Q8k9SUUEwyBwJhL+NiFLD/2IGM7ro7d/L/Pt4UJlmO5IhiBqZuUcf2ignuRVSQxurm9EOLSHsYMSYn3vZ2PHJWu6+LlsxeeHLaFEPze2kPa97ICbSK4Oj9VdIHCZsjztcRlxYRuHBgTNpJO4amxCUeKVfDFhfNcuVohnl7E9yOG4J0LHZiHBPIjH3C/8R9E2KU0HesuOEuFGWe/ZHPKPOKWnDC3o6kUKuYLrqx/ULBcu3MDPdxYc0vEpJ1n9wE2PTahZEfco+qOIsBApU4IoflMDuuacwdOaxhg0eq0yKB6hp6RQ0qDGYluzRrgnpV6ahiGSBy4NJvKY/AD40D5CMpkzzqPYcMKpfLC8grOZwZLq3QUJJQQMTU+STQlcT6LwpLpdLtP6JqbnTZvNBuy1e1QMILA+RXiy0AvJaQNp4venZia9KuHHkooz45mqKqq/PzSKfTDb3zDlfNLFHAGGeGc9asPPoqKuJGTE8JFdyolvFspeyr72vYm//LOzUiu3VK1xA3GwBmRLc0uOD7TwPnIdMTuReg+a9A1I3GlybvMBUcGZ6a95+DPPuVymBhWWLvThiBL+dr5l9DXX3rNlt53n5l53yAsIDjZpIz23AAMq30/XBoUkWEC1NMXccgal/VW09aCjAI+ELJvl1Pd73GB97+u6WIsX1CepwU4ThbYGHcrZdxsNf0WOZb9PcmH2+MOh3chMAOuE4D3aYWlQl9MChb3KGCnBmDAHbyMJ8cm0C9/9HPXD2HPRwWv72wygonjg5KT9ZLUjQYCJu0VFy8ooQilpgJ4dnJ6fyCSr25u0Mfl3aMHhiWcjc21DZucpukv0NFEA5FEyqggAHsqRGQVc3nbIsP1r8sMUa6UacPrsw42cwZiyOFjW1CfK4ADIaVUZEczgX0/gJIRYUx1VTMNwT5E3PmMsj/dwVymNB2yw/jT4TG9QE7Z2cmpF3LLDyIYHKQvX/8cQfRE8niDABjsJwvjtJB1z9DijaTetQqb9ehIRmRHR31/gZqtFkSNOhgcFowBvSl8epInbAg8MQybjpOmEZj0AoUhfQ9+QkMbNrnDIs+5U2fQZHHcFXFgLham5kzK3+QJBwIQfAJRvL3cvC3ZaDZ5q9MhnW4HzjNwkBYm16oQbp1TwSj0gm7GdIgczZrndk1V+cXTy/h7b7wxNAulY3TF3398eWjGG8Tqh2VcbzXk2tamW2v5hWG02i3x7uWPIjmPsBeUqmWUG82yuamZozASEChl5r3tOViZkbpmyjME6XGfGnSZ4JTzXhpaIflTw25Uz0kYyXqjYY6nmCvwX/7YmX75IELYFwPwwSo9yA/MOTcnLXnigYDBGe90u64bPAJHByPJGYuCMk/CXljM5vHoyOjJsEnJ9pp1Wq5VQz+2kwfjTokjDLjA7wT71EkRuM8kr3dHmuBaOaB8fkGC4YgCZlI6v2hQqrD5qSn0+9/7Xc8OeuC1dm/1Ifq7j/4Rpso8EvXORU/pvXtzCPRkQ5C7ObhXJho973s+CyGOPHtdOnMOpffzyu9USvzRxtoL3/Oeg4SAc7f5vdFUrccQkDwJAh4j0KOVLeKMlfONSZFh5gJjpWpFgZxgXj8HtOhRutX08gFr1Ns8lycjD9F3SCJF1zWhqxpJ9pSTMTtcAi7zqqIp6os+e/YaclganFGL2RwZSacdtgRaX4E+vnYFbZf6OCI57iFp4ACB8XwRwZ9he8ABhVBC8pl8IJT08I0C6kOnD5z8DQMC26L09XE66mjX7xmGISypl7tv/wdQboMl37N7Y9RQAzrfhek5fBLlpZVxwZ1laWbeStGkjIsIAMV9z8DbNvPz1s28vC3SZQZcKCGa14zU49y57uVIsTFmwGknUH9WnsMGYGhD0zT+ytmz5O3XfmcodKS1RoO9f/WLZN9xcd0f1ZSUCNJl4tXNdcq4Nykzf/XBu5ENtAQDsEIpWpyd7+XRNW26XDLOgSnFZEt5nnZ5GM49sD/u1etP9qKj8gAPsnR9NQA/FTDJDzzIZIW0jpnHJo7RgaZSDxxLIkJfDgcpTdOAhlaBTfSoB3KUd7pdvrmzHauP/b4B9+AGbHoGYdM7yAxUM58DCuXDOXBNymXZi2gb1gfWOYDzhPL5GCDi+J73Fgcy80/0bKjOH0VR2KnZBfS7b//Ak/cMDj1f3P4K1Zt18dXd26Td7RwbQYUJBsXCfpgAvBKmYbg3cvB02OcVPzzyZ98Xs+g+OGbOK3i3Euuf86XiawumEVdCSo5nL9sjIyP84ukVcx9stJrs5v07z6zbQ8ZfoEpEmqIpScSer1OXdIYQgkj1lK73wwKSKdJ6s87K1arSNbq+YHbwbrjz5fBF5Gc6CSIf8NFnU0g1ISEimOmaZovRxn/UwtWjqihMUzVPzhpWR5rSdDY5NuZYBs65fP/zy7hcq1jtOinnAIF8JsenHVLsO+g+sKrZ0Qyy6lDkhZASIdFsNV05Q4NiuWt0Hb97XowzadM6AubFCpt3NThOwNqAq9nB3W0o51ehlE8Ux9GZhVOO9DTATgHGZOuzkZS0igCk/wPjbqvdM/TCHbLZauKOAewEHHRLwmShEsL3qHerDAuF7LMMQ5CL9PULF8g3X37FKgyRLbe5s8uu3ro9lPtLEJPGBZerWxsY3hc3H845/+zGNVqqRuvsTAhhBGNagCC2dBo92Fg195Hk6SHQZQZvt9vm9w9o6q3kAbaCXUAG4EOiSclYRAxsVgAdxjJ1r6n1ggQVI1CWU8g1EZXHjAbOFY683AJLwvr2pkklEKanZ8A1c+CCWE8MuGYu9v0o3MSA6/6MHUf5/EJvMY4C7kVwvUiR6wRxVVXZuaVl/P2vv+3o4vq8DFJKtrX7WNnYp0aEw+SNe3dwrbHnRNwj6x5n5DN/hxF/ahiGJkzDsvn+wlvcJ491Eq3s+kzZaNCcM0QEfxoNTCnhc5OzdHJsHHLCyy9uffVUUbLvHAF0keCRD8ZfG70lRRMEXEMA1t/c1Aw+7OAG+yFEzVTrNVmpVTFEHPj1RN34CzgFmQ/4uHlSFZWlNL2vM6NfcxyFfgjBIq2nXTEmDTre2clJx7ngO92ufP/zT/Feoz6oGEk9mwiMpEfYwuSRlHs2Wwp/cYIJUyjFuWyOBh0xL4TgrU5PqefCwxkH2kP/vn0uyJw0YRGBfcNwb3J7OYXhnsV7XCfxjximhDJwVHvp7Dll33HZInJPi4HifG5i2q33zXb/cahwEMULtM2NdpM3m03UNroE8vLC2byXl1wQKWWgZxHIxIKwmSPY8l019/+z955dkhznuWCYdOWr2ow3GA4MQQuRxJUoSksCBKWj1V5REqVv+2l/0v6B/bbSvVc6dy8pCaIXRQeCAAgMCMxgemZ6XE93T8+0LZeZYfa8WV09baq70puqyHOAAabCvPFGZGTEa56nWkOH0WfACfyll18mX375M5MwfceNQd568BDfebg0yWPM5djAhrfVjtVuJ27dv0sWl+7ncryHhQKbEgRtAwVJo1rb+7lv23zx0X21Vw80wrv9HmVskDEONocwPMCjFkT2DmDIPpPIS+3Om1OqEG9QxkJClj4szozFSLz7IvAB71cCZAPrui5nIRt4HzTc46drCLIF437AgeahrIRw4CqI2rhnw397x0I+n9DEpGYBJxHkYegG/8zVF8kffeHLsUUeAyfOtZsfHwniuHV/ET3ZXPc/+RmWPNGxTLxM490o+KPZyp7Y+zL7h4eiXWPIbiLeMFvZCyEhKlv56GQPEC4gH3jAiQRz8tnnP43AMPr+jd/vHjZhXx/oW6Ma1jU9w1WjulYa8Hin+flTpyGTgEHG6MbWJt5qb2cCgTngHyr2AxdKSinPkg/4OA16shHKwRGctcMm77NcKZUzERGcavVqVatVfNDPHC+hADjcX3/wLlGR/+lOo2WY/NKZ8xN/hwetgpE/q/fk8KxyxlnftX07KPysCsd1M/kO+pFNlYlfA4MYXMw8PkSMwPEGf+U5iiWaLGQzgjEHuorPXH2RGroRWJmWabLTM/Oxvm+BhShABdtx9uCau3afd7od2XNsCk5eCBYEmHKwlQh5lEs3B8Pjw/cgiCwYE1EtlwklRz+D4AR+9bOfI6+89FKQJgtTVgjBPr5zV3u0tlYYmSdFULC/rG9u4jjtdps72/y3v38/9+c5sOxVyhXeqjcoPcTLDhvMypNVErNzvLDLZvtQkEAcPMCeze+10/9XLuwXih+4gGsTY+44DnWYW0DhA4ssOGcZR7UFltmrANnAlVKZb+5s0Xa3M7IRgB0CSKrBjx7v7eBucSQDF4HJUx6Eg1Uco+FmJptakPWLMCYaARTXgH7JSc0Cxh7dRCKHJg9K6NOfI196+QuRJ1xKwR6trWqPnz450hYcJh+uLONHayuR+yliAyc6lWErI7C/DYNURsFgP0Mb8A5HeIBIcDy3MhhcnkHMF1Nnnk4ga9LjBm7U6uzK+Uvax7dvQiawpwPg/QWDi0aV7aSIc5yGzIN3ZchFvhd8MfJusfvF2ffhgfPGge/Q3v8M0T8Oj6ECXMBSoCwzBSfB+TvUKyaEWYahZc0HfNxahfMpGB8tw6SGCkI5oibQj2WYBOD5034MTeen5+ZCn52kFHyn00G/uvbuXpR72mOY5v50TRNXzl1Kf+GkpHQvGJpqsl6r5whNAAsHMufit51w23FCv4spTYnqJkENDK/04Bj2soURIt75DCgVB9nDhX7XIbHh5Ssv4KDw7dVyhc02WuoSg5B3t4Ms3gE3b092ul3es21iOzacIeBALiDQnAv/GbQJLmlfTcMalwjxIFm/e+dfjHnFKtP9yTL7O9V1TX7181/En3/hBV+yFKkQ82CDb9L1re0iiT0xssJr1u515dLqcix7E9gBf/zWLwIadtNTJ+wvpm6A41cz9OMTCrgQ8ua927kdR1oa41LwTqdz5EwXBw9wbhzAe8qEjGCBgKROmwZy57QWUUL9iK7d97K3J/7BmHlRbwWDK/cyc/cd+AeHpCGetefg8CBbs4dsmfgVlIsBDiCfqdRoNG/OJGUBD+CfAbIouVioQRTpK+TzL0aDEgJ+PMj+PW4xcSHE060NeefBXWUEiumNO8mxTIh36QybrQwS7gum8f43G07ywXdCQLb0xTMX8NPNdQzBQsAZr2sGcDjFpM3pbGbXQeoxbQ+oDrwnMQfpYS1D/8fE+hzMmD+4s8DaHLpmvYgJaHf3fcCDQDFYIXIX9f1Zr0c2qH2dj9y8dn8/dmMbMpbvduG6rmfEyuqZJOfvfh1WKxWU5yx/jAnHGBHLMLEZIgsoq/WSdL8YY2ZAjvQ+tJ+k+xzuBfOtGWQawTOyoD6Xgm1ub0HmbyzGrzTGPGl9AHTn1fOXJ87QtvvNxZD1W7ZKeZs2ZjuOxvgA1i++BzMuOGGsmMHq8elBtXT0DLj7NxgxQF3zOIbhtiHBJoBT52aNMkNwBn3puatoptHy1QycUhvVOm5U677KT0IhgIMfOHj7Hj9v2+Pl7RGHuRDVC9m83IsK4MVx8o6cF4wZBDVIFJ7CC85PJbN0okNK1zT5tVf+AH/26tVJWB57Y2Ccy998+Hvc6SnO1awmVkrEXObiBytL1N2F+g0rC1DCvf3h+579Jk8P7DeAODlTa9CSZY0VDXSyvr1BH68/mbiz6djBPyvA+7ZNHdc5UCUuHuD8OYD3DRPghQXnyvIYYLWkXFS2e92peTnBUcQ5B5idlNUcrDuPT1ciiryDkVSGlWDqm+jSYSCfjyhk0rKAdzlOk3QAgw4hcvmPv/gqfvlT4aJIAax3aWWZjoOLEUKyTr+Nrt+5pU1FcE4B39hxmfeYQKYy/CMgdXkYqAMjBY+c5y47nH28G9yzm4n5DAJ7EOSDwFPtK/Ifvm+AGrGxvSlN3QyOEhBiPpSDdD/l8ggFBnSQhpiCQlXJ0gE8qc5fWAAQnV2rVvFhLrS8LQ4CZ1uMqakbGJyPYXkB8zauKPLomsYMPT1+dowJq5Ys3Kw3Qt3RuRBsbeMpeuejD9QdJcrER6wLZ5EXLl6J2Eq+qgMntqEZArJ+D8ML5kRS3rf7lCcQPA9nKcd1j1DE5GTcSoycaWBwtPS+oJAxDHs5/A9Q80Fga273ZoIxeu78JXRm7tRYjYKDb6be1IJ2qsrMAAAgAElEQVRmDY9tOOMCELULzt1ef+Do7XhO3i62XZdwwSFwV0DChxCiUA7+IGqNg4QF+LQt06SmYZ7YtUYp+vqXv4I+fWVyvpdwn/nJ2++gJL5FQeZRlYW0+wGKH9ChhH2AGun64i1taXU5bBOx1iMEKAoI8PziGiB3BXzuPLyH7EMO0IBNFLm47HQ7+PC7GRcPcK4dwIBMiKSkih84n+uXC8F7dj/U5T+fI/InFUTWJe0s8ifJbimMGfb4XjzHNJwJn83J7m/HQSkG6kcVLqYGMOKAAUWJBn/ENoZJygJOgv93lKLBAf/aq19Dz18KfoFwmSt+v3DDlxMPkmts18bX7yyQvh0/53dsi0g1FKsG/GUrH3YOe+mVg41hF9K6ZJUAhsX7q1370C4k9hFxY88gjSND9LCUce57sU6YaiyUBrJwAMOliwsIyJjsR9M0lkc+4FFaB8MuGKktw5SGbmAwCk/rA06vklnyez6IrCZKiTw7dypUgBDnnC+traBrN69P3f0xsuITaOD5i1cAJzaBltNtEmMM2YykXq3hkjk+yyRd6fb1hpHs9noe7UZCj7Qdp/gTmpByVLPjNeBFjXrQ0UAZtesYHqAd5cYxTKkmzs2fwhfPnD9xrWNC+HxzhuZ6TzhhSoZZvADb3Ol3ebfbRX2AkHddDAgOwPvMhYDklNS+/+NXUKIldnmu46PtskxTWoY1ds8EG87rr/4X9OLly4kOMK3GAf7uR7/57dhxpyWP6geh5bXHaKsdHpL78cZT9sGNjzIN3gFaGogpblRrqFkLj7zQ6XfZ/eWlTMeS4ZqU2+2dke9mHDzA+XYA72p9lx+YFCH7MsOFknbXrJ8IhFHawwjen0Q5yEwHHlcvyxcB/Mmxm+MujyXcM6flYBh8Qie4xi53nqAkGuTzERVNUhawlwEsUjNEgjPqz7/2Gnru3EXfKw/QMO4/ekg3tjd914GCEFF4Y/EW3m7vBKqnCk+nBmBtNmsN4IyHiHJZKZXBSMkANmz3/AUGf+5lQcr4Lt/TqW016rAaSNsBDBCCXICdbfIfTDAzdVPzA9OVG23sBgubhslN3aA5zfpLXF2wb6fxEEJEq14nYaB1Gedi8eF98sm922mIqvoYowFKiLx85gJOGz487okBOg5TN3mjVteKEPDV6XXjVsFeewOHkJQuc6fVcJqYbqe94V3HsOeA8ziGJSASYT6gN0k/Y1ijlDfqDfnS5avHrnX4Xp2emScncU5mPa+24+zBNXftPu90O7Ln2BScvIDMAhnZHg3dVN+7wKkkPWXE/Zi6wUpWydd+SQhBf/ZHX0VXL/q34cQtb1zt9R1b/Oe77yv7cFwKjaEdsNutb23iJxvroVpzXEf+7J23MruvwvmrUiqxVq2hQcBElAc2vUePl8lOziCto4zJb13GOSA6HLsnReUBLoQDeN+pVvED+105KZTr9HuDI9+0PR60sqCc8/Q22CGcM/YwQQH+c/wHe7fOYR7gaZuuaR6vRjWAdUxMBRORBQz8pyI8f0wY5cIB6f/4+rfQ+VNnfVXvuza/futm6JPU7Qd3EcAtqkdpYJQGwEBiGoZo1ZregV0i5EEUMsbQbLPlOYThASga+DvgX3UZU45htZwy0UCqDmAMGHrT4fwdTiYEDkLwh67rmcxv2E49GHwpsa7p3DJMCpB90/JAsJ9lmCTJ895QlyXTYnOtli9j6X79Az/ZJ3fvYIB1U08+NEApERfmz5Jx8Jf5kPaoFIACQAim9WodW2MgPHM0BtlJnD4LC8YACnaA5KIepYEkNeA5hpFHzQDXW8hGHTqG4T6R6IeYEMoqloVfvvrSyG8+CHT+1BlESaJijFUv3Jsgi3fAzduTnW6X92yb2I4N3204ZAo4wHBRcF7esZoIUQCD2RMSX5KhtdM1nVVKZd9nGlhTf/G1P0FXzp8PMZj8VNlst9nbH2abLZofbeRHEtgGOv0uQEL7XpND6QE19+fvvY0Oc8cmPTqwIxm6Llr1hmbqRmzdMc7Ewv3F5AzZsUkaX0MSIdbv97TjOKHj4AEulgN4n26lFILzdI328U1t8VsCXolOrzdVL+T+WfPgADlLDMLpQObumCzf41YTZK0AT6RyABf/fQs0AjCIYETihnw+IsMkZAGnxP87av7A0fbtb/w5OjU7f+L0SiHF4tI9shUhixciCpdWl/HS45VAS0kVnmwNAI8jGE+btQY+nM0FFA/dXpd6vKDlCm6cAOOjHMOTvU7yNrrUHMBT6PwdzrX33leqkH2St+n3JQ+coTVCuWmamh4zAIovAVIuBI4wQ9c1CPpL8oELxZm5eRTUuQ7fiI9ufYLurywlKZ5qO6AGCMH83NwZGiabO2BXsReHPapkWqJerWXr2Qk4MjDudvu9xGWGTDnXZdMZqB9wTlTx+DUwRJUHxzC4hSWSdDdIS3i0M34SGXyKBe0auiFf/tQLI5EpLp+94LOlaMWAIm7g4O17/Lxtj5e3RwBFSQoB5ykO+EmcKyevL00PElmoRMkGYRJCRb1SDXzY/a9f/zq6dMZfIL+v8aZcaPnJE/bhwu1kD40pj2mCumOAAHB/5RGF4BG/jxCCfbhwQ3u8/sRvlUjlYE+jlOBWrREKFWhc54BCt7bxVHu6tTGu6ET9vtNpH3t2i4MHuLAOYLjswmFCcIEh2kE96WkAFp7DXDT1HDMAC8iAfjem50CWr5fKEL7tIUQ0oPSAk2s/L3BM4qpm8qeBxCCfTxhq0bOA0+L/HaVC0zDkt1/7CzzTaB6r4W6/xz5ZvBX5gC6E4Ovbm/LW/cXIbeVv5SuJgmoAjKdlqySatQYYZUZW73S7kB6PKCHMNAw025wJBK+oHMNBZ0WV96OBpB3AnpESQZjp1HCqjVR7kfiAj1s3gzMRlZZhUEMrVkazn3dhfxnIYgEncNB6fssTjDk422qVit8qe+Xeu/4herS2GrieqpCsBggh7PTMnFYrV5PtKMbWCcYMPCmNap3AuaRoDxeC9e1+Yu/pfn1IiZjjOqn0VbR5UPJmo4G96wZGDCMMTjcC7mC8yzcMiQthJQNO3Jeeex7v552Eu87F0+dCt3lYFiGl59zt9QeO3o7n5O1i24WMe44poQKSZIQQNJIdL6wSJqmel8gSwRbqUxewRuqVWuA1Anfnb3/jG+j8qdM+e8pVMbFw/wFZXHqUK6GUMAc1ALAAD1cf4W6v51s191eWxCeLtwMHNPjuADZtOIdhSCCo41ol2fMjZLPdenAXMc6CiFjYskD71+60TwwSjMoDXFgH8N6seo4ujDhn8KEt7GQXTHABsCVcDGhApvWBDFt4SQXnoS5XkJk70B1ERsYMbbLPAYz2//e0TtaUjDtpyOcjaix6FnAG8M+HdVguleTfvP6/jzxAQebu7ft3cTsm/gshJOv2O+j6nQVNQcNNyaZwaJhg8AWSzGatSU6GTMTccW0K3FSDrxTmlFI835ohekRHinIMT+fai2vUiTqAvXMZJGukxwsfl17ibgf4gAFK2TKtwIaxuGWJ2h7GhAMmJcAkxwlPFlWuOOtTQrhlWollFhq6zk/PzgVqHwK0f/vRB4qCIs6JjrEt+K7PN2fBiBdjq8k2VatUZbVcKeye5DImHNdJ1Di7bwY44xwoq5KdFNW60kBEDTzLGEYAJQ3fGcgTFsB/iwLyC79w6Qqan5nzJNI1TZybPxP4fRtm8QJsc6ff5d1uF/Vdh0BWHjiaB1zbAuCuA7cdUVWTXR0cS1JigWSgs0YUpYAjt1EN9w2khKBvv/YaOjt3MppbFPmSqAuZoh/dXtSWn6STKZrEGKapzZUnj9HmzravIXd6Xf6r999J5P0ZUu0063XZqNQ8zP8UHrnTafOHj4NDYqcgW7xdYCRsjxpgYHs76YnCA1x8B/CuZjy4WwGoGkJTjuBxSyba7wAr1AkQiRKtt5zXxogLDlF+PrPQn2X5cpRQVu4RyGflAM75Iooo3gDyGVOiHZvJF7GHsdULmwWMJZcivUvGcYqsVarib9/4S1IyrQNFdjptlkDGrrBdG924c4vABVc906UBuOTWqzW/g4ZD94HTPRz2gRc4CchI5Rj2Oy3TXS4xBzDGwDEGRGyJXJyLOGuYYFmxiscHfJyuIWodjMumbhSJM9T30hnytfuu4LMgfAROzc4iIwC3F+Nc/ubD9/DG9pbPXlSxLDQw22gh+CfPD7y3EIDWqNZp0bjJD+oVM8e1j+V2S2oOHNdVUNBJKVe1m6gGPH5hD0EacYQ9PmH4HIHR7VjHMDhoL5w6i8+fPossw2SnZ+dHJmqAkX3o6O3afd7pdmTPsSk4eSErFJzPYN9TZ8JEp/hA46D0LB64G4d1ZumaJv/6tdfxqZmZLEQP1SfnnL934ybd2PbnVAzViaoUmwYgIQTO0mvrT8d6XMEP9uO3foHifpc85DjT5M16I3G6mcOKAyiABytLuNP3nwkdm/LTbUh0el0yLmgvKg/wxDiA988NLBLO+dgXJN35nJzeuBSs108HvqgoWhMC7IYjDi0Y8V2IG9iIwekbKls4kB6GTuZhJeUADqS+IhUewBtiCc7fzOQuahYw0AgI4OHJ5rJxeL5ajSb/zht/SYccfgC9e/PuHdRL6LADsDKfLN7CW211+M/s3UmpY+BogazdVr1BA2bv8l6/Tw/D7gyipWtBHMmRRqocw5HUN3GVE3EAw/fAA36WyZ/RCjYjRecDHqXu/Y5gyAgOa/jL01SCkdwyzNh5m4Ervlopk2a15jvTyXYc+da1d/FOTOgledLzpMnSqNb56Zlgmd1p6wAgBqvl4NDjacs5vj/M+k5fG2fcG99OsBISIeE4qWUdBxNOlVYaCKGBXcfwILUdI4IG0NECIyQkQhqcW2bqTfTFlz4rABljwM3bk51ulwOKoe3YBMp45cFu7NkD1JONBrCQWAqU0fkbzk61cjXS2ckwdPk3r30TzzWPp/TKRreje+VCyF99cA33+naexFKynKAB4MPt9rvo4cqKdpJzl3Mu3rv+IfGbMTxO6YQQoWu6mKk3tCxpNxzX5bcf3s3O3j1OUfH8LrfbO2N9mFF5gCfSAYwxYsB5KoTiB45nLR5ohdmuk3r0agLjiLtJwTkbGEeGDtcMHK9DaIYDgzvsEI575Kq9zDSQOuTzCSMtYhaw78z9FGaYECxmm7MSnMDQ3ebOFlt8eD/RCym4vu88uKvgGVOY3yy68KLmEcLNWiO08ZQLzrq93pF1CE7lkmlK4AXOYmzQ5zjHMHjzREYGhax0Mg39xu4AVs7fsctG0zReq1Qn7uKNB3OvWYbJTd2ghPj2cY7VWdoFYCzAATwMIourf8imOjd/aqxBAvoDR1O330O//uAd0reVYTGuOUiynXKpzC7Mn8nsO37c2AgmXNMoQHNSTcudeGGnRPTsPgFo9HQfzLjghLFdO0W6navelAZS04DnGEYYsoXhobVKDc01WxzC+zhXTt7UJsJPR2CfRDJzrmRIpqiWKoTSaEdcyzTl377+Tdyqh4OT9qOyOMv86K23IfohziZVW8lrgDuuix+uPiKA7DHqgXiWhfuL9N6jh5GkAcowiJJp1RqkUipFaiuOyjCu1adrdGNnclGFGNjcul1fB94oPMAT6QDeW2QenBuQNCh+4DhePK8NjGS318eQnaaegxqAC6rt2CyrCLbB/OCj/SsH8EQtVTDyAZddlpDPRxRawCxgj8NbQLBwfh5KCT89exr91Tf+jH58+xPkhwMiqvQAK7O0uoKXHi9HbUrVz5EGIGLTNE3ZqjUoJdEutcBBPQrhAvYiTdPwfHMmVwZa5RjO0UJMQJRYHcDK+etrhiaJD3jUgIfUKYZuMMswtKh7pi+lJlBI13Ru6Hq0DX+fXPAdmak3SMk6SE8xSnQhJWt32vhXH7x7BDUigaGqJmPSAAQ/XDpzPrY1E4dYkJEPWb9JQZrHIWPYNiBAIhOqMoyk6zKcvvM5rKZUPaWBaBogGKPL5y5KIfN11482qomqDY75zL89mBBWNkuaHkOgUdmy5N9+8w3cqFZzPVGcc/njt9/JlQ0s1wrLmXCAWvBwdRl3et2Rkm1sb7F3PvrAlyPxcANDhKRmrY7rlXytYxj3zft3JvIcIxFifbuvgY3D7xOWB3iyHcC72oMsGC4El1ycmDLvV9lTXk62e131wRiuLYI5QRiXLAs7joNzyampHMAT88rCXgaQRZTQXKapFCoLGJAicgj5RDBBn7p42cvYBGjKNB4hBN/Y2ZQL9xZDHRbTkFH14U8DcJGlGNNmrYFLVvSITQwHUsfRHNc5VgDYk2abLXyYw9qfxOmVGjiGXeQyBv8wh7mYc06klBgP+F9VxnB60xG6p9gcwBC4NJh0te/5mA3gAy5bZWzouo/SxS6iaxqzDDP2bNqktUIJ4QB3GUc/A0hpi8+1mmPfD6AG2tjaQm9de3ds2ThkU23EpwFd08SVc5dycaeA9atpmmxU61rUbKz4NBRfS+D4BQdwho+0HUfZcDKcANV1ehowdYNfuXgJ0ChwJkEX6Q21OD15NklEJBK5+OaA4iCYuWRamhGTzaVaLsnvfPNbuFou53ZeunZf/OK9D3IzB7lVVI4Fgz1t9ekTQAw8IiU4+H/y9i9DfesbtZpoVuskp9Q4fGNnG608WY3lnpO36W13OshvkmUUHuCpcADvbu4QNOBFDKjox/DLnXHO+o499Rd8MBaDxbhkmGTXGMZ2um0tjYy9UbPnZS8gPJo/QzmAwy/4nNXME+TzEdUUKQs4Z/y/Q13CvmLoBjk1Oyt1qiGNaqJarmgBeVtDrVohJOvZXfzxnQWaNj9ZKIFVpRGvIEaVclm0as1YL3XgJGt3OideJAB2DaCmIWunaI9yDBdrxmJxAIPDHwjjhJjIS2RSMwoGgXq1hooMlexXN4OAOypKhhGUO91vF4mUiytrEub67Nw8GueI40Kwx+tP0LsfX5v6u2EiE5pwowDxffX85VCGwrhEgzssxgSyTWIJXItLrrjbgbNUt9fLTNcYQPGElC5z1bsa9+Sq9nKlAchim5+Z01r1BncZU6gUOZmdk7hLMxMRYwH2XNMwYxOhXqmK77zxBin7QE+JrdMADW3s7LDf/v5j9R0IoLM8FgV4g632Nlp5unbA7iOEkL/+4F3sN+AMAvlLhsmb9UYsmfBJ6goc33eXH6BJo5mRSIqddtu3/S4KD/DUOID3DOwIMYkQGLhVNFjAtxPQtG3HpoXK8gs4xnHFB/C7mFqGic2DWRBsu7OjHYfHP67dRH9XDuBE1Zt44xgzkjfI5xMGXYT9AT6aQvDMjDDHqU/XND7XmqWUEqaRARYRIVgamiEq5QrVIvLTjF+rWNjMRjfu3CK9bLMUxouqSuxpAHhaKKW4VWtS00gia1yKbr9PxgUGAFxo2SqJmcb4jLEiTJ9yDOdzliI7gDECDhMshMzdNyCfGj8oFaUar1cnjw/4ON0DPxxASVqGNQz4zO00DbJ2TRzVQQ/8q41alQISyUkP55wvra2gazevq0CK3K6KkwUDR/8LF69kJj0hWBi6AVm/hebg9qNAgEnv9XsZG92xYMwlcL5Rj9LAJGvghctXENA5SCl433HUNyq7yRYIYyFlfjmYgQohLvSUoZqb1Zr4u299iyRzL482mUuP1/hHt++odyKaGnNRW0rEev0uerC6rA2RDoQQ7PqdBe3R2uqJMoLdBlBXZuoN8G3kYjx+hOjbfb746MFErV/HdUTftn07gEFPYXmAp84B/GxRedBvSHAO5PN+1poqgxDq9Hool9FbCc/OM8evgUfBsoJzfGtnO5sIQ3BKIwTreLQxUzmAE14dyTW/C/kMF5hiGKoLkgWcT/5fKudaMxguq2Bw1ql25BBQLpV5xSolbiQDuIxP7t7CmzvbyS1u1XJsGmjW6qhWqcXW3qiGmOC81+uNPWwDV6iu6R4v8LjMsUQFTrBx5RhOULk+mo7iAIZMMyEkUad+H4o+pgich03TICWzFOiiGr7HfNTcRf4hgwDQJAJtoo8T5sbQ9cjQ1aau81Ozcyfu94wLcefhXXLz3p3ogqsWMtXA8xevIAhySPMZvk+Nag1b5niO6TRlS6ovzgXrO/2MHcCD0UHAurJ/JTXTqt2sNVApVdjFM2f33rW+Y6v1nvKkAOKAxMij2Um568DdGbrBylYp1r0ZbHitekP8/RtvUC0GfuHAgzqmAmQaLtx7QO4+Wo6rSdVO9hrgrsvwg9VHZEjZtfJkjX24cH3kmobEAUIwbdUaOC7UoDRVANEky09WyXZ7J81uk+yLd3u9UH6kMDzAU+wA3jeHUjLGeaybfpIrJKu2hZS82x9vAM5KviT63XP86gYeE8ElN7a3MBceqmCqDxwwTjxcKQdwqvMRV2cwr+D4jZrJEZc8QdrJfRZwzvh/BxyqM1jfvSDA3OtUO3Jh8nhKEaJwWEv6wAaGocWl+wigHdWTPw0QQriu67JVa6YG19PudnwbUABWEniBixRRGnWWlWM4qgb91Q/rAB4gPwisnL/+9HxSKUCmKE0JH/BhPQC0JMKYmnAv0A0I2Iqu0BhbMHSd65o+NljnpC5Pz86hk7ieuRBekNidh/djlFw1lYUGKCHy8pkLOE0DNZx5LcPg9Wpdy9v7k9gcYCQdx8UucxPrIkjDUkruuG6kfSJIf6qs0kBaGgAu8bPzp/cQLDBCzGauNg7FKC35pqEfCLSH5BgpZSHs6xqlvFqOH9mGYCJmmg359298K/Hgfb/rCmg7Prp9R1t58tRvFVWuIBoAh8DS42Xc7naR7TjiP99960Cg7tCO2KrVPTqfIj9ccHnz3p18XcBCKhTsEjshnNlheYCVA9gjf0dCSkQUP/AJqxZj7jgOdXJycQn5fvmuNnT8goHH8gGpCVnRG1ub3kJK9fHj3PVTJlWhVWcnaWB37UHWbzENI3nPAs4h/+9scwYdDjAxNP3YZTLcnyqlMi5bpcReKCGFfPR4BT9cVVGiiSk5YMOQHQ788830ozaZ7diBaQ5mGk00DkY0oAoKV1w5huOdsjAOYOX8jXcOoLVp4gMepT34DiOJNNM0hKkbhOB8JERTQrllmqEcOxgTVqtUaKNaPdaoAnflD2/dQA9WHsW/qFSLqWuAUiIuzJ+Nlf/wuEHAOwNZJ41qHcfJt5i60sJ1yGzH0Rhn4WrHX4szzoESLf6WVYtKAxlqAAJQX7h05cA3TErJ+o5dCGdkhqqL3jVGDElMJBL5OBD5HBEhVNQr1URkhoDt+daM/Ls33sjF+mOcifeu3ySbOxOTPelzlqejGCRwQPLG+tYm+tk7v0Yue3bmqFWqvFWbDLoNgL5+urWurW0UP5ABgjI63U7g/SEsD7ByAO/bCzBkhUnFD3zM9ih6dn/iOWOeOX71wJlLTzbXU/+yeBF2Ep0c/aIcwKnPS5QOAQJ4EqBT85oFPIAAzcfFBAzozXoDlQ7B38EHXSMU/HwnLiXIRMIE02qpii0zGe4OIQTf2NmSC/fuBD6YRHkPVN2jGvCyZkyLt2oNLQtkAImEaHe6gS7IwC9TKZUBBiuUQ2KS14FyDIeb3TAOYDgopRyeF25wBas1bXzAxziCIcsFMoKZaRganOGyfsIihGiUyrPzp048eLx7/UO0PIZXLOvxq/79a4AQzM/NnaFJBhOCNHCcrZQqopaQkd3/iDMryfu2TbNACjtpxPA9TT14PbMpUB1Pugbg/tysNeTp2bkjd5We3Z/04edifEU8bcP9ul6pJZZNqFHKTs/Mor9+/fXMbSnAg/OL96/hvm3nYr0oIeLXgJRSbGxvke//8j/Q+vamh7jSqjc0/YTkkvilSKfF2w/voSHsdTo9xt4L69uQYOGEajgMD7ByAI+8zSMxoAfme2TaoWZksirJdq+b2Icxa1V5kfwIaZDtC5l4eIxP9bC8YFx8urWR6jAwBmgVNN7SpBzAqc5LmM7gwgJLzoN8zkkWSZhx7NXJeRawlCLS8OKoDJeNWqU6mnsDY64TCh5gX11hQjglBDItwQjtq06QQhA53e338PU7C6H4KYL0pcoe1QAmhFGCabPWxIeDBVLWl+j2eyRoxgjIb+gDXuAsHNcp6yhyd8oxfLIKgzqAlfM38pI8tgGPD9gwccmyxp9FkxMjVy3rms4sw9Q0mo1K4DxpmWbgsyScSWYajWO/MZD5+9uPPkCTEG2fqwWTsTDABXd6Zk6rlauJSAKBioQS0qjWiZHA+TQRoZNpVMI5Om+8uxIh4ThOoMC+ZNSjWlUaiK4B+I5dOnN+RFA0QJ6z3AVgRB9x9i14XL8IIYlkNoeemFTQrDViaml0M+AEPjs/j/7q69/I3An8g1//JtGxqsaz0UC5VELNag3NtpqiVWuQ//v//X/Q9Tu3ULVUzkagFHrt9Lrs/spS5u9UhKHKdreD4Y4V9gnKA6wcwGM0Dby3gvNCf9DCLqb99SA1vWf3i/xyjVQDOFGRRBScvsBV6NfhcrgxiaR8urnhz1sTx4RAG9gLVBh/aVMO4Lg0nkg7sAYxJpJSIH1NdwklMqB9jeYyCzgH/L+QcVEpVWitMtrgBkZ1SogWNBiAECw0qolquRJ/lB/wl7kOunHnFu72e0kvHdX+rgZgR6hVaxIgE/OgFM4469q9wGeBAac5QcB1fRjuPA/jKoIMyjE8mKUgDmDl/E1+ZQ/4gEt4yp07BxQ92O8oB0ewrgXeLiNNGpwfDF3XNOq/X0BGKZklMdtsjqzEOJO/ufY7vLGzFUk2VTl/GgBOuPnmLG3W6okIB+fcaaeBGCq20+smouNojWLGBSeMsfH2hGgdqdpKA4lrwNAN8akLl0auZSkE67uO/w9j4tIWvAMMPl+Ei5jxO0rzjWo9tB3Y70zqGmXnT51Bf/mnf5rZOnQ5lz99+51c2BT86k2VG60BQPtp1mportVi9UqVghkZYwL3ZPzmL34iv7l3TOcAACAASURBVPezH3uOxZJpyZJpTeScA13d0uMV3O52irpM5HZ7J/TchOEBVg7gcUsFY46kpFPOD+zx1rj54a0ZN2tjfx9mz1qmKSzdIGEdv8OOuORiY2srtcvTkLd67EChwK6T21dZVSh1DQDccx4gA2MfeB6zgCFrXkCEanZgoJANCYewZq1+fGARxpxiQsFhFuYBg7yhGaJSrtC4s5DgW3jz3h20qQzBYabGdx3IyqGU4pl6k+bNsbLTafsex6iCs80WCgtRGqnjCa08bY5hvw5g5fxNb8HDGbpWrU7mWSaCGoGz3YPuN0xqpAi9puuaMDTD9wECZDw7N49HITT0HVu+de29IhtXIszgdFSdbbQQ/BPXA1m/GtVwvVajkwg5GFJPspNXJDWMpOuySBkoIXWiqikNxKYB2HfmZma1mXrzuDZlz+6HNrTHJugkNISxkFKAMWUikqQgaK9Wro48A8U9Xbqmsctnz6M//+OvZuIE7vb7/Be/+2Ai5i3uucl7exBM5zl8my1Wq1YpkhIBxzTGeG8t/evPf4K+99MfAkckY5xrQgoIbGAYY6D6wGneRdLSp8tccevBXd93nrTk8tOPyxjr9YMnVgzbDsMDrBzAfmbG86EhJhEC6EOSN/gen0OIVKzT73lks0V/wBgjpSSWYXLTMCjxCbE6btxMcL65vZXexzSIUzdI2XEDVb/HogFw4MPXeGIgn0/QSq6ygDESMkP+X4wJcASimcboLJv9aqSECEpo5MNMuVTmFasUK/QufAsWl+6jx+tPYnkfVCMHNQBIAI1aHR2XIZ6xvjyuEpe5ocUYwJ9XUF6ymkMPJOcVJ9UxPM4BDJchLoQy8qW8PimlvF6tpXcOTnl8UbrDGAw0CO4eOAmahsOywVyA09mPzGA8alRrtFo+CBEH0LC9Xlf+6oN3ad9RXHF+dFnUMo1qnZ+emfO1XvyMsV6tqSCvQ4qSUvJuvxebjv3MQ8Ay0nYc9d0MqDRVPF8aeP7SFXRC4LOwXYdEgdrM12gzkGaAKkglkhO1VwASRqVUpkGQU6Jo39A0duXCRfTGH/5h6k7gp1vb7N2Pr6febxR9TWtdsAMNM3xrlSqV4MTAWOx3+IJubMeRN+/e5v/4/X/R1tafeurCCHOXu1BnT33gB9GpJspWSZskSi5wdj/eeKqtp0zHGXVdSoR4r9+jjAETafgnKA+wcgAH1TU4bgQSXEwPP7BEUnR6vciOiKCqjrM8GASllNg0TG7peqzOEJDTYS7bbu+k8jEdjsWvfnxzBfttUJWLpIEh5LNGU8YFjCR1yMo5zALOiv/XO3TpuphrzvjaJ6jH+xoAw/GYKYJLDUToQsZlnFmXQgi5vLaKH6w+Crk4VLXDGiCECIAva9UbgeA709YkUGN0up1IhkzIhLd0A821ZrSoCBxpj7/o/RXdMXySAxhjJLmYLMNUUdab4gMeP1OQoYQwpqZueFD4SdF+QGxr2fLH+WXqJjs1e/BcIqRkO50d/OsP3qW5CuIbr2JVIoQGyqUyuzB/xtfZ9LjmIZAAHC+NWj01I3qIoWZWBai0+jmm0gJjMTjGHOZGOttlpmDV8dRroGyV2aWz507cxzjnwmFuoW2amU40BNJLOXH6g/MrOMXSRKwA6NYXL11G3/jKV1Ldcx+urPKPF++m2mema7ZAnder4PCto9lmk9fKFQqBmARjCTlDo4bRt22+sb2F/vHfv0uB6/fAg5FkjIED5OBfYw+1HZcsy6O/nJQHxnnrwV3ECoZYC6h6cSRZBuEBVg7gCKseojn5FPADu5wJ23EK/bE3dIOVDCOxaBfbddhOpx3p8ux7KWLEkES++1IOYN+aTaXgxEI+n6C93BgQsdyFgE5lqg90omuamGvN+oabh4whHRZLTM8Q/qVSKuOyVYqlVSEE32pvy0/u3va9H8XS8YQ1Ak56gjFp1Bo4Tid9gmqS3V4XrIWRuoBxA8z1XHOGGLoeqS1VOboGiuIYPtYBjJEUyvkbfSFEaAF46EtmiRiGEaGVya8K32OEkGYZpjR0A8eFRjTUHASKWqblq90zc3Nov9GTS8E2trbQW9feVd/1yV+K3ggBFevSmfOhz5sQxFWv1FC5FM/ZchLVzhjjtuuE1nE6OsGCMZdEPdulI6vqRWngmQYoIfzM3Ck6DjlJIin7tj1R2auJrwOAj5UICyRyvn+F1wScySzT0tJAaNkvpaHr/NPPXcF/+qUvpWJnl0jym3fv03vLK+GVpWrGpoFGrYaa1Rqan5lh5VJJk1IKgsmxDt9hx4wz5jJG/+kH/4Z//t7bx8pzElqbZ4MhBJWt0oQE7WGx094RD9eWC3N3EVLwdidaQgVMflAeYOUAjvIKY8wxkoRzMcm8Kbxn25QLSCIr3qPvOn7Dcmn6HXHP7ueZ24cjORkcHX7nI2/lwAmPMCYaoRjjVM54+VFBTrKAwSAK3L8iA2hQSqmca87gIP5ckFenWuyXVMhAwgTTaqmKLTN65J+UiPXsLv74zkJkCJP8LNr0JAE45JJp8Wa9qcXtBEhyFC5jvG/3YzEGgPEYeIHjCkxIctzT2HbeHMMjHcDK+ZurpQkQsEG+d7kSPk1hAKFDSgroRKZu0LjuKmDMNHRDOwEKExFMWK1S0SDjYPhAliJQO7z78bXCGFDSnK5J7QsCFK+cuxT4cgIBH4ami3qtrlESy3FgUlXMHdehbkSYv7SU47huLBkpacmr+lEagHv2C5eu+LkzS9uxgQ9OKc2nBiBdcNIfsLmYhomzyIg0DIN/7upV8tUvfNHP+o00FXDG+/2t29rq0/VI7ajKwTUAto6hw3eu1fIgxz1eOkIADcj3+QuyRX/wq5/L//XT7+NxCTZ+6bos0xRls+RbhuCjT6cGwL3eX1nC3X4vnQ6j9IIxt+0+tR0nSite3aA8wMoBHFnlntIZwGFMKj9wu9eNQUvpNqFrOiuZRjoXUow9OMye3U90kB70M0JgLApmmFEcwInOy7jGB5DPVGo0OpzvuL7y/Pu4Q0rismO0m/2b7kUGDnxzrZkDGTZ+x2poyWVFYkK8yL9quQJwlH5FGlkO9ibHddCNxVu4U8DvRaTBh6wMEMjARdCqNYhlWiFbya4aXEDa3U5sAgx4gau4Ua3F1qZqKFkNZOUY3u8AHpyLJGT+Fv7imuxspdu64gMOpu8htYuu6R5370mOW78tG7oudE0/9r3QNE2cnZvf+x0grZZWV9C1W9eVJ8+vkiekHDhPrp6/7Nv4jDESGBNcr9Q8GEH1jNMAZn2nr3FejGB6COx0XCeYrWGcCtTvSgMJaqBVb/DTs/N+vl0cMueKBhOaoOqOaRoL5ME9i6nZB0zd4CWr5GcNxT4dcF575aWXyKuf/Vzsbe9vkAku3v3oBtlqtxPtRzWOEDh2waYBTt/5VotDpi1QaFFC4KwV+M5qO7ZceHCP/7c3v6etPl3zo2LpMtfXuW6IElg2S7joiGyO6/DbD+9l8h77mZR9ZUSn2yVxJVkG4QFWDuCAM3VicQzpZZJzISCFP86WM2sLNqpuv1eEl8iLfqBU4wD1HIfxJIDS2U63o9mOHaBKikWBt1oG/9CkKOFEdzWNkM9HJjQnWcBZ8P9CZqMZkmMjSQfwcI4gg0OjmqiWK5G5b4QUaOHeHQR8JOo5WQOQIdeo1ousJo/PLs6MFuAQBEhU4AUusmKmXfakHcN7DmA42yAshZhcWLqiriUvA9UwcdmyCnF/yJOe4S6jEcpN09T0CHGD4IQHZ/KosUHAzWyjuYcCwjgXdx7eIzfv3cmTKpQsKWkAAhVfuHjFV2+EYGnqJq/Xahrxn7Tiq+1JLQQ8fn27T4BjtyAPZ5zTojisC6JTJWZCGoDv2cUz53DJZzAtUPj1HVudTUbPB0cYESmlL8dRQlOaSbOGrrOyVc7s/glO4C+9/DL58sufSWz8cD/7xe8+QHFkHSYmZEEbBnsvOHxb9bqcbTYFOHw9rlBKwdkb+n3qOzbf3tlB//Dv36Uf3brpWzsYIe4wN9A+h/HAJlixSonRZvoeQMiCsL+vPF2jmzu5t0XK7fZO6HUxSj1+eYCVAzjk4hpXDVLQOeexTuq4PmP/HSNmO06sBt7YZYQQGoIlIZSXDDNtx+9wOGy7s6MBZFJiD2SRIkh1CZHlohzAiU3LcQ0Psn4xpgRQXYu9DcSpvEyzgCGSVYjAEXdhxw/z3qw1UNjsCO8QRmhq6wf2UUMzRKVciZR9BLBa9x49QD6jE8Oqt5D1CMFc0zTUqrVo0SMsYQK4FLzb7Qa6XIybOOCk0TTgBZ4lupbZPXycmOr3EBqIyzHsOYA5AzQUSE+Idf2FGJaqcowGFB9wtKUBZwBCqLQMg4YJBoNvesksHTmAwh5bNktyptnwNlghhLy+eAsvLt2PJrCqXWgNPH/xCjqJhgKCOgjGtF6tx0IfUmhlhRAeIAmLlhwA31oFlRtislWVVDWg67q4euFyoPt937EL9z4mrdQBEokQEk0nbRwllNcq1UzvFOAEfvWznyOvvPRSItMN36AfvnU8Z2winU5oo5Bs1qjVUatRF7ONJtB5DR2+sawhLrjH8/vPP3wT/+ydtwJrUUrJGGehDSlAy5UFJHrggY6oAH64m/fuYEhMyevDBI/VhhaEB1g5gBNaFRgjJiWiwDdZoIjPg9rASHb7/dzKD8YlQqgYZPyG3t8irwCAZd5ub+eW2weguqTKAI48z34bAH3DuqQkw0XpV9g0y2WdBYzlLgR08oMmhIhapUoqpXL4zsARRih4gMO3EbJmuVTmFasECMWhWhBCitWnj/G95YfpCx9K4uQrDQMCquVK8p2l1APwQnV7PXAgxN6jB53enAkdQBG7QKrBxDQQ1DEMRmmHuUC9kt3BLzFtTF7Dig842pxiTDjGCLjpSBC6BjDmlkwLYhEPCADZUmfn5jF832Hv/vDWDfRg5VE0IVXtQmuAEiIvn7mAIUBt1OMFExiWqNVqFIdPZCm0jqIKX0R6FMhcdhwn3EUgqsJUfaUBHxogGLO51qw202j6KD0oAjZax3W1TIPSfUubQkGMGSAFSpRekHwKowrcBZyNgNYgcMWYK+i6Jr/6+S/iz7/wQswtI+QyJn/623czH2PsA0uhQQhKBzjn2XqTN5t1bOkmoHpAhm8sDt/9Q4B78X+8/SvxP3/yfRI2wUxK4SF5hFUN7K0EE1wulWiWfpaQ8rONnU2y8mQtr+cX1usDil58yYNBeICVAzjkqvJdDWOOwEPIGS1a5CdCSLZ73dx9JDzHLx5ExeckQ0hu7GzhxKCSvINZeEOncgD7fltjKQgfybCOs1gEyHkjmVy4gKddAI9N8tD8kOVZKVVorVKNNBNwQaWYZgLBAhlCCCEKDuywTmwhJNtqb+NP7t4KffiMpMCcVIZgANMwRKvW1BK4I2Q7SowEcD/bdjIGQnBcQHRtPeK7lK2SVO9hNTDKMcwYowA7utXe9mg/IAgBzqoABT34E/7wjq0YIwkF8nr5C6uWwtWjlIh6ta7mIeLMgTEGYUxN3QBn8NjWPBhu/SAlDiWEN2o179sOz7sfX0PLTx6PbUsVmGwNwDt6Yf4sOUxX4mX9EkIa1ToxDWOylZDg6ICnvtvr5c6eMn7ImAnBMWQhjS+rSigNZKOB5y89h4I6KCSSrG/bKojQOzgnbxvJZmUE6zUvDmCQWtc0+bVX/gB/9urVYIMYU7rT6/Ffvn9N7ec+tApIbeDwnWk0eatex6ZuADQ6nIkS2zds1xGLD++Lf3zze9qjtVUfUo4uAhdgxnlsSXwlw+SWadEioVqC3+3uowcI0B7y+Ox02rGjUPjlAVYO4JRWBLyIXEAGWnH4gRkXrO/0E9vkgqoee45fIkuGmRfHrzcE2GCA8zIpmIEBJEt4Lg7lAA660kKU96KkEFGQz2N0l2EWcBr8v5gQBhk3zVo98uEavhkEU0xDZuGGWMVHqoDxD5DMK6UyBiiYoI+UiPXtHv74zgKNM8otqBxZlMeYMEIwbdYaoXSXhcwh+5Q7nXZihk2P3sE05WyzlZuzSEg9qWoxaABw/AGqttvrgo/3gFPRy0zbXYnDLDVMwDEMGFDwJ/wtlJEYe37hXUoNqCMPprXB/jvwJnuOZe+o98y5LAlkS8QwnKloAr4jum6gSqmk3uEYZny/Ixgygk8yyBi6LnVN39ufLcNk8zMzGmT+vv3R++jJxnoMEqkmiq4BCFw8N3eGHj7nVSsVWStXE/u+F11vfuUXUvBevx/5XuC3v1jLYSRdl8VmSI5VNtXY1GugbJXYpbPnQ50tenZ/avUH/KCDqElFo7J/EQB1V14egBj++pe/gj595UpsIj3Z3GTvXf8k1PsSmxA5bQiC3IDDd67ZZPVanRqaBmefRB2+Q1XYrsO22zvkH9/8Hvlw4UZkDWGEGBPcO+vH8mDMCcakbFrY0IsTDNiz++zuowe5W+9gy2h3OonYEfzwACsHcCxvRbBG4GWM7YUM1nWQ0qzv2LmAR8EENh2C8ub43a/MJ5sJGVEiZv+CjMoBHGTZBy874GkjCvI5gOpSzwIGY74QiRqxwMgNh8eZRnyOKkoIywOUOBicMcG0WqqG4n4DyKEbiwu4iBB4AZb1XlGIIi5bJdGsNQoVLRlmrABw0rf7lDEWprqvOvBuaZqO51szkfipfXWmCuVaA1xw+dGtT/ZSfOUhx20cwu93JHtnqH2O5b3/H7ifwbEMt2tA6JXevxEE63mYu8PvzYHvzm7W8q5TeVTWMoII80S/VXHoKGgbgNxjmSWVRRhUcSeUh30RYNAtw+SmboykbKCUMssw94wfZ+bmvdT4t669hzd3tmOURjVVZA0QQtjpmTmtVq4CDzCjlOJ6tU4hA0Y90TXAcxZQH2JE0nacifsuhdCDqpIjDQCixem5UzQcSpDkjssoFwB4NU0PFnBUFTJZm0hRNdqo1k8Mqkt7XIAc9vqr/wW9ePlyLF3fW1kRnyzeS8TxFIuAKTZimeauw7fF6rUqwBzD5S0Vh+9wmBweIcg//+hN/NO3fxXb6GEcLmda3OizYPPWKBVlq6xlmaDiV1FCSrG8tkq2Ozt+qyReDuwAtmOjvm3HfqbyywOsHMCJT/PRDuCllAgBUTikdmYggb8uO/1e7Knp/noelPIcvwiDw4EYWn4voTCHT7c2ggzNf1mMRNRME9ispdzNdPHfsyrpUwMK8tmnoobFssgCBk52DwI6mQfeMV3T5VxrJtYIfzDKaTniksaEcDjwVcsVgKEMpEzYJ2/eu4M2tjcD1StSYZgvSglp1prED0RnkcZ2kqxcCN7tdWNd+6P6A57C2eZMqCCESdH1tI9jY3uTP1h5lPhaS0rP+7M197g0R2Yte85l74Lg5TUP/vXMsXwoa/koHPb+ywX0mg84bMUHHP/KGgZ5GrrBLMPQKHn2enjcrWYJE0xYrVrRICMYnL/tbid+QVSLhdUA0H7MN2dps1ZHQF9SLVcKO5a8CT4w9jm42Cg44C+SwmFOYveovM2bkif/GoA7wQuXPxXaiM4F547rFvY8GXiGsIf1zCFwLHDdKaiAMRHVcpnsP0PlYdhAK/dnf/RVdPXixUjiABLFzbv36f2V8NDCkQTIuHLJtDxI57lWizWqVUoITd3hu18FkAzzy9/9lv/zj96kfTt2mGLBOIOA4sS0XjYtZJlWYu3H1TATXC7cuxP6OxGXHPvaEZ1elyRBHeqXB1g5gBOYVf9NYg68C4Lz3PEDQ1ZPJwWD7ihdwUUUY4xLhkmKEH0M3D5PNzfi31hicP56xsOIENL+1/MUlRxAPmNKtInP8EtqVlPLAk6B/1fTNDHXmiXEs8/H93iOZarlLlITsrk0qolquaLpAYJzACb//qMltPJ0MjkHIXIYHBzT+HS63cRoEA7rs1VvolpFGainbZ1JKfndRw8o8Oao56AGDsMAH5fFjDHiR+GwByfFYbLzeDjsoUVhmIjtP2tZ8QEnv3J1TfOyfiE4Ec7/QEthGIaslcviVx+8SyHyXD3e3chTA/w5XMnP/twNtxjEXgxy/Pf9ub/usI1hiMbw3dv/56CrfW0O/x9hBE56rywB+ADiYRoQhCTGxOtTYoyJZ7gf1B+06/0q4Tfvxd0by1DMZx0++30v5ARgP4cj2tPBg5Ul9MUXPwvcg2p5xKoBzGwPUS05lJRYxT22MSwYcwmPC1IyHaFVLxOsgWatzs/MnYriwJU9ux/vxT2P+h6gCVLY9/MoXl5kAvtzpVSGTNC8iLQnB3zj/+Jrf4KunD8fWjYuBPtw4Zb2eD2hpKXQkiVTESgtwOE722jwRq1OdjNWeZIcvn5GYru2uPdoyeP5fbi67KdK4DJw9nddFyfJ771LE0cqVpnk+dwIdHRPNp9qiaG1BpwdcMonacfwwwOsHMABJy2J4vCSQgaN4DwfXxyMhOO6xHHdJIZ7/NVil2/SMkxsFgh2CnDc17c243fSgKFOoigH2+HFPhKHcKqLoACdDSCfsQTnbwHEzaeIKWYBw/4qBE/s0uNlJbZmMXC1xP2A7Dr1OEhy+cB7YGiGqJQrvqF5uZDi8foauvfoQfx7ZgZaIoRwcIK36g0axBmegagJdom549rUdpwE+3jWNEDul62SnGk043/pUhmB6iSMBoA65fe3RnMjqUC3MBr1U2fotBqUPR4OG6CwwTG8y7U8Eg7bg8cGPgb0ysufHxTf9wyymOHZpVve/W0Ywb7327DmXn2P53lfc7smj/2tyeHfDTsclIe/9dp9Jssg7Rp+kxKMJ3i37QOITV6tXfH3198v/7PRHZJt74eDMu0ZanblOqiK3ZaHwg1E3PvXsyYHrYAuCSaiZJqkWq7iZq0m3/rwPY/Hc5Szc5hmnqyzEyGgR8iDs3P/utufIQHa8+DcDzxHcyiOlhmuhqPv1K5O95/j9tScBIS9n7d67y2Qkgkp6MraKu70eujVz72Cpgm9JIiuIpTlfdueGKhZsA0lmVUUQc+q6hRpAO4BF0+fIyUrUgaasF2HFICWL9rMwrFrAqlFoillxLcaY1YyS4CUEnfTsbX3X7/+dXTpzNlQ7THBxTu/v062O5OJAFMpgcO3PuDwrda8BB0IeiWY5MK/4rgO2+l2yH9783vk/U8+DjWHQSqlhToC9w1DN3jZtLTDwchB5E267O2Hd1Havq1RY2KCs263m+iaHMcDrBzASa82n+0DPhtcBHPCDyx6dj+1KM/dCBJqGQYOCivqU72JFmOC883trVgN0XEaM+NsK1FFFqRxBfkc30SlkQUMe6tIiP8XDjqzzRmU5GUhz/D3+1dCuVTmFas0kofw8IoRQrLtzja6sXgr0QNQfCt15EXRs7M3aw0FlzhQj9zptFMLVsCEMH2XF7gIPDRJrsVpaXurs8PvLT049qwFF30JzhsFb5frJUEI5iWrjF6+8ryv70WeBuPd1bw15m15e/8ayDhwRA92w73/OkH8Udk44HQGN/mh+ChIEt17Bvjfu/0c3HMP5HUOimxsbaGzp06j9a3NA46baXN25mkd5UAWjxpobf0Jerz+BAIGmGkY9MzsKX714nOFPZflQK+jRJC9fg+4mHIqXjCxAIljqmBzg6lHlU5JA7qmi6sXL0cOJAYKTodNJAy0R24skYzVPpnS9GbSDUaIW6ZFTcPMpH8/nYLd6a++8Q104dRpP8UPlAH0hp+/934unGCBhR9RoVouDyCdmzOsXq146xyyuPPi8B2KLITgjHP6P3/y7+jHb/0yjqGPbwMjLwN4fMGYSnh6xwQQh/Lqy2n3OuzByqOsz7esb/e1JB3RfniAlQM4pnUfVzMYuCpl5vzAst3rJr5p7Dl+dQObRjA+ybj0HUc7Dmdse2c73g0FI4YkiqVN5QCOPsuDtaogn6Nrcl8LaWUBJ8j/O9tsoSQvCvDuahQ4ShLfjiNPLRy6EUK0Uioj+GfcA5AsfbuPry/epEkehMbJEeZ3iDw3TVO2ag2aN66gMOOJqQ7v9fs0bZhDSqmca84U+gwRk/4nuhkpBLu/+kjb2tk+eZwAdTfwvsVyfppopaY9uAEMoTcvgKRiGaZ86crzNMkAqrSHmLf+ILL49oN7SAqJvvzZz8ue7eCt9ph3KG+DUPLEqgEING93O2x5bVUbZojA+Q0cwBDg+vkXXkYAnaie+DTQ6XXjayzzljBjnGlJ8NdlPjQlQCE0QDBms60ZbbbRikPeiYSBThL6NQ6l57UNyzSlZVi5NrpA0PO3X3sNnZ2bD6RGOA/+8K23A9XJU2GgfmpUgcN3htUrFYA0RwQToI3M7X0PbCJvffA7/k8/+jfa7fXSVKd0WYoO4N2RYUy4Rogsl0pa3uxjAIPw8PEybnczzIDHSLY7HS/hM6nHDw+wcgAnpf3o7cLKEJxzLW2oHeAI6Nn9xDbToePX1A1sFdjxO5xim7lsp72TmL6iLiXlAI6mQQ9KjxBBSQIYv9FEm4jaiWYBJ8T/CzCGjWoNlxI2kmGMhEY0kmdIlcOLcLi/V0pl7MeIyDiTNxZvZXsg8/kmQdYpxZg2a43E596nSLkqxgHWptfL5Fs402ghiAZWz2RqAHKnPlq44YtnepAJDFjDh9MoJ1M3RRnVqLMocNO+9NxVXDIjwTgWRQWpyglBVk8317WnmwO+N0M35KmZWfy5Fz7N7j56qE2WUypV1RayM6ArcmxHPFpb0br9g4bI3YAMQghBM40me/Hy1Uy+44VU7HihZSeFoPrxYsRbwnVdNClZzfFqRrWWtAbgTvypC5fj4iuXtuNgIZMzyCetj2ftYyGxFAoFJ7zGTcPwYKDDt5BOTV3T5F+/9jo+NTPju0PHdeV/vPNerp3b+wdTr1YHDt+ZGVYtlTWEpABqkzw7fIfy9x1bLK2uiH9487va/eUl33MUW0GJuMuzRTaAe13e7nYuc8WtB3cjI0eEnSeAKNtpJ4+WN44HzPx9EAAAIABJREFUWDmAw85gmvWkZCw9fmBmu47mMhb7CJ85fnU8SRxDPbsvOr1ufJtJjNm/MInKARxtKSvI52j6O7F2wlnASfD/QjBArVwhlXIlQcUMmoY9kxLwAMe3vSQu9G4HEKGNCabVUhVb5slwShDktHD/jgdRmdcHDA6Vclm0as3iTUaKSoXIyrSD1mB48F5WyxXUrNXV/KQ432l11e112a0HdwMZZdTZJ63Z8dHPvuzfw6U1SuWLz13F8P6qJz4NQLT7wr3FA9zFA1QRDf/xK18B9BJ+5+E9arvpcLfHNzLVUhANSCkYF4IuP149Nvsb1gVA98E5B5zAn/nUi4raIoiSTygrkRTdXm/iziUSIeE4zsSNK6ZpV80kqIGSafHL5y7EBW3MXcZSRy+KVT2D8xVkRBbGuRfr+GNsTNd0VvGcjfl/DEOXf/PaN/Fcs+lL2J1ul//6gw/jem989RmkEDh7AdJ5fmaGVaySBt9OgonEGOdW5sPjA57fdrdL//v3/wW/d/33QYYfa1np+Y5Yput41+9DKlaJ6Fo+eLVBL483nmhZ2Rsd5vJ+v5/Kej6JB1g5gGN93RJqDCMBmQxp8QNDZHCcUZ2wASCENMj2BbjUiTqdYCQ63S7p2f2EJl81m4kGMGZEQT6npvqksoDjdgADd2GlXCG1cjWdbQxjTjGhReY4xYRwkL9artCTeEHg+3Z/ZQmtPHmc2rrz0xGBrF9KcavWpEWmKvAz1qhlMEKs7ziak5FDATK0LV1HAA1XxKCJqPqf1PpwYVt6vJzZhW1S9ZrquHbvMcf1CY6nFy9/CjVq9VTFmtTOwOm3tr6ubWxvjRyiruvy0tnz6Ktf+Ap+sLKE7i4/RElCkk2qnnM+Li6kpI+fPkZPNtbHilouldCQbqRRq7OXr7yQqfFwrMAFKSASRlXLTg2YCcExOM+yk0H1PG0agDvZmdl5rV6txTZ0KaXoO3aRgxm44vqNZzlQQnmtUi3MngaQ1X/7+jdxqz7+7Px4fZ2//8lCLsYGZw1w9nocvq0Wr5bKFFBKiubwHa46KSXngtP/78ffRz/49c/jWYwRWpFywDscoYnYqoIt1tB0XrZKWh4QDb2kkweLKAMaC97t9yhLIMny8GSN4wFWDuDYlnfyDYFxVSJEOOckqQwbSE3v9HqxODcAhg9J5BnNIeM3Dy99ArPE2t2O1nfsyE17+kIIAQd05MZUA6E1sAv5jCihsbwHoQWZlorJZgEzKUUsRizPuWSaqFVrxNKe3+kFjlOKSeHXIiFYaFSDLE3tuEhALoRY23iC7i49yM1FvFmro1olPkOD33kvajk4QwC/SVbyA5QlpQQDL7ChG1mJofqNUQNw3r1+ZwGlzS8d4xCmu6ndu4AfJTx/6TkEcO7qiaYBJri8fe/uifswIRR4X8mfvPKqPDN/Gt95eA9DEJZ6iq8B2DM3drb46pPH1K+Rq1J6RqEA586XLl/FcTpZiq/VcCNgnHHbcSbzXo+RdF2WKJ9dOK2rWpOqAbAlvvTc1diHB3a8pGyrsQsLDQLKlkRYIDGZe0siShvfKFB81Su1zO6w4yU8WqJsWfJvv/kGblSrJ1ZffLQsF+7dz2RsBIPDtz7I8G01edkCh6/kxCM5KyDM3T5Nu8xFv/39h+yff/iv2k6W/LJDmbBHIeolDubmwQic+7hkWDgHyRRiu70jltZWUrXnwlxst3dSmZJxPMDKAZzKNMTcCUTSCyS4iJ8f2OWc244d6TDh8a9JRC3TFJZuFIq/MsRMse1OO7OMpxDyqionaAA2THD8AgSaetLVQOxZwLAPCUkRAvbIaA+gGBiGgWYbrdQPC4QQrk0Q/zQhEAloiEq5QrURtNpCSLbT2UHXFxdS1/VwlYDOIUOqVWtqupaZGNEWbWa1pej2+xColpkEw45nmy2036iduUBKgFAa6Ns2v3nvdtRzqQCLmZQKIi/UJESpFMABDEaiS+cuoFMzc1F6nOq6kImw8mSN+jU0AJfci89dRV9++QucCU5vPbiLl9dWp1qHRR08ZND0+33xaG1V6wdApgKjN0BA7x93rVxhn33+0+oAFGExYIS47To0CVqtCGLFXdXjUI27UdWe0sAoDTSqdXZ2/lSs+xIk2DjM1WK3QyQ4hTIG20aC4hW2aXBHNqrjs2nzNsBquSS/881v4Wr5WSDXfhkBSen64l3t4Wo6KGuA/AbO3matIeeaDVEulSEYjRNKAGBxIr4XwPO7/HhV/sO/f5feXXqYmyUB+xlQh+aR1xwDsiGhEiC+6QgbYFpKBN08WHmEAPU2rYdLwTudTiRbRhBZT+IBVg7gIJrMYVmInhHxpfjzvmPTsAcgyLyRUhLLMCGqnIIhZ9IfiRDfbm9Hv9ydwI826TrMw/h2eQog6zcX8BR50EmqMiSQBYwxIBqKyJ58jzNPo2K+NZfaR3u/7jHBXCdaJn0nvQbKpTKvWCV6OOACDNi2Y6OP7yzQNOGE4RsGJHjNWgMrx2H42WeC816vl/maBaN2rVzBClY2/FxmXROMFitPHmtrG08ji+IFJ0JEkESxGg8jCzbBDYThYYbsw3Pzp/HZ+dMTrJnkhsYY47cf3Au0/2qaxsqWRf70S39EZhot7jgOXniwSOJ475IbqWp5qAGA+3MZA8c92em0AytmlAOYUipeuHSFNGuNwO2pCnsaYLZjF8qxFHjuwPbDpXCYo76rgZWnKgTRACFEXDh9lpStUpBqvspKJFnftnO+hrFAGFj64kE286WYKSwEd8YhHUKRhl+vVMV33niDlC3riNhcCHbt5oK2trGZyJAgoB8cvq16Q8w2mrJkWZ7Dl1IKdriJcgg4rssAyhd4ft/56Foi+ozSKASeuZzRvCMalEwTlcz493K/urMdh99ZCnZX8tv2iHK8b9up2jRBhuN4gJUDOMJM5qIqxhwPYKFjgeBp97qBhzU08JiGyS1dP2LMD9xgoSpIsbmzTcI6zYdDDWMkK5SaciysB/mMCc4yEinH6klVtKjv0WFhpYwOfwLO37nmLMkqKxzWp061iTo879v3IE2UgrN1lMOVcy5vLC7gNCB1wABqmRYHiO+s5jrVly3hztrdTi7g1CghDOCGZpszKrgn4TlPonmAsFq4fwfZjhNP8xBsB4+UOTf0xTPczFvBiIVxuIPz6fTcPL5w6uxEfvuSmhfIAF1+/JjA/hvmAe70Vz79OfSFF18GfizRtXty4f4iPY5LOEwfqk6MGpASqKHo8toqXt/aCN0wJYRbpnUkaKBslfgXXvxMoGCC0EJMZkXRs/v5gmJMQM8YYe4yl/I8QU4mME7VZLYa0DRNPn/xucTOBL0AqAlpagIcOhIjoP9LbOxpjifPfYHNpVauFhYJsFmtib/71rfIYZhdLrh4+8OPyU43uJ1/1HwBOlqjWkMzjQZvNRrYMk0C0KR0go2pwBUOiSX/66c/QP/+y5/leRkLxllidKFxDXw3+YpWrBI+jhourr5GteOhJT19TDd3tpPsZti27HQ7OM0z0kk8wMoBnMaUp9BHHPzAkE0MES1BxTV0g5UMY1qN5nJ9ezOa811l/wZdcrGVx2QX8rnY9BOx6SPThuLOAsYQkw4Q0OEfcArOtWawRrP1FRiaHn4QBai5dwgslfHhyG6IYLx1fxE9jWDcPEkFwO1MCabNWhOXzKNRswVQXx5F9LJeHNfNhWwe5BCleL41Q7K4ZORCCQUVwnFdcWNxITKSw/7hAzqERwwgUaztFlTFuRWbUsJnGjPoyvmLkb7juR1gAoLZts3uPnoY6cCiazqrV6v4f/vSH1HIhOFCyO32Nl+4v5gPfrME9FbUJp9urMvVp48BfivSECjVmGUYR9YNBGJcvXAZssIjtT+tlQFuotfv5yIYLo05gDNf3rOO0tCD6iN+DRCM+WxzhgK1SxIP2FFt19W4yJ6+5tB5FXZ3LlXQYhLTfqRNQAKrliqkqH5McGBDFu7fv/EG1fZRWEEw7c/e/R0KS0dg6PrA4dts8Fa9gU3dAAcjI4REOm+mMqkxdALftt/d+Ij90w/+VdtKicc1itjAS1yUx0t00XRetiwNglDTfAC69ua920APlXS3cru9k2oAz0k8wMoBnPR0p92+xw8sBRdCC7SYMQbIL+oE2DD0Xccv4PxP8wOOiUC6PqQsjL3qqW4K0zxfMHaAgsSYSEohtVKpPk/rIY4s4AH8syRR+H+BB2a2OYPg0Jv1M+kO4KF+CcYMkvGrpQq29jlj4eICXB3LT+LlJYQ3v1atyUa1rjaBmBe5REK0O91cHQ4G73QLJQEfF7P6VHOeBqRYffqErD5dS0QfCnklEbU+azRk9u9+qSilrF6poRcuX5kKI1OUGZFIyofLyzguTivYL//w819Cn77yvCcWfIfXNtbZrYeLWt+2o4iq6kbQgJRStnsdvvJ4VbPdeJARdE1jhn7UAQxiWqYpXnnpc7n6lkdQX+pVOyGQ1VIXMqYOIaPGcV0VsBOTPlUz+44TGKNPXbiEkgzilFKwvpMTKHMvOQQRiaJTWal15F8DYB8sWxUKGa5FfQgmYqbZkH//xrf2UDnh/Paj3/zW95BM3fAgnWebTdas14muaQRJNDUO36GibMfmK0/W0D+8+V165+F93/rLumCRHMCgK7DbIoRJ2bSQaZipqU9KxDbbm2TlyVqiZ1zGOev2uqlvKsfxACsHcGpLLP2OAKmAc98HB9m1+74yWSE6vGQaGiXqjA+e20iZaRhxJJFSZMqvB0T2qfWbstL9dBdXFjBwPXrZv+EjuiDjwTLTO4Qcpx6Pg5hQoKb1o8GJKIMJ4RBYVC1XKFxC4OFCiCcbT+Xi0v3I+yWBrF9K8Uy9SY3d9idCcfkahOj2e0BPkSup4D2CKOZ6tZYruZQwRzUgpJC3H9zDvX5PqWeKNQD7NVAEfPrK8wrG/YR10Ol12cOV5VgNDAAhNt+ckX/ypT/UdgNn4FCF7688EotL9wnjA0R19SSvAeD5tV2GVtZWaFiI7+OkNHQdMjBGHjIppfy5cxfpfGs2+UFOXg+y0+tOz+EdYcY40/J27pu8ZTV9IyqZJr98Llk0ELDp9Z38BDcBgoB60tUAIJKVTEsrum2AEMLnWzPy7954wzsT9h1H/ue7vzv2WwSQ0c1a3XP4Nqo1cIBD2alz+A5Xm8Nc1rP79H98/1/x2x++n+4ijN6bdJlbyHOHh9hGKATqU+CVTuOBfXZx6QGyE9r7JUKs3+9pYbPvo+pgFA+wcgBH1WqO68NHTCJJBRd+HLuyfcIlBZwQlGocoJ7TeiFzrNr9osknm+vhN1nlAE5tmgHWBWGEKaE4bYiJ1AY5IR3FkQUclv8XYJ/r1doRKOLMVIsx1wilZIocwENdE4KFRjVRLVc0iPoWQrJ2t42uLy4EQ7jYN3mQ8Q+wlrVKNbMpnZaOOeOsa/didUjEoTu4GJdMUwIvcBztqTaS0QATTH5862b481UyYqlWx2kAEFYQwjJGiG1MMC8ZFjiBD8DajRNlWn4Hw/W9Rw/j48o+pDhd0+RXv/gV/KkLl71fBJIcCUnvLN1H95YfTouaMxknwCwKKejK2ipOgosZMi90TT+RHsEwDPmlT39e7cUBVwA47bv9fjpWzICyJVncdV0UFZY8SflU28XSAASBnZ6d1yB4M+GHO66TGZe1x/XrsZNEo69KWEeT3TzGomSYJM0sxKQUqlHKTs/Mor9+/XVtu9Pmb137aO9bBAkOTS/Dt+U5fDVKp9rhO5wDQFgBru3v/scP0b/9/KdJTU3S7QqXuYlmtCY9AGi/ZFqyZFqpnDt7/R67uxyNPucknex02pHQYsPq+zgeYOUADqvRItXznIwYcc7ocVDFXAiIdDliDCUES0IoLxmmcvyOmHMhhVjf2gy1yXo8dDEayIq0JNOWdQj5rNECY7qkrbSs+osjC9jLABaBjS6EEHA2kmq5ktXoj/QLgTyUkNR5MXKjAIQQfIcMzRCVcoVqhHDbcdDHizcp/On3gbk1dEO06g0ta05nvzJPQjk49ObxgfdK0zTgBaZqPeRxhhB6urXJl1YfBd7Hw4xmF34KLmihznNh+lR1gmvANAzx0pXniZUiRFhwKdOugcVOe1s8WnucaECLruviwqmz4mt/8OreN1QIwbgU9PaDu3jp8UraA5/0/oCejKytP0GP158kNlb4Fhq6fuK5CKDYL505r52enU9MjklsmAvO+7adyjcsX/rDwnZs9S3N16QUVhpA7nnx8qdQGkhYjDPuMpbuOwsJClISlfGbjyVqGaawTGsi9i9wAp+bP0W++sUvyuUn63Sm0eTNWm3AcSwRnxYOXz8ry3Fdee3mDf4/fvAvWhLBdn5kiKWMRMzlbqL3gVjkHNMInE0xxrRslXDSVHhCSrG8tkK2E7BZCSl5u9NO95uyq9vjeICVAziNFZyTPjyuWSH5CH5gj/NiP5QXZF4RQsUg47fwe0hiM8CF4Bvbm+Feao/fQyrlJjY7zxpWkM8pKDnmLiJlAUNwhfANf+9JTgjmlVKF1CrVVKLNfKsLI0Ehb33KudaH+iqXyrxilSjwHd5YvIXHORgBToZgTBq1BgYYUfWkqgHWt20tz1w0kPE/22zh0j7O6VQ1pDobqQHYwO8uPSBxQ52eqG44k0G0pKLlCL8qUzjXQjbqi89dVfv5vlm68+AeSgNeDNATTN0gX/uDV/GF0+f2JIC7EHMZXniwSFbXk+HsDr8oi1cT+Pra3Q5bXltN/PsJRjZTNzTPIHzCo+u6/PLLX8jX+TjnU+tyJh3HmUKdYSYEx6k70nK+HpR44TRQr9bYufnTadnLZM/up/fOgm12AFkWzpYYTqWq1knfOk3nlVJ5oubDNHT0f/7l30wtpPNJC77v2Hxt/Sn6xze/Sxfu3y38uwFc5ozztPbLxPUFCJ461UTZKmkkQVsooI4t3FuMd+/HSNi2TYIkrMSt0FE8wMoBHLeWC9IenDY4B5S2wdPp97zUdM/xi6m0DAPw/wsymuzEdDljWzvbgRUFERkAMZGd5JPfM2T9IoyJgnwu4FxHyQIOwf+LCWGQUQTZoXnUFiUUOHEn6jISVs/g0IWLMjhz4Z+F+4vo6eb6yObAuVcyLd6sN7VphNAOq+M460HkY6fbyfXaBXT1Zq2hYMHjnPiIbcEB6cOF6+mfkZQTONLMpXW2BSMAZAQpLm/ENrY26eP1p6m+K+CEf/7SFfGHn//Sgb2dcy76bl8u3LtLn25tRFpL01gZAl8c2xGP1la0bkrc52BcMw1zbJAhoZRdPHVWOzt/ehqnJsSYMbNdW2NsSnmyMZKuy/xQkIXQraoyLRoA9Kbzp86SSqmUypAxwqLv2ER4PtkEn0GwHAQzp/rtTnBEE9O0rmmsUqrk0h4URsmccTE/OyO+88ZfTMyYwujhcB2Xucx2HPrfv/+v+K1r78XRZC7agHMk53wiMtiHCoW7JZIIlywLJYUAJSViTzafak+OsSmGnFzR6XUJ52C6zO45zAOsHMDZzUWmPWOMmJSICiEwF1x27b4kmMiSYSrHb4CZsZnDdtrt4B/UFLIkAgxj4ooOIJ+p1KhKXy/y5IbNAg7C/wtrxdCBD7QV/D1OSbn0/2fvPaAty84ysZ1uvu/dl+tVzqm7q6qTOkgtCSRZgwhCWoBIAxoxMwhYGAwYxssjgxlmLQ/YHsae5TGM7bHHeBYaCS1CKyMhhJBoOlZXV3XlVy/nePM9Zwev/9z3Xr2qF+7J4d6z6aLVdff+97//vc8Of/h+Qjgl8VreKu4NaJhcOosXVpfQzMLc5s9g0KeEkN6uAknHkZ0+rdJdu1HVWhUL6bEyxeEoQcmUTWdkX6EntPuAwyFGqvlaucTHpicCmQvDiIkUwKPFijkrq8ZIN+NvFMvpo8dRb3ePFS7bqi7kkbk7PoogYtTvAtCCmXSavPDEs+RhaGB4V5YqFXF74h4rlkt+sxa5/iBiQ0hJZ+bn8Fq56Cv/sN+lUylMcGt9IaNUPfXIJewHFKuvQvCmM1HXGjRoxZ83QzNN1YiAhrymcYklYEcCDJyNDh/z7S4GBmBd6MRzRA2MAXW09aZrR2hxG0cSAATM7ly+LeZGSqnmlxfxwaF9/Gc++qOBvKkcTYY3jY0grBe/+TX0+W9+3ZseAqKKERZccrDvBMSBt91CEAggImbTGc/Sd92ZGEUuItepYrnk2/m1k/R3ygMcG4C9XaeRoF6tV1GSJVEc8Wt9umpaXVaq1ba4JFgffXhbxJDP4Z0b05zZjQK2CP+cSDAx2DsQ8ghFIhKt8PlMC7a9KmJMBMGIUsrUzdE7xiULosIK+e72GmiER6NzLuqNeqi/MRAvJpgnWAIP9vTR+HMLbsFJKcX47BQN2nDkVzRrcJJ2uWeMJFLI1/swGKKOHzyCBnr7XB5M+MkZ3uorS2x5bTVQZiEa+9KZR9Cls49u4wMcf5aLK/zO+KhvEa2BCsN650IqReeX5tHiys5IJtZJWm+RTWdM5dckhPCDQ8Ps4NB+6510XgtVq9ex55GEYZYrGLmElBqPfj7CMIu5XXkjGIu+Qi8N4HyXtUbd/bsM5LRUChL+hv491K5rysy4AD2sO9cVqNHGDJ+t6oAj69LKMtJ0HfV2FeQv/cNPuL+mWzERst81XVPX7t4Wn/nK59nSalui1HAhBOuEe0c6lZLZVMb1NV2uVcTE7LQrezSXgler1UAdL3bKAxwbgEO2MfnJDhwM9UbD8IJJJpKcEcIgqgohFOhC9VMGjvrCSFZqNVKzANOFwTiF4O4X5/51JPsdGjejfgHyGZZx5O9tbosnsvQsRwFjJZQ097iCaIaB3n7sZU4JNwQPh3eCsnhR3xemREiBfyN86ZCzk8A3D5CTAA2TSqbcEHtMwyUJQHoJX3O5OuSbUmrkBfYKZsghe23fHNbL1Ts3jLQkcYmIBAIw/m5IBr7Xg0P78fDAYESE5Q6bENnher4qm6wBZGJXLo/f/eRztLe7sI0KfMszC3Pi7tQYBWVkXJCxv62U1sTc4nzgUaKQTsNsgUjhpx65CF53Zpt0bL1qrQpYEp1eJOechB0FptMnKYzj33DwSiYSvrIH+lHI2ej2HdRAlolLJCQAaYEiXtTK2iquNerGMFLJpPpv/vEvdKweCfL8gsEX8vzeHB2J+NTuzj5GSOiCU7f3rjAKbAMJMJvKYDfPCDCMTcxN40qt6mjYCiFeb9SZHoI3z8N5gGMDsKOpjWbj9agGVKqWkRTyAeMHRAEnk0lOMQEjsJFrMZqj9J5rjBAvVSusrjW87yzuYU8JgPGXEKpimNw2WyhWo4Ax5kpKBtidrQp4eA709GEWkVznSebvA7iV/Fz+XRjq0CbkKoZQFDDswl8opBQouiFMRkqhhOCEC2kokwDiRkix/m+JINcapUT1F3pxbAR2eYackWtegiOWC6+v0IPy2ZyzkcetLUugUq3wu5NjoXFEjCOBTUxhAPDPW7milMrhgSFycGjYBLPRr6KUEvNLi3S15C9csBnJPXvhSXT+xOltVRW8KZWi96Yn0Nj0BAL46k4skJ+tXq/L6YU5Vl9XzgYpB7gLZ1Jp04phQogY7h8kR/YfMt0myPEF2Leq1KqxjNYnABw/OkEpHeB6a7uu08mUOHbwsO96SEiTp+k6s+yAvuMMYKmwigM/IrY6AUUsqsEkcD8sVcp0q+M1HESf+uQvobAHPLi9THTOuaZr9E+++kX87cuvuk0+fPQwUpwD0EDn3K8xxpJRJnPpDHNrfWtcl3cnRh1HF5cr5dC8dbbmAY4NwOH7dD3lCB7gXHBVqZRByb6rwQw8fJvG4ITCyEjf4vgj8HRgwRDnpUqZNXTNXO8A/YIQeOX4+iDsBOVlDPlsbglGtZaVR5jZ/L8AKZVMJCMjkgRLRCYhJZwzeMOgi+9H6BoGXXiZKCWVEIoribjgEP2Cm8bcDaNu899WLrAKKS6F2DQaQV7I2HgXnuUtlBTVatV3RY4TCUBe4Fwmq3q7C5Hi28mYg24LuTAn52bYSnEtaFYe6B/QW1AzaC9eCw/NTFjumJRSAef60f2H2n6OdKHLkfHxUL7LIN9Uf6FXvfvJZ9lOkaVSSa6UoncnxvDE3HSovnMvmVFKCp1zPLMwR0qVspddWaJt1QAMxEEx/sS5C8jNqAtLTEegskJIVmtxiqjNqVJKNHS97ffmCCzNSLAIcPNDfQOspyuYdD5SSdHQNCfrVSCMiN86v0hMbsiZhDttVzYfenS4XcTIq/UaXi2uPbB2k4mE+oUf/SlcCOh7CmrKv/Ctv0IvfuMvQ2OE80MOLuav9YNdV/uAdCZuoLcppfj88iJbLtpPsaOQkqVyORTvtIfzAMcGYFeXXfiJVes1BJDFmACkaMKUIZJRCoYSTgFbF8UQ0RuzDEaOYrlEzW60QSnJgurX66+hCf2AAPLZgH+NS5tKwEIUMMaACyxbLgaI7Eun0pERGBgfWEDrfH3/gMgdsIDAp7YJuazAIAKGW5C6gChdgXTO2U7GXCmFibhsm1OCkZRCwEN7kwAY7zLpjOzr7glNJKHN0bVFM4jlrtZqhmE/SgUTwpOJZl5gtzxLozT+IHi9dvcmEgIAaEJWmilSYNeL95StUwNyCYlMKKUcFMYnDx9r2zkCH6qZhXkaJiPiTl8qOGY+f+lpdOrwsR0/ZCklB6i6uxOjeGZxPmQfu4vsKMUVQnRmYQ4vr4Uv5xxE9GZSaUuGDoi4GOobVMcDiM5zcWY8JSWl4rVGrW33IevCw5wLzkJ5tlsfTNzCYwnAY/P00ROQ38fjnnYnX280AIXKcv/Nd7OUsO9bbhw3CF4CGMt8JkdA/x2lghGCfOtyYXlp27mTTKbkT33/R8ihffujNCRbvDY0Td0avSs+/ZXPs4XlJVs0otzIrF0iymPcjXeCMSeY4GwmQxl1dv2CPMp3xkcNpEE7RdM1WW9usVOrAAAgAElEQVQ0QmEAfjgPcGwAtjOjUWsDeWeVwqVyGcOmAA83SkCXaX1NrkNEC4oJRRgbcF5RE4db/IJnx1qpSExFJwaoIGtHAzCsYTDwxJDPbq3m8NMx952hdQjonccDkQ7duS64GIR/wFs4BGcHWOuuPITBfKsA3h+iccGcqwhSTdDlJtyyUgL+nxRKlxILzulGZO7DkMshEqIEaOiH+QHjHaMUD/T0Ob4Ihmis0WQFI6npGmo0NOsXj4BHDGcoJQT19/ThVDI6qAEBi81W99V6XdwZHwnvvdIwAivYLMPLoy3Jt08jQijP53Lo3LGTzl7/IRWJpmni3tREJNZfIpGQBwaG1LueeJbuFi0qpBSApHR7bIQuri6HVOr22VpaWVZzS/M4rJDXlBKRTlozAG9I4/Fzj7kSbWFfuuFtCdbOht5oyz3IidQhH15YvwUn44rbuiuBrlxOHBzaH9g5BzDQDV235rBg6PoQUUhG7p3j7uxFmxroXLLpDAPktSgVKaWcW1p4wBl+g38I5PrI+z7Izp84FaUhWeK13mgIQI/69Jf/gl4fuWOpbRtVVjrXg/OaCZEgM8mUSKfS1EGQmFgrFxWka7ExLFGt1SgXTb/xMJSteYBjA3AYZsRDHiBKVRe6KpfLzEiwiJHEmChGmaNLFRiPE7TjIaLVcnHVgC5tVcC2sp7fslVV139vRwMwePXYcWBwXbgxQX8kYCYKuEX+X3AYyGdzJIqwwIYBGJOdc1sANKkynHyM7LnrcP1goICiJKAtw69CKF1JzDmnEI27U5SuP5Ppci8YG9DPe0F/g+G/r9CLMxGK+nZZSmEhp0qQfiLCpb+nF+0EaxrhIYWGdYBcmlmYY1EwAgV5pwvLhBl3y2ZeVzuPY0+HAfCRkNf03PFTFCJR26VACoWpuVlcqVUjMySIME0mEuSdl96Bj+w/uCvfQkpZqVXl7fERFsbcxlYEDvNUrlXE7Pyc+TRBVjpwsS5jjKcSScvfMHz//YVecerIccttXWQ/pKQwOLyRTo7E2X1isGxo4YiKCeni6Xi24L1+cGiYBH3XhjtpXTPvxGEnWrjjJzuEAgCdSyaVZlFKEwY6oMWVJUBh21GilBDxwXe+hz5z4fEQStwZS1xwrnNu5Pn91usvOyMW+dZK6nx7QETkh2VnABgLgjHJptLY7rcMUcDjM1Oo1qhb4gBUsKVyyVIbPypv5AGODcB+SDvAPqq16gOLFh5sCWYO+tks2xsQ0YwasfZw8nTMY3BpbaVlnkqMkQgyb1zbGIANWIcY8tnsd9mO9faKAoZ1LqXY0bhECBa5TBZ35bqi5ZUL6A0S4nQxBdtudy6vStUKhOlKLgWGyNymQXd7/ly4tHRCAUMM55Befe8CHoDd+S7UnetqVTX+3SMJgLGo3qhTvssD1aNuXSULzgRduRwq5LtbrjlXO+4AYhAVdGv0DtJ0vQNGGw/RawkAUgxE7J87forYffx7zaNV+rV6jY/PTEfyjZVIJNSJg0fl85ee2tMiL6VUq6U1cXtilJWrFasiCrQ+QKc0dI5mF2ZpVHiH3GBJlrDlJQH3qgunzyPIuxaXByTAG1qDmUIu6jjBYQ5vNVDYd9zQ4wGbkgBjTJ06fCwUd+xWin+MkFBNyOdInsumJqTDKoFeIZVMYzdyifohOnA8WFldRXWtsWd3zz/xlPrgc+8OxXflllzA8P3V73xL/fk3voLj89ZIUQSpVeK9aMsCg7cgo1Rm01kGaG5WS0NriJGpcUv3FSElr1QroZqHrXmAYwOw1VUQhfoQLSclKVVKcMHe5NgJ9LPZYQNcRiqZFBgjijFpe4hoU5EqzQg96zuOWaG3qNcOBuAm5DPAcDqLXHdJpDGZICTQIgp4t/y/AAOcTiZRb8hzwRqRVAiCeBEFqy/XuQDPY4ggAPvuueMnaU9XQZWrFTEyOcZKEVOMerJksBF9RoTY2fD/cJ/gCJBKplR/oY85gITxZCidQhTgPqu1qqWLdNhkY+wpiSQa6I3XkZtz09B1cfPe7UivDTflEWpaGIPXDUDNBXa3NSufZCKhzh47iTMRN1KBU9fEzDSCvIRRLYxSnk6lyQtPPEOGB4b2HAaMd355kd+dGGOtFJtBywMixaSSdHZhDgMEYVRK0ymcYSdQl73dPfxsm8Kt251HhZBsNOoEnDTjsqMElM65KQS1WH6dJQFAKuwv9OGB3r4wGKqEpmtGGqTtBUtIoiSVDAOfnbVIfBhtKpEUmXQm/O8RpeRauUTMoMKcPX5S/Nj3/ED4x2RifhtaQ92eGBOf+dKLbHZpwUSLzqiilORciFAZHsMk+WwqjdIW0QABQ3FmcZ6ulYtmh8LrjQaDtGdhKlvzAMcG4DDNjAu8GJDPXFflShPyeaPApINBdj1K14We9iZhQEQzhlKJJDABf0KvJLIhFLW4urznxQ8usipA4y+MqR2gCmPIZxurs02b7Orhh7fn/4Xo+2Qipfp7esN2GeIKKYIRJkIKqeu6bGiaYezVdQ5hvw/MHhgrX3jiWQRoC1Ag4nd5bYWPTE2EXjHq9TIUFvNrYIwFpRT3F/rIbjkJvea50+lXqtVtazxqMtlYRwM98Tpyae7E7OI8nV9edImcf2TawcnOP2kF0xOlVJ05ehJD9H5US7la4VNzs2G7y9gSJ8ByP3bqLHri3IVW7eEyRMZmp9S9qXEshOEnF6YCCTbIwvIiGKvDxJcpXgDqMskSjDH7ywq+rfPHT+MoplcxJSQ7lTBS1VoNwgLttO6UNkrT9VhGnTLbJscJKDtH9x/CgN4RhgKAWw1de3CDbCZZEiqE6S/CILN24CGZSHCIGAz3WBSvVGtkrVw0pWPfPzAkfvZHfiLSBuC61hDFUgn98Zf/gl67cyvc0xMAdwoCSEwGRQTAXuBdwp0XY0xy6SwBO5XZAoE5t8ZGzN5XIFgnlA5uG3mAYwOw2ZmPSD3wAKrvglMOHr5BRD0ZENHJpGCEUowQV20CEQ2bwfLa6t6ef0aEGgr0sI2sAbgJ+Ywh6jeIdRuRT76z2NwtCniX/L+JBBMDPf0Brx/FEcJUKQWQzeBNjBqaRpvGXnNQp5lUWj538akHL/jwAFUIT87PyrGZSYiC7ay1YHgWKSP/r92B9xXifK52ZWe/HRaa3qANLVyekXbHA2cT5AWOITDtSrDZDu5Td8ZH8W73V2fUfWiNkQFDEGS6Dx9G2ewCYx7GvL+txg/f6umjJ1BPV3erqqH8/d7keFvBoycY4/lsDr/7yWcpnMV7FYiwVUjRkckxPDYzFYr5AUc8MMpD3vKo5no1DMCJJNtwLrQr2EK+i58/ccb2Xcxuv2FuZyYiK8z8e84bRkoJJDT+kHHN847jDsIsgXQyKY4dPBKo3uwh+ahao97U9TXvPlQhFUf9hnkRucAbo1Tks/kwrcMHR6WU0HQdApFMn7vd+bz6lZ/6J5Fcu0IKI8/v5/7yS/ibr77kwgy3HwmAo+dSGGnh4rK3BMBxO5lIimwqbQoRUCnEV4ordG550cz3o4rlkpl6gUwT5AGODcCBiN71TgVAkJQqZbJTbj2IQqWEEYjKDbJADkvwtgBjMCEYmAEDRrBMORAIGHNWiqu7Xg7CEhUSRQMwyI4QIilZD3l0ME9x0/aTwMNRwLDHSSkf2EsgKmGgtx/byfdgT2JYqGbkLuwJAG8mNb1BwMMdonq5xUjVrTwcGNjHzx4/teMlH6BJIELm3vQEnpybscd6BFvBvgbQz04iLMDTPJfNqp58IbLnUASnDlhWpUo5tJdjqzJt5gXO40I+zi9tVXYb9bng6u27t6K9JkA5aKxuZVohY1deQbaL4p1yQ16wwE4cPmY4bUSoiNVSCc0tzodXGelQmO947HH06MmzLalANJaQgt6ZGMPTC7Mt63tRQSoptYYmpxdmWbVe86IL32gCkkUqmaSUOFtacN8+e/Qk7o7PwI25U5VaNdrnmQ+rEBTWoNSPobJ9EHYEuiCY8KH+ftbTVQgTt7Kha8QwqoDTgoqNv2GaHK94IYTK7lw+tLoBIYSYW1qwdHAnKEP/7c/+olci84wunA9//fJ35J/+1VdAp+ZZP21AmAsh2MMogm0wLm+GgLEgGJNMKo1TCXOIEyNTYxDEsyc/Oue8Vq+FUg+wkQc4NgB7s6R8o6qQkmBoKJVLuy40Qghn1EKcuw/cgzEa8nIlWaIZM4EMg3Ckii44XysVd//AMeJIocA3gCgq62LI50h9Cv4yu0sU8Lrx1eAFDDL9PX3YCryHxUFsQjhLKRXn6/l6dR1BJIibygxKKT979CTb1z+4J4vAhpCcjkxN4LnOyIcihOCWHj87CRDOR0DHAJhwp0pQi2uok6uLWr1OnThFhE14hBCRTqYU5AUOG29h5wccvhZWltT0/Gzk7oHbZAuoL1ACRn7xbM5DgGrjdGzw/jgyfBAN9Q84JeVLe3ByujsxhtoZ5QOUEr3dBQTRwF3ZfEu5ggOuruv49sQ94hf0MuRWE1LSmYU5vFYynQus5ViCrIAxlulkyhUH8Xw2Jx47dc7xnSxIebjVNzhmVuu1WBYmBQpKfSfOnCa7iatFQAJnjp6AN3yoOC1VyiidTikhZShhPUMlrDZhBvRI3bmuUDrxKKTU/NKi5ZQY8F39s5/5edC/R2KWGrom702Oy09/6UU2vTAXCZ6DZNJwqBIcEAeDZCNyfRspUglR2UympR6wWq/ysZmpXfU8kIq1Vq/RnQIywyCYjTzAsQE4DLPhgIdKrYLqjcaeFIKCfjY7rHWIaM4IhQ8KIigioUDVuC6K5VL4H3jrULFm5yOoek1c/hjyOSj5R63fB6KAH8r/O9Dbh5ImvblajxugBxEFuGUIM25wXWpag0FULxh7vb5oQWTFM48+jtOpdGtWm/mBRUPX0cjkKF1aWzXVJnKVMBJSCFcvuSDnvkIvTidTkRNHFBkGOKdqLZweknblCdFUjFE80NNvKbeM3f7apR1E1N2bHCftBJkZRcc7U+sJIxll5J6NMcJ+f2BwH94/uM/UsIOqBLBjS6vLbGl1JSgWfO0XFJTPX3zKgOo2U4QQsqbV1O2xUbpc9Oy+I6RSdH5pAS2uLJlhK1J1IH2BG2l2GKXy5OHjBAz5nV6ElLzeqEdClxGKuVIK3i3h16eEQljty0Q+m+eH9g2H6ruBtE0rxTW0f2gInvtgWcGcc8lFHLneviuxObKQRaJvintpdbllFOJOc5NMJtTP/vBP4v5CT6inrqFrvFgukf/85RfJlVs3Qs1rqJjDCAJSHCHjhWo8ATCTSaUR/NmtSKUA/YeAU9BuBX7zWjfsRDSQBzg2ADuRYEBtIY+uUJKUymWyVwQNxkhA/tSwedLtJjZ4gBoQ0YloQEQ3NE2UquVtDxYD+hlB7t+QwABGQGG3DvmsKKHhcvsM6BuPu20hga1RwBgJJRWFkCtw1ewt9CCzxtKtvTQV9gCnjI1v2oBw5jrSGo1mvl7eRPf0uyQSCfXC489Y9kIVUspKrSpHJsdYcY+Lit/jcaU/gH/m3LJMzPTd011AZiKQzNCK6+wtgXK1EupLst35g7vMQE8fyqTNOW3Y7add2kH+36u3b3jyPbeLjMIwDki1oCKctuVhGVJK5VBfPzo8fDC09064lNweu9dRCp1EIiGH+wflC088y1JJc7BsQgpIKyBuj99z9b4DSpyV0poA+O12jcDOZbKubS/ZdEZcPPNIxxvydK4rSP/immDbnhDmXHDWrt9Y20+fCwOkhIr9g0M0n825QM0dEnA3vXb3Fjp24NBO8PaQ8wmiMAHGnAnZBH+JS/tIoJDvdsU5yi2JQOTvWrGI7aaeSCWT4sc+9GF67MAht1hylQ58S0JK8rmvfQl/4+XvuEq7U4iBvjIu9iXQDEbDJJfOEAig3KlAyqrb4/d2vN9JJUW5Ugn9HTg2ANtfI4G0BMhnjeuyXC639JALI/SzWaFB3k5QAiRZAj4wuGSF6mMCgyXk97F7CJuVgyv1Qm4ABllSQnFUHBVcmZOYiCsSMKKAQSktJUDYqe5cHmfNKbOE4Z2FEUSRKsGFqGsNBjBkBoQz0A1JGSj08gtnHmm53+/GrlRKraytipGpcVZr1EMyKgdsYMylEGwr5LcDatuaQu7xdCot+wu9tmXuJj/tSgsc2eqaxsC7vh0LGIELXd2oO9cazrQdx29lTKvFIh+fnYy/NytCC6JuG8A/Pyw2Sono7e5RJw4dDd36A8jhheVlBtFHnVYwwTLBEvhdl96Bj1pQVkL6jaXVFX5n4p6j+w5cKuv1upxemGP1drg37bGA3DQAU8rEiUNHaH8hUjm2Xf68MNf0BgvKadTlwfhKDmRm5FqNS8dJAFA5Th85HhqnCaUUn5mfxTfHR+h7nn4OQWqyPQooDSBPsNC4HjsytMHqxZjIfDZLwpIaClRV5WqF7hV52ErsiUSC/8B7P8AunD7bqqrvv4M+79tvvCI+97Uv0VbIpr4zF6EOYwOwO5MFtokkS4hsOsMeRsgBZKaF1cXtyEwYi0ajTlvlCHaHQ/tUIOVObAC2L79AWkLETEPbG/J5g7GwQz+bFSBcupLJRNggokW5Vtl+SGEkMIIQYBWeiIKQGoDXvWwQJXTb5mp2bcT1OlgCzShgLIQkgHaQz+Z28xzm8D2CRxfk69W4JhoNzVDOwEUpzMoGcOI5efgYOzS035WJnlqYlWPTU3siR7jSkcdEhPA2GhsTwhkluL/QTz3MI+2xlMJPHryZy5VKaBQ+bkuMECoyqZSC/NJu024XekpKMToz6UipEXZZGKgwSkV6nbfDGHZbJ5RSns/l0dmjJ0L1nXIp1N2x0UivG6ffJiCgHNt/SLzz8XeYfidsrNXJuWk5MjVOrBjilJIQzYVnFub2hHhzOq6wtAfHyUwq7eoaS6dS8vGzj4XnDey/sDk4lIbJkdR/EdjuUTU0zdX1aJuTuKFvEgB0kd5CLxrq7Q/NvlHXNPmdyy9DOhf1nqeft7ImwcEcnMt5bAz2bQm53hGk9MllsrSF4d/1fnchyMEoury24uiOSgkR73/uXfT5S0/5xXfLfhp6A/RSRp7fybmZlvXjCntKQOk8Rh5xbY1gJAkmOJNM44fRiCCI6O7k6MPokLJSrZKwo0HAGyk2ALu2SjwlxIWUuFQpmYKgAmMIIZSGxWvJLck8ABGNMRh0AD7SyqXMLVaADi9VyyzsXh7GgENoAG5G/RJECA1q/txcCzGtACUAMPjZTEYV8t0Yofv5egV44uqa0jQw9jYhnMOck2EnETJGDUWaW5DE4EEKD9OxmSk0MTcd4KzZ71ohZUQA26dgviWcMX2FXgQ58uLihQSUrNbrpJ0VpeDoxFgCD/b2UUZDBWTixYRapgmYwldvX7fcLmoN4F6uEAafB1/2LtflgzEcoNHk3YQwwNkqm87gcydOUYKD10HDWT27uECL5ZIJ7tu7CqGUp5Mp+sITz+ADFnI2QyoepSS9NzWBxmYm977/qebdcWZhDi+vdUa+ZVg1gHiSSaVdXfCUUnHswGE62Nvf3gtz19FhWWvUwOG0Q8fvZNiYg9x0rrftWeNEOu3alhKijuw/iFPJVCiGCEgSV25dM3L/5nJ58dyFJ2xe3pWAc0VJxWFNG6hlcYmEBODtBtF/u8HA+jkInetiYXnJ5hp8kNN3XLgkvveF73aFlhMZaLrGS9UK+c9fepFcvvm2E1Jx23UJYIQAgSDwuW23CQFnEEqoyqUzjG7ocTBSpUpFTM5Nb72rqGK5FAm7RmwADv0qVbKh66pc2Z5rdjfWowz9bHY6tkJEK4Qk9hkiGhQLpXKJQo7QzRJWBVnIYPtiyGezqzyut1UCYLw1/sD/KcQRkkRKRbpyeZRJZ0RDa2BN1wkYe3lA+XrdnjGARX/vU8+7TRZJqbhUgo5MTeDZxXnX6XtFEHx+hBC+5kOECJmubH6n/E9eDbOj6II1v1artf2DBRRc/T19OJ0Kh4IrLIusVC3ze5PjnaHshTsiUvBPZ4w3LIvMJB+YYJFOptG54ydp0Eo/zrm4OzHW9vuiyakxqoHi5ZETZ9RTj1y0pGCRSnIpFb07OYp3izBZWl1Wc4vzGBxSOqkABHo6mXZ9nSWTSfXkuQuW5qmd5A7poaLmcBoi+SuIwo8N6CGaEY9ZSSWS4vihI67vQ3bYhvNicnaG3plo5njcNzDIHzt1zoU7m4KcVRTo63oz3zXoM+ISTgmAMS2dytCHI//85haQ6+aXF13bD08dOcZ/8vs+4sJ6ticJgEnnQtA//auvoK+/9Lf2iMStdpaAUlwXPLC57YRpyaRSKJNqBoWANnpidhpXalXjv0GfVa1WQ3GOtZqL2ADcSkIB/g6PB1hUZiGfN1htF+hns6IPBiJaydVS6QEo1dBC5IXEALwJ+Uwpw6hj9QJml3VH1ttq5IWzFCCelUIEIv0xxuBOb+QD34j8z6TTal//IB6dmmhLeXXlu8TT5y96dpmQUoiGzvHI1BhZWg1/1ItCSkghPJPHbouIECySCYDy7WOANx4XdyUAqS06RVna292DunI5dwUYUWqQ43Ridoatljonx2kzEhhhpJCrUXdeLQGAZlQIy3aO/n1YdmC8OnfsVGDOGpB/dmZ+nsC+GJcHJZBgjGczWfzuJ5+lAz19lsXT0BrqzsQonl1agDNHlWsVMbswFw00J8ujbd2AMcZTiaTrCkOAVT8yfJDt6x9szUSb1YC7DBiA4+JIAkrTdV+dPR1xGze2LQGCMR/sG2C93QXbNNxsWK3X5UtXXjXuZxgTcfLwUWolD70ZXjDoNxBim8ZgKTrmDWRGPmGpAxHpmVQ6MHbAQWBpZRlp+pZgI4fcDPX1i5//0Z/yXY8CbANi30tvviE+97Uv0kotPiMdTuW25vCm5j4h5LnNe1TordsyaC6dwWBv03Vd3Jkche+J1+p1A3EyCiU2AIdzlixBPm8MARYlIYS1G/Sz2Sm6DxGdMDDbDfBj74paKa5igIkxSlijfw3eELgZBnLYbxU/eO936tr0bhlGj/L9KF7D87Vp5EWIKLnVyKsIGH73Gh2lVF088ygulovo7sRo9ATRgmMweB87cJgcO3DY87EJKWW1VpcjU6NsLayQkxgZxt+gDIUwH9TIC9yHk4mk53PSQR3whtZgbj5wwyw7gNzMpjOqr9AT+JkcBjldvXMj1HnYvZJRaB0GvRpwxOhC3r8zx07iXCbrO+eNRoOPTk+6bpTzfSAedgjvvaceuYgunD6P1tPJIErJ/f9NCGKUSUqpZITCb5iQ5h94Ff3t6y+jL/7t11GnG9kTjIlkIunJWZRgCcvR2h4uGd9IQ1RItVbzUv/g21iC6gjORymU0LgW74NBTYKP/Z4+ejwU+iF4X75+/QraeAczSvkjp84yj+HsOUKIbc0ZHNQ718cpj0RXqWSKZ1LpoPYgtbK2imuNuquyymWy6r/+Rz/r6/lU1xpyam5W/vGX/oKNz0y5Op6YWFMCcGZyESNn+LUeQN4JlhDZVBrPryxSSBdQqpQj48gTG4D9Winm+1GwUVaqFcsPMohSYjRhuZ151qJTswkRnRRJxohXENFLayv3P/QQ5tndnK0ADcCwQYIZnhKKw5BXLTorONqcbhh5m2iXkHdWwv/cMPLC3xqeE8qmYwJAI585dhJBNN3S6rK8NTbSdhFKjFHx2MlzFMboV5FKqtViUYxMjbPQRTAA/DPnvj5adpN7X6EH5TJxFKdb61IhKcuVaiQiIt0YMyaEJ9bzAsNdpVNLpV4Td8fvxXfWsC4AjGHD3UTcCCubXvEFaA+nj51EhXyXV11sowvGo8mZGRy689c3CZjtCAuEFD1/4jT6ie/9KHgTGn+w8W+MEEFkryj7a3duoj/47P9rtrO2rQcRDMlEwpPxEUL54X372X4LeZs9YcRnolIpXqvXgjIa+DxaT7szoEIBKjcu7SuBXCbHDw/vD/x7kVLy0ekJNjp9H1GMUaqefuxx3xzBtkQGC845hZzBsTE4uLWfYAmey2R9X5tKKVGqlKkXDmrw5vzUJ3/JF6FCnt9ytUo/85XP49evX/Wlz07tBPYOLgWLUyf4twIAIQshTAAlYGxmQq4Wi5FR6MQGYP/WScuempDPFdTQtJZ1d6rQadDPZoWUYAwlE0lOCWEblyuzbfeqt7i63Pw5zMbfJn+BRAAD1CHGRDHKfL88uTG/MY29JWDkroF/mnl5pQIrL1JGXl7D8G8YeQHBS7k6/5RScWjfAXpgaNhgcLW0xq/fveVqH2GZ+/c89bwR0eJ3gTmdW1oU96YnaCjgTDCG1BrMWGIhKBtRnL3dcRSnS9Mhq/Ua6TRFH6AYDPT04aBzTLk0h5bIQLTD1PwsW14LP/S8pYG1UeU4Srk5maeOHEfg9ONHqdSqkH+wLe8zDuQHEVKGI4JESoAjGBfCOC8G+/rRp372v7JMenF1Wf32//4/h8KhzDLzLjWAN1qCJSm8kb0qcMZBzuZOcgAWQvK6VvdOqF5NVkjpAjpMbAQL6eQ4ZIsSIvYP7qP5bPAOteVqRbx89Y1tDonve/YFiK5zOFLrzTEGhDQDJtowBsN512k56q1Lzd0WlFDRlcv77aTKq/UaXi2uedIvoDH+2sf/qafQ1mDAFlLQP/v6V9BX/+5b7k5KTG03CXAhBOwXsYQCkEA6lUYz87OoWCkjTbdnx/OT7dgA7Ke0d+8LvDZwuVymQlr3dOx06GezU7gBEZ1KJiVGxm3OyY1OLa4uN9sHZGA1O+6g+Ishn03PUKgrbublNQy9iCMkDSOvsfSNfIYYglZ8UXYQQnh/oQedOnpys79SpcSv3blBgJuN3MChFqhJ5rLpjHz2wpP+W3/v8yeUUnRsZgqNzwYP2SME6IDDU5pRnBQPFPop7HVxcSYBwQWvNjozaqav0IvyWf+hZp3NmLPWcK7cuHcb6Txc37WzUdlrvZOp50cAACAASURBVO5FHK7zK8xpTeyJ2XYreDtAKgYwNnpZ4JsYm5607QTsJW++0cYYQp6gOyqRlIJLyYXOhJCQA2IbG3D2/stf/GfIqgEBctH9yu/9Vvjfbx4KHnQHyUSCMerd9R3u7AcGh9mhffs9HEmISGMsNU0joXCcDJFYHLGikGjoWnzJdiTEcDYGB5HTR4470cW5NrCXr76xLSVAKplULzz5bOD8gTFYgp5FIaFvGoNjQ49rk78LIUKI6s51+Tb/GCGpcV0uLC95diinkin5Mx/9GBny6D4LZ98rV9/in/vLL7BSteL1FMX070tAcsFJ7Czl05JovlVoOpniuUyOcaGrN25cxUO9AyidzojV4goFY3BYAxtiA7BP62SPblS9UVeVmn34wxj62fokQi7aRCJhGyIaLF5Lqys4EhESPiryDEUmxjiGfLa+JoNssWnkNVD01vPyKgQXCVjj8MqACF/PLqRmx57NZMWls48+oAio1Kriys1rNBLfotmBIoQODO0XZ4+eCFzpIaWCPM10ZGoczyzOWxiBe1UVUkYEsHsU3aMED8T+Qi8G77+4OJMA5E/pxAIR5WDA6OnqDtLhw1fR1zVN3Bq9E/j+5uug9+is6UwFYBooFPscxkbQlW+Kr7DMw258gKL64NAwHh4Y8ohVLEvlopxemA/F/Hs0yAfIGnk+lZIAMw7wzXDIc11nYOgF6EszBXL0/fiHPsIgH7CVAlGF/+IP/zXkeuQYKWw3HYmVPsNWF2MsUskkhfewl6WZr/kSYp3hKMcbmsbAwSAubkkAAv45M7snuNVrTMdbCcD+39NVUPv6BwK99wohxL2pcbqTo3Ohq1s8/eglbzdI62KGwxH0M0rnnMB5GcO+WheimRZwdhXy3WaqulJHSinnlhY8NeKlEknxI//g++jJw0dd4XmDCKSvnJmfU3/85Rfp6NR9GHVXO4mJ7SoBeLPpOoeInFhKHkoAEyIIQiSbyeJsOrOZux4ir7/9xsvIQAjMZNC+3kFJKWW1eo2vFNdYsVLykCvrpGMDsHWZudlClSpl7DRUPIZ+djYldiCihRRypbhGEEY8LAq73U8FfyCgY8hnZ+vQ69Y7Gnnv5+WVzVzZiiiFAn2M7SYHUMBePPMoTqdSD1Sp1+vijRtvUUOBbjOnsNeyt0qfUsrPHTvFhvoGrDb1rL6QQuhc4JHJMbIJf+9Zb/cJg5JACA7RcT70Zq+LjUdiVy5vj0DcCiTA640G69TIGYgoTycSqL+3j7U9XKZSYmZxni6sLMUrf6sEwFkPSsDOVu10lrq5wBilcl//IDnoUTTjyMRYu0fEG1DOMCdCScl1nXIpDA95J+f7k+cv8E985McsGc4bmib+8E/+iN4eGwGfVXBwDOW91831+zAtGHc6mSLE4zQjoDAb7h/ER/cf6gQZi3qjToWMo/PcXruAFhIbutyWanD0wHn2yPDBbW96vzkqVsr81WuXdzw/Dg8fEGeOnQybAXiriAxjMNwadcEx5xzH34i7K6inq+AuwV2owR1ocWXJ8zsgY4x/33vexx4/+4gr49J0HSCrjTy/r1674grNmIg9CXSq/sSetMy3aqY1RHgjJzjk/H24CCnllVvXCOTthrs1IQTv6x/E+UwOIqgEOLqWqxW+WlpjlVrVfOce1YwNwB4JtgVZDp6MpUrJUbLuGPrZ3ckjGCPGEiiVTABENBDf9bGqCy7WSsUwXwrvC8cnI3UM+ezuerRDbT0f74YyDSB8AbiZKmlE8sIBJlAEox1AQXXm2EnU2709D19Da8jX377S/FbDDsduclJhvM9deAqFMTcoXHJq9boamRqjq6WiyRHZrwaw41JwS8pd+73Zb0kIEalkCg309EXjXLA/VM9awiW5Uq10rPzg0UApwZAXOJlIeibnoAnDsXRrbAQ3tEbQrISuf0BRMVxdgnTEAiSXIPsP3azcZ4hSKvp7egES2s19iq+srdL55aV2irgGYy/cywjs6xARaeQx9CBaKZ/Nqv/hl/+5JdlBSOGffPVF9u3Lr4R4tXnLGrwJMqk0vA287Wid+pPnL6JkIuFLXwF2oiB/oxOHhgB5D3vXqqFp/izWsEuiDfhLJpLyxKEjgTqFwHf692+9jqr12jaJUkL46aMnmFcOX25PIUZYKtDvAE40F2AQJrEx2JmU4YzsyuU9z2EPc7ayuorqPryJMCbyu595jrz7yWccCUcpBQHL5M+/8VX05W9/0xGtuLFzCcAa4nFKJeeC3EKBYMwVQiybzohsOkshYHC3opTidydH2czC3GYVSojqynfJod6BzfeiVBJSueNiqajWykXixze/E8+xAdjVpWKKmKrVa3iny4ap1lsXJsGS0USglyerPEelPhgzkyzBGaUMYWx4bmzlXeO6KlZKIvTRv8C0hwZgiBRBGBNGmG9KhKisIa/43DDyAsqHQoCgpyRCispNIy/8NwQRPbhmveLHa7qgcD207wA9MDS8Y1fwLb529XJbKQWSiYR61+PPhHpMUkq1VimJkclx77zZMKT9EzQqyjSAVGSU4v6ePgLIHHGxLAFVrVVxHD2DEBiZcpn2zAusc11eH7kd3133+DyCSmlgGKBj4++eGxcgdHTnu/DpI8ddMQKDwO+Oj0Y3uq25ZhS8kyA9DkBq6pwziOzdKW+v5VOhRYNUMqV+9ac/iQ8M7rNE+m9ee0l89qsv3p/DNnEgtCIEgKpbd3i20sxyXXBuGuwbUCcOHnHlm7HMgI8NwhDd4eNwfewKcwMenoffIdRHoUSyK1CsD/T1s74dnLr9GhCcU3cnR+nk3MyOXTLGxMUz5+lOjud+8Wi3n/UUHkbUGucccoPGqAQ2hAnG0nwmS0An7FlRSq6VS8TPc+Px84+JH/yuD9geFKTQeOPGNf4nX/0CWyuHC9rWs3kKP2Glcz3UesPwi7DJISFYUsJULpOh2bR5PcxycYVfu3PzASsxIQRsSWS4f4g8lCrOcNjhnCtAlC1VSp5H/2+Vf2wA9nc1qlKlhGHjdKPE0M9uSLE1jXWIaEEJoRjyoyLEwGMDwvwjUTwyAIOiEGOiGGW2LxGRkF9ATG5ANoMpFyIoEFJEyiZMXTNfIDh6Bp+X10vxwMHZX+hBp46e3NXtiguhXnnrdePSYzgkIGzkLvaSL69pD/T2iwunzkXiu4J1Or+yKO5NTVC3zrZN+WKkBOeRm0uIqOkr9CLIDxIXaxLQOTcgFK21ar/aAI/Xlc3hQpd/+ad8kqKcX1oks0vB5BP3aYzR7QZgqNv8XuHG5MDdJJfNoXPHTzEnB5RSiC+uLLHltVU32PKFBqByIKQYRriZt3eLsTcIZy2ANPzwd32Qffc73mVp/COTY/z3/+jf379bYgyXDbg/doxzip9ORmBovnT2UfRwGhdLkxb+yqpSqzrZEsI/wkA5xFLnehzZGOgcuNP5qSPHA80Lvloq8tevX9lVtwBIXO98/GkEyE5tUCAwAG86Z0lAjo5LKwmAU3cunaVsj8i/VjT2/l3xSrVGIBLQGR1rrY8dPMQ//uEftoys1tAaYnZxAX36yy/SuxNj1jqNa3srAYWELvSO153YFTI4JUmlWCaV5rlMltlBYdMFVy+9+equ97+B3n60s9OT4kohpukaX15bZWAMBq9aL0tsAPZSuvdpc11wVK6UHUE+b5LDmIMxkhr2yLj4JQGAiAajO0BYJRIJdPrIcfTWnRtotbjmFwv2+vFIoRdDPtubjq2ttublVU0jL0TuGgZMIy8ZAijG9jby7iXFbCYrLp19dM8LjVRS/f2br23uhUFFTjlfDU0KhFJ++vAxdmBw54hnt/pxk876OiXjs1NofHbaUT6/reecFIIZAe4RLGDAy+dyqJDrjs9pC/MHe2JknKssjMtOVYCgAxj4/p4+gNiwQyJ0bQD+aGRijLiBghO6wUWcoaifnX6LHxMsMqkMGIEpsxkhAkgat8fuhfnjNvL2wp1UGv5YnAjBsRASyRCdzccPHhG/+tOftKT8KlZK6p//r//qAdl30jcAdxSAgPbzuxno6eOnjhy3rHj2k0cnfcE7DvIhOqERt20pAaXpegyz3VJM4a2QTWf5kf0HAtsHABr5pSuv7Qm5Cwbg737GmlNReCX+AGdG3mAppdC4biB1xGVnCUCqxUwqwzxJXaCU0HRdLa4u+/4d9Pf0yl/88Y+bNjprXOe1Rp1+9itfwC+/dTleLiGUAEAQ8wikSwub6CB9G8aY5NJZDEEbsO/bLXCuvHLtMtJ0bUcShGCRTKTU/oEhthtKIMwjQohV61W+UlxjXunDYgOw3Vk22Q4w2Wv1OqrtkF/CJIlt1SA0PYZ+tis9++3A458QTHu6CmCnQ+9//t3o6PAhPLe0wF+++ga7evs6CiV0pYsGYLgMYYwIJYy0i0La/oow13KrkRdBBLmSkIyXrOflNYy8BnRexKNWzUnDfC1Kqbp45lHcKloADty/v/LaJmEjOjrC8NeMUvXE+Ys4H0H4V6nAi03Se1MTeHpLHgzzs/5gTSHgHhTdAmcGOAsNFPqYk0tldCVgi3Neb9SZHueyMYQHHuiUUjzY2x6w4kIKde3OTV+NDrZWYYgaAdoK5PLwPDLRxbtiiMTnKStgMEwmk+rcsVMEnDWsFDAWzS8t0tVS0UozL+uCJhi+TSKRlIJLyUVTQRzKt80WScD5+m9+41/AfmlaPnA3/6V/9alt9TvFCByEARgcqR87dR4B9HQ7FiGlcX9px7GFaUyAnKDpWiznME2KSV4oIWJ4YIh25fImW7hbTUghb42NkK25GnfqIZNOy3c+/g771gB32faKmlBKgf6Jx8bg7SLGCIt0KkW9iAKHaOy5pYVAnIUy6bT6jU/8XMvLkmoW/Bd//Zfoi9/6hldrMKbrggTgPQFQ7y6QansSG6mOUskkz2VyLO0SyoOUkt8cvcMWV5f3lCG8U4b6BlEh37VnPUD/BFSitUpJrpXWKNgT3SqxAdgtST5EB/IvQPh2qVLGukuQzxtdABQFwe1+J/FoYmyQbRo9MS3ku3F33riwqsWVZZzP5tTPfPTHjQNU5zonmLAbo3f4a9feZPemxm305FETl5R6EJFKCJGU0PjR9dBUbeTlbcLfKbhQg4/AhpEX/tKAcI5z65lb46DMO3PsJDKTewdk/dKbrz5I2CPYc3PcO6sFBuB3P/lcy4u5s168bQ2XIF0IMjI5RhZWlix3BgpYqYSUQkb+MgtjgfXcX+jFXjwiLQs3Ag2EkqJarUZ+7t0UNTwYIC9w1GHFl4urYnJ2Op5bq4sD7nGQZjXCzk1Whxyl+olEQp09dtLwIDdbdKHLkfHxQB5z6woQuJs28/aCvVfXGZcCRTEiKJ1Ki3/80R+n546fMit+1NA19Xv/4X/D88uL29u49G4yzUwAFcEQk06lfd+Le7sL/OyxU235jtQ5l5quBfJNB7CEguxScCFoFPeqIIUWhr7Bufv0keNBvXHVUnFFvHnjWsv9Z6Cnl18691jLemGQqTs8KKHgPiAV17nOeBwZbIg1nUrLdDLl6p4Od675pUWA5HZn6ixSgffkb/7cL+/ZCqKTr9y6IT771c+zlbAjXVocf9tVx0gKIeLUCC0mFmCeEcY0l86gTDqDmQfmjOmFWXl3YrTlfgH2lGwmq4b7BqmZABFAT5NS4tXiGi5WyrtGGZtd27EB2KykLNRTCAkudFUql5mr+ZCa0M+EEtpyYVlgN666iwQ2vMALXd2qkO8CSF6jJhh710olxijjj50+T97z1LMPzIema1LjOn716pv46p3raGl1JVgZQ15UF5SGsFGa2aSCHax3vW8YecGyq5pGXjDzwmUZ1gb8rYFVG+XoU++kZ54ypVQc2neAHhgyD4EMBmBX91rz7Lpes9DVzZ88d6EtHp1CSllvNNTI5BhdKVmDym8+jLzNgeH65LUgCA4N+WzO724j1x+4z1RrNQTR/XG5LwG4g4DHaHcLr9Gwygy8Ou5Nj1OvII3COm7X+PLICNyMMDaOUN+NQa7JJgSEQLF95ugJbCayCbz1ZxbmaalS9oVzyNuLMaJwpEIElM65YTwRUrTN3el9z7wgP/r+D5l+Hzd0Tfw/f/ZpevXOze1z0AkGYMp4Opn0/a4J38m546dxV/vdhYSmazRGL/FlSzM60XS9bfYv/6QWbE+93QWxr38wkLsGIND83ZuvYlg3rcrxQ0fQiUNHW1Vr098hJRmmUkmu65wBGld7vcbNT1sqkeSZdMbVc3JpdRk1tJ1hYs1zZr8mBJL98k9+Ykd9RF1riIXlJfTpL71Ib4/fs99J3NJPCXAhhTtpRv3k2qe+AO2GEQoGV2rFSdcOe7V6Xbz69mVT59t6YB3e1z+I8xlzukF4wgHSos6FWC2uUDAG23EkiQ3Adma3RZtqrYpqDffCtDe6IwQrRhNBec15IKnwkgRFazad4T3d3WDo3cooL1UqrKE1jL+DPLgfed/3oIND+7cNpgnHIOjS2op45a3X6Vu3b4Dx2P9BO4mGxJiTDoJ8NuJ24R8jgtcw8RqRu1IqgLyG+y9ANsNPrl4G/V8U4ewRIHP7Cz3o1NGTpuULc/XK1TcePABdcnrwW0qQU/D4gSP06P5DfnftaX9CSVUql8TI1ISpfBagrJZtmMsEPP4y6Yzs6+4xvb49nZiwEscIomhQoxFH0jw8RZCvJpNKKcgLHNbp240vOFDfun09vsM6mDjDMbF5T4nl6ECOXjWFt8OpI8dRb3dhzy40TRP3piZMKQls8Aq5E4gyUGeMdwjiYPCVoq2dagZ6++Rv/dyvmTYAQw7EP/vGl+k3Xv72jiJudyjoBGM8mfDfAAzC7s538UdOnIncGdbiW+R1rRHn1LSxYTloIhqa5tU+6oCtuOlOEgBF/OHhAziTSvsuIAifun7vNplbWmjZN6WUnzt+ig0PDLWs2+4VMKQuQ4htGoPbyGnMzNwxSkU+m3dljwHl4VqxiKsupoU0M4aH66SSKfnxD/8Q2T94f31DcBPspZ/96hfw3735uh2ycZuAJIARErrgAOUeEAfh6xaifZVCLJNO82wmy5Is4QuTMAffvvyyJcc0SojqynfJod4BS/sMQPdjjFmtXjPyBRcrJdNjjA3ApkXVoiJGEnDyS+Uy9sLIBw9RyAMXQz+7NWE70wEFfSKRlL3d3SyV2Dmf1/LqKpLNYE+j9HR3y5/+gY/tqXSAg5VSym6NjojX3n6T3vHTq8qmJ3s7Qz5vzcsLuYQQkoaRF+bTgMZDWMZGXm+/tZ2oZzNZcenso5YOQIgSfP3tK9ucKwCGX0VMSc4YFRdOnW/mGW/DAnO1uLbM701NsF29XzEkHxSguG5DCSCECeGMUjzQ00e9gJ9pI6EpSKHRRuNxbSiQloIxBnmBI7WGipUSH52aaDelv2vzaoWQa8Ypm/dDK7x2Wl0wAkP00EBP345DB0eIqblZXKlVnYsGYwjhBTpUIcjZKyXnELHTjO7tpMIoRf/9L/x6y7xaW2Xy6tuX+X/888/uuie59p2FcCKSiYRKsGCcypvR8idxqxxoIRTbriwphGS9UY9hGH2dNAyRT5RzHt8VfZW7vc4SiYQ8eeioaScde73s0EopMb+yrK7euW7q/skYlU+cu0Ciirbjmty2EwLnMkC33MwZ3K5v9Y2hE0Jldy7veM2CM165WvEN9WWvNZBMJvkPfeB72JmjJ6Cakef3xW9+DX3+m1/3cOnEpD2UgOSCt63ezIrcCMESbGW5TI5AtO8GeqsVGk7qAvLh1TvXSbFs3hgL/UEAFKOUDPcPkbQNB6n1fMGAsMZXS2us1fsyNgA7meX1tgbkM9dBWeku5PM6fVD2EUIwJdSSYcSFoXUMCYiqoZSh3q5umknv7pkIebJW1lYfmAfwon7ykYvs2QtPmpKXxnXBOSdv3HgLXbn59s75p0xRMlnJpoIv6pDPW428CDwYlYTQGTggAbIZLPjwBzym4oejyaXkZTVQCF088yhOp1KWupFKqsvXr+KNqPzNxhGNAv6up9/p+4XFksAdV4ZvT5GJuWk1NjOFd4D5lUJwx48tx2x6TAA84fsKvYF4wns8NFfIw72q3qiDYs8Veu1IBNZQf0801pBUUkzMTNO1crEdpyKyY2pnA1eQkwL3mUP79gO01zY2wFt7fGbalCJ6hzEYClhQ2nE4KbnOhJBtBeVsd95Aqfmj/+AH2TOPPW6axOT8rPjd/+vf7vq2Xo+4hzQ6dufLNC9+VgRH1wRLkIRPURE7jS2XzYkLp861lV4DIrva3SDi5zo12xfAbscpQ8xKK5h6EJE10NvP+go9vjPABVffvvyK6ZyrYDR4z9PPodhJd/ep2hIZDDpNCkgj7bj3wTurO9flVE/I640GWl5bCcU9gjHGv+dd72UXTp9V1+7eFp/5yudZ4OkKfd8V2qtD0JUY6FCdWJqOsDSdTPFcJstSSWt6ZDdFBo4eo9PjdHJuxjbZgd5+1Ndt/5yEfMEQAFUsFdVauUjq66i1WxmKDcC2p+d+Q7Cy1z2AfN7oAROsEjH0swsztZ0ERGNRgmkhX8D5bLZVH7Jaq5GdoDsgN+7HPvhhNNQ/0IrG5u9KKUjajlfKRfnyldcp5AuGC4LrxYoBuAn5jClh1G+vGTvj3sjLu37pbBp5AfqumZd33cgLMHio7Q1KduQXljbw/Zw5dhJBjlSrRUol37p1bcfvEjmBP7fKiAv1s5mcePaxx9tKIbabWMCDGHJo35uawFPzs81qGINOm6ktCAsuiDW0JGCPBQ/z7lxXaHkMkjFwuKrWqh3xPdiVM8YIAWKAmbyjdvtwox2c0Vfv3GhLBZEb8rFLw5EB18rd0C6DHdwOjMD7B4bwgaHhTSkAetDEzLSpu76Rtxc18zILJaXgnHDBDSU2vO7jsl0CF888Iv7pD/2k6TOjVq+r3/j939lbuRtRZ8K91gc4licTiYdTHPm6pCil8tTh46QVXLqvTDnoDJSv1VrNAYW4qQMJqIamOTXSOOg+bmpGAqeOHPPdqAp5f9++ewsvrCyZYdGok2BMvefp5+P1ZFJiGEOQhQETbRiD2+mOAoug4BCVTec65NU1fS8xKXZb1eDNgBHCT55/DN0Yuydv3rsT60dtSTJcjbxAnw3XCLdzgzERGCOSS2cxRPtCWs4wlLXSGr9y2xzaxE78EoJFMpGC9yNz6KQpFVKYc65WimukVCkhcJaDEhuAba8ULKQSpFwByGfvIlQM6GdCMRhI4uKeBDB4iyBEe7q6DQW8maKQkmulEtktImmgt1/8xPd+1Nbuw7ng8BK/O3GPv3z1Mrs1etcMS+bqmFTywVoDCOywRZo/ZOQVRmZepOi6kRe0YJCnF6J7bcnenBDjWl5JgFIqDu07QLcqSa30BXAbb9+5QcrVipVmoax7ePiAoRALJXMeMSWl4lzqdGRywkBDEMK789SjITgiCxe9VDKl+gt9LApON44Ga6NxpVp9IOWCDRJt3wTO7Szkli6EN7d0pVbldydGQ+H93m4LAqL5mjBu1u5AUUyTELW5g/vNYG8fPrL/kHGuAzzX1NzsTt8BB2QMSBIAUF6gQOVcp7zN8/a6PZ/ZdEb97q98yrTiHqIGf+Nf/w5q6JrbrISaHhiAU4kkC1phlklnxKUzj7TF2w3yO1ZrNdNrL9QLJGLMQQ5EIZXSuR7fMUI6d9l0hh/Zf9Dn+VF8ZnERXR+5aanfXC4vnrvwRFvsS34vBzAGS6UYUkjom8bg+2nz/ObHjf4K+W7byGxSSjW/vLgT2pkbrJmmIcGzHlJVVquKCx1ruo43gmcQ6FSVMUTDkG+aaFwxHBLASOm63hF3D8OBAWPEKJW5TI4GkU++1aSD09F3Lr/ieD5gnEN9g5bS2uzOmzK+bU3X+HJxleEfPvtrKg77bzWVD/4O0ITgaVGulD1NuI0xEoRQMADHm7G1KWpZu7urSxbyXcRiTmW1uLK86wedTCT4MxeeYE+ev9iy/70qaLoupJLk8s1r6sqNq2Rmcd4RPVhHZhSDQUI+b8DGrBt7IZ+2ARMLeXlhs0cI/hvuKir+FhythnA1hpwH/YUedOroSdvzKqUU10du0R3zLUQocgMgec4fO8UA+qMTC3z7c8vwUL/VccMHhyRKKe4v9JFkItFx4999wFhoeoPumi86ltSmBDDBHPI5Dvb00aCV+g9Pi1KST87NspXiajxjXkkAHP2gmL0jRehs9EpkftGllIjerh514vBRdm9yHGlcl+tYbRSMRkIKqeucQs5eMPzGxb4E0qmU+uWf/Cf40L4Dpog0NE3+m//v/yCTc9Mt67eTwwQgJKWSKUIDdi6nlIkTB4/Q/p7elvIPewWIfqvV67HRKLCJwlLnepyDOTD5794xJUTsGxii3bm8r9xpumZAP1uFJt43MMgfO3XOtl7C10GGuzO40EDqNaVzTuCOEzWodtBBdmXztgKxABViaWUZaboeyCwBHC3Iv1ytilKlxGqNOuQaRelUCnSq24IN4DvBCAuJJEYKgf4Vgm7iMy2Q2bPUqXH2WWoRscqQQkAhxLKpjMhmsjTBwrs9Q2rC196+gt1ABzYc/DNZNdw3SN0KBgUERvxfvuv39Kt3boRXiiFcoF5DPm8MOYZ+dnfywZMik87w3q5uxmxsHJqu82K51PJb+Yff/8PIpRwn4M2KSuWyevnqGwTgE1sl9d5JYnsZgMELHPsI+byZlxdieJGEiwkGIy/wbfCJMOjDWsrY3ZURUwtKAtlMVlw6+6ijyyUYgG/eu0NXS2s7DiMqSjuCMXr+0jtQRxoAMZYEYwL78t+89nei1qgbj4+g1mWQ/fYVelEu0zIdQZAs+t23KlXKjj0p/WY6qP4AdhbyAqcDzIHz8NgBpuP63ZsIcoTFxUMJGEZgBXtn6zM1NgC7PhEQia2QkXpkvSi4XoPy09i/Dg8fQCvFtc2oGFCGWlVMJorxowAAIABJREFUu850mxGEiOsfeO9/Qd//7LtNjQzedf/pC59jr19/q2X9zfltgzcKKLXTqRS26ATdUkZ2KoAy+vGzj0X+vieE5HWtHr9f7SwC99qoLZFt7lGNKTmSACVEnT56wtd7PCjh37p1HS+trVjiHWBFTx4+So8eOGSpXVy5pQQMYyS4KeqCAyxp4FGxLTk2dJMYIg0Jsw4vq1bWVjEYXf0s60ZfWq3VebFSZA+nLUwlk4JS1vqNsA4rhOBFoSDriILUgAIgZTtVP+PnPFrqC6LthW5qTi3RDUFlQrAEw2cunSMA8xwFpDxANrw9fpcBqqEbBfYgQgje1z+I85mcGyQR/s0P/aH69huvxBB7LcQJye6FkqRULkMOJleEvxeRGPrZPRGD90QikVC9XQWaSibtEualSpmZiUTaP7hP/MgHf8DVjZgLwSkhbGxmkr/81hvMSpTcbgbgdchniDB39eG9aeSFO4PhfQb/NjwAN/PyxpG8dpdh+7QDQ8XFM4/idCrlaFDGQTt2ly3v9siLiKI7nUyq5y+9w9cHsiPBu9gYIhbhgocJkVNz0+rq7RsUYSSw4TmMOkomhBCVy2ZVT77g6r7s4nT5TcqIqvHj3uX3wLzsD5zQ8ll3HgpO+aw1GuL22F1X70ROeWrn9q2cngxDVoc62Oz97trbgAtt1xFpEMDSgH4MkGmMv29Guey+ZwNMt0IknUpLTdMI5AKOizcSOLL/kPj1f/TzpvYbeJ188W++jr/87W+YYsYsopIpYgFXCosyDYz2x/YfpoN90UW/gX0BctB2Yh6+gJfxtu6VQlzTtdgQH6KJ6enqFsMDQ6b2ZDfYhginqflZcmvsruV3FKOUP3LqLBvsUDQuN+TfigZG2MhNCZZFwQUYhEMbuQ/oStlUxlIuTtB9lipl6ldqMljvCCFWbzT4WrnI9goWgmjC5pXVXtmAjTb0uBhJDMZhFMNG25OmO61g/iGTpDvUgqcCwWmwvjKplACY52TCtu0msMHMLS/wW6N3XZ0TcKTqynfJod4Bx2cp/tSH/kC/PTrimpU6MEl72rGSGueyZCL60w02YuhnN6SIwKBgwGr2dhVIJp12TBSg0s146ycTSfGux99BL5w577jPnQg0dF0QjMhbt67L12+8RafmZvbsZydln1MHg61GXoQgZwTcARBZz8sLlwHZUiHmiXRiolGQABj7zhw7iXq7exyzCwbguxP32OLK0u60TObBdsyMAwJDfYP80ZNnXL0sOGDHt6Ybxl+0HgUMHf/1K99Bm9ApgFKAEKRbsP1g8W0wLnUE0OgJlkD9Pb2MEsf3PJe4Co6MkIJXa7WO+zacSBwc33KZrOrtLgS6gOBhOrM4xxZXlp0MJ27rpgQw4qgN83w9GIHbPC+2RuAa/91MKWLdgOtA/hsGeVBqUEoZpFvRdR1BBHBc3JcARAj8/q//NjILhX/1zg3+h5/9o447X8KENJJMJtWT5y5E+Y7HG5rGYkc1979nqxQhH7AuBI3h9K1Kzpv6cBc9vO+AK3o4sxzWGw35nTdfsWz8BfqMUvX0Y4/jMO2PZscdxXrr9yPDKMk5l1xAOozwOMjBvS2TSjMLRiherdfwanHN07cXOLpAKlQw+hYrJQbG5lY6argTpZIpuHi6xluzTzBA4yZNpURsEPb3S5RKSiGErf3OX0737g3sNhgjkkvnMDgougV5HMQY65omX7n6uutzAvpBRikZ7h8Ch2LbQ8O/9b3/XhXLZX755tWOe/yYlVqlWkF1rWG2uuN6MfSzMxFiQjjFmBa6urFbETBcCGHlMIdN6+Mf/hjq8jjfCeQ3qdVq6uVrl8lbt6+jUqW8TXgAHbAZmYAxJyYhn9fz8a5fKBTkEYZ/6LqRF058iO7FZvILO5vRuHU7SQC8/Q/tO0APDA27Miy4BI9MjrL5pQVX6AVBhFLKTx85zvYP7Aui+0D6NJxQKCAKNXV+4GWLEWbgPLIZBbyVsw40BEOUfF8hXHC+gSwWhJCZx21QvIW1X7gLJRPNvMBBPaQg0vHW6AjSdC2sYuoovmDfDaszTVgNuG4uEEKwSiZScO4pXddxbDByU7pNWulUWnziB3+UPnLyjCni88uL8nf+8PctKWpaRdmb6jjASoA0kkmlQ2NwhTvw4eGDbLh/MECpOOpa1BsNI493XMIhAci72cogEg5O25uLBEvIk4ePWtpfnUgEcsxevnkN7ZYWygzt9z37QiSgRs2MJYJ1wPqLhRCQLoMFvqdiLNPJFDGTVgcjJDWuy4XlJU9sKqDvQkgxnetirVyiYJ+wYixPp1KCEOtY1lbW0PqeC/phA8ENEFRjg7AVCVqrC7Dc4DQRtdzaG6OEdx+gIyUTSZ7LZJkTo6Y1yXlf+zuXX7b0fVrlaKC3H/XZDKQyDMDgC/3Sm6+jGLrmAdFzoQQplyu+QD7f/xCwBEjeoJR1VhdfmOrDJgheTT1d3ag73+UaawohUa1Vaa1uLY/DkeGD/CPv/5Anl4CHBwe5hxBGbHp+xoCIhnzBW9aUofBrRv0SRAjdfPRvGHmb4RAKDMUAy7LFyAv/bQDdueYt5trExIQiJwHwXOov9KBTR0+6910oJe5NTdDZxbnd5RHyCGDwOH7qkUuGx1u7F4yaecdJ0/rbHG7TuMu25vb45ivfQTvmzlmfyzAbMtyew57uAurK5t0mGxl68ICsaxqLjYjWp2zj3O/v6cMOUmBY73i9haZr8sa9O74p/2wz2qYNt+2THqZE6AQDrpVlstMZBdEkDIKADR0cFkIKpcdwpVbEaqrue596TvywyVQ8OufqV//H37JmDIXvKMJvo7AZgEGUCcaMe7CpCQ5fJVWr18DbOnycdS5HoqFpse4iwPknGPP+3j7WX+j1hQupJB+fmWQjk+O2+0slk+qFJ5+N6j5ke9whbWjkDZZSCo3rLKiofoiazaTSLfcSKaWcW1qAdCAuilMJqRAVgq8bfavIruNgNpN1kS9zpEAW8IaXSBEw9LVTGg1zEvC8FsSosaillYGzAWFMs+mMyqYzBJCR2qnAnnXt7k3qxBGplTwIwSKZSKn9A0OWIOoNtSsYgKVSfGRilE0v7KFAb8VFG/0OhjBN12W5UvZ1NUKkJsZEMtpmX4FPa6Mrlxc9Xd1eRLqo1eIa5sKaZ28ymZDvfeqd5PyJ0z5JoNmNxnXInUmvj9zmr739JhufmTL+HqBEwWtdNvPyEimb+cqMwxjymEE+h7jEEvBQAtlMVlw6+2jLS7RFFuTY9CSZnm8Jhb5+D7VI3YfqoPh64Yn2f3ACNBsmBCJ/H9hrQFG+GQrcTKwop+dm1Fu3r+++VtYNGZ2QzxIg1CB3ZH+ht2P3aDigypVKrJRxsB/19/Qin2HtxNzSAp2LMDqDA3GHp2kznzpAuOx59sYGXBenbA9DO+znyUSy6RSBEVcSYU1vQJoDFxnobFJ9hR7527/w66YcT8D5/bf+3f+0I4LSnlJcj1yIoqQBas+MQtvPsRFK+KGhA+zAYDSRcPbKu+inHOO+NiSAuZCCcg7+pXEJQgLg1Hvi0FFw7vCl+2q9Jl668pojHUOhq1s8/eglRzR8GWzndSKUUnBP4n4bg5OJBM+ms3suYri/QSoynUM6XsfFyJHMhVClcomUq1XHQXqMUpRMpoxcwY65c0Bg/Z4LUd4QnASBAALGCsZhB2Q7tmkz5QGPzPsBnA8ZoTKbyYLxt53nTY5NT5Dx2aYNxssC5+xQ3yAqWAh+NAzAwFS1VhOvvv1mfOCtQw02fIR83ryqYqwYYxAc5eU6aSvasJGkUynZ01WgXl0wQfG8tLJia1KSiaT6+A9+DGcc4LQ7mTAwWr969TL66t/9tZGXNzbyOpFm3NaJBADO9uKZR3E6lXJCZse2k7PTaKLVIeth5JPTAfV2F/jjZx8L9FLudAyt2oODEyEYb0Ug2Hr2bTUAw9/DxeRvXv0OaoW8sOlNGvIo71byafU7wPkySnB/od+zs64VD8H+rmS1XidBeYAHO3Z3eof7Ulcuhwr5blv3GatcwOv+zvg9vGMkv1VicX17Ethi/C10daNiueR7Dlx7jEe4FZxFxiG2s1MlnIUJlngY6UlpuoajCuMWttmC9+B/98lfQb0m4NEgX+QffOY/kruTY2Ebhmf8UEpEOtk6oskzBnYhDO+Ep85fxBFEQVOVWtWXc9XvOYl6f2CQiffVYGYxk0qLowcO+aJbBsPSa9evwB3H0WAPDx8QZ46d9IVnR4x2dGMjzyygFXKd68xqgI5V0TFKRT6b33VNAJLqyuqqo3SR4AgvJcAwClwslzAYfd1EvUqn0pwQEjo9033HRyPVIEUYSWxkF1TxN2hmoWIkOecuR52b6dh8HYj2lUqxbDrNs+kcSyYS5htHuGap4l+KXXAszmayarhv0FQg5KYBGC5Hr719ZWfIxQgL3wLrXEiJS5USDULBCAqBGPrZ/GzBQmcsIfu6u1kq6b5BaSsnmq7xYtleNDghWB4/eEx+33veH9ihu7CypP7dp/9vAwI6rLnfzM98XDOKEgBlzpljJ00p4+yMb2ZxTo5Ojrf2HgyhkRAgPE4cPEoPDx+0M/TItAHIy12VekZucvzQHonl1Py0euvWHlHAW0a/ub+FcI7dnCTw9Osr9KI295zcUWRcClGr1eJHoYMFBY4E6UQSDfT2PQC57oDkrk254Ortu7dipbgXwn2IZjN6F9zoMSgCwI9UoC3ILowxBDCMcTS2t5NhnENIQU6rPfcpQolIsuS2OhCNGsQb1Fup+E8d8on9yAe/nz138amWnetc8M985c/ZS1dea1l3xwoRjARmjPFUIhnYu3Q3QUOamAODw+zQvv325iKgVqC3r9Vrrd8gAfHX4d2qhqbF9xCfFwF8y8P9g8zNlGy7DUFKyUenJ9jo9ISjUVJC+OmjJ9jBiO0/jgYd+caAaogpwH/rOjdgosEg62YhhMruXH7n/V0puVYuEbsIEHB2IKVwqVpV5UqJ1D0IQAO9QSZC0ZZNo7DiMK9GOIACpMpgI5fdXE9u0wprClewgWBMcC6TNVLcEdxZVyQwuvztG3/v292jGWhD8L7+QZzP5PZcZpsGYKWUGJ2eoBOz026vyyjQkw1NU+VqOTDFIlyUIC9UFIQVJI8AW0UpwT1dBeKHAhzy/5bKZerECyuZSMgPPPcecurI8UBEBwfp7/6Hf4saus4ReFQZ6RjiEkvAHwlQSsWhfQfogaFhzzqcX14Ud8fvBbZ/OxkYY1RePP0osQLd4aS/INqC8WFrft+tPAB8DeQB2el32Lu+9dpLqFqvWWe7jQ3BRiRnNo/9UKxYF7y3LcrVCuBGedtJm1MHyC1IwT3Q00e89MRdWluWU3OznfXi83jtNA2MBqQzQH6BodeAUtvL4LgOw6hKlTKeX170mMPOJg9pVpopz/YuMI8Jltge6YiRBAWmruvxd9NKiC1+f+zkWf7Jj/20qXf1X738bfmnX/+iPZm3iPh2OAxPmicSCZFkiVDemWG/euqRiyhKOeGElLzeqJtaa55MaEx0VwnAG0NIpSBSMBaTfxKA7/jssZO+dFiuVsTLV99wvJ8xxsTFM+epGeQIXwYWd2JJApBrFgyFm8ZgKVx5L8KbuzvXtcO9TvFKtUbWykVLdwewuUBu43K1KkqVEvMaJQl0MOAUFzT8s6XJ3FJ5/c0P/De/cWVEgMf7+bqMQmUAxhg+OppOJnkuk/M8SM/umvKjnZBSXb55FVdrVT+62+yDgo4w3yWHegd2PRM3DcDQqq5p8uW3Xre0ifk6Ig86g02lUqughqZ5QN08yQRL7KogN0+lfWtC1ArBmPZ0deN8dm+vBrelsLSy4tibLJNOq0985MdwEA/ahq6LP/3aF+jN0TuGaDYUiDEctNsrJab3sATAsaW/0INOHT3p6UVteXWZ3xy927qPEBoF4ZH8XU+/s/0WD4ZoNIQohUDDvfThBjT0bvcONT0/I67cut56bneQ4Ho0FrgD22of5kmByPFkIqX6e/oY2VO+YR6FZd54Q2swTdctN4wbbJcAfJeQF9gLZzqppLw3OW7bKz6eL+OyxjFSREFuLMiQhYyHtaW9jFDKB3v62PDAkJien6ULK0uxaEMiAUopT7DETvMJcGlI0xqW5jokwwoNG5lUSv3er/5mS2M8MHxn/B7/X/7T/2lb3kYEfkRy2DWdDxgGvUMYCyZEDPcP4qP7D0VGH8UFFw1Nc2yACuN8tAdPWHKuEyHBXyoufkigkO/m+weHbO+pVnh8+eobCJxDnRZAqXrn408jr5EFnfIZtzclAcPguTVnsBPn4Z6uwoOdKiU0XVeLq8um1vi60ZdWa3VerBSZLcd2U8PeXimTTguMSducTxsGYQMmWhnmE67aUM9jcrrBucnUPdckPVvVMCYCYwTBeTiXziJA/ev0IqXidyfvsdnFed9F0QwspWS4f4ikd0hD+oABWBqW6mvYjUPU95Fa77AJ+VwuUSHBESeYAvkLKWGm8LqD4TDYXmFDgahVyF0WRIQcF5yvFoumDve9JEUoFeeOnlIfeP7djmnZmZHX3n5TfP6bf7m5G4OyArSLMSS0HWn+/+y9B5gk2VUmel36qsxy7aqru9qb6enusRo5pIcQWiQQknZhHvDw+1jHwyywLF7ALotHPGEWCeG916LFrDCLHiONa++9t2UzK33ENe87kVU91d1VleHjRlbEN64nrzn33HPdMf9J6tjlQD6XFwd37wv8FlCuVvjZyxdsrS27ETp2x+i1XF++Tzy/72DgPPJKp7P6mMONnNn0eFkp35unKOB5onvV6cVKHWHlBR7C6VTa2RTFtLRCUtbqjdgohnVncycvcB/2+34llVKnLp6N/FGqO/8t+hYZeq3zyYrwxZ0IX49fLpsTu8a3wfkibk/cpVOzMx5bTKr7yQFQNC/pINWBFUZto611bi8/eeF3W9lMRv4/X/mNZHzDWNemZ6sV9UO/+FOe11vXjjQogDHmaZZiEBWk8/fM3v0QtaQziZ3tGyHRNg0KuWaTT18OAEwGAKF5MQLpOzq9KIM0bWPrNgSO1CeEEFdu36A37932hQHwFv38N73Nl7aSRvThwKLIYME5p5Az2Ok+UOorPnRXA9m7Pz25ou4GjM9ghG6127xSn2P1RriRgJ3nRbzgn91ITQd2BwuJJLjKEkC5gghrP95QbugJuY40eXSIQaBDYJTKQq5Ac0sYGkPmhXbdTZdn+Jkr9vTTQRE/MjiMhooDDzX/kAEYISxvTdzBV25e7/VHkGoZLVVvRK9ETKCfVxb3/kKfKPUXKSWR6Ht5vdHwDZojlUqp9779XXjL6Kag1viy7c7VqvIjv/Oxx5lo5YmzAAR7zAAVOouTDh/hAKVUHdi1D2czwebohm6r9So/dfGcLW2WbpEa4xs2qm1jW3rmzIVLOCZEUUpszgcWGEOel2U/dXfinjh+4Yyt9lZaiAt5MntxvxsqDaBCl5wfPbJJyUarSZI8mf7NJqTWyKYzCvIC+9VqpTbHr9+55Vt7ftEVaTsWVKwi8wqKeUOvAkznwO5fu7fsQNYZrBS/NXGPTZcTA7DvMgD3aBdzCI5JlFLJKFtx/k3TRFE6KvvOr5AapJSI933eu+l73vLOrj1KKdG3/eQPdi3XtYBLWejaro8FLANwKs2YxhEa4Nw2MjSstm8cD2xv9JGlFjIJGBWST28OKIW4YRrJvSTgaWKMqR2bgn/XztWq4tCZ477tEblsVr71qecjUTgGPCVJ8/McWIgWlUpaxmB4SwJ8x8q6A6z68n14QRetkFIT01N4qXco7DHg/w5G37l6lUWdtgiQPlKpVGzhn90IrmXcB1OwUjC1FFLlYAQxT8q3vcINXYHUUYqbgod6phGMLaj1fCYr8rk81RVNJhB+O2zU4IZ69cSRSHW8C4iBG0bWsoW5esQAjJApuHr52KFICXXIW0fFYVOAzdhLTldHHXYpnEA/P84g8CbJZjJioL/4QFD95LmDttTsXGXJA95BGw8V7csX1Dd+6CtDX1/wMP3o7/0qqtZrbklP6iUcsM0B8KLdtWU7CiuPTr3ZECfOn7Z/sdMECpoxKp7YupsCDGsvfKDQJoDn7MBhB2MiATZmpfFbUcBHXkV+5dHoRUMweNznszk1WBywvw5iKnSCC95oN0N98MSUVbbJBo9pxiAv8DBJeYwMU0qK63du07l61Xb/PVUQWzl6IZQXcpsrhZRc+HNY4wTj1/qRdXRkYMjqEiIRbt2/y2Yqs2GRsDr66URvezLiLxsFvIiDnHPERRJh6FSoxtaNiv/8jd/c9UwEKMf/9on/F0+XPa4PH+TB6Ridloe9PpNOU6o5IiRELh3Y9QSKQVSJbLZbBJwIkk97DgguhGX0Sb5gOEAwFsMDQ4G/a+Fd+OrJI8hPKN2RgUF+cM+TydsiGNHQrlUwBktIq6KQMB8Ygx/fx+HMLOTydAHUDBwpF6eOBKMvQoqZ3BSVWpXWG3WkC9x8LpeVGDlQymg3S/4QNB/xLcAIbKFgKiR7IY+wUpJzIULZswjBEjK2FXIFC91h5fRu/sxb3FvpnFOHkQ4IMTBfa4fWWIi6jxmAhZTy9KVzpFydizvPH6WfcylwzYJ8jv6S3oF+hsDWru/SXpuHZccDCmzGUmqwWKTZdPBRg90YK5VUM+Wyr8ZaRhl/cude8o5nXwjVw9DkJv/UP32anbx4dvlhL4pO6cab5PeEA8txgFIqxtaN0tG160NjUqvVEkfPnYzdZgqH8dufehPSHYrP7kRCzg9nxl+IiEOQJHjlLjBSdyfui+PnT/t7ye0gIFiQQXbHqHM5TAhPgRGvNEx7Pf9K4swUjCTCWgSjYS6bdd0BPHhWvGu4blmviguOJBjhDtSYtZ9g8Dr3d59yOGwwOvflC2Lb2PgDOjoG4DtsplJ22FpSfDkO+OFIBNGYlFIb2RKwEFIoM4lecyyQP/tdP4zSqZXz3bYNQ/zaX/w+PXvlouP2H60A0atKKW3vFEBfNp0hTu5qnpnisgEwyOzYvC3S/bQ76Qo1Wi3HkKLd201KBMUBwzST+QqIuXCH3Da2GQUZFQbwu5duXqO3J+76OoqtY5vRtrFxX9tMGosNBxZgg5XJOQHUlQWnHrin5bM5SJugKnNzuON0oIRUiArB542+De2c9OCMz2azgH7vqy47NjO6AqEdgzBAdM8j0Ckl4mgQBluFEJbPcSAfyL5SiuXSGZ7PF1gmBmk5AmGEy0allOLs1YtUF+drK1gkl1ePGYBhfPenp/j5a5c0v3A7mgnVbLcgeiiwBeKIGgCmJ1gwmoqdwcLpOO2UB/hBiBobLJYCzxdih56FMq22IWqNmu9zBLBbH3jXF6GNazc4Icdz2TOXz/M/+fSnuq5rUB4iNA+b4bnXpIHVxAGAtB8uDaAd49u7ypmffGkbbXnkzAn7CjdNIoBzmYx884Hn7NPtJ9N8bGseyhJ3NeQu0addJSRc1l868iqqNwPIodOJ2CNWGpke+ABFY7g0iLO9m4+Ft9pt8LbugdnSbwiwjkv9RVQs9Lkirtao8Su3boR6Brgi1GalhRziGKFOXl7wHofEGS5gf2126akYpF/Ys3UHXpyCHQzAN+/dZrNzFU9tJ5UXccCCmPN+ZhCCVTqV6X72YMSVRNgw2yCHyVTY4EA2kxVf+/4vp/t37lmxtJBC/MU//A39zKGXbbQa/yJxid6AaJN9O3ajQi6vNdMDuZdqPeLYEyfahuG7fif2XPFhALlMRoyPbgqUt7PVOX707Alf75iUUr5n6w62fmStD1xImog5ByxjMNzzTcEx50Jl02ncNg00V6siLoSq1qqk1mggnd+hqVQKpVlaKNSD0Mc+C9j8nRoiuSnoghbyRvvcja/NYYQEl4IGgT6CwTaDEMnn8jifzaOIUnH6yq+oGrt9/666cluf9LrgBLqkARi8CV468lr3x2hUnHTWr6rWa1gXyOcF0hPoZ4QgWolgTEt9RdxfKDib1YBLK4REtVal4CUaxDdQLMqvff+LoRp+Gs2G+unf/GV769oyiMxHtQTBgKTNnuRAPpcXB3fvC/ThtxTjDG6qw6eO2ZPthQZ8Ut56mcgNI2v5nq07fX3EeqHHaV3I94swwpRS4sb4C7G3BBPb83Z38j73PQp48aAt+MZ5I49TZmhW3jLi9RVRv0sjnmbDeYwcqZSoN+qh7zW688Uv+gihIpfJqOGBQUf7E8BR3bx/l5XjamjsQLiCMwixsAFgj4s4otfJnILxd2zdKB7oLz5UDeblxt07rFxNDMBO+BlGWfCwZxAEbD8nqzJMAweh9AljvGH38bannhdf8d4Pdj0rXjl+SPzeX/9F13K26dc4H7DuBtXFPB4olvieLTscnUO258ifgqquUYCBP0Pq9VYwF1IQznmoephe5yo4ga8bXsMAYjKoD869l08cRm2j7WsXjFH59J79pBgg7b4SnDQWFgfA2w4Des7U7DQCo69uNoXlGJHP5eANY1vHEhZD49APGITBwCqRslDiAAZctxzCYKQG+Gep/EG2taCxESZplrIgz3s4iCBUEYQ0hUfOnvDvbeED9UsagAFa49y1S9RzLhwfCPTQBOeC42q9FohnhFu6APqZEFCXayUHbofjqh54HoBnFVwQIcpExw82/iDlP8UYf+aJA+yF/c+ENnyTc/WxP/4tPO0gB1wH4g7LOClAQ2No0tFDHADF84Fd+3A2Ez58O3hjvn7yiKNLriXbEUL/grfxrvFtbP1wPL2NMcIc3hU2sCuXXSmYgLEF21bswYR9Nqgo4MVU9oghGNA1IL/kyMBQL144FKC66JDSo1ePAsswxVJ4zeAQBeQSu9/pS+e0yX+1/ObzhqEXY0jXazm9dSJ8Y/qB8nWwOIDH1m14bLLAAHz9zm1WqfVcep+YztbDZANqQzqVdiR7EHmS5LLsPv1vuvX3AAAgAElEQVQDxaL6L9/8n7vy9vq92+JnfuOX7W903bru3CMAHl47I1OcDMAWosGWHVhXZzbIed9otfyTm25ylfzuCwcA2cMwzcSRxhdudhoBx9Nd49sCyw0phZTnr18md6fu+0j1G7S/47k3o8XIKb53kjQYBw5IuFdhjMlcrSomZqZJpV7FSsoHkNBxGIQF/5zJWvr2ONCrO43zEcIW+lMnjzCGyOpIU4iBgdoU3DMiEAFURIxpLptVhUye9EpaOl1kykIwPPqqLuR0zuoPv+/jS+JIzVTK/NSlc7YVszqNChjdAshnC6Nfr2+1Qz/DC7xQKIiB/qLWRnDImVupVgOVfzicX3zPl6K1wyOhCCkXgv/tS//ADp85EUp/SSerhwMgy7u2bEeDxYFIBg2oFa8eP9xVwfcYcRFCQYNS6/l9T+FcHGF6MZYUYwW+TK4nvKMc7Z7/95EO7k1N8GPnTgW6Nz/oMkL5cM3XRyrCI4VRiocHhkiQObn8otdJOybnotVOFK9OeOamLAVI8YEhW849zVaTX7xxNZz1aWcwsIaRIvMe3POGXoWVpvDNdoa0XJl0Oi33bt25pLIHDMDX7txiAF+XfO45EJTjGDgHM5Zy9i7CyFJUmqaZKPhWmFI4977vm77Vym2+0ldvNtT3/PyPOb9HrtCoBR+vmVMJOBvkMllfx+l+RdmrWSz08Se279bnXFlEthCSt4yWlrTZ4+6qLqXahhGrtaDzbBX7+vnomnWBrAWMkJyqzMqgUKBSjKl3PPeWRBZ0FrCAaJNSckIIg0i9+9NTFKJ9AcUIE6wyqTS8fSA2zrOhLSDyl2w2k04LSpl7HU2YxMawr0VpWDqRwRhJbBmHUXg8x0hxzuGS6YqDcBekhEqI9oW0IMkXDAeElPLkhTOk2qgF04GLVpc1AIMwffbo68ivsHIXtDmuMv/QQtV6FQcF3euYqEcqrFboZ9hkMumMGOwvMshJoPnHa406a7X9hZdZaswjg8Piq973odAOi8u3rvHf/dSfurucdxSp4O0UGr2ay0lCHkKIUirG1o3S0bXrI+MHQEK9euJwZP276TiVSqm3P/WmWD42we5rN3fvcryBqDvsAP55oR24k3zu6Ouo1qi7Ybu7OvOG4KCU/+6IclYLPPOHSoOoly75cE8NVQ6csbznSoODz0rpOiDP7J3JeyxI9JRlmdrJ4w2hvOCZrRRS8Bi3/txzE7HEgGB9bx/bggr5pXNlKinF1Ts3abWuzwM0dvPSgQcPzHmAUCLSLO1UXjkgYxhG2929PnaT4JzgVCrF/9W7v5i97annV6wM58l3/PQPIy64805WqKGbEZgQInOZbKycBsBhctf4NgxpLXT7IBJfV52TbrzSjR6IoBJSKZObyf7pcXJgXxlbu4Hkc8EYEoQU6nPHDuGgcq4WCn3izfufdnr+euRaUj0KDkgluVKIcc7VdHlWTs5O09lKGXL7PkROPptF6XQaooGVaZqx0tfkc3kLujoK/q7WPjuGWMURwp19RCmhEAr0bHG6H0K0r1SK5TJZXsjlWTqVXq3TFdq4lUL8yq1r7M7kvdD67NbRsgZgoSS/eO0Km5iZ6taGFr8DfBsXXNVqNd+w0P0cGEDpgXfRaoN+hgshYyk12F+kUUDDuplDhRSarVRCgfpIp1L8TfufZs/sPeCGVMd1DNNQP/6Jj3q+EMTZEOKYaUmFZTkAkJPDpQG0Y3x7oBecblMAl65Xjh/qVuzx3yOM8BwuDfADu/ZFyjfnDLMM/p6Nv9AvPKiwq8TBCN2bnuDHzoYUBbyISRCl1TEwdf7thn9R1gFHrL5CAZUKRc9nQJTjWNQ3b7VbzOT+Kuw1GZt2ZMB9Lp/NqaHSwJKyD/vwuauXkNMHqZOBdtJSgCcaBmhVjCDPJsJqNaepIJTytYPDbN3wmmVZKcEAfPsGTRwmnEjbG2WtPR8heB4EdmbDmZhiKezYuQpbeapx22jDmnA3wB6vtXfrDv4fvuIbVpw7wzDkz/72r5A7k/7Di6II75qPTi2lRGTT2djdXwq5vNi/c69mdGPeNttgSOjxFdTLw8OSc5Mk6US8zTFjTO3YtCWQt4WUUp69epHcn570RuQKtdeNrOFP7tgT2PkeGOFJw105oMAQpxQ8FHC5OicmpqYYRPk2261l64IzZYq9IQ5x2uPB1pDJpK18rl2ZkxQIjAPz93EBKFSQUhhy9vptELb73oaUYABrXsjmMQQCOH5nBMal1dHwzFyZn9YIWXlZAzBMx1ytxo+dD1/J6lQU4EXebLVQU0PI54WxrDboZzAMEULIYH8pMG9Ap3JitzxcNGcq5VAPza/+ki9DQ6Xg4XPBAPybn/xDfHdqwi47li7XiYSgcKB5ayipHWcO5HN5cXD3Pi0UMmAAdqX8xEgCPGiY8wDnwfaxLXRs3WiY3XrqC5TTlEJwnT9LHjzvMSGuZAcivj93LOQo4EXcexDRo5FS1+7kwtkMKBwjpSHWCw8AAfn3Gg1XcmSXZ0m5NziAQX7m8wJT8vC22TYMcf7aJV/mohPFa0X1dvLywj7dMcD50n4vzWkulxO7Nm9bkS+JAdjjjId0T6CUwvpyrYQ2TRMJ+XAUi8eR90T1TDqtfuY7P7zi5cUwTf7bn/oTdvz8af/HrNFdgTHGM6m0axnznzn2WqSUyh2btpCoUs0sQ6Votds0WXP25lDXUnCxME3u7g2p66BCpItgLIZKg3RkcGWYfTckgfFucmZGnbp8NrA9C2Mitm8ap+OjY25ITOpoyAHAbCaEgNOjuD89SWcqFWQnBQo4SudzOcweznBlQe1qOMwlScqmM5xQGth6iQsfdKMTdJRgBJYP0hIhKxLdA52AXrGsXFp5ipWimXSaF3IFlk1nPHSVVPXCAQhSffn4IW32kBUNwHAheuX4kUC9+b0wExRCoBiq1mqBQYJ4om9R5dUC/QzKQYIQLfUXcX+hzy/2hdYOKB0hd3S90Qh1kW5Ys058+XveH7hiU0gp/uGV/4++7CZacolZ6ETjYLmao29CE07NOgJItgO79tnKCxk06XCpev3UUQT58Jx+UUSzM8bkU7v2kTjskRhhjiHcrmP9dcreZcpjiTEiXtq7Pz3Bj0YQBbzkgDRS7tqZIDjnwPg7XBrEmZg/COCe2mg2Q0HssMPb1VIG9v+RgSGcST+AjxL3piaoK9SgjkMZeEgTBEkmkBXR6OVRvFqmAZAU0O4t21G3dSyVFFduXqf1ZmPV8MavgYYN4Qtz6eVshEgVv2GM/eJlVO1kMxn5H178erJ1bPOyJCil5Kc+83fk717+TCBkhi1Hyw0ixZhIpxxDjQfCE6eN5rI5cXDXE4G/lR3QpZqtFo5TujQHY1tVRQGm0TCN5N7hYtbhvNq6cTNKB5DizRRcfe7o6zhIJwtGKX9ix262ZnDYxeiTKjpwAPL4IoRY2zQB0hlNz84QiPK1GxgAuiCMCerL5yF+6aEhKQXqJa7TubMiy3PZnKc7pA7zuRpo6BiEsQA9BhhqwWC7EC1sZ/wQSGFw8zG5BIcW0LEVcnmUyzzmzGCn6aSMzxyAwJVDZ46htmH43LK75lY0AEul+JWbgFkdABySO3of1FqAfK7Wqszu5u6xS3fVMeZ0FUA/Y2wZAUmxv4hKff2xPXggb9xctUrChpRMp9LibU89T/fv2utOzhzUunn/tvj1P/8D3y4yuig1HLAgKeqRA3A53rVlO9LFEx8O1iNnTrh3VgIY0RAjywjG6J3PvdXjLARffT5KFyJ/fVWKwIUXYStXp+tBwJy/fOx1VA0zF/AK1M7nHQU58pVXrhlksyKs4b58wWZpDYthJA3TQO22EWoUv4aciIQkyCvdl8/D41VdvH4Ft4z28nQsMvRCDvBOhC/uRPgmn2MOAJTrhpH1dHhgsGtdqaS8fOMaAQfH5NObA5QynmKLsAcdk4sF5Es0E2PGA84BfP173/Yu8kVv//wVuXn8/Gn+iT///cDOcB3eS+CQHoShxrGYuqhAKRNbN26iIwP+Rxq6IMeqkjjVuOWcdvUEF4K6cSTWbiQhE5RNZ8SWjZt80ystkC+kVKcvn8dTs9OBjohRqp578ikMBpPkiwcHlFJcKkmlUmh2rmLBOkMe37bp3MACaRoBNrmQz7Gl9BJKSS6EDOxe4CfHIU1XJp2BaAjf16OfdCZtPc6BN+xZAFmOKAQ6YoTheb30XCrFTcEfyCVErzNCZSGXp+AEkHz6cAAcVM5fv8yCPsvsjnhFAzA00mg2xaEzx7XbRBrNxorY/XYZEHS51QD9DIdlXy7PS/1FBgdPzD81NTsTiTISjGpf96UvoqCjAuFx818//hHfp2k+RxqANMZeCHxnTg81SCkVY+tG6eja9dqMSiqpjp09BTnwtKFpJUL6C/3iuScOaL1OwKmHEAwozYHsh37AD9+fnuRHz57U6lE2bwgGWHGt53dBPkExnsvm5FBxQCs+OlzIqlqvBSKnDulYdcVBfgr5AunL5dXZKxc6cwAR8Q8grhagnBX8RyzWRBwmEfbn/kKf3Lpxs611CwbgSzeuEkiXk3z2OBAFOsgCZV6jgBHkGlMIG2YbHCzsDbjHS42uWS++9//+lhX3oHvTU+LHPv6RwPapqB3F4J2WYmm6OLdh3KY9k8nIp3c/qYvDl6o3w0UMi9t8xY1ewzRtRw3GbWxB0AtpZdYOjbCB/qKvzYOB7970BD575WJg+/Figt/1wttjG7ziK+M1bQwjLAHZBPKYztVr/P70pGXwrTW8odoQjDmhDPflc0vKGTirCiExOJ3H4ctmMpwQf5324zDuXqWxc39XHCFMQcGOFBILeYThXaeklPDnXCbLC7k8Awe/5NOTA3en7otLN66Gcp5140BXAzBseIfPnNDD2GphmUsSB8jnBcb3MvQzeJpk0mkx0F9icfUmfnSBmNzklWrVlkKt2+Jy8/vm9Rv5B7/gvYH2b5iG/L2/+nNy4+4tNyTaqqODl7stQpNCjjgAD73h0gDaMb49UBl1RBRCCK5AJy+cdh/dFCKEL6yN8Q1jGOCydP7AmccPI+2SYwTjMmAtefysKODjh1C1XvPYkv/VO/D48chZCqkbGKV4ZGCIshi+GyGStNVuUYA+Tb5oOFDI59HtibuQsxdCe7V44ETDiXB6hYiVPVt3YrtOl6AluHj9Kmm1EwOwrRmyotURUUp5Pqds9beoEBjpKGHUUxDwG+0pwzRio7x0yisn5cFZ+af+4w+gbCa7bLW2aajv+pkfCdaZKGTEmcWDhUindCrF4njOL4wDnFDHN4zRtUMjTqY/kLIKIdloNkLfIwIZTNKoxQGYU8NIEGXsigPsqzvHt0FOH7tVbJUzTEN99tjrEP5mq7yXQpAj/u3PvODvALwQlNS1OABRcxhj1mw1xb3pKQoG39m5im/cwQTLdCqNcpnMsns45GzlQuiNNrqII/kkit03+dCxofn9kCulGCUEwRuwWIgv8qqOPA6Kpla7JV4/fUwL/UhXA7BSSly7c5PevHcnKH7YateCfOYmRHnEYhOGRxbBpBciYh+bH0KoYIyiwf4iXekhbWtitSqkeLXeYFFGEabTKfnOZ99K9m7bGRhnIM/VZw59jnzm0MuB9TEfAUSRle8++XqFA/lcXhzcvU+Lw2sxT4WU8sylc6TmBQ4YI4jaDFyRwxgV+7btoUOlAW3FAhTPXuCZuw2MQJ4TDN6M3r/JmUlx+MxJX9ryTs3jLcTJEAxOXUOlQZxbQUEeBI/8aBPy2zeaDW3lwI8x6toG7BeQE/j+1ERy3ocwSZQStWn9Rlzqsx9xAygZF65diQ1KRghsXL4LMNAhDEm5InN0wwSrTCrj23oyuQlJ7CJla9SdZzIZ8TVf/K/owd37liUFIoy+/xd+wsor34sf5JjLpNMU4C7j/KVTafXM3v2+rQ+3vAADRbPdimyfcEt3Um8lDmAupCCc88Dfg70wD/2Fgti4doOvGwrcV05cOItnKrOhsKjUXxTP7Tvo6xhCIbzHOpHKyuNrOfNOl8ticmaazcyVURDOveCMn81kcCad7sZFKYQAZ8Bu5SL/HRy70um0lQs5cmISAgLjAMbIivIGh16wWQAK62BxkAUWtBHYSFZfwy8dfVULhJGuBmCYmpZhyNdOHon0IgQ5VuLkuU4IloymIuWZ38sKov8IIXSgv9izeTJmKmXwOPObdY7ag4ft133gxUCV8PdnpsSv/NFvBn7Z7cCdQX7V6BRpjpifFF6WA6DgP7BrH85mMtpxSUopzl65QOdqVde0hQX3CBqrz3vmzZbXnlYfRlYiTkohBU6AerVOZNWSeXbc8ENIgV45fljLKOCHxmMZFRAOw8nADR8X6sDcF/v6LY/SuH31RgNJFe35HTeeuaYXY0EwIoymMDw64Zwvz5VplA50rscSo4pwDwcnjY1r1zs6QCwD8NXL2E1+tBixxx9SQ3IGW4lYcCKGGGDf7gkWjKFApmkGeLj7w/4gW3lh/7P8q7/kXy6rHG0bbfmLf/Ab5Nqdm0GSYbVt5UEP2UkWoOOz6QyJu6KQUso3rRtl60fWBj5PK3XAORdt03C0F0dKcNK5PQ5gpEyTJ8gJXbgFKUA2rl1P/MydC/lWb03cIxevXwlNh7pp/ajYtWV7so7trQ7fSkGQmZQKnp14tjonJqYnGehhw0hVks/lkF30yiAM0L4xcVFDuWyWY0wS428QzNWkTTD+ggNfOp0m0+UZcFSCgA0r5/NgcSCWuhtNWBs4GRCsdPrSWVLxoKv2i0hbBmCAFz92/jT2FF3ljmIhAfK5XsNx2XwXhtlL0M+YgMIeW4bfoPPTuhMTf2pBBNFspRz5BRCcB7Zu3CK/+B1fEOgh/mMf/3kE3u5Bf2BYA1WHUpZ9KfliyAFQFu3ash3B5ULHDwzA569eouWqR2ggjDhSwXpO5rJZ+eb9z4b2sLU3XxhgllBYuIB+Kx8nZ6b44TMnAt0v7fHRRimMACaXhK34tUHZgyKEQJRQRg2Xhnwz1Dvp311ZLCDfZdsw3FVPatnmABgRKKGSPYJR2zbbfLZSjsc6tD1avQpm0mm5Z+tOx+eHUkqdu3oRQ37D5FueAzqlLyEEq7SPUcCQF1gqhQyjvWrXaLGvX/3Yt3zPsm8Rk3P+h3/zSfbaqaOBL5MOOgiWYTrIgnznMtlgnfwC51yngxRj6tknDkb4rsTSMA0C0fXJ15McUG3DiFC+9OcpY0zt2LTFVx4122358vHXHd9x3HKLEsJ3jm9jG9dtcNtEUs8BB4QQglJKq/WauD89RcHg68V530HXVlHQdRRyOeQkxUYcbBAwrlw255QdSfkYcQAcQynBKJPOWHf4e1MTD1EPDsIQxDFUHKBxRHKL0VS4I1UhcfXODXrrfrSoytY++OH3fdwGpgGWtybu4Cs3r/t6yK/EPYgmMLmparUqs0Ggu4kIopa1OAmhhIZ2eQliGPOHJOiM8ECxqIqF/p54MK7AK9loNt3nEPV5EtKplHz3m99Bdmze6nPLneYM0xR/8um/pJduXA2k/SUb7UTAQYKdyI3s4Q06/j1Bvq2xdaN0dO16bQcjpeIXr19mYcFFeWHE6Jr1YrdGnsYYYYEJUZSG5DWKkSKY+HqXANQGiAKeq7uPAPcyp67qWpHQiupqCAaPUkopHi4NEbte0q744G8lSBPiq2z5S15vtAYOjstFJt6fntAC3qg3OP3wKEDBs33TFuQm2gYu82evXMBmkic7NqIBezCDIGA/4XohUkBJ3DaMWEAa+j1ZkOvxu7/hm/FK+WM//fJn1Kf+6dOhnCOQ7znsnOkQ+YR7IDsPKDvH1m1go2sie5vwttFmfJVDq/u9RnVpDyMkhFTK5OaqdZhZaS7AgWW4NIRHBod82yvhLXfs/ClUrs6FJgaMMXFg114rei75/OcAwOQDJHHbNOX07Iyamp2hAOscBdoipDkq5HLYIbKK4hyAy/T+wKCdTiXwz3rPknvq4D1ACEbZdMbSoUNw5sTM1JJyCXKey2QFwEIz3dAG3bOgJ2rO1eb48QtnIr9T2DQAI2QKrl4+dii0DTBukM8LUtkr0M+gaMrn8nygv7gqNg+FlKxUqxaUgi5fLptV3/DBr8CQ0yGI75WTR+T/eukfY++oEARvkjY7HAAFy3BpAO0Y3x6MEPrEaDAAX755lU3NTntrEWMeZDQGwNbt2bKDraR89DYAZ7UhGoQQYkG4hvWBByPG2Hd5mpyZ5ofPHPe93cD50oHEpjojJAyVBl0ZnQLn3eMdiGarRcNAtohgbNF2iTEHx40UY3R5iHjF52pV1mj1Zv7MKCcAzo61QyOuzw6ARj97+WIoqC9R8slt3zpF/i4eA6AxpFMdhY+fn0IK4KAjUcL6OQ6nbaVSKf6hd72Xfd4zLyxb9dy1S/yX/uA34neXsMkMNw4kNpsOvRikpnl274FQ77CLBima7RaNwpAROqNXbYdYcm4SEXFqMB3ZD0aG8dExnEl1zaFqi3zI/3r9zi129fYNW+X9KgTv37c+9RxE1fnV5KpuRynFpZLwpkUzcxUxOT1lwTpHis4EDs2EoEI+T4nTFFcKcS649veBXDYnMMa+3xVXtTBrMvh546/Kzkf+AlmmafLpyuyycglvGgj0HOgvoVJfUZORJGQIKdTnjr0emj11OY7bNgB3cKvPkSC9sjBCXADkc61G4qjAg8UGETMEh6dM93spwYUunU6Lwf4iS/t0qfObxoDaA6+0yBfkQ4ofSsWe8R3q3W/5vEAuHrOVsvzo738iGmEFQxtSkDgwmv4DEqJeazafy4uDu/dpf6FUCvErt66xielJ71MQYP4/eGi+sP8Z8ODzTqcPLYAXbJjGX+Rz/t/FLAAFzasnDocKJeXDFLzRRMDOB15otbym83k10FfSfr8WUvBGsxnImemFh3GvC3CbAC3VbRxcCDE1O6X9mdFtHLr9Dg6ZOzdvdS3XoIw7ffk8gjywyfcIByxYfgwRsV3lO2zeAdx6iqUCy9kKTq9xfG97mYdd49v4t3zVv152Lc1UyvLDv/zToZ51YeUDno8M0U7O3c4nOKmOrlnHxtaNum3CfT2MVKPZhPRG7ttIasaCA5A6IZnnh6cqm06LLRs3+3bXazSb4pWTh31rz65gwRv489/0NrvFk3KPc0AJISQmmM7V63xiqpPHN4K0kUvODQFkTkrB+Ovq/gwGbSGEq7phCUsC/xwWp8Pv59HIX6AA7E2AdmZnjcEdCR4QQ8VBkk8gwsOfwEd6lEqqI2dO4Ga7FSkttg3AQOX96Sl+/tqlQDZBiMA0OZfVWjWQ9gPncgf6GVMSz1h7QijAPaLBYnFV4sYbpmlFrgQuJw47SKVS6r1vfxfeMrrJYc3uxcFg8nO/9d9RlNE6HQ8lBWnJQr/0d+fQ6i4BnvUHdu3D2YwexsoVZ0MpcfX2TXpv6r7nSbPysgXkmJBOpdTbnnpT5Mq3BWel5SP5PLNx6QYwlgQH5yE1NTvND52OYRTwYm7NG4JB8a+UClUJvdKswyMCoH+HBwaZr5CkAYgaPIoSZZ13xsJeCLk/GE3ZjrACvk+XZ1adUck7t5dvAfbp3Vt2oEzafaQNzMupS+dWXcRn13mxnBEhNYnS7v6/QDtEf6dYKij6pJBCmubqgTkFqMSP/KcfWVY0wEni23/qh7qKjq8FQkqR02sG4HllKHpm7wHICezrlNhpDNDqkq/3OaCUEoZpJnqK+akmmPC1w8MMosv8+OB+cvjMcTRXr/nRnKM2ctmsfOtTz2vz1nJEfESFAdYZngbNdktMTE+R6fIsnp2rRETNSndnItIppnLZrLvDASMphSS6ozzA2zydSgmFEl2qdkLohSCMJCUEIn8fOnsg6KVSq7BWu227dUKIzKYzEmCho7gr2Sa0xwtaKQtvXGETMz4ELHnglSMDMFitXzryWiDK63qjjlqGfUH2MOZAqmKCVYqmAuFNIAQvXOIszxBMB/pLuJdgoRzyjFfrNRYpPMkKBPflC+obP/SVvsuWyU3+yX/8G3bm8gWH7PK5uMbRFz6PNDbNgUfsri3bUYxy4sjrd26ROxN3/eFxQNGYIwNDfP/Ove4eIj6MDPL9QvI3SgEFyfctxRaFQUYcCynQayeOoEotRrmAl+MaKIQVolHkCFxpIsExZKg0iHWJYn+UVkCSaRkGM0zDljwmhZbmQMfrmCjnhicsao0arTXCV+T14lxSSuTomvUEYNi9fBCjdvLCmcQx4vENw9pnvfA2jLrpdBoFiC7FIfrZMA0LtrHXv2wmI//tl30N2bF565JDNbmp/svHPhK+QjtA9JmFgVJCRDaT1V7encggJkSsHx7B4xs2hW3EUfVmI5qLtBMGJWX94IDgQtAEQeMNVu4a3+YLghQYE6/evsGu373lxzw5bmNkYJAf3PNkZO9yxwRHUAGiYBVSFBBDZsplMTE7zWYrZWRqlDbvsasdwTKTShOPQQxW9K/u96JcLicBxSYC0Ui6DIgDgApDMJHZzOMpYBRSanp2FrtF7wHHHb+cdwIafk83OzETXECtXcbh7/3CX1LpVMpWeSGEOHftEp0uz9oqb6MQF0qQmgX5HF9YsjhCP8/nYaSlviIu9vXZmKreLgIyresBzyjjT+7cQ97x7Jt9P9yPXzjDP/kPf63FxdeKvERY6hyJ0duroDM6SqkYWzdKR9euj9Vwb927g27eu60tzRBBuWPTVrYxIr5ihDnCGLGgkorb4DxGSGBCAlU+Ts3O8kOnj2qxp9lgSdciDyLSA3JK6ErAMgUGiiXUn9fz7gCPo1q9nihm3U4uQgg8ygEVxs0HzqIT05MJ/90wb1EdQAEo9vWrLaOb3E3EI/2fSAzAD3FE17y/S4kNpYynIHQ12E8ZpoF1j3bxygJCsPrCN78Tf8k7v3DJptqGIT7+Z79LL1y77LUr7eqDHGXT6aDlKJJxP24TiJIAACAASURBVL1nvyeUBKdEQ1Roo9X0ZW922ndSPhoOJFDQHb735fv42Lr1vuwjtUZdvHbqaGTraOvYZrRtbDwagdK1V6WEhJQYGOFytSruT01aBt8oEQOdsiqXzfpxHkghBKQHcdp9aOXBqT6byVr5XkPrNOkoUA7A24RgLDPpNF0uWOPe1IRrGgAWnRBCB4uDqzn4zzX/vFZsG4Z87dQR3206TujCz/e9KJ/eux9vWLPOVr2ZSpmfunTOh0NfybZpylq95kNbtkgPpBAYUgnBmBIW2eXFycAWFB6l/qIq9fUDup+T6j1ZFty7ynMVreePUYo+8K4vQhvXbvB1DqqNmvq53/qVRAh85Wp8GwMj5XBpAO0Y3x67ffnu1H157dYNfw7UAIxtjFL19J79uC9fCF9AMJYULpRuLTo+UAzejFbmkoDPHDA+vXriCK5U53ygWsMmApBNN6O04IQyWTlcGtRwr1Cy0WqRJFrD4czCfRZw3RijXqINIaXLbKVMkihsh/x/pDhjTO3ZuhNT4s+xdvz8aW8EJbUj5UAmnYETNHAaTG72fK7o9SNrxfd/07ct+e7jQvA/+/v/yV468lrgvF6ygwAjgVOM8XSq9wzA4CyzZnBIbhvbEtp9REjJW+1WaP1FI4xJr4s5oBCShmH4cyDHlLWUULFhzVrq11v21ZNHUFRQ6pBeYc/WHWz9yNqYzoZ/ZEOQF6WUgkH+/tQkhTy+cUXTKuRyKGUzuK0bByHqWecvnU4reCuggFKX6Tz2XqWNEAxwzcsi9Ukp1cTMlOfHAOhx0qm0HCoOMrvBoL3K8zDHBYv15eOHIn1n4QOZD1obx6b1G+VTu/d1NYKBF8xnj76OpJKueQUDrzcaqB1jyOeFwccJ+hkUB/lsjg8Ui1EGgbmWm4AqinqzQZutaJNx2xnbQLEov/b9L/r68AD4ll/+w19HZd2MJVZeNgUmo657kh3eJWXscSCfy4uDNs4Be62FW2piZkpcvnHVP3nxWQkHXprvfPYt4TJlvjew+wYJvWxnUBD9izBe1pvRTht2y0yVZ/mhU70TBfzouC1HLqQAujRS5SMmhIOpcLg0THXLKcOlEM1mEp1jd83MI9koRpkvd4yW0ebluXKk8ml37DqWA6j1zes34mJfvy/kwdsNIoCTz3JDUgB5HCdeQCoAShlhlAVPN0YKnGdM0wy+r4gmAe5D/+1bvxctl/ropSOvij/6X3/p333SyTgDzEudTqUA1r8n5xV0HAd2PYFymawTbrsua3JuRcy7biCpGEMOYC6kIJxzX+5JMWQAIMOonZu3epZ7MDheuX2d3rx3JzI2MEbl03v2E7/uWZENxEXHAL2NEGKmyeXU7IyaLE9bRt84I4BA2pp8LochaMavT3cDcD6XT6J//ZpsDdrpZvwFEg3T4DMVf9/Xpf6iHOgrRZYeTgPWh0aClFKcuXKeRpk33TIAw4jBCwq8DZ7dd5AMr5BrSijJL16D5MVTbhjFhZS4Wq/2RB4NS2FGKI5asd5tIsDDI5VKy8FikWVS6W7FV9vvqjxXwXGAIAfP7WeeOMBe2P+Mb3NkcsH/+p//jh07d8q3Nv1u6AEEqt8NJ+09xAF41B3YtQ97zJcSGVdnyjP8/LXLvhkc/FYSF/uK/Nm9+32jzy6jdTD+LtAa1lkJ3pGvnuzhKOB5hs4bgmXUjjKgeIUcpflszq5YhlKu1qhrm9ohFAbY6ARkCIDDwLBEfURnB4PjxMxkwn8bc/BokQ4SxyAZXbveNyVzYgDucFm3nOpOxSMbknELIcSlUsgw2qHfWZzyxE35TDrDv+p9H2LP7N2/ZPWrt2+In/vtj/mnRXZIZBDvHmgzxVIE4P179RsuDfKd49tCkFnM22ab6W4c6NV5jnRcGCnT5D0Plb8Uj2EPGSwNorWDw57vJpXqnDh89kRke2znPoDRO557M9x/IxWpcDpXoIOngGY8O1eWE9Mdg29PBGNhrOAt05fPE5/1DFJnZ48O/HNGoiT/bzhLKOBe7Bh/AU2vWq9j0G/4+QEsNKRoG+wfiAap0M/BaN8Wltfv3iQ3Isp7b519CwbgBwpajNHebbvQri3bl2XfXK3Gj50/5fS0VIB5XWvUIj3s/ZIJUCIQQsEA7JQPfpHQtR1CCHiMo8H+IoVcCMn3OAcWEqnHhTdw2L/4ni9Fa4dHfCP53NVL4o/+9pP6rks4lJCCS6tnj1PfmNZjDYFcwZ4/WByI7cjK1Qo/e/mCv/uxT3C7mGC5dcNmMj46Fhp/F3LThwEZaWtQGEuCsWelga2+EELT5TJ//dQRf+XBbuchl+vkT0cArhLZPg6e1/35Pt8iFn1gIW8bbQY525JvaQ5gjAXMG6OM+b9PKF6pVVmz1UzY75ADmUxG7tmyw9e9ElCbTl4465CSHiveQZaBv2J5LkDKIUppeAhOGAukJG4bhtY58NxK6bNPHOBf/4H/c0lZqNZr6vs++uM99eYA+UmnUuHJj9uJ8VAP3jL7tu9eNrLbQ9OPVhUto90TwQw+8mQ1NQU6zZ7aH+xMHiVEbd6wEUM6Ai8fOKS9cvIwihp9L8WYesdzb+nNeQQkDy4k5Pqcq1XF/ekpOjtXRtW6v4YjL3LgR91OKkaK+/I5/xHGFOJccG3vi5l0GvT8kb37/Zi/pI0OBwjBKpvOdE2TphTilVqFtdrtQFhHCBWMMTRcHKSZdBI0GAiTEUK1ep0fPX8ysr3lMQMwDJQxxkGR99y+g0vmeAAt4yvHjyDIE2Tng4O+3qyjtmHYKR6LMjpDPwMsIyWYlvpKuC+fjwU/oyISYBTmavHKQz0yOCy+6n0f8u3Abxkt9ZO/9ovaX4A7Rg4skVKRbZhRyWmQ/VJKxdi6UTq6dn2Q3QTedrVe5acu+pGf3n9SGaPiye176WCx5H/jj7SIEeYYIwz5fv036rgnH84lCDR034KzmhAF/NrJo7hcrTirGOPSURuCCcEincqo4YEhRkLIVdltqhSSslZv+GpI69ZnnH6HR16QkQ9ccDE1O+3bXSVOvPVC687xbb5H0wPm8YkLZ7S/53nhW9e6GAFsfqzlERw20ql0qPMIb37TNGMNDbmUbPTlC+rHv+37luXlt/7ED0SPYOCjzIKiPJNKM0CF6eVvoFjie7bsCPiuiWWz3SRxhkvtZRkIemwYYQFzb3CztxfTI4zMpNJi69hmT2MG6OdLN6/S2xP3gp6mru0XCn3izfuf9jSerp2EWABgnTHGrNVuiYnZaTI9O4shyrdXP4hahECnQj4XyH4vlRJSCG3lI4F/7g3Jtmv8hdEuBK5xEWxuatAf9ucKYqA0QEl4sRu9MaE2RgH3h88ee81GyWCKLGkAXugKJvzgnn1oy+imh3qXSvErN6+xO5P3u1HFuRS4VqtRIUW3srH5HWMsKaF+w0x4Hj9EcwCa90B/Ea3GfBZOGagQEtVajRpmvBwT0qkUf9P+p9kzew84HfKS5Q1uql/7s9/DLmHdfaHBbiN+w/La7bdXy3WgJgfQjvHtgVyew+RbvdkQJ86f9vei7lMEMPAB8v/6DE30GHshzy4mREGUUJi879qXFcWPAogyXLnn1RQF/BAnQGmMEORQD934ad2PKMFDpSGsQcoJ2Wg1CeSzTL55DoC3PEaE0VTgd1hw/pwqT6OE//akj1Ii1g2toWuG/EN4WehZKqVOrmIDMMCm9QKKDKBPMZqiURjxAO42aKWTvZXiT6lMJqO+82v/Hd4wsvaxBtumoX76N34Z35+e9Kczt610EJCw8sFxAc7mTDoD2gu31MSiHqSz2bNlB+4v9AVKb6PVjN5BINARJo2vzAEsOTeJkHJVMAqMbWuGRphXR+bZuQo/ei66yKfFk7VuZA1/cscevd7LDqRJKcWVUpaOfbpcEZMzk2ymUrEdoOWgK+2KArJaOpVWuUzGX73Pwkgxtoy/ujr5wB0wk85Yen/tJichyDYHwPibSWewE6f5e1MTttv3UhDsShhjArDQQd+nvNAZx7oQpHLs/ClcbzYiIX9FAzBQlGJMjgwOy2efOMAW541pNJvi0JnjK206CiIL643eir6ACBtCKBiAtbswFPv7ZamvnySeGvbX0nR5NrYPuK/+ki9DQyXvkL1CSP7pl/83e+3kUfuMi7iklccNaPBBKRLxUCLtPp/Li4O79/XE5bHVaomj5076PxYfIjCAzy88GayXMSj3CGAsExpqdJAdAQbHja64NnYacljGigI+dRSX51ZPFPBiFs3vkwRFBJ8P51MhV3A4a/4WF1zwRrup3X3N31Haa20eFl6y8CDDBKR98TtXkb3Rxq9UIV8QOzZt8f8MQwgJJdWpC2e1OxviN0vRU0wIAcVnFFY8KaSQpmn2xH4KaGcf+Px/wf6P59762KS2TZP/1v/4I3byYvSw6XC3U0p5nm/Y/7MZUDR6bir6RdCFgv5Cn9i3fXcge6n19FQKgQE4+RIOQJoRkIfV8O0c34oocb+swFj+yolDWiBCYkzE9k3jNMzUTD7IiBRCIrAWlatzYmJqks3MlVGjubr2ooWzLEiIWowA/lkwXdd2NpOBVJTuF6MPwpg04Y0Dboy/Uio5MTMZ6iVuIaXocGmQZj3C/3vjWO/UhmDayzevsrCM+Y9yrqsBGCpAUuoUS+Gn9+zHG9ass9oAj5jDZ06gZru11Gyoar2G4xZZaUes4NABXtgpG0YZCNHPZXN8sL/IAM4v+exzQAjBZ+cqsWXahjXrxJe/5/2+HP7X7ty0lB32uadPySQq2N1cgJf8gV37cDbjLZePu979r9U22vLImRO+X4r8kK+xdaNi5+atvqzV5TgH3qBBRxi7nbWoDMBA70ylzF87uTpyAS87PxHlUQdDRT6bU4PFgUBlv5tcVuu1bkVWxe+pVMqT8s4Nk6SSamJ6Ups7s5sxhFEH7vJ7tu5E6VQqkO6EFOrUxXOrbh78OL8DmRAPjYJBMMWCj+BfhkSIOIL3PdVVMeqEtdvHxvm3f82/eezto5QS/+N//y39h1dfctKc9mXz2RzSKTVIUAyjlMpdm7eRUn8xkC4UQrLR7K0Ah0AYtQoahZyMhmnEUn/iZHoKuQLftH6D63GC89D5a5dJVArvR8fKKOVP7NjN1gwOO2FD6GUBMhsgP2qNupXHFyCdK9W50OnQqcN8LhfYXfnBODGSggui6z0nn0tSPOokk05psYy/qTR2qreD1JUzlbLrfdgpnYvLQwqafDYnBosDzIsjkBcaeqnudHmGn7lyIZK5tGUAXmA2Y0xtXr9RQsQYPI6u3blJb967s3guLMjnaq2qLWSCF8HRCfoZFKupVEoN9peSJN3uJpXXGw22jAODuxZDrpVOpcXbnnqe7t+113PPXHD1Yx//+XgqBwGmFykaVZSbZ+ZH0ABcOHZt2Y4Gi94jyCMgf8kuAcr88KljwciwByhoShnfu3VHoI9McP7RWqlnwc7iSC45Qkp16NRRPLtKo4AfWiwdKG64vwWzTpZYmZD7OcUoHikNRwJbihDirXabmdzUZasKlQ7I+4gxwSnGIskJrpCSs5Uy6UWHUL8mEowVG9euJ0Gex3DHO33pfGjr3i/eeGrHB/QOT/0HWJlQItIsHaVjjTJMA+sKj2iX9eA49/Pf/aNLFj989gT/zU9q5BjrgzwXVpHSuJDLi/079wayRqSUotluBdK2XdlNymnDAcGFoL2c6oISIjasWUf78q4RfeRUeVqduHBWmzXDKFXPPfkU1m1PlEpypRC8WdR0eVZOzkzT2UoZrRao8ZVWNeg5wPibCingCdJe6PjNwz8DcZHoVXTkSZxocmv8hcRetXodR4mqBUi4CGHrvVos9MeJ7drRCnrrV08cjuRd7sgADJyjlPJcJkOefeIgyecK8rWTRxYirlSr3UL1ZiOSgQQ9q50IJiJYxLkVO2H4FA/2l0gumw162L3cvpqdq+C4X9jBkPd1X/oi8orNb5im/O1P/TG5ff9ubOfcivRASCClkgvRCrNIKRVj60bp6Nr1sZ3rpQjnQqjXTx7R7vyBNfqWA8+idCrtL78hMZx1JkNqXe2G/WCskJcYYRyJ8WmBiJlKhb928nCyLywwJAJDMHiODpcGcTYT/r1FKiXqjbo2iid/N4KVWwPnEBZxxpKW0ebluWg8lsPktZu+MMGiVCiq8dGxQPcnzrk6fXkVGYAtx0ALqzVQvrqZcz/qWGhUqVTkcL7gWBPnd1Q2k5Hf9C//LwIOkY9+tyfvi5/4xEf1OTc65zZEJLlCuoEzOJfJ6ntZ9GNhLGoDHGu2j20hfqRKepQ0wSVvma2e3Ft8noZV05xpmkj2KBQ0IIbt3LzV9d4hhFCfO/46NjUzqL3rhbdH7jwNAVVSSUjVg2arFTExNWXBOrfa7VWzduwMFM6vQi6HwfgZ1qerATibyXJCSHL+hCUIPvbj2vhrPWcQr9QqTIe9gRDCKaVkqDhIchHodXycksiakkoiSL8ZRYACPpj9kFRIQRJxONgxRmBF6USHgJVfQZZNhOF/PPToAIXzrvFtqmUY4InQs5DPb+hLsWKMAX8iERSIoqEY01J/EXvwwIuEdh07BVjCmXI5msn0mSGb12/kH/yC93q6CMAF9B9ffYm+dPRVn6kLt7l5z6QHe1i4vevfGxzYw6UBtGN8uyd50XGksKZfPR6QJ5WHCOBMOq3eevB5n/caiOrDiEVt2bEjCJCbGEebdA7gTw+dOo5n58p2KF49Zebl2q8cg90YBzJb6it6dljq1s8Sv6tGs4FXjQc9xoJgRBhNOYaXcsHbrlUAQu3+9ETXcquxQIoxtWfrzsDnyeSmPHP5givDUSznxYdoSd3HDegiqahz/2CkOOdYV0VptzkEQ/oXvPB29IHP/6LH7mjNdlt998/9qM93t24Urfy7F0jz1WYABk7mMlkBqHXeuP5obSwN0yBRKO38HUfSmp8cAFhwwzB67oyFPWegv6TWDY+4Ghu8v85euYgnZqb8ZLfntuBt/vZnXohkfwdYZ0IInWvUuZXHt1JGSaqaZaYUY0EJQYVcjjqFy/UoJJJz7krmPfa7YvX51I9BdpG0HRAHIFYDcui6lWOFlJqencVc6BOZbt0r0xkxWBqMhUoyoKl11ayUQpy7eolOV2Zd1fdSyVEEMMZIKITBJgyGUDAIP1BaxB0GaiUmRgn9jDEG4zwd6C+iYl8Sau9F2BfXbbUNUWvUfH4U+kWds3bS6ZR857NvJXu37XRW8ZHSdybvi1/909/pCZ4gUP7Bp1BvjMfTzL5ROZ/LB6AM8Yk4j83AGfTqicMeW1mhukuF8tqhEb5v+27fDO4YYYEJUZTGx/vT7WXXz8mcnavwV08kUcBL8nRetq07XsB7JqCYZNIZNDIwFOrebHIuWqsAsnH+vipZ1IahhwWNV6qVWKfc8HMvWmgLomrGN4xhrwgudmgzTEOevXJRO2WWHdqdlsEYgc9BJIpdp7R6LQ97qQYIIEIqpQyj7ds9xytfnNRfMzQsf+jffsdja0NIgb7nIz+GWoZekVhujcBw9uYy2VDPXSfzEERZSpnYunETHRkY8rN53jYMppMS1s/BJW255QDmUgqIcu2pNQYK/s3rN+JsJuOYMRBcMDEzrU5fPqfd2VDqL4rn9h0MZa6klOC0zZrttpycncbTszMYjL7JtzIHCKSPohT15fPhy49CnAsefr9dhAKedulUOoF/juHigT0UnBm8fLrkUF9qDAALDU7+yWefA7cn7sort657Ewr73T0o6cgAvFT7bh8iLmiNrApEzTEaUsKBR0bZX+gTA/3FsL2eIuN1GB0DTDDkqTbM3skJmE6l1dd/4EVP8JoARfBfP/YRS3OWfL3HAVA2H9i1z9UjLg7cALl95fihwEh1c9YRSvnOTVvZ6Jp1vtAFNBBCAo8W84XY+UbAiQljHMojeyW6wQv98OnjyaN7BSZZqC8KEeQh4t2O7IBMMErx8MAQSbGUnSqey8D+EGXeHM8DsNkA8DNMiDSbZCEwwE+XpyPfB+zSG3Q5eFeMDAzSDWvWh2KoNExDnL1yMeF/0BMbYvuwX0NWIkZZ6MqDx4YJzspK4rZhgHN4iFzw3hWjFP3oN3/3Y8gUbcOQH/29T5Ab925778TvFlyc0ZQSkU2vLgMwsD2TTsun9+z3c41YzmSrBlHEb9nt5fYwUqbJY58bffEUpVNpuW1ss6v1YwpTfe7o61qi72xaPyp2bdkeyJ1IKcWVUhSciGbKFTExM8UAgaqX9I5BL2NIu5hOMZXLZiMxwkLqIClEIPLhhXe5bFZgTLSjy8uYVkNdP4y/Uio5MTPpai8Og8cEE04ooUPFAZzP5sPoMvZ9NJpNcfjs8dDXs28G4E50sBUcHPoggp59UKiF6WEN3naQl2igv0TDSnQfNA91ah+UE9Pl8MPtg+QBIVhu3bhFfvE7vsD1RcngpvjDv/kLevXWjSBJDb9tKxecgvwq2h6aQTMFIjAhxxl4Z/XyBwbgIJWPTiMkGWXqmb37cSHnz0UIDDs6RNM6kSGMicRYj7U3W63wV48nUcC2589l1Lvd9uFeNVQaRPlszm4VL+V4q91iuuUg8zKgB3XBSx4TnGIs0lzb3cYyOTOFQCGWfAhlM1mxOyDl41L8bRmGOH+1tw3Abpy0ekEWo8irvizfMFKGYcTKAJJJZ/hXfNEH2HP7Dj40LMM0+e//9Z+zw2dO6CcmLgzAjDGeSaVdvxH1Y4I9iiilYnzDGF07NGKvQvdSqtFqQqqh7iWTEquRA6ptGKE4dgXNXIjAXDM0zNzoDqSU6tSlc3iqPBM0mY7bp4TwnePb2MZ1GxzXXaaCFEKArphUalV+f3qSzVYqqN5s+NX+qmoHEywzqRSJ8G4jpJRUN3TTBP45nsvAD+MvjNwwDD4zV9b+DkcIkeB4N1QcZGE5+cdTMiCvs0JRpN/0wQA8HzESV86vQDco+ylhoUXfwoJhLCWHikUGsF7JFwwHTG7ySrWq/QbqdPTpVEq++83vIDs2b3VadaG8+uzRV9Hfv/LPPfFweZQJoBxESEGEW885qaw04aD8GFs3SkfXrncrF7GoB4fo66eOIniE6fKBAfjzfMgxBLJLKdh2Yrc0rehfXejuRAGfwDMR5NvQRSZd0eFC2Wy3H3B468sXADYocOEWSopGo9Fz+z/kkaWUBc4/u3O6TDlerddYvVn32ExvVN81vh3lstnQBtNst8WFa5d6TvYfMDBgZ5XQJsphRxhjTinVLvcW5EfV6S7Wja1P7dnH//WHvurRd6H663/+B/w3L/1jt+qR/O7U4SGVSok0S/XuHrDCLKRTKfXM3gO+nZGJYScSkY9Jp1gqqaTBjZ7QM+3cvNUxqgxEwN6bmsBnNXU6Y4yJA7v2UjeG7QUhhDy+lFJab9TF/ekpCpDO5epcTGRUbzLhbpxJpyMjEiOAfxZMNycfMKalUqkE/jkyyXDecTaddrx/LtkLRqpWr+O4IZmV+otosL+3g4+cS8UbNcDT5OTFMyTsHPCeDcDWEDCSD0XXdfJvQkBwrC8/YUE/Q14eSgke6C+RkCJhvMhq3OvyWqPOWm29cjr5xdRcNqu+4YNfgRl1t/SmyrPil/7g13pXQYCRWMhf7hfPdW4H9rDh0gDaMb7dnUDoPLhHaANPzSNnTyAzSGh3h4awgf4Sf3rPk655D/l+EUaYwgERP+OvNUO6RSyXqxXxyvHDvbvHBbRmLWUzUiKIex3sU6lUCo2UhliQ8gKX0kaziXTz6nYzZQD/Ch4hjKZiAwkvpdQavsrNPDitAzCs64bX0jWDw06reirfaLXExeuXe3Pfs1Be4NWpXJ+1npgbcWVCsEqnMr4Zt3wajhSSAxxqLGSukMurn/j273+Mh2cun+f//Y9/W1u5smsEhnIpxvBqjcaglPJN60bZ+pG1foi3qjcbuq03P8aVtOEbB7Dk3CRxhwnPZ/N884ZRx/tf2zTUZ4++pu0agXfGW596DjkJtpFKcnj/mJyr6fKMnJydsYy+cXJ08k28A2yokMuBkTPAHmw0jZEUXGiXziKXy0qMPCaRtTH8pIg/HPDN+Gs9bxCv1Cqxs19YebwJAWcbXMgV/GFsD7WilBJXb1+ntyfuhToqXwzAdh8goY7Mh86Chn7GhHCCMR3oL2KIgEm+4DkA3lzluQqK+6V8OU4RSsWe8R3q3W/5PMcX9o7+TKGf/PVfQG3DCH4yIuzBynWJsOx1hWE+lxcHd++LhQLOqziAy/Wxs6dw2wjYucNmpBEmWGwbHaebN2x0NTSMMEcYI+1Ce5yMBiMF0LROqgRdNokC9sbheUMwOP35uq/M57dGw6VB7EQp42g0GEnDNFC7bcQ6HQDkUIbI6RRLuTrnHfHMx8IKKTlTniUQHbhav758gW/ftCX0eWu0mvzi9Suh9xv0PAe1HwVNt5/tQxQwgyBg6uuW7J1EjLiSChmmoV0kzaODy2Yy6tu/+pvwxrUPQ4JOzU7LH/mVn9P2vLDrmAUykmYpxljPbQG25ZQxpp594qBnV0pQ2DVaTc0Wm202JAVD5ADkfNUtitDu8CkhYv3IWtpf6LNbxSoH+rWTF88gMI7q+oEB+PPf9LYVyYN1rpQCqHcMjsP3p6cYjKlXA0iinit40+RzOcw0ucdw3vEr1OUDmc1ms+DHrJVORRf+6EaHn8ZfGJtCSk3PzmIu9JJLu3wHlNtUKq2GiwM0nYouut8uvWGWm62W+amL50K9nPtkAEZiWVhViA6OmaEFoJ8JgZirYO73kNgeIUUhLL7U1x+mjK36vqSScqZc1vYx78cEpVIp9d63vwtvGd3kuLm2aYq/+Pu/ouevXXJcN6mgFwcoperArn0Yck+shk9KJU9eOE0arWagw7Xr8MQYlQd2PEFgn3f8YSwpxgqOIcd1NaqACeYY4VAvNXaGX6nO8ZePH9KOLju061Km40RjIb34LqMAEksJugAAIABJREFUyxagU5yq1muxfkCDc2Jct4ZmuyUq1YrvMqPLuliJDjiTd2/ZHkkUXr3Z4JduXO29PQ9be1Cs17MfsgvKlXQqrd3bZv6+BEZgrfMCM0bF+9/5HvquN739oemAnPHf8dMf9mOKgmvDhlOiZQBOpcFLIDg6NG8ZkEbG1m5gXtPhCCl5q93qvb1U8/mLI3lgRDRMM5aLDu4rOzdvdXS2KiX5rYl75OL1K9qdRYvlJ5fNyrc+9fxjNAKsM0SrVeu1B7DOYUNzxlHOvdAMdwT4u5DPE6pLcCtGipvckex74YGduhAVnWZpoZCK5X5iZ4y9Ugbgy4O4a92bmog9i2BR9Rf65GBxMLbIhn5PAhdCvXz89VD3G18MwBYjHoWBXsSdTu5NK7ow1MG5naCgoZ/7C32i1F+k2hx0bhkVw3rNdkvWGw2tL6Z+sLUvX1Df+KGvdLXeDp85Lv7nZ/5u9VwwLPhABWrEnhkzeAru2rIdeclv44cchtkG5FE4c+kcCSM/BjgJdcslDZDN73z2LcgNdDMYd4KEwg1lXjAYfxFzM/6g6YMo4CNnTuDp8mzQXfV++52UH7B/+naugjEjl83JoeKA70pWhZBotVtUN+/uroICMEoA+cwYJdg3VnftNoAC6t7UfVd3kwBoCa1JSqncuHYDGSyWQutzcUf1RoNfutmDBuBIuKlfpxhjmWIpovO9Qfe8wFtHN/Hv+Lp/99CZAylFfvhXfhbN1ar6TboDigA1IpNOB+bY7oCUSIvC+nj2iYPIi/7F5ByQRGJ9CEc6Cauqc8y54CyOMMGDxZJYN7zGkV6k2W7Ll4+/rv3aGBkYEgf37KNSSo4wYi3DkFMzM2i6PEMgyjeuUdtxW1rgmEQIxX35HNVMVyA551rJcT6XUwhg4ZJPaw4EZfyFIJeJmUmtZNLtRAAsNMbYgoXuyztDmHDbp871IC3ZoTPHUeAIlouY4JsB2E5UVFxgV4OAfgZoi2wmIwb6i2y15uCJevEB/OBctbYq4AcZZfzJnXvIO559s+PDYq5WlR/5nY85rhf1/PrRv7VH+WjI8IMmp21QSsXYulHq1cvdab9Rl5dSirNXLlBdFHWFfEG8ad9Tjh7PwMOeMP6CRRAjhTWDf14so5Valb987HXfDYxRr4Oo+recIhAifkXjQYoMRikeGRiibnPaL8cLIaVoNBuO12Z0vMUKojEYZbE/lyGPdKU6R1vtVlTsDL1fSAdQ6i+p8fUbI9tvavUav3zremT9h870VdghoUSkWVrffQ2iajjHujrfgHHwI//pRx5yvmsbhviVP/lteunGVe0lCu5caploeHAQyKYzWjsIhMFgcPDfMLKWbVrvLjULINwapkEhMjz5Eg7Y5QA4koByIS4f6Cw3rR/FuUzWNslSSXTs3ClUrs7ZrhNVQZiLA7v28cmZSQvWGaC6ky9cDoARiFKGCvmcdvdSpRQXQmhDlwX/nMlKBG/s5NOWA0EZf2HAhmHwmbmyNjLpxyQQQgRjKQSw0IGl/vKD0IDbkFLxC9cvscnZ6YB7eqN53wzAyAYEEXQLBhb4p47RwEFAP0MkC2MpNVgs0mx6dUCxhia9DjuCl/FqivgC+IkPvOu9aOPa9Y44xYVAH/29X0WrEvbGilpUdDkliiNGRlAYlBvDpQG0Y3x7T10S7LASDMDnr16i5WrFTnFvZSBqXKkVebxp/Ua5Y9MW25d1cKKiFJxge8PBcx7WSdvBQMT4kTMnyHR5xpssJLUf5oDPeygoooZKg44UUXampN5oIFBY6fxZ6DkQRk8ZDiolSRTjN7nJp8szq+aMSqdSas/WnZHu7XP1Kr9660ZP8LwXHPWCWHewX6RYCuscBQy6AimUMsy2drKYzWTFN37wK+jebTsfTA+E7/3Jp/+Sfe74oSCmzNc2uznZ57M5V4g0vhKpQWNwx35m7wGUcpUPGfOW0YplRKcGrF+1JCiEpGHEJ2o8lUrJ7WPjtt+vUkl+/c4tdvX2DW3nGKJNwcdaSiuvL2q2miqfy2v7RtWWkT4QhgkR6VQK5TIZLR3WlJJSCGlb/n1gyYpNZNJpQSnTkldBjz0u7Qdp/AWMtVq9jsNAOIyC33An68sV+GBxgGn9fgmQOfemJsXFG5dDW+P+GYCBKSvAQD/Ks/n8cRIppM0jkBAsGE35wnzwaiCE4MFiicCjK/mi5wAoHSvVqjbyFgZHBopF+bXvf9HRJQb49Kl/+jQ7efFsGCRq2Uc3RYqWRCOE8rm8OLh7ny97mK5jXI4u8KC6eP0ym6mEBOu7gtMTRODv3baTjQwMdWUjRgCFgjDk++0V46816A5krdb77VxtTnzu2KFVuV66CqbXAh0IcOqHsx+si2KhHxX7+r1SNV8fC8Ns07Zh+NSe/80AZCcYvxllWsKoex3xxMwkAtijXv8IxmjL2GbUHzHMVaU2x6/dvqn1fmxLFjoOJrhbCgZbbfVgIUopT7GU3vOMsUBK4rZhEN2gNt/5/Fvll737ix96M33m9c/JP/37v3L0jopKtFZKT1LI5aMiS6t+wfiwbmgN2jI65ubuJ5vtFlkNZ5dWkxZ7YjCXUmCTczcyF+roITJzZHCYDZUGbPdbbzbEqyePaD42LJR6OH/qXH1O9hf6CQZPy+QLhQPgqJZJp3E2o2dQFEaICymZTnt8PpcH+IBESEORUOedBGr8BXIU4uVqhbWMtnPiYlIDdB4YYzLYX8L9Bb90PTEZPEII0iccOn00tHeGvwZgh3yGhwpCGB6AWmxqfkA/A2whwZiW+oq4v1BwyJGkeIAc4LV6vac3z6V4l2KMP/PEAfbC/mccsfbM5fP8Tz79Kb2VSI5G5LywHVh7560GVwMgQg/s2qftpTq4kXdaBgPw5ZtX2VRIEBoryQcYrN721POoG9w/RkhgQiDyt8fWGpYYI0hZGvS0e2ofooCPnjlBppIoYE98XLGyT4ZgcNDLpDNquDTkl0FUVes1bQWUMQaRv8HNS7Qt82q9yurNRrRUBNw7oZSvGRym64fXRC5n5eocv34n3gZgHR2HAxYhV80DlJruZ+/8wJRhGlgnRevwwKD84X//XQ8pYS7fvMZ//nd/NfabcWIAfng5Pb1nPwLFrdOv0WomOUKdMi0pD+YbZZpcq/1uuWnZsXmL7funQgodOn1cT9Q4y9lIwV9LGqelkqpSrciB/oHecsDWeL3lczkE0b8af0IIAc7LWpAI6E+ZTBrQU0MzDmkx8BgQAXrANGMY3uvBfkpNzc5iLno/9QQ46IHuA2Chsw5SEATL/3Ba/+zR10JDpvPXAGwDFnMpFlqKdITgkA56BS05g50k9IR5gdiD/DqAzV/q60el/mI4kpL04ogDkOdDJ0WDI+I9FAY4hRf/xZeitUMjtltpNBvqp3/zlyNXWtomOMCC87ktwQNLW+9WmONdW7ajwaJ9j90AWRZJ00ohfuXWNTYxPRlK/xY8K1KQSugxuchmMuotB55bcf3AmUEIxoTQnltnGGGBMIrFgzqJAg5luVgR4XDH8+JYAx6iECg/XBoiPigQRLPVolo9qKyoeUQYTfV8rkYhhZycmepphUY2mxO7x7dpcW+YnavwG3dvRfLG8m2HcYAy5VufMWtoPpWEZDGCCzS5iYQQWnAaFE8f/vffiQYWvePLtTn1g7/wk7G6pz2aDxjQJHKZbKzGEKRAwDoZGRgS2zdtcbQngrGr0WwGSVrSdm9zQLUNQ+t1mM/m+OYNG22tCyklv3r7Brt+95ZWswZ6XQXpvGTXqEnI6U1qzZoc6BugqxV+NIzJA6c0MP66g94Pg8L5PjBSggsLJlyHL5vOcNJzQQI6cNYbDZ2UKwyHIc8gifenJrwRHLPa83dWMVQcZJRq8YwOlIMQkHL60jlSqc0F2s9C4/4agKFVm7mAHxsdRgIjRKLIvekV+hlucoVCQQz0F6kXI3IoM75KOxFSitlKufd3kGXmd2RwWHzV+z5ke/wm5+pjf/xbeDosON2YyKUX40VQQ6SUirF1o3TUYa7noOiJrF2lxNU7N+m9yfuhkbCcPKwfXsP3btu14gMaLjS9/NiMy9iEkPLouZMkrMjx0IRT147m74grQVXaIX2oNIi8RjQJKXij2bSl6LJDk5cycTTceBkvgFpNl2cwGH969QOnrJwmHszTlVlx694d23fAXp2T1TKuGEUBw5RISAxsmmbk8plOp/mL73n/Q6hJ4OX3bT/xA/ESHQthzYIOtHhKCJG5TLanHW6cThAYJA7sfALlslnbVSGWsNFsam3Asz2YpGD4HMBYKqGkwQ0t7p2PMoACPPrIWlos9NniTbVeE6+fPhb5vv0osXCfhly/dgahkJK1Rp0YpgGRwISSZJu0wzcnZcCYU8jlcFwMOZzrE2mZy+bigujiRCRiXTZM4691QZZKTsxMrrqNqRNog/BAfwmV+no+uFJcu32D3rx/J5S14b8B2CPZnWhgBbmBQ7tQuIV+hgMtk86Iwf4iS+kNZ+FxVmJeHSPZaDbJavbaTadS/E37n2HP7N1vazK5EPxvX/pHdvjMcVvlV00hiGJDiiLV1as0FJYQQvhwaQDtGN+u5WMyFCa80Ym8fucWuTNxN7xul0C9gBx8uzZvY+tH1i5LB8DFxASi0RUv53N5hHaGuyJyUaVqvSo+e/T12NDrdbw61LfgXBUiC5HBTmmyFAr5vBroK3l6FNUadS3gHOEOuZocCOGu32g2ZaVW6bl1RykR64fX0ZHB7jngncq92/JT5Rl5+/5dT2vFbd9JvXA5ANFPkFYiVhDyGHElFTJMg0UdebN/5x7+b77sax7cqQ3TUD/xa7+IJ0NKL+KbtCyKmIc9KZvO9txe65VXQ6UBsWt8u22+SCUt5BCv/Sb1Vy8HACHJ5CYVEoAD9fooIWrn+DZbhlOg/NWTR5A2qTw6+x28K1zpQ2bnygC/CW+K2Bgq9ZKex6np6AII6svn4hRdrTjnttdAkHMABnOwMyAUnk0kyPH0QtthG3+BZ22jzWfnKq72tV7gOei6ARZtuDhIwCGiV7+5WpUfv3A6lHn23wDsEgb6ocm0csYpGng0MDySXUA/gyctYyk12F+kuiax79XF4WZc4FBQqVaJTh5dbsbhR52v/pIvQ0MlezDBl29d47/7qT8NZSPyY2xhthE1bP3CWPO5vDi4e9+qU0aAghAgA7kQ8G/BuQn/TfsLfWj/zt384vWr7PbEPXR74i4yg/bkfAT1glGqnn3iIM4/eknByHJHphRQcLV4WwS2ZAjkXcI4NnIJUcDHzp0ksVPwBjaD4TX8IIoeI44cKm7gUQAOfMMDg65SeGCEeMswmGEa4Q14UU9gqMGYAIRULODS/WYSRFPdn5roqc0Q5LkvXxDbxsa1ujtNzk6rOxP3YsfrB44ifgtfj7dHCFbpVCZW8z1/FoARONI8mblsVv3Uf/zBB7xrG4b49U/+AT1z+UJspYYxxjOptFZ7kg7MBKSafdt320YTEULyltFK+KjD5MWcBsM0tXA+XMzGgf6iWD+ytuvbDd7dl29dp7dCilZaaaoxOA8hZAfueUWJAeMvoNLAOTTQX8KxcqDScC3MO6KhQj7PYnURQUhwzruugTBYns1kOCE0OW/CYLaNPiB1W4oxEgbs8xvkYFlr1Ag4q6/2Dxz/s+mMBQsdfN7l8LktlFSfO/pa4NslpVT6bwAGfrmFgX6E1yvlWPRjWpxCPy94IAz2lwjkMUi+2HBATc3OBL6g4sCNDWvWiS9/z/ttXWzA6/3HP/HRhG/LTCwoJiGxpVL2YIb8lg9KqTqwax/udSeUNwy9HHH4hKBSSrCbzHv7dnLH11tNUByqb/7/2XsPaNmyszxwp3Mqp5vDuy+HTmqFBhQtkJAshISQQDRIBkQQw4CxwYaxPbPGLOwFsxaYJTMzMLYZYGAxpBnAMB6MzRAVW92tDur8cr98Q93K8eww6z91676b69SpE6vOXnrq7lc7/nufHf7wfd/5fTAnAgy/YFip1KryxuptefXWDQYG4Y3SpqNTsRcGWmNMvevNb93z3YChB6NwheTYFJPpwIXAym2zAn+KRVHA/sh9X6s2nAhhL5zKFXBcjw09CDBC1hsNXxYrPGAmWcmkEBKVapm2u52h5y2oBWAtPnDyLA7a43S1uI7uhY1DqucMDNRAUeTykAselK8MgoBDyp1lGAYS0h9e4HgsJv/RJ3+QHF9YNqUupRT/8a//nP7tU18cchaCkR3uqIxSqWu6pbdfMHrtXS/ymSx/4NS5wUp2jFS3a4w1bYF3Uo9agndqNwCw9/2ZgOCWlfklYgUSvVKv8a+8/Pzgb8aDaXaOqhWLDu+oSrXCwNCQS+c84ff0QESeNwGRvxrTVDIRD8QaGUYASikuhAhEv5OJ5DBdj/K6KAF/jL8IKYV4pVZh4/ROdmKaABYa/oxTklKqZ199ATfbLVeHFY/FhTsGYCe73YNcJcgFBYBV6GcMoecI0VwmiyHCLErhkkDH6IpavR49fBFCuqaLd77pa+kbzj84cBLBmPabf/L7+G7YlIYDR+Zwhj1cWw7XfmB14LUO/IKFrLVobi/6NGobUsrtqF7ODc4FJ1IqgjFSSCFhevjuNbZjpAA2sFgpYbgc6bouv+N9HyLLc4v7ugO2Y4kUxQijtc11cenGNXZ79S6CSOFWp227+1uOShCUbCqpC7k8f9P5h7cfDwD3hQlRlJJAPChsD3SIgmHh/905JC6lfB6igDeLQ4w0yuqGBLaoQMSwEcH5bA5lksPe0ZRsttsEHE08SRgLghFhVMNh/E6cllHH6PJSpTQWeyMYf4/NL5p8RUFK8D3dXV/FYAQOTTLvVRj8M8Zibfghd1Bi65rui3PLyOPFSHGDYy685+IDuOQPvfv99P1ve/f2MJ588Vn+2yFFRAJnPECkaXfbggC4KSHACTzWNCTDrD/Yty+cPIst8J7yTrfL/FiTw4wnyhsWCWB45zLP7p4DxKIxTZ5ZOTHQ2Uoqib781WdGejePOkPmu1spIYdEDRrULjglNpp1Cgr4nhE4i0FXHCXrEgDn/Jiug0NuKO8eCjwzhPC97+AcrOs6XICiO7D15edKTgj40ZjmceTv9lDURqmIAfEwSvclQDDmhBJayBRwakwcJaRU/PLNq8zNtzq8b47NLVF3DMA2IjisLGrwvlBKDbycDKrLhKUgBP535AYP7SGlSDaTRbl0JnosDRJsMH/ntUaddbr+QDwGUSTw8P/URx5Hg5wZhJTir574LP3S808HcRgT2ydKqTg2v0SX5hZCKQPTmst78M1SCtGL9JDEjOrFRMDvSKmBDhtSKYB+VhuVEgPjcT+9+YFHxPvf9u6B5SGwo8sNRQmljXZT3Vm9Ky7fvG5CRw8bKdWPAgZUidPLJ+nKwpLZHfh7QshkGXogZAsT3x9Pdj6OerMuPv/Mk1bWjp3qozJDSmDLEAyR/pbmBCIY4rG4nM4VhnowcylEq9Wy1MaQQ9iVHe6UlFA5lthFIwhmrbgO3Gsj1OB/UUAIKmRy6NjC0lBrz6Oey7vrq2Rtc8Oj5hxoZgd/qQO1TWQVGCPBmEZDyy2OIQhYqa7R8fybWllYFv/s+390+0y4uXpX/MJv/LLrZ4TTCxU4PbOZLG40GwggZ3sOi0gopcwoN1BsRkZhBO9h/vCZC4PWmWh3OtSvyHSn10ZUXzAkAG9gIK71M4EyfbowxaZzhSO7IYSQl25cI3fW7/nS3S24Z6Kku6ggwAdscHO/RLl0FoInfBlvGBuFCPKYHk55AS2QkHKXTsmvOUjE40ARNOhM8qt7E9Ouz8ZfMwJmdSNEzrserwzQ+8Q0XRayBaZr4XfWWS9t8FevXXbtu9c1TT5w6hxxxwBsar4RRG84+1hyKBqYECwZ1Y40JMOhn04keS6TDS2ElsffYGCbK5ZLgeNZ8VtYxxeX+Uff+8GBG8zN1dviN/7495z9jv0evJvtO7RHHdZFUDJP5/Lo7IkzA+fOzWFarRs8m/sQzr2o3oPhm63W188HF6JqvY5qzfq+osDf9o++6wdsGSC5kFxJQSCtlzfF1VvXyc17dzBECteO4t/YOu8Yo/KN5x8m2VTG7BfAL05alB8mANuJQ7E+9y4eLoR8/rWXyHqYDCXDfjwhzG/ygCLzHTTwLALEFkYJns5N02F4eoBfB8L43UwQSRBWSFYX5cKr9RprtpsuNuF+1bqmqQdPn7d17rjfOyXvrK+FZl/bS6vgvnzGtwVCidBZiKF/ew7luNPtAAKMdxOFMfrMT/0M0IiYbTbbTfXP/+3PBfT7PlgsoMeYn56FMfCb9+4ceieLjMLmXV2eO36a5DPZo9aYarVbEIng3TqMWpoACWDZ6XZGDm4ZRVCwV5w+dmJ7vzuwLozUZqUinnv1Be/fd1sOYV59en0+4P6Zk8vkUCwyAg9cYqlEAmmhNsJgIQT39q5xgFThe0zEI6rJgQvO5QwEY8F6nL++3f2EVHJ9c93X88FlMTtWfT6TVflM3re5cmIgHaMrn3zhGVfmm1DKl2bm2FSugNwzADshhSPqGEVBANxcBB8sW/CIjem6yGdyY+FJ4PI0BL56iGItVcoDlcaBH4jDHdR1TX79Y+8gD54+d2TNYLz72V/9tw63Pv7VucVfnkwkxRsvPBy49QwKEcG5GdXbo+nlWEhJEUYKm/DNiiqFnDiUpVQSFytlUAgeuJAABvpj7/kmcmLxmCMLzTAMjglmXcNQd9fviUs3elHCwCe8SyGJkcAI02/4mneYURaUUhw2HtyRBRZS/t+d446igEdeBe5VYPKuIzAFD7wcw7cHl1yAvrSQeKfbgW/cQtYhswBMESbAJQYbwpCFJyO7EFKsl9YDd65ZlX5feZpOpqwW8TqfuLN2j66XInh7rwXvd3twF9HYWMDNq67RxTvRXtyULXBkfeojj9NHzl4wm4E77k/94r8yo8KCnsBRVGMUL8zMU0qZWCuuU3BwGiZNolEY3lePnnvwyHOo0Qq3o9IwayDK65UEMJdSYINz3+5AiVhcnFg6dmT7YBT90nNP447hLaLelr5XKIfhno+cXYwkKOKBD7ifDyKBY3rMq0URqnZAd56MxzHo18OcgHKMc4E9dTY7QGAgR12L4J/9XEs9HmsKEPAD9Q1u9rPT7fDSjn3IzbbCXjcgWWACsNB5HOD3+JFihr3nia9+BblBNcIoVQ+duWAqotwzALsEA70tNTuRdj3oZ4AM3/cxE0IFYxQVMlkaj8XD/g1E/e9JQDRaLdpymUw7rMLWNV1937c+jo9a712jK3/nz/6Y3Lh7K6zD9K/fPYMg2cdba7NHwFP16PmHcTzm7wMEDiUTwlkKyQ1DgqHXhG8mRIBFFKDlbA5x0KEogJcaIJ8HXc4fOfsA/+Z3vdeVfgBHAxcGgUthsVoW12/fQK/fuUXBINzpdtXbHn0MjL9kIo09GEuCD/GucmNRuFAnRAF/9bWXwgWX6oIcglwlQJsqwJkZYAgGpUQ6mcKguBmUFJKy3mg6/tDTGFOU+uc9PGjcAfldbZSLmHPv+T5HHT941M4VphlE2gU3KXF79R7dKG8Gt4smZYJpZ3P8Gwz0oD3oHKWUa0xz5T7kQfd3NQEGWK84M9/1lreK7/zAR0yjSLfblZ/57f9AwPkvyIlSItPJtJotTJv9hgv5lZvXHfE8GnejMEQBnzl2kkzl8odNsWq0mo7IMshrKOqbDxLASIGvsVcOLjtHCA4jC9OzLJvuIVcdlKSU8tXrl8mw9EgjSRJjQJKEPcwXw3iPD7hBd6LTALpXpCO+P6twJoCuI5VMYuCWH4cUhHdIIp4QGGNf1v04zOGoY4DIX8oo1n02/iKEZb1ZJ8M68I06/rCXB5se6F6mcgUWNuQGoEZ8+eolCjQETiY45+enZ9lsYdqs1j0DsFm7Cd0UmEfnQdDPIBCwCecz2bEhkXZywYS8LlWuVrEbXhQhl4vZffgeTi2flB969zce+o0qpeTfPf1F8ndPf2kchuzLGHrwpSafuO29EGCEz588gwrZQxUTjo9NSImE4IiDsRfgm6UgUkgIZgNOTuBjtz0eO50t16vI6iVI13X1E5/8tGeKGoMbnBDKXrl68WioaDsDD1mZcYC8bjQb4nPPfDl6fAV97ZkR50ejCwAvt67F1HR+ipGjI3Bls90iThgXYM+H8H9GxyLyzv1VgJGEyKpavRY6DRIoas6fOB3svUIpfmvtLgM6lMCmHnoEQO95dm4HVhYudAwil8bEKU0CMbBhGK5/c4VsTv7rf/jPzD2paxj8//x//5A9++qLLsyOc1XOTc+gPgUJQkqWa1W8Udp07ZsaN6NwIhaTb7zwyIHnkFRKttqt0J1Rzq2uqCaXJaC63a5J0u1lgnPhwskzRzUp18tF9cLFV1zfc3uaaSwwQkRK/+8CwDtTqVVRdyvqGTbSdCqDElGgENwnQO+B08nEOKEbKc7hKupfiuCf/ZN9b/uByF8GcPje7HdHDFcpxCu1Cmsfgnjor6SC3zp8S5lkSuSzBYjKCX6Hez1UN+7ewq87HHgHsnj47IVtBGR3DcBeiboXDQzRIId+rH1Izj708xZPoWn4zaTSXvU0asdDCSikVLFUCs0X76FotpsCMvD3ve3d5OzxU4c2v7q5If79H/ym7wehH/IJQpuUUnFsfokuzS240h2IpjWjerfgm7kQQIJiwjeDoRf2Vr+icsADV0lJipXSULBTuq6Lb3n3++mZYydckdlhldZbTQRGYIDCnsSEERIAvxL2sZtRwBdfImvFjbAPZTL6P8B4hDGWEJQ/lZvCR3mDCi54s9MaybEFHo8QeTwuEXdeLSC4r61urIXqvgYPKnDMigccFlCBAXj1DtusOOtR7NjawEgghGEJjPTtOdafMayIUsa1sOMz9ucFI66kwt1ul8Il1a0EnO3/43/z4yaVAFJK/qfP/iU4IfoVAAAgAElEQVT5iy/+rVvN2a4XEywYMSGfSUzXt+uBu/2Nu7c9h60Os1EYILNPLa3QmcLUvvkQUvJ2px3tUbZXalTwSAlgLJWQsssNT9dYLp3li7Nzh7YphFBfeP4pDxFasPAr6veg+enpEjexVD0GGrjfp+JJPMkcrQC1SilDqWTC07Xq9g4CbGbAAex2O0fVD/cOXdMA5crXfvgpA7/ahvc7oxTkHxTZq41SEU+qTtGJdWDqZDAm+WweZ5LhsPfVmw3x7KsvOLYG4Y0wV5gh89Oz2zoWdw3AQYkA7kE/Y0pMUkZARML5bFZlU5nJ42h04msKSR1do8ur9fpYXU7cEH0iHlff/9FPYDj0Dks/96u/5AoevRvjCXSdFpxVdvYfEAqmc3l09sQZR9YxXCIgqhcedEYPvpn04Jv9ieo9aq4UUqLd6ajNankg5PNB9Vw4cZp/63u+yRG5WV1T7W4HPLdEsVL2tF2r/XM1H/A9g+9keLzsjhRHFAXs6mpxp3ILUYQA75hKHM7VWmvUR+obPN7pEWfpSJWPcWFw9ilXy/QwbvegDZ1SIhZn5ul0fr+hIGh9BQPwzXt3mNOQUo6NEwzARzjwOtbOhFc0RlHAcNOAtzxAM28r5p2eXuDg+/j7P8Te/savMat+/tJL4tf+8HcdU8o40V9CiEgmkgogXPfW1+p2xO17dwLR3zAZhWO6Lt/8wBv2RfpywUWn2w2EPJ1YO1EdgZSA5JwTQODyIhFC5LH5RZKMJw5sDtAWXrl6Ca9tuuwMa8I9g6k1eEYv4IXtGAbcT7f32B7nbQIn40kvpilQbQDdl65pKBGLjd1eCHdlIYSv+ptEIiGBPi5Qkz4BnYGI9i3jr6/zv1PUcMddLa5PgPTdHyLclcFpZTpXoEF32gYqiC8896SjQnnw9HmIat+u010DMDSDEUcKefcxHWBgwQQrjWqmYjqZSPJ8JsuOMnY5KvGoMl8kAMrEWr1O+7AtvnQiJI0SSsUDJ86q97397x34nXYNQ/zff/H/0Ms3roVkROHophW+u2QiKd544eGhL9lwePSjeg3D4EIKInrwzQorJGQIIm3KtQqCiFq7CYwwP/k9P2y3uK1yXWGIu2urdL206XnUha0OO1gIon8RxmMDBQVRwC9cfJlEl28HF4lXVW05H/Yd/nY2CwqvZDyhCtn8Qfsqb3c6DHgmh0oAhQaQz4zRPsrMUOWjzKYEOkaHl0LgPAMR5ZlUSp5aPuHd22aENaKU5Dfu3WHlamWEWtwpetA36k5Lk10r8KZTwui4BAHvnE3DMJCQ7qCuPHT6PP+R7/yU+Z2vbhbFz/6Hzwx9H3dr5YEr/3RhGuUz+znupVJirbhOrdKmuNXHo+oNqlEYUJdOLB6jc1MzO7svukaXGiHkqfdjbqM2R5NA1zCA+3a0SiyUZoypsysnD0ReUbCHbG6ol6685to9B4OOGCEqJQo0+gvoFJutBgWqkn6Ct0QiliCpxOQYgUGHFNN0HI/FLKyucGWB80gI4QsP9441BRzT8OEH+nsI18wO7m0Qjb/QayGVXN9cj5wBBk+h5RxbzjuikM0zGlDAQiGl/OprL5F6q2F5XIdlhH2tkM2LY/OLu85x9w3AI3d99Ap0TVfxeFwUMlmma/fhkUavOaohyBIAvjMvLtBBloHVvmmapj74rvfik0srBxZ54oVn5H/9/F9Hh5BVgVrJN4C/klKqHj3/8JEX7R58cy+ql3MhOOdIqq2oXkyECY+nVGAUVhbEYhqri5USgQfwKAlgoD/4zvfQCyeO5DYapYl9Zbnk6s7aKkAT8vXypmuPZkc77WBl48D/u1McjVZTfO4rT4Tp+3FwNsegqq3IQjB+7IwswIRwjVE8k5ume6N1QXHeaDYsz/kWvYhilEXnowNLZrW4Fvh7G5zND5w6dyRqigOicKwKMAC/fvc2Ay67KE2uBHrK29jYKRYhQsswOAanR6dTTI+pX/zJnzZl1uWG+sl/8zO+y69HaUDx/NQsTsTjBw4ZwqOv3Lzue1+HnY+gGIXhTfzYg4/ulB/vdDssgmIcdkaj/LYkoJTouMxzTjAW0/kpOp0vHNhFgxvqC8895a5BDJAcAsD1a2WOQN9Sqd/nA4YyhGCZiCcxQEJbqSPseZKJBMDjhn0YB/YfI1ONZgtxzimB6LquwCkDKRS9J50S6oB6wAkF9AAxTQ+czq7T7fBStRK4fnk0Na41AwFYCGFSyOZRNpVxrR27FQMSwZVb19nd9VW7VWyXM6mqTpxGgAC1M7lvAPYZBhoGvrK4DB/2yEKMKgiPBADDo1ytWFbihmdk7vU0nUypH/jYJw68xJYqZfm//O6vRRcSF8RvRgIjgGC+z38HhjTgFoTDqZ9Mjl4w9kqAb+4KISQNKnyzHTEppWS725ZOwiefXj7OP/7+D3t2eQKl283VOyaZIfCPd4yuHVGEswzGEng2wtn5g3sdRQGPx2xuoy3suY+CJ+h0roDjsV1KdNVsNfEgCD5TUY0RYpQBvch4CMr3USherddYs93yvSeHdQCMvyvzSzh3QNRdUDttGoDv3GKVei0wXYwif72fil6UAwBgjeF+hbGQQqKu0XF0cPFYTP7D7/x+cnJ5xUTV+Ze//AvIz6haQrCI6XG1ODPHDnO4g2i1UqVMNysl7xeZCy36YRQmlPKV+SW2ODPXH5FsddpAmePCCKMqIwnslQDmXHAG7363EuhHTx87joC2ZG+SUqoXL7+KN8qbzjcPyneFpPISHdKhUZhv+/LmLqM47MmJWAKnEqmxev/uFBkwOyUTyV0Qog6JNEDVYJP/18/AIaBziKJ/vVsSpvGXUBzTdUfvjc6MAMtas0YaTftIiM70Y3xrAZpFSimZyhZIYrceyPdBb1ZK4qUrr428LrPpDD+5tLJPD+6+ARhE6DUM9Na0waMB8K4fPf8QarSaEYm278vZsw7wRqvJWu22Zw2OQ0OMMv7IuQfIux97275LLCjDP/Nb/w4FWTEb5jnYqQxllMqFmXkyU5hCHJLgoYNvtjMXpVoF9mk7RQ8tAw/cf/LdPwRGGkfrPawycNu8ee+O+bMhOF8rbnjTsCejO7oRiKoEe1gAuuJoF5qtpvhsFAXsqEz9qmx7n91xJ4U9IpfOokwqvd0tg3PR7rQPvXhjjAUYj8GYMi6c137Nyd52wXlvo7Qx8qPHjfHAY7GQzeNj84uB7N9hY5ZgAL59i1UbATEAR5y/bixPS3USgpU+hlHA5uAx5kop3O12HFPiUkrkB9/5jeQD7/wG1Ol25K/8/m+Sa7dvWJK105ngzMlnchh47I9KoMC+cfcWGme4Yi+MwoxS9dhDbzTpwyDB+9dP44DT6ymqL/gSAHh7sJS6kRKxmDixtLLvLgPRR3fXV/Gr1y87es8BY4tCiKqAwz0PkjW87UuV0m44TXDM0eIom0o7KrNBffHidzh3UokEHkvHsR0ChDPFMAzfIrnBoQscziAy0Yt5nfQ2toy/KKYHL/IX5gYAHsu1Cut0O5M+Va6PH/a4RCwugRrMK33xoEEBAscTX/3KSPsRJUSdWj6BAblhb/LGADxolC79vgWThN504WFzM211OijihHVJ2MGqVpWqFXDlClavQtAb4Mb+1vd+EC3PLezqrcEN/id//efs5SsXQzCK8HWxB0dhHvgE5uD0sVNhhG+2I3iA3MHFSokOzbtpoTVN0/gH3v717KHT5y3kHj0LKIdur99DZpSAUrJYLZN2ZwIubyacORpLY5gQQrxw6RV6b2Nt9AUS1RAsCWxFBBNCBMDjzOSnTOUNfMdHRXkBj2ZQHgnBEujovQHZF8ubZrRd0FJM1+UDp86FTjkjlRTXb9+ktUbdf5HCN4cURgqNnaLUf+EO7gE4rwBX+ZijFqiu0XUMunR5blH8ix/8MeB/5X/wX/6UffmFZwYL2uEcoMiZm57FVvgm2902v3Xv7tg54w0SqdNGYXD4WZ5bZP33sNMOqoPGE/0eSQAhLDvdjuN3Dljb89OzLJfeD3/Z7Xbl55970vE2XbJj+7FIzCCTxh5+RnCCBprBXCozFnsv6KUwISidSJJxo3c6bNEAjZpfKabrglIW3Ys9mICgG3+3RKA2SsUoeNGD9QBNbN0fcT6TM4MC/E6gR37qpWfRKHSIqURSnFk5eeCe4o0B2C8YaIwEJZS8+YFHTAu6QkoCbmqj1RqLw9nvxRnU9qWSarNcHslrIqhj86Jf+WxWfu+3PL7v8v/8xZf5n/zVf46+nVEnocf9S8DYC9xlCmGxE/4Zqgcu5oNgmUZtOkjlYT9udtoKoOrc7NfxhSX+Xd/0UU/WLUBA391Y2+ai44KL1WIwo9mclDlcnLbDJJysOCB1RVHAAZkIF7phRgUjJTDCpvPNdH6KaEzj7U6b7YqgwpgTDA462sQoQ1wQt4Uqsag367TeDICxckdvIQrszMpJZMUAY2GQnmZRUoqrt29QP6FrtwccRf96OvcHNQaQlboWc/Xe5fsgAYWFG8gJR2D49v/NP/1piBRBf/nEZ9Wf/s1/9ex9CYYajWl4cWaOguPRoAQc9qsbazQyVvYkNapRGAwfjz34KKKUqEar5dm8D5rn6PdJkQDmUgpscO7oft3nBdyLYANK5+cvvoxK1bIjAjZ1HAqJMMI9DxCAqtQruNPdTfNkGoGZBgaEwZu1IxJ2pxKgiyCU4nQiQScI5UhxDr7s/qQI/tkbuYfE+GtunKvFdW+EErWyLQFCMCekBwudjO+PnPVKVFJK/ur1ywwc4u0kSqk8vrBMdqLb7azHGwNw7xbO9xo57AxoqDIYgVKPPvbQozuLcakkabZaZBDH21BtRZkDI4F2tyvqjbqjl+XADM6DjmiM8bc89Ch76xvesqu1WrOuPvNb/963y5EHQ3e+iV5kJMDRYQSKT2TSww58GGRSab4wPTcwn/Md9qZGuNgA5LNXkOL/+JM/iOJ6zPXBAY/x2uYG6XP/gmGpVK3QcYejH3cDcBQF7Pqn43sDW4pi87YKEJuxWFw0m03zHgG/wWWaRd7ZnswTOPGtFdcDc9cAPsi5wjSbn571ZPxONwIG4Cu3XvfdKBTx/jo9s/bqA3QsjU2EI4sUUgCs40jvwVgsJr73wx+nQCd18fWr/H/93V/35G4OsHSZVEbOFnrIFFYScHdevfV6YPZOK332Os8wRmEwwAPf8vL8omi1D6eF8HoMUXsTJQFlcO4YogFIDngBl2bnd+1jSkl+c/UuvXzj2sj7B0aYqy1H9zGeKbVRLu6bF0wwOO2gfDrnyTnhtHwBJURjTCUTiVD23648wFEBOIDtlh+lHMBrx/QYwFb60v4ofQ9T2Z7xl4CsA7+2hRRyfbPoOBJDmObLz74SQmRc12UhW2B+BWTdXr8nr968bmsNxGNxcf7E6cOpzB6NfdQdcgk/Z63f9pYBGB5twAW8MwFXY6vdMT2EozQ+ElAIiVq9RkcJmR8fadgfCXg9P/6Bj6C5qZntSiAa6n/7/d9A5VrVfsXjWtLca0wIZ/CWhIgyCRFlpuHXRgKPy5X5Jbik2Cgd5CKKGwD5XC5RryA+AQb6G7/2XezR8w+6Lhjg7NgoF1mrc59/XEop726s2TrAXe+wQw2AtzDGOPAX6lGG22y35Gef/tJYz+Mo8hmXsn0jVUzTUSqZMuHcNU1DYw6ZGqjpg/OzVCmToFC2JBNJce74qdAqZpRU4vKt67TZagZqnqPO+CcBSikoqcf6zN6SLvACo063ywAHzG56+6OPiU9+6NtouVqR//JXfsH1ewC8AeD9dZj3/kHjgPdvqVKimxVnovfsyiqM5Y4yCoNy/k0X3sCF5JPwvYRx+iahz6rbNcCDfOSxgmL72Nwi2csL2Gy35RNffXqkvQ1ggwHdbIzgno+UN1gMi5XNffsCvIkZo7iQKYTq3ogJljFdx3E9Zkt3NfLi9LEC4L4WQviyx8djMUEIDdVa8XGqbDUNjg2EYAgGCYWcO90OL1UrvqxHWwIe40IACw1/vE6tdks8/fLzQ69XSolYnlukR/XZwwhgJDznfMJIgiHrwokz5BDYNgWRWu1OZ+IOOq8XsVft9fjjSl41N9btzBSmxSe/+WPbG4/BBf/Pn/v/2HOvvjjW4x44uB0QzqjH3QtvsqE36EHtJOMJk39qUL6w/A6hz81WS5VqlZEemHbGuzg7z7/nQ9/uuiwVQrxUKbH6DkU7RAFXajXfo6/syM1KGYyQQBiPPUxUFAVsZTWMV550Ko2kVCKmaXT8nHGCPVftboeXq2XX9+xBUgBDzIWTZ03417AmqaS8cuM68QpxY6+cosjfYK4cXdcRwZ5fxzwXxpZRAne7XSwVXNmHT7lMRv3sj/0LLKRAP/HzPz18BRZLAISoRilZmJkjwCc5TIKHyOt3biE/eQyH6W/Q8/ZRQcCRN5vOAD2EgjcfI0QRwjCjxOTShogisv3P8f+egj5vY9k/gFIWSHQ5OLKMlhhj6uzKyV16T7DaPvvKC6hSt+/gv3XOjyPc8xECV7zZbgG9xj49MsZIMMpQPpMPzfs4EY+H+q5r+8vASEohCTj8+pGSiaQfzU5Mm2Ez/gL3e61RIxGVRzCWKAFIfEJoIVvAXtJAgU3r889+eWgh6JqmHjh17kjbpncGYOi+xzDQwD2BMZGnlo/TQvZQyz0XUuBGqwUwrUMLOSoQLAlwznm5Vh35ghysUfnTG13T+Ne94S3sLQ++YbsDr167LP7gv/yJ48ZOf0Z4dKu9SF4zstccby+qtxfl60V/Af5taWYeJ3zkIHBqnLC3blbLaGdkrFN1W6kHHIF+5Du+1wv+RlmuVUm1UdvVLYA0vbu+Np6ORhhLgidAi4wQQJZHUcBWPriQ5yEEy3gsjpKJlOLcINV6FfRjVNd0HtdjDIzBsKdEyT0JwJmxtrlu8iD5lSglcnF2gUznCn51wZF2wQB8+fVrxI/zF5SgXt2ZHBHWBFVCKeOaFWLZMZKJYRgIjLjDppiuq3/+Az+Gc5ms+rlf/SXsRpQtROalEkk5Pz1r6w3b6rT57dW7tsoOK49JyA9Q6RAxpFGNnFheMVFAurwrO50uAWM7OBZghKXCJksmVlIS+EuCsSKESkqIooRiRsFOTMzyYCyGf0b3h0lYQc6OEZxtgQt4FPo6grGYyhfoTH5qu3NSSX79zi12/fYNex3GGAJ84K7miW7EXiddLaUq9SrudDv7GoE9hFKqwAhMYJcIcIKIcF3TAtxD97qGEeJcCObHe4NRinQ9xhFC0dntxhRjZJ7FYYn8NUWgEC/VKuygPcUNEUV1WpMA3NF1TZdT2Twb1kHTWgu7cwkp5YuXXtmnUz6qLkKoSVsynT9ab+GtAdjO6Ecos+W9qY7NL5KjuLu2vNZQo9XEXAz/MByhi1FRZyXA680Ga3f2X8KcbWayavvuD38cAScipHa3rX7+13852LdYO9MDzilIYYjkBccRMPwi5f9lDGBhVuaXQ/yoUtzgAhcrm9TPvZUxxr/hsbfvcmaws0yslKk3G3KzWt5jHVK8Uq+zerNhpYrQ5ZkUZRZEAb94+VV6d301dHMUddi6BAB2EwzAW4l3uYEqW1BMEKGlpGQaYyKmx83I4L0UI9ZbinIeLgHYM2us1W75IiRQ3GVSaXAgDb1SBgzAl16/Sjy/G5v3KtNrLvQy9GURetAo7F+m+WpCEtzvDYPjYSlIgErk277xm9nXPvwm8Wt//Dv01WuXHZfYbGEa5TJZW/VKpcTqxtrYIs3YEorNQqATAicwRjUKb4dcKsPyW0EEYIRTCIEzDbZKIQb1meX6hmKlgB4IjMEKHH0pIdI0DlPGegZiggANtG8stjmMqNiYSgAozuwaqmCvP7V8fJehr9Fqii+/8MzwegaMwUGeSGmP6mqcpsd0cq+UDnQugu+fUqLy6TwJ4lsZ9qBkPI4nzBds7/KTQghzX/Y6xWNxiC6M7shuCB6Mv5ioeCwcsM87RKDWS0UsIpuUG6vCkTqzmYwspPPEzfeTUkpcu32D3l67a7nP4HD08JkLAx91nhqA/fIEn5ueFccXlixdbkBBArDQUQqfBODgLlcraBTvyPCN2v0eL87Oi+/4+99ifj9dbqhf/6PfwWubG+437FYLJoQzgoh/3INwxjKoCkqIQJqfmiWpRMotabhWL0A+15tNgJQaeBC51okdFc9OzYjv/8jjls6BUfoDURjrpeJBl3l1Z30V+/HAGGU8g8qCYgsD/t2EpGanJT/7VMQFPI7TDYqQbCqDgfN3T9plBO7/BrBSGGPTsV/XYhI8jCOoaOdWBhdcbJSKvuwtjFL1wOlzeBy4nwGB4uL1K7jT9fhtg32g/nFu+Y19TfAmp5QRRlkg7mieCRyDXk0owxgOTvXCyTP8Rx7/PvRHf/Vn7HNfecKR7m5FiOGF6Vm8w+lo6LqFlOrardcnax6HltLgAiY3NmWsb6iBO8HKwnLPdLs7CYgkb3c61E5E+UE96RuKIYoYIUUANk9KiaEPhGCIJoZIJsSYRgkmuG8g7kFQQ/BxNP2DZ3gMciglOoZh614U12Pi5PLKrrJPvfQcqjXqNgSDxQRH/e6TFxDIblY2D50XSqnMZ3IkSHdK2FtSyaS5l0x68oM6AfbscUD5C+LaAWc/gomMxWI0bCcj6AlXi+tBFGvUpy0JACw06D4LmTxOJ93T0ZdrFf7CpVcsOYgQQvjc1Aybm5oZOE+eGoDN3vigEMikM/zCidOWhIcQElxw1Wi1rOYfKOQogzcSgCiHzfLeyDtv2h7nVnRNF+9809fSN5x/EAkh+V986W/Yky88G/ghm7xfW/y8PThnE8IZ/iVUN11d08SJxd0PtqALH4y/m5Uy9gNy8jDZUErRpz/2CZRL24uwsCrzjtEVq8X1gx6BvNaos6qth7bV1r3PZyqtJkjzFEUBe7/G3G4RY8wpJTibztEjFCHc4BwdxUtLCCjEEIVosYQeZ7oeM6N4omRPAvAI3igXkdde0BCZdXzxmMn7OA5JKqVeu3YZdz10bjWRVIAxM0qBl8AohsfAD+6wDmLEYX12ux3L9E/gGPSZn/oZ9MVnnxK/5wAVDiFExGNxtTAzy0bhYgbEos1yiZaq5dBOh18d7/OTQ6QvA2+IHWwmoEzLZ3Js0DkAsNDtTsfTgx6Uj1u7625DcQ9+GqKKAZkEE9BQ0h7kdB+CeoKu634tK5fbxZwLzoa9F/WVw/ktlAF4y1y7c5PeuHvLen9NuGd44XtDhWW9Y4HIyZudJqk3GofuBXC3zGXyAAvvb4cxFrBHpJPJ0PATuy0wPwzAEHUN1EIR/LPzs0sJETFdD+X6FlLI9c2ip3cK52dgMmqEezxjGprO5l0JAABn1S8+/5SltzTc7R4+c8ESxYj3BmAf1kM8FpOPnH1gmA+JSyVJs9UiUTSpDxNms8lWpy0bzeYw82yzpckrBo/HT33kcQTQmNfv3OS/9ad/ECwHCTOqF2C1gH4J3ibmIyVYfbS5bAglYjY/Q7OptM0avCymeNfguFgpOeYV71TvwbP/7735rezrHnmTU1UeWA8XXN5ZXz1wHwKN+L3iOpJSutoHDyuHCMhQXrBHkRGcNX/31Bejs2YUIQakLBhtNU2HyN+B5wXwRHUFx+VKeaD2pg8VzRgTcRMqWkcam0x+rRGmWtSbdeoldD4oSadyBbw8tzBwjkcYl6dFlVLqlauXLEOWetq5qDFfJdBzfgHs2YHbn6/9dLFx1TW6EGk5sAnQJfy33/Epwijlv/hb/24kgYGiBqh1Ctkevc6o6frtm2hYWOtR2wxz+T4iHZzPGmUH3mEBBeLYwrIVxRso8OkwsNBeyc5EKQFH6J7Vl0BEMfzrFvy0yY3IqAZRxqbzWw+KGiKKqfmYjlJwJQAOiVb2rf4IYN7PnTi9Pa+1Rl089dJzlu45cE7AGo/gngeuB1WtV3H7AD7gfkmIus1nctivMxecRyhlKJVMjHSGDZREuDIozgEc0NuUiMcFxpODoOaVdIHCIa7HXIXndXMsnW6Hl7Zop9xsJ6rbOQnA+ZpOpEQhm6dOQv2DA/dXXn4OD6JwgrveTH4KL87OW9JNem4A9gMGGi7xb3rgEVsbe7PdRlZ5XpxbRlFNw0oAPKCrtRqN5mpYyVnPf3xxmX/0vR9kECH/c7/6S7a+J+utHZFzN4SzgKDecTH2HjZqxpg6tXTcP5lbmDgwbtaadRTkCNepXEF8+mOfsPTgtTDkA7NIKdWttbsHzxVGotlsoVKt4mof7PbdTjknLzp22vejDHjOv3T5NXpn/Z4fzUdtOiQBgFVMxJM4GU8MU6MwBFflStmy8mQbKhohpOsxEddjLIKKtiZygC9eK657dvbFdF0+cOqcpQeUtRH4nwuUxK9cu4S8iHDoR9T5P+qoB1YlAAppXdM9+8as9svLfPB2HBRRRwiRH3jHN5B3P/Y29d//z/+TbXkBR9f81AxOJpKODLHVafHbq/csn0eONBrSSsCQpZRimqZJRuihCmKI6gBFHjg9W02AMgWp3WmzsAUPHGYo7sFPE5NHkVIKkYsUjMQ7I4on8Q1gdU24nE91ul3L+1AmlRLLc4vm2xPe60+++CxqtJrWugiIajJc6GnWBuZ8LpMPuFo68jyB7yqXzmKvnUIxIULXGErE4mOjg3BiBpWC6eKeyiSCf3Zi5vbXEXbjL9AS1ho1YnlvdkeMUa02JNDX9QAs9DB3x6OaklLxizeusHUL1JsPnj5nOdDAcwOwOUjwJPMgOm+nIuKxhx61y48C3sGq5TG8j411N9FF4MJVLJcmWgZuD17XNfn1j72DnFk5KX/7P/1f5NaqdVJyW33DCDyXTaih+xDOmJjcvROWICppOjfF+tBNgRo+RFxLhYqV0pFer0Hos6Zp6ns//HE8nSu41h3Yi26u3jmyfuD24EK41gfPKu5xrEzc9wjyjaKAPVtlrjQEjyb49UMAACAASURBVG+4oNs0xAr4fkuVki2FwU6o6LgeZxAdHCReMFcEbrNSUKqXKmXiBXwxRhidPX4KJRNDOQTYHJl3xUBz+8qVi+6fOT5Q/HgnxfFtCRyzGdXAtDO+gxw0MoykEFwZxtFK4MXZefE/fPof05/4+Z9Gw3K/wj1e1zS0MDPPnIIABeqjextrgFg2aIQT/TsYfiHwlRKGGaMI9vqjEmNMHptfsu0I5AcstBcTDNRKGGG5xfuClZRAPgxRpQA9LWmPqxiZoAIQUUypSYMBEcURHYbTM4Q5OHcZ3Bjo/AFG/OW5BZJKJMHSJa7cuk4H6nAwkkghqRQaWL/TIwt7fUAQXqwUjzxQ4Q2SS+cQnAleJNCjxXQdx2MxL5oLVRtKKaBw9nSdg/Ef6IIi+Gfnlkr4jb+mzpuXaxXWOQJFwDmJRTW5IQFwtAGEB4CFdoJi515xXVx6/cqR50khl+cr80uW9zBfDMBeeYibHKAKAf+Jeuj0OWxT0QdrgwspcKPVsswV5MaCiuo8XAIGN3ilVrO88CNZ2pOArunqez/yuPzSc0/Rzz/7ZXuVHFRqB4QzgkfHFnevcw2EvybYx04vnwiUsU0qJTg31EalxIaBovJrNgih4p1vfIy+/Y1f42oXwAAMhuDDUrvT5sUhIghd7ewIlWMC0Ot4IvddMwr4ymv0zloUBTzCEvK8KMZYEoJRNp0lI0KwmUbgcrU80r0QoKKRlIwyJuN6nERQ0fuXRLvb4UdxLzuxiCglYm5qls5NzThRXaDqgLPopcuvDW2wGmoQPYhI0F5M5HkwlKwCmBkMBLqm2zZ4BXBIdroE0aGo0+0cuoYh2vFf/eh/p37l9/8PfG9jzXIbZsRXJqumcwVHZSykUNdu3QjUu8CyUDzI2DP8YsoIxcC3aCXBO2E6X6BgLBshBRYWeoQxWS4Kej6MkOgZihUGXRx8Wz3oadNILHuGYsp2RRTTHgx1lCxLQBmcD4SwBxSxsysnzX2iXK/yZ17+6qEfAwZ+dISokgO8JCx3cSIz8nang6uN6sDFnM+AEVh3XUjJeBzpuvvtuD4QpxvAWEghqNc6rEQiLjEijt4HnBZNmOqDcyWux8wTJ9xJqfXSJh6ESBPuMU5G7+Hen4zFRSFbAPAU24NudzryqZeePXSvMOkdjp9Gwzj3+GIARl55ife814DYRJxdOTUUlM8hs6QarRaOeHZsr2G3CvJ6s8EG4aO71fgk1QveVaePnUJveuBh9b//4W8PvZv1InnNyN4eDBFSsh/lO0lytDNWiB4oZPNsyiHOMDt92FlGIYWq9boJ+xymlMtk5A9/+/e4dukGPPI766tHXt5AEbJe2gw3vUAPip2F/7Jtf/W2Oh35d099wbW1ZL9nUcmDJADGVoi8yqWzzqxbjAXA6o5qBO73FYzTW98TBqjohB5joBia5G/MvCcohVaL1o0tdlZ/MpEU546fGvpOY6ctr8uA/F68/OpQfIHD9LF/r4uMv8NILVh5Ye/RmEYmHc51y3Ecd7tdDJHze1MsFuOf+KaPkmdeeYF89eLLliYR9u/56VmUTqYs5beeSfFiucRK1Yr1IhOSsw/Fx0zYYmuG375odF0XS7NOccArKaSUrU47FE6yfiwP4CSFKGKEFAGIQOAp7kFPY0UxlcBJzJhm4nWbRuMdEcWTfjfami/VNQx8mNMx7GnT+SkM/IBg5HrihWdQu9M+cqqP8F/2Y4mEtE0lq406GSRrGFwunbWLRmRJNqlkEmkWHWAsVThGmTBCnAvBjnLad3q4cM+Kx+OgRgu7tdJp0diqD86KmB7D48Bb33vvrtuSQ1QoeBKAtxVCiBQyeZRNZ2x38AvPPXnoGz6TSvNTy8eHuuj6YwCG4XsAA93nGwbDyYnFZTadn7It+J0FwdDYMbqO1BVV4owENitl15RbzvRwfGrRNU1941vfjX/vz//4yChH8xtHCiMTwhlQLZBAEZTQSAsBHrunl0+Y/Es+JimVxMVKGYcRogTW7yc++DE871Kkl1JKrm6uk65hHDlF3W6Xr5c3hzqwfZzzfU2bbv0TCv/cFwZEAb985TV6O4oCDtLSPLAvJjRULI5SiZSzmydAh3KpStXSSJHAB3UaEyyUVFTXdB6PTTRUNK/UKqw1QGlpdxHCufrAqbOeRGHY7eOo5cBY5ZaCy7zfRYqsUafI9/KEEqEzfSydIOwI1zCMA6Pmv+6RN6tsOo3/8onPHVktOBxplOKFmXnqFszntds3BnIX2xl7WMv0nagYZcQOzDZEws8WZkgiHndcBF3eVRAV6HjFE1Jhz6iPFCgQQaG6bSgGCGozopgoxiDWmxCyFUlswlATOtZOdOCAJYUSXd498D0JxvQTS8cwI1ReunGV3Flf3b9iIrhnV74iuBiVqmVkJXAom86iuO4sPLMZgZZIAHe3K+Mbk0qlEMJEKPAqaZqGdKYLhVQ0MSMKfZyMvyAKIYRcLxWd1VOMKOOo+OgSAFskeNhOZwskER+OZkpKKV668iot16r7OkIpUSeXjuNhEWt8MwB7AgO9ZWSGtpZm5/Hi7PzoM9irQXDBIRo4tMp7pwQRhHqEFLJUqUSbpYeTkYjFUSIRR1duXO+12osGBAU4UCtJILGPokGcnxAwCOQzOTyTm/JlvSulBHCiFwHy2cPLspOSBEPQ1z3yZvzut7zNFUUMyGi9VKTtAfwdEClcLJVwWJ2JTIi3yP0etbod+XdPRlHATn6jbtQFfL9OcLEc2DeTP1Iq4AR2S4kAcOtwplIKUNExApQmwCE1KcngXBTLR3Oq2ZEFpVQuzS6QqVzeTvHQlHn+tZdC09eoo/5IAM50TdMwwb5cL/0Z9BGtgjwMw9iH+pVNZdTH//6HxW/8x987VAdAKZGpRErOTc24pidotVv89to91+oP3IQcPVeAnqE0Ckh79nXqsVicL87MuSVTDgr/dqeNDd5DzI+S8xIwDcUAMNZ7n5iGYvhXMIZRQnqGYsowAYI400C8xVFMCQrx3geUJPQg2NC4rouTy8fJZrUsnnv1xV1rG6IfFQJ4bhRt+s4vRbNGIaXlu2s2lXHknWJydWOC0snkxKN6WJlWQHLyMiUTib4ji5fNjl1bPeOvPlZ31k63I0rViv1LzNjN8ngNCO4hcT0mpnIFZhWdRiEkX79zk9y8d3ufMAC97OzKyaHXi28GYNNI5PaFY0eU8XSuwE8dGy48esCSExAF12y1iJD7YaLGa7kGeDQYSZiDZqsV4E6OX9cgAvX8idPoyRef7UWjmo5zCkmp3OWZGz9R2hrRqeXjyOrBYauBQwqV61VUbzacrNKXutLJlPrRxz/lkgEY8c3KJmu0B+9JhuB8rbjhlrLJXdlizAmeTP7fnYI1o4CvXqS3V++6K++odlsSgMt2NpXB4HHtZoLIFC6kdNMI3O//LqhoTRdmdPAEQEWvb244er8Ahyow5pxcWgnnHmxxQYNTglW4WotVRtnGVAKUMq5ZJUsdUxnsGZYQUirDuB9dB7D8P/Rtn5C/8ge/dajRBLjER4F7GyRapaS8u75GmhbumYPqCvPvYPQFp04Ght8RuWPhrjA/PYvBucrNBNRHkCJYaDelPLhu00iGsNzyZCVKwn+CoRgrAtDTYDA2IcTBTtyDnr4PQR1MeykgT+10QiSY8LnpaZZNZ9QXn3sad7fQC/tBOCH14x48ucHKwcEhvFqvDrxngstCOplGidhwEWI7hwu854RQnE4maOSjbW0heGkANuGfY3ETFtZa76JcB0nANP5qOuA9jJOAZK1RJ41Wc5zGFI3lEAkUMjmUy+QsyafWqPPnXtvtwAWOpisLywQch4ZN/hmAzaBBJJTqcYG6knZwDaeSKfHgqbOutNVst8PN5eiK8L2pFB5S1VqNRN603sgbuHowwTSTTKOl2Xn0yrXLPSMaRhAQCny+8I1hiG7kYBkRggjBiRDSVNy6FR3lzeiD0Qoo/zOptJyfmh34mHCixwDdraQkxUp4o1X3yiGm6/I73vdhsjS34ISI9tZheu9Z4kZWSharZRI2/nKMsEAYoN1dsaG7MSeu1tnuduXfPvn5sXqFuCowDyoHJQilBGfTOTPKw4sESjVAhylXKuQg/ki3+nAfKloDYzCNaTE0ShSUW/0csV5ea9RZo+WcA5LGmHrg1LlxUyDsE7MbBuAtrlRvPqwRF05UfDgJgAEsOtt3yAwjDhDn3W7HRHjQNCY+8vUfIH/0l3+26wIEkYdgMFqYmSNOQ3nunUEuubp+6+ZEX8AopVyjjDmlAE4lknzWxYjtg75CoNEJKwrQcLtKeHObDncI9Q3FWClJwOm9x1PcjyqmiFLGTCMxpaZjfN9Y7OnIFRIdo7tL13l25aS8+PoVcm+LV3LL+Av6V090CJ6OP6CNga4SDDtW+IBN2OZ4EieHhAk1VXEYC7jXJhOJaG6trwXJOffsLhvTdUEpc8UeYX3I4c45psZf0JGLcq1Kw0ivF+4V5U/vwUGLUEKnsnmcjCeP7IRUUn3h2Sd33fljMV1eOHHW1t7lswEYKxMy1qW0U0EBvI+Pnn/IrbZUxzC5XWxNgkvDn5Rq1UZp0615nRQZDhwnXCoRQhQw5lOJBAJDMDyUX7pycSD3skKIY6QIQiaunBIAZi+F4pwzgCsCw7CMougHzsHODKCcO76w7DpnoUJKtDsdtVkts3Ez3r/lwUfF+976Llcu4ZV6FVXqNUtzygUXq8UNV/phqQM2MoEBGBxBbBQdyyJRFHCwppUQLDRNh8hfX5QgQEtRrlYAetBzwWBMOEIAFU1kPJbAOtOxW/yTXg8OoqbWNtcduWdTStXxxWVsx3PW63GP2p7jBmCT8kNhVx14Rx10VN6WBODdTCkDhBlHvjNbnQhuIdU1uhj29XPHT6Fba3dRq902ewv8yYlYQi1MzzLXjedK8Y1KiZWrleBKyoWe9aMWGWOcEeqY4bff1eW5ReQ2UsgBYjFhoVvt9j6ocRdEGFXpogRMWhyERI+iGGCVlckr2jMUY0UJBQhqgJ9mYBzeaSQmlCJnFFmYC8EZF6CyQSidSKFYTOcvXHoF9iVYa0TJKPLQxWVwZNWblZIlPuCeETgx0CiwSy9EsAQkoHgsFp3dw0ywQpwL7tlbMZlIAmaiM5/7MOMck7zjavyF6YHgKbBpHATlPybTFw3jAAkQQmDvlgALfRi1l5RSPfvqC7iP+kMpEUuzi7SQtRZBvLdZnw3AZtSgKwfVXo5heJA99tCjLi48E/0PNVut0HJjuigc16ruGoao1muRIcI1CfcqBoz5VCJByVbEH5CZz03N0Jv37uCSfSWE2LoFEWUqE5UE43DfMCwlGIeBStjEl47SHgmkkim+NDPv6qW1XKug+phCkSTjcfVj3/UDrlzCm+0m3yiXLM0NGNkhYrivSAzLQncq6iIs4x3Uz3a3o/72yS+4sp4GtR39fl8C8DhM2PSed1KOUgEcdNkXI3B/HFs83eYxqwNUtB5jYY7ugyiKzUqJGIYx0lTB/WU6XyDA/TtSRSEpDAarFy694khvTcdaZFL4WDrfHGk0qsRzCbjGl+75SJxv0OCGqb0Fg+Hrd2+Z0dLTuQLK21TE2OnhtVs3HIXDt9MHr8r00eIY0zijlPXfoU61DxGe6WRKTuen/NzTpJBctjod5ofjmFOyjOqxJgFwou8Zik3neHAqASQSRUxIc6oYNQ3FlBCC78NO92CorTiYACoe0JLMz8yh5159ERzugec3Sj5LAJxDi+VNS/dOMAokYnGSSqQG9hru+vFYDMd0fWDeKMNuCUilhBTCEz0yfMsQtbcVEBNNhQ0JJGKxHvXgGCbQd69uITWM4fCiIVmQQD6TU/lMbp8uUUrFr9y8xu4V18xaNI2pB0+dt61z9NUADANwCwZ6b71wYXrjhYe84M1UjVYr8uS0sMgdyGJCAna6XQeqiqrYKwFQpOtME6lkijG6+25ECRELM/O0XK/Ka7duOH4SQ9QwPIzwVtQwB9OwkIhzg4JROIoaRvAQVEuzC9gFRR0XUgDkMwE+oXFNAAP9sfd8kBxfXHZ8iO1uh69tWuf2hci2uxtrjn9Hjg9sq0JABMA4igDeKV8hJX/lykV2a/WOW2KP6h0gAbjnZVJp5DaHn9WJCIIReGdf70NF67xvDA4bVHSr0xaVWmUkZU0sFhcPnDwzUh1W10AQ8gHU0lcvvmz7obhrDNg0/obmrAqC/MPWhx58PoSp+WkPC7DUMIL3CAGn8idffNbkjbUD12l3hI1WU9xdXx37/cuMWFSKaRqTjIDd15kt7CC5H1tYRnvfuXbnZ9RyESz0qBIcn/K9txYATpuLHxwKMXwH8P4HA6HJU8wYYRhsxT346S2uYiWEwMA9u1EqcjkGDltg5DRj5OD/zAT/vZUAo3/773fPfz/ccu8/IRcIdruKXWGZpnH+oA2nT3u2f5GZXRicmu0marZbXEo58IAFfnPgA04lUkfeuZKJBBoXpJ/BEnQ0B8SdUK+cbuJ6jBOAWImSLQnEYzFzfxvXJISQ66Xi+A5wXCfOwXGBcxghhOazeQwIHjsTnOWvXLvECKV8cXqWTeenbLccBAMwODxYOjSHGiV41ym1vclSSuWFk2eIV4804HSMeF2GmjFbmYvlUhQhaktyhxcihAg4YNPJFD3sQkkJFctzCxQhLJ5++XnPFBEYIQ6uc7gHrwRcw72oYcNg24ZhAfrJyXB1TcTi/Nj8kmOXSYjCbnfbslgpO1anw8vT0erecPZB/sF3vcfxsRqCD6WggyjgSq1GGyGJtiaYmBzAjk7GGFTW6XbV3zz5eefvM2MgGzeHABE8hGCUTWdJ0IwWwNtSrpQxnE9BSqBcRwhBiImMx+IQIQx/gtTFw/qi7m2sjvSNnTtxGnn1FgiCQGENvnDxlZFkFoRxRH3wTgKmA6gWi9bMESIHg+FsYdpTvnVwKrq7vkZa7ZZ3i8HjluBsAhsXJQyDjN00/EJbuXSW5rP7Iy48HvbO5kyo3la7TbiAYzpKkQSOloBpKAZ7Zg/+0NSPmBRb4v69c1svYpqTdxhPj6x6p8F1O6OpYLn/f/crgD70rNW9eOO9eczfdnSkr6mRW8ZWbKqDQbdjpl6MNOh6DlTp7P7L7f/al/eQfP1u7/q59x+HapB2NDJQy9Q3V++QL2NMZtNpQjBBlXqVN5oNClCYwP15mEEYHDfjegJlkql9b27YG4GWjTHH1RgT8cmBTpEL4RnFWSKecPU8G+dJG3fjL8xdp9vhpWol+pjHeSFbHBshVOiMKYCF7utmukZXffmFZzBQWD185sJI77MgGIDdgYHebwDmp5ZXWD5jDyvb4nztzCbg4t5otSIluQ3hWSkCMaGlSjmSrxVhWchDCDy6MU0nUhgO2qMSeJ4eX1gmsCl96atfQX7zFcBrQyoEDyDwnAJI6R7XMBfAt0JNOGkhkVTBUsJbmJYjs4DyfmFmjgwij7faTqlWQWExQlod01H5YrqufvyTnx7pED2ofuC4vr12b6h6QUl/d31tqDJOyGDoOkz+R+Q+z93QHfO/AHABv3LtEr11L4oC9mo2MCEAC4ly6Wxg12TPCFzBgFwRxBQmqOies0yVtjs97s1hEnDmzE/N0dmp6WGKhT4vnEcvXno1+GdL6CU9PgMAw5jJVbkH/Wd8RjjCSDCS8OYBWNVTy8c9hSPkgsvrt2+OZYRIz/CLKSUUax4ZNMCAsrKw7OkcDrHyIIpTtDptNm5v1yFkEGUdTgISDMC1RgNl0xlUqpSHKx3ldk0CAPFdyOUwo4wnYnGWiMXNtiBKu96oo/IRBmEwAse0mMqmMtvGIagvlUiAMcC1Po99xXCWc2FydbudYJ5iegwegdGEDSnsSTD+An98tVEPTSDIkFMYZbcpAXCKyqTSopDNm/vGky89K6ayeTo3NWOzxl4x3w3AZieAU8ppSDGMBFL3N1k4PFfml0YW2JDSFlJJ3Gy1SVAVf0OOJ0jZRbPVon0y7CB1LGx92YJzJXCRtBoVAxfPk0srAEUkXrt+hW4G+JHRjxpGSFFw6zT5PqQAThwG3yUYhsP8fcKF8vjC8igXSvCAxMVKiQK32SQlkN23vPv99PSx444OGxwQgB97uEoVr9TrrN5sDFfMh9zjyr/ihCg7Rlf9zZejKGAnZDmoDoBHAwj8QfBog+rx4nfTCFytmFEZQU9gVFdSMl3TRFyPU12PBQYeE2RncIMXy5tDe0mnkil+duXk0OWCPl+D+jeqAdiVN9qgTke/+y4BcPTUNX0sjY2jCBfuybCPwz5ZyOTYVC4/SnWWyyqlzH2vXKtaLhOGjEDZhTEhjFIwjnjWZZi/fDrLcpmsZ23abQiMRF0joruyK78JKac63Y6o1ussm0ojxjRUrdcmZOjBHyZwxPdR9Uxj8AE8jzCKowzC8VhcZNNZEwY3lUxSp/nQgy9F53vIuTcoC/FYjBPi4QHnvKh8qTGu656irPgyyB7SgSjXqhQoIKIUSWCnBMDWQjAmcIbcvHsHL8zOIeATHyUFxQDsPAz0HgMwCGl+elauLCz58phttduoO2HGlVEWpoWyqlytRlzLFgQ1KEsqkZCpRHIofiXwSDmzctL0mr67sSau3Lw+2k40qJNu/N5zPJG4540HqESmtzUXgojeH9Mw7IVn4CjDA8ju+alZmk7u5gqwUidAaDc7bTXJkfQXTp7h3/oNH3Bc63Tj3m0rU7A3j7qzvgoQXnbKelMGAzk3GdK47U3XgtAKcAG/evUiuxlFAbs+HcD36wIHumv9Bi7WUrUcCiNwXwj9qCyCsQJZg0EoCFDRa5vraBjeLoDcu3Dq7ETypHHB1UuXX7O3Z5uIDyYEY/jueK59yZNRMUDra0wzuSWjZEpAdY0u3rnvAAfnyWMnXGSn3S35q7deH2rfC/K8bTkfg9EXjL+edxVg9FYWlu3ti573FnGpJGl3OhEstPeyD3qLXEhBqrU6AScBWNenjh1XxVKJTBKiV1AnCRxVwUk1Ee9F/EICnsdkPMli+mDalZ0G4Uqtyh49/xBq2UDACap8fO0XRoobAGrmfkomku43MmYtTIrx17xcIqU2Spuh0g+M2XIL/HBgo2JMR8AjD46nozhMBsQAjE3IEkcljxEQge6qM5vJ8vPHTzmu6LfYbwWRQXB5t5g/ynaEBGCjLJZKnhza4zgRwO+lMU0Cp4hd+JjzJ86Yoml3u/Lpl54bq3WtEAKXQFDqgFaiByfdjxoWApmQ0gHidNQYkyeXjg81B2BkBMjnSY+iB8XTP/2eH3b0MwfZ3l6/Z0dRx2uNOqs26o72x8nKtqI1vNfWOTkIl+sCno6/jqKAXZMyeM9nUxmsaZprbbhVMdxdSsAJHIJI4INkAFGBcDbqmi7jeozG9JgfnFa81qgxq8pNSqlcnlsghaw3kXpurR279Rqcy5evvDbU/QDagr1+i8bOr3eT3SFH5RySAKFE6Eyf9POeAw9l1+jSvc55hBA+lct7Qi/VbDX5nfXV0H+L4FgAtAMaBYRxf5YWzFshm2fgRBaypMBNudlpe8ZbGTL5TFR3gU633miiZqu5PW5AOjmzcoJcv3WTgPEwSv5JABwo4/E4Poi/Fyi88pnc0PcyUPp3jM5E0XW5OIMSqBxcrN+sGuZM13XQK4b+/HZbVv36J8n4C2OGu+Vqcd0r8UbthE8CgkuJGo0GBHypW6t3cDad4TOFaRPxY9gUFAOwGe4ED6xhB3BYfuAEVQrtqi8eT4hHzpz357XR6yh46WGALobQwyjZl0DX6HKAubFfw2SWBE9ESplKJ5K0D0VjRxLAm3Tu+GmzKHxoX37xWeDDslNVuMpgLCCKqx81DLCegCctBKeCCwxGYT+ihiEKeCY/TXPpjAV5Km4A5HO5RIGnfNKTrunim9/1Xnr+RG89O5FgjdwrrmHDxjcB39O94nDRbU702VIdEf+vJTH1ooAvsZv2osAttTGJmUCZQinB2XSOAgRaWBMYgYETOOz7bx8qWtuCioZohlE8UoeZTyGFXN/cGLgIgP4ll86qE4vHJva+2DUM+crViwNltU/+BzjSDjNHUd7wS8A01DENT3AUMDh/SsMwDt0/GGMmJY6bs62UknfW7pEwR37BWoK3CqOUjQpfN6qsYc6OzS+5Omej9vGw8qDfkkrhTrcbwUK7JeSA1wvoXYZhyGqtblJZ9ROlRJ5YXCGZVFpdunENT4ReJqBzBfsdY0wUsrkDzw5MsEwnUkRnwzmyQoT3/NSsevX6peHvdAGVlW/dUohzwV1/GyTicY4xcb0d3+TocMO9t6Sf5hqHB2ShOiGEXC8Vo2/agqwmLQucJVwKWa83KCDnJOMJQiiRt+7doaZdh1A8nZ/CU9k8shoYEQgDMEzkQQbbUSYYhLXXoAwX/jddeDgIF37VaLVCr/wbZX5GKasQErVGnXa7ER+OVTmCtzPGiKSTKRLXY1aLHZoPLqBnjp00vyWwf772+lVaLJdGrjfMFUDUMKDjIoThAFegNBJSKs4N1ucZHgayclhZwP52aun4kfsbGB6arZYq1SrRJWOHgM8cO8G//X0fcvJyLlY31ykoaIZOGIlmswXR2cG7/Ubwz5ans2sY6q+//Lkg3Dcs9znIGQnBQtN0iPx18jv1bcjjYgTuC7APFQ3OYfFYXMXch4pWxfImHsRbr2maeuDUOTzJXGkdoytfvTqcsvCgN5RvH0vUsK8SoJRyjWljse8OK8g+3+9R5eB9NZOfYllLDpjD9qCX3xCGfP32rVDe2/uGX40yFgRHAkKomM7lacoGbY692XOt1BYsdJvwkCKKuCaZ8a0Y5pxWa3V8EFdkLBaTD546Z+4Tr1y9FHgKq/GdJoQoJaqQKxx599Qo49n08G+aQjaHACmsVC2PswhdH5tUJryfq+cqvIkS8YTrYxmXBibR+Atz1+52eLlamch79risXbfGC/b7gwAAIABJREFUAftUvdEkfQQi2FOmcwUBQUY3V29TsC2AsztSCKKD+UxhiuXS2SO7EyAD8H6DrRuCfOyhR/2AqztwKADNYstA4IZgQlYnGBsDzZMZEHkCzwjCmKYSCZx08AICxsbTyye2jRurG+vi0s1rwTNYBWMeAEYR4Ahg8wauYTAMA+wM6/MMw+Y96nruQdEVWCGTO3DUJuRztYyaEXfMPvmAUuqffPcPIaeiEpRCfKOyyVrtlu0VCFAwQVTqBEGBZ1uoHhaEKODXrl1iN+7a4oL2sKfBbwooCxLxpKNnWEBGbXICj2OURh8qeis62OQ6Ax5epxIYFZqtlqzUD3eUAaPvyeXjKIQwn06Jyayn2+2KV65diu5njkp1sirzCerdTyHv4/s9qjNAw3JiacW5DW5HY0opvlHeZJVa1U952GqbMcYZoYEw/PYHoGm6WJ5bGKf9UHHBRSuChba1RsNUqNFsonqzcWCXKaVieW6RAjcgvPfBABwl/yRQyOWRxo6258A9NptKAw/6UB2Fd/jZlZPi6ZefH6d9bCgZOJAZVHGm8cTNxBhDuhbBP1uR8aQafzFCotqoU6u0RlZkGeUZGwmoWqOBd+5T4HCfjCdYMpFQBjfUrXt3djkBUkoExoTM5Au4kC2gg7jmA2QARoCK7Mrjqb8EIGrxodPn8UGC8GmZCC44RAMPd/L71NmgNMuFEOVqAKPjgiKgHf1IJZMqFU9g8BZxMsU0XZxYWtm+eEKEyVMvjhcPsJPyOqguuPhLpcT9qGGluDS9EZHBDdrnGR7mckoJUaeWT+yZb8UNLnCxskmDaFB0W85W6ofL+Qfe/vXswdPnrGS3kodvVsqs3jr4oW6lgnanzYuVcqDOhq0ov0D1yYos/coDF7O/eiKKAh5F/nB2gQEPDBBjmsbWCNyfr/tQ0UzE9QR1CioaoqhXN9YOvNyAQ9Ts1DRdmJ5z9vITwkXY7nbEa9cuW1IUYuz+WyyEIpzoLsNdFXi0GWWW1lCohYVxj++329nH93vUuIArea4wA973jg8fjDnXbt9Aw7wFHO+ExQr7+4dp+IWIX4ffnha7cWg2cEyaKUwTJx2iR+2TI+Vh35aKdIwIFtoReQaoEtNpnAtZqdXYUbQhGmPq4bMPmPcdIYV67dqVib/7+DGN4LCaTqZxPGbtzQJOktlkeqizlRIqji0skPXNIgbKqCjZkoAQQgx1zttpJRFPCIzxUPNrp52wl5lU4685b0oJQP2LggLDvoqd7T/c/RutFoJgsb2JEKKmcwXzjOeSAxw02Us72I8KTiaSYjY/RfPZ+wFigTEAmwNzmW8KvOPOrpyimZTzDzS7Uw5eH0JJ3Gy1yU4eD7v1TUA53mg1WavdnoCh2hsiXD6B1zSdSDLqEodCIhbjKwv3OfXAe+OpF58Dw6W9TkeldkkAw34OO6JS5qVRAdA2RA0bnPV5hg86EEDRXsjk2HSu0LtTIKXqzSaq1KvRQ3DAGjuxuMy/8wPf6ohxEyMsAWa72qjZXtlw8K+XNoPzTWEsIYrdaWcS2wIKQcFeFPBlduPurRD0NlhdxBhLQjDKprNkWO/4YI3EUm9UuVq2xRluqfYAZdoJFR3T4zKu61TXdFs9BDqQSrVMAU1nb4rH4uLCyTOR0gUh1Oq0xcXrVwbLosfxDkglrjrj2prsqJDvEhj7KGCMgbcFdY3O4G/lgNnQdU0cXzhmq+xRk9toNvjdjTVH7qZuLSLY15VSTNOYYIQBT5lbTY1Ub0yP8cXZ+UDLcqQBIiSUkoD0RA96I45Yd1TcWwlwhZQJ99wegNwFDm8LM3NsbmrG7GHX6MrLN65H57i384UwISIZiw0NLw/IbcOia+XSGXFsfpE88cIzAKHp8UjHoDmMlODCVdlF8M+D1wk4GOqahieN83ePZNR6qYijM3vwepmkHID4cVjgFty5U4kkS8TipkjA6evW6l3cNQ6mHoSoYKConMrlwXBMAmUAdptzCi5IJxaPsel8zzgStNTqtFHXiAxoA+ZFlaqVaJM8QEhABM4ok+lkkmlMc3V5pxJJvjy3uP2IFkryS9evso3ypqvtTnzlvegc0xCHQFELbmNSSM4FeAhRcCKBKIGTiyuIUKI2K2UM+0qUrEngxz/56QOhMqyV3p2r3mqKzUppJGVgt9vl6+XNQCirwFkJ4OSDqtizM0delImigIeXMjiywGMwl86ySVlvoMABiM9Jc6KCewug/+i6zuN6nMU0fShFWMfo8lKltG+PPH/yDOo/jIZfgeNVotVu8YuvXx2ARYjgcQhXikCcN+M1A+EfDSgbKKVsXJ1xQP9gGAY+KsJu0CxSSuT89Jyj0aVKKXV77d5AA9Cgvrn1O6wLhJS5LuBPkM9riJiYm5q1HJnnlsw8qRcjE/qp1W2zyDjkicQdbUQhhdrtrqg1apYiFOG7e8O5B7fvTu12W1y9fWOk96ejA5qAyjDGQtM0lc9kh7pDAWpCXI+hZDw5lMEe5vzhM+f5rbW7EdWQzfXlNv0O6GJ1TQMauOhbPGCOTOMvYxhgsic5wRkNtG9RiiTQl0Cz1UJ7I3r3SmdnFDD8Bu+Fm6t3cOcAp/h+2V5wBcEBMwCD56Izm+RBxmQY9NLsAlmcnQvqCpNdw1CtTjs6KA6ZIVjcxXIpmK7FPq0qcGwgGJN0MkW8gjfPpjKmt+nOIa9tFvnF169M9inu0xowN36EOOAoYIS2YUSkcpfbxMfhOt60pmn8fV/3LgaPaCcSQDivlYojfQ+gjS+WShhg3YKQhvVQDkKf/e5DFAU83AyAQTAei6NUIjWUMmS4VoKZe1KNwNsPE0K4ktKMIovrcRrTYsiKYmCtuA74l2Y14OW6MD1HZwrTwZxkH3rVbLX4pRsWDMAOvb98GGLUpAcS6KELxcby/WUYBnjQjyzFeCzOj83fd44dtUKDG/L1O7cCdxb2kRwooXgQz+WoMnCqfDKe4HPTsyPdyZ3qixf1YISFQoq0u20cBRd4IfHR2wBUE4gCq9Zq1KozIMZEzBQKeHlucXufqDXq/Oa9OxOz1keX/Og1AE3CVL5A7ByQYMyFKOBhHGgooXxpbp4Vsjn01EvPo6OU/qOPbgxr6DnJ2Jkuy8JIJBISIxy489vyAFzMCHYajbHQ3B9cFAVs+nK9VIzWiZtCDk/dqtW2dmeDezigvYLOrJ9AbwyRwINQQ/BbUh9XbnvADCVzh2CgD+OxmskX+Mnl40G+FAENKG60WjQy3uxfOZ0ueETWIwM5hH+C5zXGNJVI4mT8/sc/1PdmM3M+k5NzUzO7Dquu0VVPvvicq5cpm92dtGIKoIc55xigNd2CAR9HoS7NzfPv/uZvd+R86PIuv7exPnJdhuB8rbgxcj0jzxd4jeHoIWNHjlEUsHWpAd/vzsus9ZLjkXPSjcD9WcQYCYzBTRWjmBaTMT1mcgcfkHi1XmPNdtP8KZNK89PHTvi/XwZoOTZaTX75xrVDZeI2+lKARBF1ZQQJgLIBeF3H5k6JsUBKgbc8wJ6PIJn7RcEjf2l2Hjtxhiml+EZpk1XqVUf65kQl/X2ZUYrDFA0O58ji7DyySzfghOx8rAOoxlA7goX2cQoGNg0ebLhar+NWuzUw894MD525AJGG23+9WS3Le+trkUFhaEnaK2AacHN5ZBfGFs7WRCy+DedptRfpRIqfPn6cbpRK4tVrl6J7r1XBmfmw4NxwTZ8MDvPxWBwuFpFedM+8RMbf3QLpdDu8VK1E3+9Q3+9YZpbtTocMwwVNCVFTW1zAfYnAe+bO+j3UPOIugd8x9Q9kp9PFVj3N3Ba3Y4oIjAQ6wJs9lUzxB0+dDcNHphrtFg6Ucd7tyR9QP3hG1uo1OumerP1vJJVIolQy6fnNAtqHzabPM9ufNoAefvrlrwL3jM8rZbKbhw2fSy64wQGuV4JXqsa0MOx5vk8cwQT9yOOfQqlEYuS+cMHlnfXV0R/gSslitUzanf08lyN3cogKAN4KY+zaY2mIroQuK0QBX7x+mb1+J+ICPmzyQHGeTWWwtkOJFbqJdqjDphG4XkUQlRalngQIwSZCkK7pPB6LMYgO7iMSCCHFemmdUkrVhZNnI4/yPYum3mzwKzevR3eA6GMaWQKwT+uaPg4KTQ7Y891ux/HvIplI8iUHeGbhHLh663WAdRt53katYMvwC0ZfYtfIMWof7JaHN2sqkRQzhWnH59pun/woB7DCnAvR7rYtwQr70ccJbVN1uh1RrdcZ6FGGTYVsjp9YWtmxtrFcK66TiJJrWEnayw+wa9l0dmT6KDhbC5nc0GfrQ2fOw11YvXjpFVxt1O0NYgJLgYOVEMK1M0HXdcUYg213dD3QGM1PZPzdN5lmYFuj1XNijtJkSgBsXJ1OZxvB06oUAAEknUxSoBHYmWDjubu+ig5bV/gdhX8ALwvZNbokEIa1Qwy3VgWxne+QemBDfvTcg0MfsEO370ABmDzwAhjGE8CBZgNdxUZpsjlmYeHGYzGeSqYYJf7cKQjGYjo/TQF2ZmeSSvFLr19l66VioNfQGHdOdIwu3TLAS8MwzAXS99jXmIYjCN+jZ58xxt/zNe9gb37gkZGXiVTShOEYuSKEEBdcrBY3/DO+Ygw4SRPDx+rEnO2twxCG+qsvfc6R9eBG//yqs8ctSXA2naN+nWl+jf2oduH+V61VUSDu5QETEHBEm1DRjIl4zISKVrVmDS1Mz+H8nntJwLruS3dqjRq/euvGPkWXYw63vowqatQPCcB9kjGNUuLfdWTkcWOkAGYVOH9HruuACiAabGVhaeRo01qzzlcdQJEZZYzgRGoqbCkEfod3zo/NL1miExhFVmEoixECPkrS7rRxl0cOZj7PGRdSkGqtTuw6zoPT25mVkzgZv++0rBTid9dXWblW8Xl44988IUQk4wmadMBpHFD9kvEkG4bKDSjgFmfm2HS+gOrNhnjutZfCu0l7vFyAUlAI4codAIaSTCSj6N89cwr3CY0xEhbaCE+WpFKiVKsMbfjzpG9RI15JgHcNA7fa9ihgKSVyKls40Ch0d2MVzoZ94+gbgOEHYQiOwPrs1WgPbccJGGiAx1Vqn8IDIrze8tAbfB/iEB0QXHDVbLWY/z7AQ/TahaxccF6uVl3z1nKhy45VCbyIjDKZTqb+f/bePEay7bwPO9u9tVf1Oj3Ts29vJUVqoSWLNkVJpmRJpiSLoRiLkixZEhXHiSMLDgIkcBLkjwQIggBO4iSAHcgJsghxkBgKEgSOQskS1/dIPr6N896bN2vP9PTeXVW3qm5VnSX4bnX3dM/Ucu+tc9e6x37izNQ53/nOd849y7f8PlB6aqPrhxBcUs8sLLNqufJc8+39Pf7+/Q+jZdDPoFLQRigp2p32YP/GSPV7zyu3IJ+iwZ7CRKVg2NqHcGZhSfzGz//y1OcgRG2sba5r4U8hJfYbddqxbS30vBIBBSD2kpzIawczUF8oyT+4d4c9WF+bgdG6GyJEdRqGCZG/2ZkxQmR1xwicoWqMWlFgkILI4HKhhK5dvOw4tCKEjvarqfdxdys53rXqVkPcf7x2Wha6nG3jPfSMuwAkQCgRJjMT+20B4hkYgIMsAEW/MkW+WVBOP96CPF7RIL/Ane/w3ZloYz8g15RLZbRYm0/seg1onQ5goW2b6sh9HRCPqSULDn5Wq43aU0Z9AarhzUtXT92flZL80eYGa2bRoIGuH3BeBWNttazv/UIJkXOVmqfojkIuL25evkqFlPL2w7tk1gNl3Ew6Br96KX1F3LuhP4B/zkmU5f89Fhek5jSYkRl/n19AantvF2fnsJsvK5V1AJgFtdpt33owcEQqF0pD02TBXWNzdxs9ex84aQAGqQIcAup0bd9MxGZqRhiAQYf98RdfTVReTPDYFEjhdqdDgn60xmb+nmeEW+02m5TUOsb8+2INEyIowbhcKBEvXoG+OnPZCDwOzy6eYeVi6bkWPd5Xr739RmAedS5ZnLlqYGyEHIgAaXdUhsGHwoMFsioazAR46JmTk5sBQ5TD7/z1X4FHnZvqY+uAAVgXfJ+UUj7ZiSanU2YAnnopOAT6gqv/7+t/ln14A0hfVchD/vrp4db1zE58qWRG4NFzAwp+iILJmTlITurc7SE3JfzZMAzwNpcGZZiAGQNDSmGMFFLwJpoZQ3HdavD7j9eevuvgfQRliJNsfL+CjLO4SGAA4ZcsRJnDaHdwpsF+YFb9yP7K6kXfUac93hcP1x+FbrQcGH6JcHI9R4Qy5UfWo9rAfn/h7HmUhrHolMtJWrDWul2bznqQQVDyPUlXIQXoXLLRtNi0Cn9I73R59SKplsqnWJdKygfrj4mfXMJhyCAtfTDGxEJtTusejQmWoO8zPTjqwx734pVrDuJEr99Tr73z3eyNOXmRCSFEYFD4OdMUlDKta2PykOJbIzP+jp4b0BGCgS4rMykByGClrJZ/4++R1OA8mq/Uhu45sMa293dQ3WoeC/lZAzD8wMErsNPpRGcEHmG89bQ0Rni3w4XppSs3SCGf90QuLpU7XXtWIQHVfr0+Mx4yEGWLMKblQhHHba1SQsS55bN0mOIeFCvfvvU26vai8VqPy3caMh/S7tmkzwc6XSigxAF4u3HGR8i1CYryrJyWAKWMf+oHfph94tWPTSUaMDI82d7E4Nmlo0AUcL3ZjCRPCDgOYIyzxTLlREIU8O17d9j9GY8CBoVFpVRGuWdylkwp3lQ3z4zAz08vwIkxxiAvpWuFF6y9IwPxwGDMkMmYZIah4O+MUkwpxRhhOD/BUqwwcmBQoY9EKnQOGnX+4MmjEwZgJJBK5lhS/ZEnaHCUUm4wIxl3Aoy4kgqU40yXQ96kqYK9CZwIl+cXPUVzAV3ITbi9v8saJ5Q1k/rT8TtjlDPCWFpSxUCqgFq5wuYqp9MV6ZBVymjAI4V0ujaG6PisBCIBLpWkjaaFdelHcrm8ePnqjefuJHBtubP2AGfIMYHMo0PUyddbm8NBOJYYlHEvUcWQlu3M4jI9s7CIpJL8wfoj9nhrI7jBp4Ay+IFyLsbqyKYZZgb//FR6sD4hf4RpZOiDw9aUFFJs7UeY4m2ahZ619S0BZw8SUlqtlha9AiD2VIplAo5AwwrcC3YOdvFBs+H8PMwADNYDQJJAHbsTmHfMRIlNCU82KrcVPFqvnb/EapXqRBbiWQG8B7lqd/3hhMdzTJO5gnyaewcHrpV8kynGswZ4SSGFSKlYRKVCMZZMEkLkhTOrJJ87nXAcmIXL54cP77OtvZ1Y8p42pgDGpu+gNjzjsIOR5H1Oxim7IHKKUAq5vbLcrs8sjIW5efHbv/g3pjqUlVJyc2+b6MzhCfvgk+2tsPdBgTHOIsY1bR6Q0uGPZzQKGJTihGBULVdJ5nzifUE1rAbq9jI4aOfxgrE6NP56F6SLFgND8cBAfGgYRgZjymSGgFQKEFHMCGyLGIORGMrAUOxwFyvD2F79QKxtPHbOsyzvr4vJz6q4kgA48CQASQb0a+AQOdV9zpVAnqkEsrl6/hIYCzw1h3v73UcPtKHHjOoc3ptKIcIY44xSBimy0lQoIerC2fNZ9hL3kwq6PwUogNNGp7rvcjZqttrtoXn4/I6eUirOnzlHF2pzz5GA/eOD+3dRNod+pTu53Vy1hoIyaMEdrVoqg2PjZEYOa5imKV+6ct3ZwEF//9o730VcPA0KcE1ohiryE0ETOocNKEQ5MwdONaHfOXSOQwct0DMe5vwNW2+lg/1QaHR7Xb7fqLv/2EPhKuskaAkAUofVao/V03vlYVwUMNACPcVufR/vNw5GGIAPlQSgbO50OuQkrKhXZqKoP07BAfC1F1dW2fLCYhSsaepTcSkVbtkdGhaUlSbGfZPpdG3ZarfT9TodIo1CLs/LxWKsPbDB8/HS2Qt41OV39+CA37r3QXaY+V7t7hsCnJTVbj3/XWAMKbMn5jcBBRDGBIMinZKZv6seCx4U/L/x2V9Gwx7XbmdHKSW2D/aoXth6xeuWxax2yy0b09cDox1OmWZweqn4puBEAd+/w+4/nq1cwBCNA4a0WrmaOZz4Xj0IZUbggfDAyxUULXEopyKK2cBgnGMmZ8yBpAZnB8dQLBWgTiOJEQa0TYUJpkihwBUju/V98WhjPR7CisOEZTxokQCgpRhwWYpxCSPf76jhw5k3X6kxr/fIRssSW7vbgX2vR3nTDYMJRlgqnftA1zNXqTEdqVxivLwDY63X70m71029ziUwAcIBj5QUXMh6s8l0G+PAGe3VGy8NvTuAAfjW3dtBDm1maUOUValQChxF0jAMUS2WXZ8B4Oxy7eJlXMjlYd2JzZ1t9OHafdftZ3BCFec8kLt3PpcThMTkcRLhxILxlzGKTWZk58joeRDNlhUJsl+ESyPrGinVbLW1p6OB1GrVUgUbY1IIgOF5v1EnwyOAT0+Natsd7UxOnP0pYKCPHjej+ji7tCwvrKymYUNy5uYk9OtEuSawAlyiG02LpBWaCC6UBmWyVCwxI966FGf1HHm1j/JOhDyX33zrO4FcrBK4fANluW13hnv5YiQEF64dRAbRVFQxml3UYMLAu/qTH/sh+iPf94O+508pxPca+6zVafumMaKhWt/eDAy6aFifXiNYdA84bfS4EOqPv/4vZ2aPhDMun8sjUJykbS6jGA9Ag+qCEYyC/2n7NE0TJdFh6dmIYrhDGYYBRjQwGpMj6GmQD9x7jw3FAwcc39/OzsGeXN/agDNjZvacaddY1t6dBGIcBazCzPc7SlqgmL9y4fIAGMBFATSBRxtPtMHEnuwSUnkopZhpGAoyoicgetuFxIZXYYypCyurbsXuu58UN4TwQZrBQvuaYa6QcuCe9ToAD3gB54ZzS2fY8sLSUOYgyufW3dvZ2vc1daMbYYJ5PlfAlWIxFMPqfKXmGj0C/AvPLCzilcVlZ97BCeCN999B7U5HsxRSQ05wzgOZx2JM0RvDnDkH9jkz/k4UOQSKHDTrNEP2miiqNFVQVqsFUMuBjMk0DA6BFuOIgxHYjQHYOUvgEig05TJ0PWK/MNAYcaTQyMHPVar8xqWrsfZadisjhZQDCZjmzQMuMrsH+25Fkph6mBAB+UPKxSLNjcBsj+tgbly6ikbBhUml1HduvR3Iwyeu8gibL4WQ6PV7dFyOH0BwEFy4fgQe5nkFzyGaGfwQmqtU5Jc+92u+le4YIbHXrNNmy9K9PHizZbGGfrpD+YRxYJKFh+ucRIgC/vD+XXbv8UOdZGNLC/L9ggE4K/okMItGYEAfMZiB034+gXEboodPGowhIsSgTBkDtA5ywnoD0cTwklR4hKF4c3cbbexs6Vt8GaVMAo4zKBJOfHucHFch369CuNfrRpfC6sTqAGPNQm3OdR7aXr8vHj55pFUxPbjbI8AiwElwMp724yKEiIXaPC0XS9OSytojJaEMYKGDUVimScigk7Ptnmi2moHtPwRj9JEXXkHwv8MKpJn54P5d12//NMk/qLEcphyR89Wa1r15FL+AzpY3c6iYL7rWQUBU+MvXbh7Pe91q8Ldvv5cKXbfueZVKCSmE9rk8hH8G55mZlfsA9pki0CXqnrcU0lPbe7s4g+tP4cyOGBKkg+AB2lMHUcDViXd9twZgZxjgyRYk09qmf0L0cCFfEK9efyFNG5OAC1/bttm4nJ/a5BsyoT7vc4DQCbnbwLojzmMc01Kx6MC1JK3A7fLm5esj2ZZK8Ttr9xkoHbMSjATAgNTutCd5+DhRwH44MAwDeck/46ePuLeBKIlf+Zm/js+M8LJ2w3+j1VQHzYb2hzjs8xu7206un6ALPHxTHSoStABH0BcQBfyNPws1kjvsoYLBzoGjMYywu56J/mbFCAzRDRCtZhomGD5nYm7dDBIcCE/mKIY/m8YgR7FBwY+LYqizvb+LII0KJHgUghMpJAFlPpwfUgoEFuSsZBLwIwFMsMoZuZh8lFgM8v32YvVehGjUK6sXJ8pIKcW393cZ7Os6yqFTJ2WUesonqaPvKGkYhiHPnznn2nASJa9J6rvHe8rudieu4ySNSRev4JQNQTKNZpMGiVYHgQPL8wtkdfnsyHno9Xoig//VNbMDOpQSNV+bx6OM7np7G1CDuy5EAbu981JK5ZXVC6R0GIEqpFTv3buN9xv1INhLNM3B3Ve//iSfy3NCSKzuH2FOFNw54L5hGpnx143cQZeX6crdSCoddQCRIQzU3pxh8OqEKGBPBmAQP8DOhcH84enHkVLeN9IJBmDwkvrYi6+m6hKLERYSSdLqdMKP1A72u+RWu8XsbjfYXkKgDl5RcI8sFQro6IIWQrfauwCl/o2LV8d+P3v1ffG9u7d9GR+1M5w+gqrVaeFJudkhDwzv+4O4gbV6GG01s/k6Abb2L3zk+8mnfuBHfK+gtt3mOwf73s+wST1iJNrtDtpv1gP9xiD6F2Gcyhxxk0Qc9O/SyQWczihgeARSSnC1XAMzVNCinFn6EG1itSyUhvvRqEmEtUQIxoaRo6m6tAexagH9CCHIKwzKLVBIM/AsZ4yJyol8chghDqovDHWd/0EKjMNSCsWFYGAUfmog1q8kC2LoGc1oJDBQ+DEWh3zcnHOkO9emDqlCFPDS3MLEfLSgDLyzdn/qLiEyG2MCRl8CKAKzVAghcmlugWQwnIHMugNtbHft1Kce8yA95yhtWBbu2OHA7b56/UVIHTGSxXanze+vP9L/7vQglLRVna/NobDRE+BsLeTyzEugyEJtTlxYOXe86XdsW3z71luzdQhMWHxw/xVSMt0GYDDUF/KFtC191+M5NP6CE2q297iUGjzStvd3s+/TpbwSWw0j1e7YuN/vhzIEeNTPVWtjA7k8G4ARRqrb7eEgPdxOSccPDLSLNj/06sdCmYQoOul0bdQLaZEFPT5QcO7X64F4agXN+7P0IfK8XCgkHl4XvNmvnb88VhcLOS6/8da3M32t/kWmnMe3AD3vxKKgLZndAAAgAElEQVT6/b7vOTiM/IQDBMdBuTdxtAFUqJTK6m9//td9y7Db7/LN3Z3ALsPgORg0Kkfa4VYDWDauSaYxCpgQLAzDhMjfwNa9awHPQMWBEbjlIPSkrQyMvwQif7O1NGxywdkVqUODrxJCcEepJdVpoy3ktK+Vq66VDAo5hmSItQbvDQx5SQcGYqk4P+zj0EicRtShtH1HQY8HIMfMSKOAFer3OYozjJ7BmLy8enGkNxTct+tWU27tbrv+Tp+d10OkBGVAzO+MGX6PZGGaObG6vOJbhkF/K2mgD/npj2ChdRtREiYf1e11RcOytBuTRslhvlrjl1cvjr0PNZpN/mjrSXZn0rCY4GwrF8s4n8tpoOadBDjiz1dqrnUQlFL16vUXjuuDgenu44c0izI8JXsQi3aIdkDeMQ1zJuGfM+Ov928bWtg9mx80Gtle7U98SWklO90u6fV6ofKbM00+Tg/n3QA8YF/2+n0yLv9kqKN87hWEJFKO4mJoGRyQLwJEQaRsBtU5XM55X6h2t5P4R5CQQu7X64kNIYLLo8EMUS4WWVogdUGRcfX85bFzAvln33jvHdyx06eUDuq7nUQXvBZ7gkNuZdfftQ5vI1BMAbTQLObzME1T/vJnPktWl1cmTc/Q3/uCiyfbm67ny2sndtfmu/WD4C6PGEsyyCuZlQAk4EQBP7jH7j16EAD18EnCeVfIF3Fxhr2gw5c6QmCEs9rpMgI7+UUpy/JInVxQgCKjFCj3AAFECDDGqslQdqBEnPOgRBy7hjEC8BGJkCIYYQJrD94cGbx0FF9+PPoExBgGQcAksKvO8IE634PE3V7PWYdxLoQScWZ+aWReWqWUerS5DmPxPAww/MLZy8DwG/YceOY2uAawzy0vLCUytVJwUgmWcrffc5ABZ6xwIQVpNK1Q9aCgu7xx8QqeFGUIKR+293ZnbEr0Dxfgtou5PKRr00/cJUVIGVfMF1nONF21oISKi+dWabVUPq6fBWScFh3otHi/j3XfGAr5PCBvhHwJcrUsAq10iPiFcpmjrlc5i2bLoq1O22u7rH5CJABv4263R/zc63UMcaE6h0Y5g/o1AANfAqLQut1usJvdBDjnYQLC2NGHjfSYAmPGzUtXSblY0iHfuNLgUkrcsjs0sR6aGCkwILbabdfeb3GZDEIIQOiiSrFE0+ZokDNMcXn14tjvHvIA3330gG3sbMVlShLPBxwkVrvlyRinwwAMgjvMJUYMZpBZigiFh8IPvvx96if+wic9yf1osUE+usdbG4HtX3DQbe/voaAQOTDBHCMcnIE58V/l9AOANfLHX09+LmCAv6qUyihnRuMpP/1MJJtCmozAsO8C8gR41M90OTT4KqSIUpBjkDv3eT93eoAwxKOfRdrEnMFLaxNloggB8oNp5ILVB5ySCBbgaNrrdROzSZimIS6dvTBURt1+T6w9eexJfrBPwlvTgeDOUi2gQj7PVxbPJGY9JOoDH83sTMFCDxBX2qgdgdK+XCzxG5euTlrfYmNni+7VD1KyvKIZBjg1GYah5irVSfIOnEFKiJyr1FzrIKrlsrhyQkcHueXXNtbZw43HgfOalA4gXYTOMqvwzxgjDk5nOTNDafK6npRS4qBZp1EZB73ym9X3JgEFdtJ+D3fsruu921sP42vD+yBnmpD+aegZNo0BGHoGLziI8vP0aPE8QI9GYBi0GnjJDy2EUn7l3AW2UJvzzEoCG6i23UlkvhYweDWaTRJazmkNkwveephgWi6UIoOM0TCMsSQKuby4ePb8xG9+v1Hn7955P/LLc9DyCIt+2+54grgDR5h+n8NmqJVFgxmQU1ArzTgTKxYK6t/4wm/6MuICdObaxrqvtm5l0uv1+PbBnv4Jgb0MoZnNAe1W/tPWA2eZDx/cZXcTGgV8GH2EquUqSQvKxbRzGmF7ZbUsDGlAklwgv91MriXsoBdBgYhGzo8gneV0eXghOrBSquA4RAdm8NJJ/jJH8w7nQGgOghgBFDnWrcQNemYoJXJl8Qx5FiEDvvWtvR3WbFmuWaCUcoMyNksOmeOEAwr4s0sroIh2LcOsok4JDFAgOl07NDhkndxPogX6qH6/LxtNi0UBNQ+BK1dWLxJwshxXlJJ8fWuT1a3mpCFlv4+RAMh7cW4+EsX9s2xhgmW5UCImc4daCXvhR268CI77x6RAD/St772JMmOTIxLn/qDzAwC9mGEYMwX/nBl/p15BantvF0dxnkzNeUZgkgTg/Y5a7Y5+3eyknp/5fbE2j4a9E6Y1AEM3XCiJOp3oB+lWJvBQPX/mLDm7dMZtk0TXA49FOPQTePCrnf09rYd0UBMJ3oIIIVoqFFGpUAiqm1jQLRWK/PyZcxM3NYhs+/qbWR7gaScNvIh6/R71DLmPkeB9rj3PySAvI8YGM+nJB8a044xre4CB/txP/Cy5eHbVF4tBe92CkXl3fx8DFJvOcpgDOhH7r85xR0ELcmv+8Tf+DPuJ7IuC36M+MSGcUYpq5WrmKBDlRJzuW1ltK7HpF0zDHAlZFB8R6+FkgFaEAU4ZzmnBp4jwHccRJliUCyUKSqpYlwxeOtbTM4k5xyjJjIlvg0l0Jv0OiCdCwJMreSWfy/MLK6ffT3CHu/Pw/ti7FugtlFKEMQZnLiNZZo5Tk18sFMWZhaWJjsnJWzHJ4xggoXW/RyKUApdK0kbTwlFCXedzefHS1RsT1zfcIx4+eZzBik6xYECvAYgp8LaJSzEo49VyxdXZSgnl51fOsrlK9ST7audgT7x370NXNOIy7iD4OELT0Um7UMhLjGYHhiMz/k6/esApI8vNPb0c40YBULC4EMhqtyPfazFGspArqFKh+NxhpsMADPig4PiHOnZHu7HBmViPEcBuFsPy/CK/vHoh8slxw6umOgLyQLTtDtMdEaiJv+fI9Pt9XreaiZgjeHyWCgVKTnjcBSWXqOlWS1V+dml54ryAUeO777+LIXI1K/4lIJTk7Y6PgwQjLrgI1Bt7VpT133fzFfFXP/lpz69B2Gsfb2/4guz0smL6gvOt3Z2J36QXmpkB2Iu0pqvrRAE/vMvuriUnFzAhWOZzeVQqlGLhJT/dDKSutbLaLdxJ0tmLEcoZuaGeqimbHcdZEBy7BOcUvL+DdvyAfMqFfJHmEw7PnsFLx/9LME0TBWGcPEzthHr9XuIcpU7OGuSpXV1ewXB2DvQbSNWtptze3Rl6v4RvVylEGWPCoGwmnC79rPLzK+cgX7yfplkb/RJwYKE7to0hCibJpdVuI6vdinQIlFJxYeUcna9ORi2USsr7j9eI3Z25vMxa5gi8cKqVauyQBOA9Xi2VsVtknHKhxK9dvHRKJwD3zLc/fA95QZrQItSYEYEoeSGkNn0JRNfl83mItZoJh/mB8ZdAuidtMozZEgmFHSGE2N7f9axXDIW5rBN/EsBICiGV1WrFal4X5+afe5fpMQAPckQqyMfT6dhEqungyoZKHSOOFNK22ZRLZf7Sleva6PlbKaG3kgop3Op0cPy9pxVvtloszlHLAKtnMkOUiiUWJ0/BoFfVfHVOLs8vTlT6g1Hj3qOH7MnOZtAspZm+sjotfzDOGBTMItAc4BCVAFBJYUR9RDnJeTOn/u6v/Jbnyz3kItjY3Qoegl8puds40Pvoh0hvnOX/DWvdwf0JcgEHbQzSNR6AojtWYusimtHRKYHEGIHBKGIwA6cUzvSpwVdwIoWMBPIrnyuIYj4fq0epzsUOtDJ4ad0S9U6PUsYN/TlCOITK93o9ClrWpJdiochXl1cc/YOTJuTJOn4W4QeQdpRSDPJQMgJ2X8/Xz6SLyRX/8AYpFUtqaW4h1XubK2HEr5IUQgxgoYPQCwY0XoB7FlzIerPJ4mDANpihXr3xoqsNAN6cHz68F/ybMyDZR0kW8qkX8wVajCmKn2EYolosu97nXr3+wnNoOla7zb/7/juzpvs+XlbgSCaE1PrOhpQ1JjMFOL1EuX7D6BvQLimB3KKZ8Xdaeds9mx80GjP7LU4rvzi2Bwcsq9WGFE6xYQ++2WK+AKlnTt0htBmAT4zUyTkbpRJzUg5g4DVnmvKjN1+eaMSKzQxqZgRyxPX6fc1U9ZLbO9hHMkYf0dHo4JII3k/lYomaxmx5HMO3tVibxwu1eVeTfdBs8Hc+fC874FxJ67lKqtOdzoNaKukYgf11764VRChgTEiKFfjINHPiF37sM/Tq+UvuhHJUSymxub9Lw4AOg3DvzRFRJN6YhqAUJBDGWbSJV8FNUR8cZu48vMfurN2fgkrwTcFYVy1VMDx6sxJ7CcTaCAzwRBgTZRqpSidwaPCFw1cgKSSJQ44nxgxeLZVn9y6WwUuHtlnlzNyp/INTdex41AvV7/cDvcdOxaPHxmDMhZQigKDT7ffE2pPHx2MDwy/GmFJCMdjRXVl9PPaftuoXz56fmbQBSZ27hMBCO5HLAPdsd+1YiJoQws8tr7Dl+UXX/Ny6extyS7iun1V0gph43jRRxSXMclQym6/UXKHkEEL5ueVlBvkfTxYppfzgwV2yc7AX1RAi7fcQnlUrEmaxUFCwgiIdWAidgyGJEIzyZi41d7EQxDaqC9FsWRlUf4QToLtrcOa0rBbkatFNemp68OaAs+CkI2kQBmDn4mH3unpz9HiAgXZjAKaUqu9/6SOp37BHrRrwcOTcgYSO5UYupBT79YNY8UbI4GFeLpRwPpeb+oNMIgGCsViaX6RzlZor9oWU6utvfmtmvzNXQhpSCS6pPcHhETrVN6CU4pzz0JS+AMGmP/jDrxT1tnv56k3+2R/7jCdZKoX4bn2PhQGDrpAS+406wK5pGDiWJAgcRw2cpZkEGIq+/I2voDgYjJ6VMyhIKCW4Wq5RcIDKSlIkoFSr3Y5dKoajXPKmkXhlAmBcMgRRQ0IoIaWDuhE3BSylRNbKtezDHfHZZvDSevYzcAiEFLWMMi33/iTn+x0n0UqpzJcXlvD23g4FSM4jwy9E+6b1Dq1nhT2lgjHhtUoF3qNa1ppu/jJ6pyTAFZKkY3dJHKJqn50bQBaw7Z5otprBpLLzuRgAFeWjN1927VAD9w4wAGfFmwQAYn+hNjeVvsVbj95rg8MkpPEo5ouu7nHFfF7cuHT1uTH1+335zXfecEXDO5exbwH3dG0Reg78cy4PsKeplmdm/NW8rpUS+806jTPKqeYRp50cwD5DPtxYjhPeF8V8gRXzhWP+AjEAH1GHHBRaL3ouYaDhkFRq/GYMVvCPv/QRNOOKTC6VBEjoQGFivX8NWLQ7bRqG0cQNb3DwYYxJqVDAJz8eN23TVodgzM8sLLNqueJqaJAH+M0Pvodbnbar+lmlgQTAQcNqt3RcKEWYkROOEotgbLJURXQ5c2JQhv7er33J4xLFfK+xz8LKIQXevU92tnSsG1dexh6FkVWfIIG4RgETgoVhmBD568kBIpvwuEhAyVa7TWJ0p+KEEueciIuEPPBxaPCF4F4OcHKxNPg+Ox5487jJIehBDjNVNYOX9jbdGtIDqKTn+50ksUvnzqO1jXXnfckodZ3fcRLdWfndiaQ+dwGR9AdfpWlKVV9y2bVtGodIGYUgVkWgRrNJwdkkTgUTIlYWlsjZpTOuHRzA6f79ex+6rh+n8UbFC6AazdfmcBL0wc49rlJz5RAAdV+8ch09i1QoleT31x+x9a2NqEQeab+c68tLnjNNcHhL4jvG/RxgJCkhKov8dS+ySTXBUWdnfxfF1WA4if/s99MSsNptvUGvAQgYzjlAcD0iHagBGDoB2Je+xs3WlUwwEkihsRsyRAC/dPUGLuTyrkimvJID2x36PI0UqpIHjWZsvERLhYIsFYoky8GEwCjEzy6eYeViydUnodAgD/D6dpYH2JXADiuBol5TFCBA50XyGASIWEbTYy8yTVP83F/6SXrz0lUvU6nqVgPXraaXNr7rQhRwvdmcGlbm0Okl3Y8a31IOtiE8CL78zT+PzWUSct0X8sWZd34KdtaDpw5ORe1Oh7QjdsaCvYUxihg1krG/PHU8VQJiB4RgcYzwdbOCwACc3WPdSMpjnQxe+pTABmgRlPm8/3GlEO71u7GKxPO4IoZWd5zTEZYYKQJO6gCVDYpARpOxFeqQgS4amBA+V6myWrmqi2RGJyQJHKH0AVLgs7mvQ2IBuoFQHdywLNyxOyF2662rV2+8iABZy22B6M7bD+9pcQJ222fS681Va88ZSeM6JjhbC7k8c6O7JpjwlcUltrzwPHw43GFfe+cNxAVkLJmtotMAXCwUAe81Eh1bKLMGxl9MVD6XeKSmUMTlthO4923ubrutntWLsQRanQ7SuacENVQ4O0qF4vHZEbgBGGGkur0e7uvIN+sWBtpFPUqJuHbhCq25jGQMakJiRFfZvS6OAxyBQkjt7u9FeqCC0ttghqwUS5Rmj/PjZUoJEeeWz1IvkdANq8nfun0rPZbAYD9a0e13qc783Fr2Xh9jxhhLQolKaJTX0BHfuHiF/9JP/qyntWzZbbF3sB+ahk8qqZ5sb021f2JMJMbphjTysaRDaQJRwHfX7rMPH94Lpb9xnYCxqFIqI1BUZyX5EojaCAyKX4CGjTnEqZPqAx7okIpECJ5Yg+/JFUsIluViGaB5k7+QEzaCWYSXBm9z0zA93kOwEBLy/faSu0hB/4AUxggDzCQcoZARTCKEIUXY8bgYo3J5YVnZtk3BUT4r3iQATvwXz573uL689ZHVDlwCgEJH7G7osNCq2+uKRtNiUsUTshEkv1Cb45fOXfC0F9rdLr/76IGnNoHPckw7gDtRqVAihXyyAoGciGWXsPc505QvXrn+nEMAOItvbG+hO48ehKabiMkygLxoWs4NSijK5Uw421PpcAHvNYKxzOVyVIvAYrIA4sAGeBJv7+/O2rcXB9Fr4wHSRnTsLopKx+5nICejgIM3AA84lH3eB+Pi9HuIC+MuclEHIhkvnl1ly/PPe0b5EWpK2ggunLzALMr8Zb1+jzcsK5ILLFwIKWWqXCjSZ2FTUjLHUw2DECIvrKwSyEPitkil1Ne++/r0377bDhNcT0jJ23Zb69qP8nCCfHAYE8IYw3BZTnqBfC+//6tf8gSPbHdtvrW/q3VOx8tR8bpl+YedBhhvhFgWKRbdagXvbIgCjso723HeIBhVy9XMYBTdMgikZzACdzodEkVahpiiQnCEEUVgpZFScsETAensdXFggnkpX2SmYXptmtUPWAJphJeGux9E+XtxoAUveq1po4KYN8fA64T8gJMIdqIZEViRTht4J3UNugfYD6G02q3wkdImMRjj30F/M1+dY+CclpVUSEBxwUWnawete+JCCtJoWiTCyGNXEwaw5jevXEduIj1PEmy0W+LRk8fJf2y7kpL/SnAfKuQKuFwsJk5WkIqtmC+ynDn5LgcK/xsXL+NhKRlAz/vGe++guKSG8T+bHloqxLngWvQxeTPHCU2vRyXow/NmLkO/9LC83Fa1e11+0KhrWYdu+8zqaZWA6tg21hmspZW7EcQgCrhcKDI4D8IyAAMroi846na7wR+2LgzAwNDqmRW1unw2M0ydXihSIYXbnQ6ORvmseLPVYmFHIsODEiLeysWSJ+NmGB9snPqAy+SlsxewF+O4kFK+ffsWCSsPapzk5ZEXZXVaWKvzBUaK97lemh4H5SjLIPKLMYCETvR+axom/+kf/TR7+eoN11Lo8r7Y3NkK/tw7zZFa3970Pe9g6M5KdBKIMgoYoBUBkrJWrmZOANEtgUB7BoOFbdvYardC24/B8OjFGBSYAADSGR0bfB1IZ0i3oPXcDYx5/4TBqaOQyxMNuVn9M5G19C6BBMNLg8OoaZgTLxPgSQ+OiuD4FHV5FqbZ4Qc7cLESI+RAN0/DI8ikUiqTUqF4koxqWE0ch/FPM7aw2jLGHEfksPrL+glBArDPSUW6/V4gsNCwx1itNoo6BYZbSZZLZX7j4hXPBoL9Rl082d4M+73pdlixqAd3IdhD5qs1z/KNxQDgAkuInKvUJu6BMNYzC4t4ZXF56F1/36rzd2+/n1g5eJ0PpRSHO7/XdsPqF/KF1KZUyYy/OlbISBqi2bKmTtUWKIcZ8TESUNLu9kjYdipdUwL5vBdq8zhMAzDwziG/Xcfu+N98XeT3Bc9jNSEHMDAzV62JGxevZBelEauq07VRFN4Nuwf7oSnjwJMOYUxLhUKW49DF7gJRgdfOX/akyFVKifvra/Tx1oaLHma2iup0baw9+gEjwfs8FrnUwPMIwiUMZtAkGxivrF7gv/xTP+/6DONCyPXtjYkPNc0rnzdbFmu0LO9kIUEdJqEZhrwzOBstBlHAXwk1Isp59OXyCGDRZkPKszvKsIzA4DRmMANHtucPIFkPI3zVMaRznKEfg1qVpmnycqHk+uwKio+Mrj4JxBleGpTPBjPIyG8fY4GUBHQwgEvWJ5RJlFzCNE8i4/V30E3kcwU1zPAgpRQNq5npIyYIlRAqFufmaKlQ8ir+rH4yJMAhsr7T7VAdQQhwz4G8uAD3DI5eSSiUUnll9SLxHuGO5dbeNtnZ30vCMCPjkdJDBThO7jMXQ0qPQomYLvJDG4ypl6/dHDpYSLlw6+6H+KBZj2w+QusYIymFJDocrcCZNWfmYENJ3ZmdGX8DXpFKif1GnYKzU1aSJQEFwaz9Hu7Y3cTqyDAmApAvwjYAw0xDzg+IMPW/aU6I8HUgmZSaeLIXC0XxyrWb/vlI1rr1zC1cnAUXsjWNwd5jr+CaddCohzYnpWJRlfIFsEt55HR2q9+8dM2z11uz1eJvfvBupngcsmxAgdcTHNtdW/+6x2BTHuQwjFOJKRSoaxH93hd/B7mNgofDaG1zPfQNBhSqG7vbnqNqDmG79a9F19LNKoIEoogCBoVTFiE4O+sPHjN2t4OtViuQx4xj/DUMTMJMkeUYlZz7P5ZKCef8U9LzPpjGVcAYFdVSNdvb0zi5I8YUNbw0oUSYzHx+zWEEumfV63f1vws0wTTrXiaQ9/fMwvKovZYDBLbVbumXh+6BREjPMExx/szZbA+LcA5C6XqAXiU6Pd+w0KBrpI2mhZOWYzufL4iXrlz3vMaVQvzJziY7aMyAMW+KRThfm0MGS/42a1DGq+XKxIEMHAouPIs6cSzBjm2Lb996y/N6m2IKomrqRP/qcDbL53KckPTBPxOCVd7MZTrxAFcorL+d/V0EAZFZSZQEnDt6qzNFEGtMhkspkVEYgAEPFFBhIRJYe2QaeBwrpVwpswxmqI+9+EroivmYzL9bNhyDfavTcfKiBVlAGdnutGnHtoPsBsEBZxqmABz0WEASBjpavcTBUA4GYK8F1s7X3vyW12YzUV8hKa1229We5VUgAGfHudDi8ei173H1wchICIXIsMTBzBqGwT/zw3+ZfeTGS65EApe9tc11V3W1VsJItNsdtN/04FCT5f/VOgXTEnOigF/7CoJLZ5AFDHXVUgUf5SQMsq+MdrwkEIQR+NCJBJmGSQN3rjs0+CqkAJ4VInydu2rQ99V4zaI7buA7n6vUsjePO3Glv1YI8NLgkP2sEwjGSPX73DfiTdAwzUFN/NL84ljHQWcvtm2aNINVUPJ6li7AZy/PLxKA3szKTEjA0ed1+13PaHStdhucKRInJEqpuLCySuerNc+8KyX5o80N1vSD/OS5t+Q1AN1fuVjG+VwuecwP4RjO1mqpjJkLO+RibU6cXzk31MgLeVDuPn5IN3e3UyGXMYOQQggtaCPF0ykcUiG3zPgb2jSqjZ2t7B0Wmri1dATOI8hqtyc63GjpLWAihBARjQH4cGAKKdXp2NgrFNtYiGeX+X+BBVBM/eAr3xewmNNBHowYAAndD1YRrQ4a9cByDwOsBaNMlotFZriATUnHzOkdBWDHX7941fPBBR4f73z4HskeJs/PR9vuQCiE3ok6QU0qKQQXsfPuhMcLBN4zauCkOWKcXzkrvvgzv+RapmAA1uF16meRwKPONZRaBv/sR8SBtVFI8btrD9jtB3cD6QNg2SkluFquUZrlfQ5ExkkgCoaHbreLmq3pIUhhTQHkq2mYwTyUIB/nAC0WFDmciwHCRWbwdbfSFmrz7ipmtWZeArrgpSll3GBPQ64g3+/EO29EMM1BTDooWyqlMn0m7+/IrlrtVtBv7SCGGTjNXC7Pzy2dCeZcCZz7rIMpJCCEkghQskAJO6ocodbVm02mPZ3SFMx7aWoahnrl+ouedSzQB6TberD+iIJOISunJYAJEcV83vUenBT5GYYhqsXyRF0EpVS9ev2FkeuKC6G+8da3fa27pMgK+NThTA0Gd0inghBKzVkExt+cmcMkQ8MMfDmDw8X2/u7EbzZwRrIO3ElgAB0vm610ofNEagA+lLzq2B0ICXY3EUe1RuUCdpEj+IgEKKk+evMllBkDXYtedXs9bPe6rht4qQhQqbsH+9ovIIQQTjAm5WKJ5EzTC0tZ3WckwBhT185f9j5HkAf4ySP6aPNJJtOnEhDdXpf2eD9QmQAsFOf92F5UwRAM0HiMGom5EIHz0N/5wm+gootIBNjXnuxsBubYMmnx2F2b79YPXM9/ZLk6Jw1kRn8HB7k/+eZXtCuECcHCMEyI/HW9NmZ0CmZi2I4RuNdFzSnyUIJzJqXMQXbQJTSIFlQKS8jjCwpOnkX4+hYtKHmqpWp0+Zh9c541jKMEvMBL50xTgtt1r9cbOH3HFKZZt5wHeX/zar4652VPVA2riTOnlqezAegFZxaXcd5MR/Se7nU2C/QUUgguAENgoblCyoF7trvBIsgFKWfQVZ1bXmHL84u+uoG35p21B7iX5ZY8JT+M4a1jqLlK1cse7GsOomg0X6mhSe92Sqi4dG6VjsorDc6UDzfW2drG4yiGEFqfOgzAhXyeY0xSs5Yy429oy8/pyO51+UGjnpr1E670wu8NUklZrZZ2xOLwR3K6xzgYgBFc6uxuF7DbppcHRhwpd1qYLcYAACAASURBVF45kBfhhcvXRuZFmJ6ZVFJwwuAhL7DuiLZuryeaLUubEYiAggFj8PjDxXw+lZMR9qAMxuTV85d9wRVb7Tb/7vvvZIfeAH1AccFFO5z82qLf72v7roJYcxA1hjEmBjPIpIdMEP17pckY4z/xiU+yj7/46sSmSim5ubdDonqUwz69vb+H+i4cDQ7nIftGJ85qeBUgCvj+4zX6/r0PvTvejGATHnyFPJyLGZRieDMZ/57ACNzrdVHDhxEY0q9AkB+jzNf94BnpwGOAAj+CcwrRgpkxZPr1A04fpUKZpiH/3fTSyCgEKoFn4KXh/tFsW+DpLbETvY907BOBDkEHcUapWl5Y8pxTT0op/OzDOniOI41iocDPLCxnd9M4Tk6IPGGEhEKI2F0bg/O0oz+0QXfUTLyCFqI0P3LjJc97xZH44a33wYO7enSpIc5p0F2Bg/lCbT6V5w2kQwCnmGK+OHF8tXKVX149P3IPhfXzrXffRN30OhBIzvlEOY1bj+D8n6YUBI7x1zAzp9CgN6Gn9EWjZdF2px1ej1lPviUASMVNq4V127t8M6SxYSwMwEfjASOwW9iWkTDQXiKAKeVXVy+w+eqcRpHOACnnYa9wu9PRFtUGij6IPOn1p4+GBOMa8AdwW6ViEWnTms/A1E4aYs4wxeXVi76MiVIp9LXvvj6pi1n5XVmd0A4V1e/3E/MZACLDCbTA2K6HlcVl8Tc/+/mJ3wJEre0c7FGA0I+q9Ho9vn2wN155hrGjmA08Z2dUQkhwv3D5/LITBazlfETgBZ7LImkSvCICZZ3b/S5qNpuule0OigNleIp9+6nBV3AihcQTIWIDFUE6iYODTzFfYNm3n875jeOoAHrTZIxCFOy9Rw8Scw/VJcul+QWAw/dDjkO0ktVOF+ycH0HAnfTc8opfOfrpMmsTbwmAI4mTC/rWnQ+03IujHi7skysLi/Ts0spUrHzvzgdTtU9bY9g75mtziNGJT/XEDt0ZY6XmpDUcV+D3j9x8EeERWlGMsNw62JHv37vj+u6fKKEBGp7gU40N3jimkQ7458z4G8HqVUrsNeo0qoCQCEac5C5Vs9VKLRJPrAzAsEoAgs51ntlh+X49GIAxweLCmXN0ZXE5yQs0Ut7BqKHDaAuD2Nnfm3oscP3J53K8VCyxLKfh1OJ8jkAhl+cXz472IBzXI+QBfvfO+6RhNfUzliSKGKmObWO3zi46hgY515JSwLmHEOrAiE560EQ5Jkoo+tLnvugY08YVgODea+yzVoQef+DFtru/j8d59oJnPSAmxFnmUc53lH2DE8H99TUyTRQwRGgSglG1XCWQwygrmQTGSIDDXtFoNlwtFDBweMzjfmjwhQT1AkkhSWbwDWc9FvIFVcjlZ84QF450s15OSgAUjHkzjwu5POC4q7XNdQxv/FkoEG1fKVYoOCH7LeAYbds2nRWZDZMTOBeVC0WxOL/o6izyK+usXcwloBSXSDEhhDxo1Emz3ULnlpYddKNurxdz5t2x9+oNSEnnf5nDHnvr7u3sbD8UNwiiWqmitKd+A8e+Qi7P4JwdVyih/PzKWTZXqY6sBkg7b3/4Hmq2LHeLNkG1AMpVCjGVJ0AhXxAY46loxEFkmfE3mlkYIPLtZohW0Yjfda8wT61OJ9VoGrEzACOEVK/fw26MikeRnqdmFDuIMK4vQMsLS+LyufOJ38xdr2rNFRVSUnAhARJ6GtJ9wUW90fA9D4RgySiT5WKJTXOBnmYMs9C2VCzx88tnfc21Qkg+fPKIrG2sz4Koho4RI8R7gkOeIt9r3Y/wkmQAPh4fRshkng0LfsTjqw3AQH/qB36Y/dArHxvbHvIP7TUOaNQPqr7gfGt3Z+y3mwT4bV+TlYJGcCH9k9e+4svhChPCwQO+Vq7G2qkiBdOUpiG4MgKbponAGWZC4QhBahbH4KuElBQUTWmEVZokiKh/NwyDV4plX3e4qHnP+k+WBMqF4kmkCblX3ye79f1kDcIHt+DEmMvl1YK3vL8je2q1W+4d433wG/cmF86uQmqBuLOZ8adZApCXFGPM7F5XHDTq1Gpbp+6/+VweffLjn0B/9u1vaO45fHILc/P8kk/n+iNuueDqg/t3Xes/wx9leD2CThBgkYuF2UhzAznS5yu1iXNfLpb4tQuXxm6mzZYl3vzgexMv9eHNpoaeMIAKCefd4bekBf6ZYKxyZgb77HcdTNlObexsTfxOp+wjaz6lBMD4qyNf+JRsBNo8jgZgGLDs8z7u9noT8CyQQAqdOqQwdnRKrj+uSrnCX7x8LXtZTLfMuFQStzodv4crt9ptZvuASAXYHEowLhdKJO1eftNNkZ7WkENkZdF/HqZWuy3eeP+ddF0sPYhWISmtdnuqHCQeuhtUxUjyPidJVLZD1CLkaodoYM/jDqHB4tyC+K1f/FcnrudGq6kOmg3X51IgrCsldxsHBFItDC0QIYpxuGszkIGmkyhEAT94sobfu/uhpzkCRQgoykqFkqd26ZRiNiqPEhhpBAaFk8GMUbmjDg2+ENzLlRCZwdej3AOrTikRtXJt4pkVGAMZ4dRLABSl5WIJmcw4NVYuubz36GHqzyG/eX/HLAzVsJqphaIbNW5wnqyUyjit+TtTvxH4GCDccxFCtNPt8INGgzXb1sgoHHD2/7d+9UvqH/6P/zjat5WPcZ5sQjBGL1y5juCePk3p9Xriw7X7M3+2Q0Rs3jRRpVyJpd5gmjke1ZY46T2KzI0e9NXrL4xF7JFSyg8e3CU7B9OjMgYxVj80IfiCC8Gm0YNBejLTMCAHeaK/sXwuhzKETD+raPo2Qgixvb+b6PUzvRTiTaHd6cyEw2VcDcCwOgQXQtlde1LeQo6UOq4zNCp4zFrL5XLyozdeSv2DNIzPDQ5WgIR2DeH9lCm1X697yvkGlx2AKy0XiriQn+7SHIZs0tLHQm1eLc0t+H5swRr56gznAW7bbSSm8ED0tY4wErzP6TQXX1/9amoE0RQYEzLG2KCpJ+9kICrhN3/hC2i+WhvbuGN3Jufg9d695xZccLG5uzP08gnKtjRAG3kWSoIaDKKAv4q85I8BiPJpFUsJElHGqn4JgBEYN5oDhBa4Y8N/pmE+zReOEUcKInyRg7EmhGBZhK/+idBBEQz3cy4iRXT0ldGYPQnA+qoUy3hYzkVIRbH25PHYVBRpkNgUeX9HDl9KKRpWc6YUh+BIcPHseZQh06Thqxg9BqmkxAhjq90SB806s9otV+ggOTMnvvDTP48/eHCPfPt7byZWSNVSmV+7eGVqY2W70+b31x9NTSexgjxknDEmFmpzM7VXwtApIXKuUhurzyaE8tXlM2yhNjd2mnv9nnztne+mRzeOEaBVThUIUSgUYJ9KtEwy42+0u5vdsx3Hpmi5yHofIQEnPaMbBOI0SDDOBmCQLwdjSWcMvLBXg++zk0YpVd//0kd8G7TSsAg0j0F1e11se8jJIpVUewcHruYAYySRQgTyKpUK/nMraR7zTJCDaMzF2jxZqM37Hi8oMd698wGtWw3fNJLYEHJ59Xpd2uMR5OLFkG6YOwr5pBfwwGRT5EjSPX5Kqfjkxz9Bf+SjPzCWdLff5ZsT4Jd18zaMnkJK7DfqtGPbp3/GmGOEMnjgMCZhij4GUcCP8Ht3b098hIIivlqqYMM4HYU1RfdZ09mVAO9xJycwJoTCmpIEE8epSEiw+A7Ol6Q6Gc3atM5X58CQP2vDzsYboATAgQwMddVSmZLROlKxW9+neymFgYa8v+VimUL0cwCFAySd1W7NhPIQ0lbUyhU2VxnvXBmAnDOSAUsAIySkUkQoiZqWJRtWg7Y6bc+9YoLVX/nhT+EfevXj8j/7p//1xDux5w5CaAAIV1fPXyI69oxGs8kfbT2Zif1h1NTAu2ehNjcKmSaEGY2uC0ywBDTEZ5E3nuWomM+LG5eujjWQSyX5/cdrbH17M7oBae55GkhXuNvkc3nlYOoltGTG38gnTjRaTQoRplmJlwQgnWm32yNdD7areI3AOzdxNwDDiABeGLU7I3LMHhoEvQ990AJ28u9/+aOZh6lfAQ5vx4UUkEDbFdyG3e0Kq91y5a1XyOV5uVhkmUew3glzQ41gLJbmF+l0D3Ls5AF+uPHYTZepqAOw9FwI0Z4yT7ZfYYCTDOc8FfBxAO1ECMYGM2lcFNhz1ar80i/96ljlA+Q4f7K96WqP8zvPbtsBvNOTna3n+M32VLcSjLYeGNn+9LWvom6/N5QR+EYoJbhartEM5inauYpl74M7s8IIKdBmHBV1rNiAn+AvAwuhUhDwO9B5WC0LSaUEFzzL4RvLyZ3MFEDCV4oVQmksjqPJDGc1Yi8BQGQCNJRKaXJu6b7oy/uP1xJprBk3EeAgmzNzcqE2F5gBBhxJbdum3d6INB6xXynuGaSEqAvnzmOcXH27+8HOQk2luESKCSHkQaNOmu0W8pP261lRXb1wif+tX/wV8s/+xR+RW3dvJ06S+XxBvHTlupbDePdgT23u7iTWQKVj8uaqNYDp1UEqkTQMynh1AvQ13OdfvHJ9opykUuqbb38HCwGo7Mkv0xiATdNUjDEFAUhJlERm/I3BrCkl9hp16gXBLQZcp54FJ0Cr3yO23Z2pszMJBmAnh6VSSrU7naEwpgARqp7JBex2xUIE8MtXb2LYHLOiUQJOLmYFhnvMx1we4MMDWKt+f3RkJCisDMpkqVhikPMlK9FIgBDMzywss2qpMhUD7U5HfOe9t7U8eKZiJLzGyuq0cJTRUVIpJwo4vCEH35NpmGPz2ATPwaAH0zDUF3/2l/Dy/OLILoWU6vHWk1hcLiAKuN5snvK4BycFjEks+Atr3pLaD0QBP3zyCN8aEgUMEUiGYULkb6q+9aTO1TC+HdQasL3C/0POf8flyAgLn+PgHw+NsPB5nlCEw1lySMcx4yrHTgv/16Ht/OXwfx0qSiqskCRSKriZDTp2zL8OJ6f/7FBzfhn8++GfIbLiyrkLeOtgT1gtK7EpBdK0lvyMBSLryvkiy5AB/Egva/OsBCDqKGfkVClfcHWnh63p4cZjnDYlGOgSziwsHTvLBLlSWu2Wn1RLQbKklTYhhM9Vaqxanu6tqZWpjJhnCSilOMaY2b2uOGjUqdW2kG54xWK+oP7Df/3fxo+2NsR/84d/4GoP8jyQgBoAgtTFlVUKRksNRWzsbKcWXWGSfEBPWCqUyKynhIN3QbUEKRhGPwEJJnxlaYmN01k47wYkxZPtbXz30YNEGj2fWTOSc+57HMVCMbHRv5APO3P4nLSDBP87vKe393dRGtAYg5dWaD1w3ueoFVGAVmijHNJRMgzAJ/RjbbvzXCTbSRhor5DQlBJx/cIVmj00gluGnW53ZM5C2BB3D/aHdo4JERDBVC4Wac4wg2Mwo+xKAvAoP7t0hpUL08ObQR7gKA2irgasoxJGTk4BLrgOar5pKIU45/1UGYUg4oJQKk1mRDouQqj4i9/3A/STH//EuPlxlJ6+J1BzQ4Ddf7K9dcwPRI2CokZzNxm5gCTgRAG//lV0Eq6GEKwK+SIu5gsB9Zoesm6MsGBNHXwgYLFVjv31yAh7dHYdGWEP/+5YXY/+DMg1jhLlMM7WMcIqSSTQcmWEPTTODsy7J4y24c8D3JPPLCzTuUoVbe3tqL7gymq1SPaQDX8upu0RHGYLuSLNnF6nlWTWHs6cvJnHhVzetTDA6XfvYI/uNQ5ct0lCxcW5BZQzQ3unqobVTAWqz7C5hUirCyursbkvJ2H9xYVHcFCEdKSdbsfJddhsWyjICEIICvh3fuvfRPlcTv3B//GH+OGT5KCLgfPwK9df1LLO4Y2/vrXBZi29lnNDJ5gXcnmA0fZt4IvL96ODD8MwRLVYHusMAWgVL165NlFe8H554713UNtOOGwt6MCEvyCIAfxzTsJK0zE/YdLIjL9hSntiX2pj56nebWLtrELQEgBwTmS12zOp+0yaAdjRp3XsDobcwEcF8sKqQ1gGrwZgoHFl9SJaml8IeqHNLH3AVhdcyGEeFn3e5/Vm89THB3BiGGNaKhY9KRZmVsAhDZwSKlaXV2hhSgMD5AH+3t3b9KBZD4nzaLrBCPEe7xO7143DpVH2+/048KF1MkCZjTEhjDFMSXTO35VSWf3tz//62Id8vGDPFa9bFrPaLbBvZfl/ta7KEIhBFPDGI/y9O4NcwADpVSmVUc5MDpIJRJ0rhCFxrHOvO5LaUyhi55/BCOv8/5NQxM4vh4bVU0bY44DWQYDtYVjscZSrY8hV6oQR1n0E7LEh9xRwcghzHYMuCvkCv7J6gSGk+H6zweyuA0Gqmi0rNfBwMRBzaCzkc3lRdBmxGRpTWUeJkwA4g/oxeqYJBjrgvL8j1wS8owA9K3GLZgLDhBCxUJsPKo9y2sQVi/FIJSWkjLDaLXHQrDvvirAcvHNmTvzKz/4SffnaTfT+/Q/5//BH/ywRylxCKV9dWmG6dI9KSbG28YQ6b7oZKuAIzhiT89VaIuY9rKmZr9TGpjaklKjrF664Qr/cb9b5ux++n2j5QuoaKYSv8zJnmoJS5qttWPM9rJ/M+Bul9J/vWwghtvd3E7eO4iVFXdxgISQ4ss+m8dfRG/7o/BdPQdDpEm3QdDpd+5RX4REM9EljsFsewHv5lesvOBfWp7B6g5gLjPCRfOAvxxEghzhPoPBPnVHFrdw81uOgfLU6bSd33GHhVrt1pEwE2Tueo6VCAZUKRY/ks+pBS4AQIi+urJKpjQwYqUcb6+j++iMtnq9Bj9svfYmUaLnMbe23D9ftMFL9Xj/V8jYMQzHKIhkjeHJ/4ad/AZ9bOjN0SuBsWd/eQCcdl1zPXXAV1fr2JhxwkuDkebYGJ5bkUP7T178m+7yPq+XKWMivkSNy8sFixyrqNR8s0Dy6Mzl/PoQMHhhdIWj2hBH2MIIVKYWlklhJRY5hiIdFwx5FvR7CD5+CJD5h/E3OTCWXU9hQr1y4hPKHzgV213aMwEfz3+q0AV4iuQOcQc4ZYzyDiZ/Bidc0ZMfhqFhCBvOXaxHQESBSr89Hp/7RxGqgZMD4YJqmXKzNR6Ec57Dvwhs60EGGTNwwDHn+zLlMrxKy3L10hxESUikilERNy5INq3EqpYwXWtPWBejfz/zIj5Gf/JFPIUg39l/+T/8E7RzsTUs28PYAGf/Rmy9re6+CER5yqx865wXOf1w6AEPmQm0+FOj9uIx5Eh+gB4f7ejFfHLmPwtm1vLBIzi4uTyIHegt16+4H+KDZmFg3phWElPKk7tkTm0mEfwbHPEYzW6OniQ64MrydDw7fzgF3lZGfIAFwCGla1kx/IIk1AMPcwkXnCFrViSZx7Lfu8gEfGnolUojCnwlcHzBBhGBEMAFIkcH/Yux4URHIwDbkd/h3yqgimEhKqDpq77QZ0ICG2PkzUBn8FbSlzoUF/hsoSp0wl2M16WE8zFPj83E2uAESIQASOgQcs3RyCowVjPd9zh2F8X69foyHX8gXRLlQoCC7rMRPApAD8PK5C9iv0ufkiDq2Lb59661Ub75tux0rg9+4PNvxW23eOTqEMcaGYVDYu8MscIb84CsfUz/xiR8d2rFSSm7sbpOYKTx5s2WxRssa6ykcphxT0tdRNtaBUfWUdXUQcXpcICL1sDyNfIXDHf5x8Buc+OrEn537w2HU7/3HD9H2/h7M32Em2EFW11P5YI//Dnlgnb8AFPHACPvUMDsxL+zJCNiwojtSsh4SOwxI+7BQm6PL84vH6xTg4zd3d07dO8EInPbzJbGTOIRxcOabq9TCPSTTJMAZHgucNZUi5Bic6vrOdw722H7CYaDBiLO8sIjDvm+euDMI27Zpt+cgMiS+wL60NLdAipkDePzmUikukWJCCHnQqJNmu4Xsrh0LPq9fvMx/9/N/k0HS0tfffUP98y//P1NtTkEPChPCVxaW2NkRDsN++oeL/YcP72HQrc1SWajNIcZS5QOjZfrgnQhRwEfvxWFEDcbUy9duutIht+2O+M6tt2P9XY0SHKDxcSGYn3cr5M4FlAEITtIyMSEQyYy/IQjZcxeYN1oN1u4kHErd87jj1wBQaZtWy9F/zXJJtAEYJg5y4IFS/TjyF2OOlBp6GziGhx5TJ4rFMNTAfNLwfGiAPmmYdgzShCBKiII8mBQTBXQgZ+6x0dqxNxMHHxIM0YM2oE4e6JWPLgaHieucVHcOEuNhurkTstAd/azsXhd3urY6aNTBi1yUi0XGaHaJi2L9ue0T1su185cRXIh0lK+9+a1j478OejGiIbq9Lu3FKLoB9r5+vw9heTESU3CsGIaBwt5PSoWC+jtf+M2hjynIiwXQL3bMFHWwHrZ2t4UM83Hj2DOPgH+P8X8PF+bg8HkKCOyEez5nJD12g3KW0OBEAwPqocXU+ZdT55tD0zGxDiJTj/8bRLEeGU2PkrgqBcjECkm4KcrDP8NflHDyTSgJv8GfEVZSIqEkllJgKSHCFeoN2gzqHfUnT/z59L8P+hrUH/z5sP1h25M0j+ghqO0Yc5PlBBbcV59R1i0BUBDduHT12T1Nbe/vYoi2OVkgR1iv19PNQkYvAAk4ysHqXACUM5JplQCk5iGE4kqppMXBrsf74sH6mp7HRARCh01xIdy8vyNH2Wq3HKfqpBfTzDlphpI+jrTwr5SCdFzM7nXFQaNOrbaFev34Re2XCkX1H/ztv+/cU+C+/h//43/oBBrEuXzk5kta36jwbnr/7m3nHTELBfLPl4tlVxDGsyCPZ8cIDvGFXJ4BwuWoQimVV1YvEkBdnFQAvvbuowd0c29nUtX4/Y4RpCH0ZfDJ53KCEE1KzxAkkxl/QxCyny6UEnuNOu31szeyH/FpbKOarRY+gUSrkXSySCXeAAxq3V6/h+FSOojqReI5AzCGf0MUch2OMg6P/S1Zc+qJ25ERzm4N0EfGZ0oUdSKkj6OnHePzIIgaYp8hxho5UdVHxue1J+vINAxUKmZwz54mLcLKNy9dG+tR6JY1KYW4de9Dut9IWR5guGgKIdt2J17eDBhJ3ue+LsBu5zRO9QBOHiJVDGawcR6wOnnOmab83E/+LLmwsvocWaUQ363vMTCSxKmAsbHZspDVaZ9GogAj5DEM75GxEkyoEoGG4dhgqQZGTcdu6RhKnf+wgBqO8VM6TgdcCDC9gtHI+fvT9k+NpU8NpcpR4riqd2RsPTacPm9sjZO8dfIC951BQG+WhkKnXDNaAwlQSuS5pRUCuaVPl0H+8CF7mbK7Np41CMKkrpe5au3oPp7UIWR8hyQBMP5ClFWlWNZ2r4WD68GTtUQaLqPK+ztmulXDaiZaqQX39TMLSzg/xmAR0nKf6W7AWRWO/063ww8aDdZsW6fSrcVROIBG8O/+zu+hcrGEILHfl1/7c/anr38tjqw6esqF2ry4eHZV214KA4X99Nbd27Ecs26mMCGimM/TLFXceMnCnjpfqY2N8F2cmxfnz5x15XTTF1x9863vuIoY1j3n09Lzm6YmSWgUmfF32lUSXHvYn7f3d9Ma9BSc4DRShjlodTqxv89oHPJYUmkwAMMAnTx4YASGiJjjEWPMMUL01L+FJdmsn7ESOLqYmIbBFUIsZ5rCNEwKEcxZiacEwJAGBmBd5fH2hrz36GHaJlxZnVb8Im0xoOULNkteT5DjBmAOIC+wrqj1SWv/4y+8In7qRz895DGF+V5jn1nt1iQSof0O6RPevv0e+u5774TWZ9ZRABKIGaJJACPMSEYggXKxxEcpKXv9Pt+t7w9RYCrZ7fdQp2On7VyPYAaC6xLyJpaLZRI2SkZwI8ooByUBTLDMGzlVzBdcKYnd86H49v4eO2gmywk04ry/I8UrpRQNq6l5jtzP5rQ1C/k8X1k8o9UoNi1Ps9Ie8scCZo7VbomDZt15pyQJLSqXy4lf/bnP0Rev3HCmrNvrqv/ov/3PY2moAj0K8JnP5bQuL6Gkev/uh7Ecs86BgnO3YRhqrlLN9ooJggXHrWK+CPrVkTUhjcGr119wtW6Ukvzhxjpb21jXOaXB08JI8T6YA7wVcCwxzRxAa8R6rYFTickYzqDQvc1vyLXVxs6W5zUYMo+p7g5SVXF+Grks1QOeMLi0GIBhmKLP+SAXDkYCgk09QSNmStRQvwPGqFysLRwrCY/guQ3GeM40mY48s6EOaAY6g4vi9QtXtB1gdrcrvvW9NxOrsHhuyjFSHdvGR3nJY7UkMBKCCzpLBuAj+cPeAvsNo0bgay2fy6u/+zf+1vPfCEaq3mzgutWMxbLoc67+5be+ho8fctn5F4t58cTEIbLJcWoLT42zypkERksAlJTXL16G9ByjKqknIx6zgMLDBVetVivWSpNZnn+ABywVisw0RisGZ1k+2dgHEgCYzbyZx+NgJKeRVa/fFw+eJAsGmlKilueXMKBdxaxwiHKy2snbd+G8Obu0gsYZKmIm60SzgxESUikilERNy5INq0FBOZrUArmjf+ovfpr8xA//JWcIvT7n//ef/zF7/Z03YjekWqnMr168ov1u1Od9efvBvdhtSronAN7yC7X51I9Tl9woIXKuUhspL0qouHRulT6P9DOcA3AMef3dN1HCoGwl59zzmsnn8pwQov1b1TW3QCcz/uqUZnC0AEId0sAF10NGeZwEIPdyGtKk6JzldBiAQXk9yO5HIe+HeCY3mWuBHUFFu26QVfQjAVA+lYslVswPzzsB8C5gwM+bJgYFVVgQrn7GMkttGGPq2vnL2gzAILuvv/Vt/99rjISPEeI93id2r+v5khnWMACTl3P4tGavwJ4DWPQGM0iQirucmRO/8OmfoldWLz4nZKvTFnv1/UgvgEIIiNzDf/LaV+lJCNfMiJjAb+LQaI8xEgpSXGQlk4AGCRBC+NLcAlucmx9JDbJV7x0ckFF57hVCXEiBLMuKtfJEg7gSSQL2+3wuOMNeIoWSMf2cBABSNReg6aUC4AAAIABJREFUkwAok++vrwE8TSKkD2mMFmrzKGfqjd7TNXhwvrFte+AIn6BSLhT50sJSdlYEOWdKcYkUgxRFB406abZbyI55nlwv4rh56Sr/nX/l147XUL3ZkP/pH/yjWL3HwYn+6vlLGPZV3cXudvndRw9S/Q05yIHVWmiIXrrnKAp6gOBRLpSIOdqZE9XKVX559bzbtSO3DnblB/fuuK0fxbBP9Qm5zIUQnvgFvXNhhI468gEdMgD3eIMxbDBPQ4sL+zPFh921+UGzkU1U+LPuBGYBQnBWTksgMQZgjCHNIJYYKepE9mKkECQkxBgpKalyxqVUu9OZSQNH0hb28vyiky94XAGjjVKKgVElZxg0LBjXpMkyLH4Nw5BXVy9pe1AJKcT79+/QvfpBWEMIrB+plGh1WrE2wki4BHM+8xcQiGoLEirn1Ws3+c996jPPydnu2Xxrbzcy+Qsp1Fsf3MIjIZ8zB6jA9gfthJ+N2M4iuLWLeFYJ5kxDXrtwZew5jxEWjbZFx0PaY+EYgVsWpGGZVXHGdtymYTqOmLFlMGMsMgmAor1cKOLgkZgABnqXHTQbkY3VbcfgGFMuFFn5uZzobimEV6/VbiUq2uH8yrlxaBPhCS5lPYHhA7Lg2L2uOGjUqdW2UFoVoeViUf37/9rfP9b/AbrA//Yv/k/67p33YzOrhXxBvHjleiB6Aqtt8YdP1lN9ntcq1QwlwMdqNijj1XJl5NoAY+dHb77kmjIgyb19+xYCJ5IkFKWkFEJ60l2CjgjuyHGFf86Mv0lYeUc8Yt6wGuxk0EWSuE8ur0ra3R7p9nrJHUKAnMfPAHwimtcZNxh+wdSrlHNpGqdGAm9GpaTvaJgskibAlXaCNByq89Wap4sqHHYAVQLw0KYxEpYwnAHMaC95Mycunbug9fHyZGdL3Fm7r5VmFNPTstso7vDKCinB+zzxsp52fiGHECg4DWawINAFTMNUv/fF337OEanH+2JjZysS+T8H+TxMiJkBeNqlFV57jCRSyNODNjzmsp6SKgGANz1/5hwuFYoThwAu9ZMgreDeJqVUzZZF4n4+ThxwyiowRkW1VI3kPEqZKFMzHPhe4U5ULZZDi7Lq9nvi4ZNHsV6HDsyiYYrFuXlP79YIF4ZqWE0c9z0X8imXi2W1ODcf6/mPcB49d62UgiR3tNPt8INGgzXbVipQtiYJAvJ1/ntf+nvo5N0F9Av/1f/838VibVFKxcWz5+lcpTppKL5+32/WxZOtzViM1dcAxjQihIhioUBHoQbq7i9t9OD8qpbKmNHhxxclRJxfOedpbTZblnjzg+/Ffr0BOp+Qknk9Cwv5vMCYxHJ8cG4ajJEs8jchX6pSYq9RpwmDTU+IcIezCWg4vV6P2t1koeGEKfRIDMAO3CRyLqnEUWICeLNCwonrlZMNvUMEJHv9HoH8N9MWCCj2lDt42g5nrD0mhFeLZZbP+YPQwgQLjDDJGSaGfEFBGHBmbEpcD7eYL/ALK6taFSB2rye/9e53k2zIEHavS/s8EfASst/vJ1nWrteqm4qQ345RQ7ui0zRN8df+8l+hNy5eOcWGkEI+3toIVf6jIJ9HyiczLLpZOvGrk0UAx29OEsYROMZUyxW1urzi+ozf2N12LswuChiBse/0LC46yKp4kwA4Qc1VahlikjexpbY2wZgTQnG1VKZhvqvAv/v+44eI+03dFMKMUELU8kIs8/6OHL2UUjSsZiwV2EdMwzq7sLKKMnSv6RaxVFJihLHVbomDZp0BMofLc3m6jmPUOpfLiV/7a5+nL1y+dsxVr99T//0f/a/4/uO1yDk1DUO+cv3FYN5/GKmt3R28s78X+Th1MwBIgHkzhyrlsut7qW4e0kDPMAxRLZZHngflYolfu3DJtYyllPL9B3fI7sF+3MUD6Vc9oRDFGf45M/7Gfbk9zx+cxdv7u7EPEkqeZEdyzHt9jjt2J9b336jlHawBGGMw8iLI56qUGph3AbZZKeeQcaU2miwhDg/HXq/79ODCCIyEWCnl+bLlQE1nkTWTpe6zBhysZxaWfLZ+2uwIHhqiiSEqGLw/sxKsBMrFklhdPqtV0HAwfvOdN5AO541gRz+EOkaSCyE7dsf1pTl0Hk90CM4tvV4/U/iekglW4JkN0cA65+aFy1fFL/74z5z6VpRSam1zPTT5T4R8HjbgzJCocxkERmuoo1oWwR2YvGeBMOSnu37xMqZund7Bq7nZcJ1vEs76dqedKGjStM875DPNSiYBMP4C5GGlGL6SHWBqAQa6bsUTBhrerPO1OQRGiIQVDu8qq93SerfVJQNMMK+VKmyuOqeL5MzQwQgJqRQRSqKmZcmG1aCtTntmxj9soIQQ+dOf/HHy45/45Kmfbz+8x//pP//DSL8BQikHx7qluYVA5kgpxDd2Ntl+ox4I/SiJGgYT89U5rXqnKMcTZd/zldrY1Huv3ngR0Qmp+U7y3+v15GtxD+DAAH0nwB7gWvSQ+sIwjNjBP4N9wmBGFvnreiZjU1Ft7GyFpvuLzaijYYT3Bcftdmb8nSR+PQZgB7ZZOdG8TkpeMPKCfVevoXfoWBRSstPpeDb0jhUMRhwpFOmFcdLEJfX3fC7Pa2NyUfgZF0SUE0Jl3jRpBg/tR4Lu2tTKVbGyuKz1Ig6ZOd5/cJcmwItwmJCU1Wl5uli6k3Rwtfr9REQqByeAIZTBmQRjTA1m4El5yd0yBo+o3/+13z2FUAAPkLXNdbckpqrnCvJ5RA8OQgc4bGUlvhLI7ijxnZsEckYoESvzS3SuWvPEfbtri3qz4elOAEbgtOYh9CS8iCsDAkalVMVeFH4Rs5x1H4AEMMEyb+RQMV/Q+472wKvd74q1J4897SMeyPuuCnl/S4UiqyQg7+/QBwpCwrZt1046vgXloyEgEFw8ex6HGW3ug834NFGKS6SYEEIeNOoE8m9C2rOsPJXAC5ev89/+3BdP6e644Ogf/S9/gLb2diITFTjXffTmy4G9qZSS/NHmBmu2rMjGGETHsEcs1Oa0vcuD4DEpNMF4CE5MxXxx6DlPCDgpnGELNfcOOVJKfn99ja1vb8ZaDF4DTAqFvMTIgyU8hNFnxt8QhBxQF4ILsX2wG7v7bUDDjZKsgMAXq9XO7HcuZsG9AXgQzQtaYYBSOI7mxRhRJRV271vjgisPVeACPBTbf4ooYA/dZ1U9SIAQLGvlGgnKSAsQhhgP4KFN00AER6bP8CCV5FRdrM2rxbkF7Y+YzZ1tcXvtXrIOR4xUx7YxPC6TUsCw1+/3E2WwDlu24PkJkTDTFsgX91c/+Wn60pUbx6QA6vDx5hMHYiKo4hnyeRgjYBA/OueDYjSj61sCIw30WfS2b5nOesNCLi+unL/o+QwGGLjNvR1PFy3YB23bRt1eb9bFHun4IZ1KuVACx6dI+cg6j04CcJYUcnlcyOWjY+Kw57uPHiAhHdCw2JScafLFuYXpL4QRj6jVbsUKeQFSQc1VqqxWDiYfasTi1tY9RMdjjJnd64qDRp1abStznhoj3UqprP7B7/7+szoK9e1bb8n//f/9vzzfb3RMJKz1lYUldnbpjA5yQ2lA3ucH649o2+4E1kcUhOerNYjEjKLrVPbpoFlUaiNT5xXzBXHj0hVP34lUUn3zre9gISHuK5ZFcQ4qDXcFggDy+Tw8U1y3cUfZfy2CsaCUZgFO/kUYaUu7a/ODZiPx98hIhTihc3jLcCmkZbU87V9xHlPQvD1vAD4VzQu5ekFfDSl7tcI26xiX7PV6JBADTKZI1TE/z9GglKilucXAD9UjeGiDGSKfMymj2b477YSC99ni3CJZCACuq9vvydffSU4eYIwQ7/I+6fa6nhTf087B1O0xErzPPeVCmbrPhBGAvYMQjA1mTp0H7+rqRf75n/rs8eYDh+iT7a3AnAZ8QT4nbH4ydiGnBuZH97Hn5JHBQGdLxKMEQCl0efUC8mMEOspt5EP5I+2uTexu1yO3WXVdEoCzrpgvsFzyoG11iWDm6ZSLJZQzzMjlMICB3mF1qxk5L0cMQPQZ5P1NSYS8alhNPNRZPgKJM0rVhbPnA9cFRDC0qbsEYx5CiHa6HX7QaLBm20Iixvmxpx6wRgKQS/of/O7vA5rBKapwT/lP/sl/gaKAyYb71as3XkJBpikDJe29Rw9wWpzqIFikVCwRP3dSjcspdaTgzlfI5dkoucJafenqdeTNKVDx9e0tcvfRg7jqwwTn3LVRCBwOTGYKhZTrNkEuFAhsMhgD2OfsvAxS0IHRxrxhNVjanHMCE5dPwlJJabXakG7WJ4XZazYwAGMEMhMYI6KkIgkQH+eij3u9/vgNehAFPMg/7LVkilSvEhtbHxLXlwpFDP9pJTyBGCZYEUwO4aGjV3SEOXadfUGOsOX5JVar6PfYhojI19/5LurzZMATS6VEq5NALyOMuOCCxUUJpHN9BkHLNEwECgW/BR5Tv/fF3z5+TCmlnGi5Xl9/5Ns0kM/DxudEmSIkRhoa/Qolaze1BMZBdGfw3VOLd6YIQHTKQqVKziwu+1TeKH7QbLKODyhK2F8gJUG70/a/yc7UbOkfbCFfkIVc3ufc6+cnoxiOBMC4WS6UsKEB7UQXx52eLR5trMdiLwD5zFVqOJ9LXN7fkdMhpRQNqxm5fAkhTk7PpMJq61rvJ+mA8hIjjK12Sxw068xqtxylXFa8SSCfy4tf/+zn6Y1LV081FFLyP339q+zL3/yKN4JT1ob7+EJtXl48uxrodwc6lNsP7qbCUQBygxdzeQIG4CnFnzUfIgE42+Yr/z977x0tyZLWB4bLzPJ16/rbt32/fmbmjWeYgcFoYGBgGPzghRsE7ErCrZEBztnVkXBaAwi0CwghLQMSBxA7K4wQIBYWNDCGef71a++7rzdVmZVZVWH2fNX39ru3u+pWZla6qor8p897N/KLL34RlRHxmd9X7WmHJZjwhdk5NlcLVqsavlSffvVFFOYeEPckQXCZEMJ3FlAhn1cQZR23Xn7kdzN/GcUmM/RvwQ9gWWyjlNiq79I47H5ZHG5KOqmG42QmwDElDAJ3i9899c0jd8oEw5GrjUaBJzvNF7qHjkoVp5WNCw5MhDG1TBOZEdb6TBPTJPsmBPOF6flYamEJJfnlG9fYxs5WkkMK3ZfjNXvTzoeWmNCLGAnBBdUOYH94Q9AKpVQazPB9eTgo2TAM/sXv/jz2xnNPdf+3Uohv7GyGcpb00zgSymd/cOhWo4CADlwbhVnKjI6MMfXEydMYarqEfYCecru+G8rAqRDiXHDsOCMYUBUWsAy9B3tUuVAKtb9laBhaFZ8IgEOCYKj9XCKUhPrJ+uwpXLOrd26kfraGoJjSCNf9PQJ5DrUQ7aaT6u+dMSaPLxybaIM2RkhIpYhQEjVsW9btOk0jOzXcrzS7b1FKxJe85wvo53/GZz+mZLvTUf/k//xfwx90QgwbgoCfOvMEgtqrcT+vXr0UdxexywemOcYMWatUU/1GxT7QFDsAW2ghV2BgC+315ExLPHn6bODDwVZjl7965WLm5g0YTIUQvn73XfpnKwdc1qnvT3uZv8hgLPBcpLi8dNePILDPkqXtrvEsDcDXcd2xCH6KB6H+UkfSAQz1w6TyWW8gbD1DbUiNdC0yRsVMdTr1jQw2VaUU1D3jlmmyLEXARwp4xMIoIXxxdoEV84WIJT8Qt7a1yS/dvJq5w+PhwSrptdtkVDKVe00URJoLLlI/3MayiGIQioFFAhNihAwaObGwxL/pS7+6u67BAbxV32ZRGXoSoXzGiCOFMv67jGHisyxy0NkEo0zVL8oylJOsG6VELs7Mk0qpPBQMQG2/srHuy8DSpyPOpUC2bevvzFAzEfxlWAPVUlWfB4JDN3JvgOGXUIorhdLQ5S3iGDxk6qxtbbC6ky4NtGmafHYM6v72miMInvc8j7ba6VDvE0LFzFSNxnWPjGNdRiZTKS6RYkIIuVPfJY2mg7wQzBmR6TOmgp4+8wT/8Fd/82NniQ7n/A//8k/ZX7/4N4mNvFoq8zPHT8V+rgEn14Vrl4c5gyWGyVEdQZm46WoNg+NcP/EhQAmRU+Xe5z6Yg3MnTuOgQQtSSvXqtUt4p1GPT/GAkqFcm5DSN+udZZqC0vQdrkDVzSjFpmGkbjMPCLlu/jgCamVjTX/QYloZTrOJuC6REQrdUXMAx1f3twd8+AE1tv7hhlpar78ElC6lfJE9WpdlSLFDv44JBtoliM4k/aLhhu5kTARQQsWx+UUaV02WdqetPvHy89n9rWEkuRDS9dzYL3NxLhkwsnHOR3oMceJzlGzDMBSjweqwwEX273/jd+7X15Q7jV1Sd+yhhxA15XM/hSAiW6n0o2GHBmyMBEBQglKo78VQ00CP0WTHOJRivsBPLi0PvReAA3hzZxt3OA+vLcZCPnACU/jg6CcZBPapbpPpTfeSFgL72STlQinTBkWv7fHbK/eG/iaFxflB3d8ZnMXs6LBj6vWe03TQUN/rkMqYhtm9R4Z8feReg/sWxpgBS8ZOfZfaTRu1O6NR6mjkwN5TuFIsqx/93h/qaUuo2w31U7/y84nYGSil6uzySVwsFGOHkguuLt24lsi44hoMKF+rTiGWobIEcY01bblg+yzli8RkxmOqAO3w3PQMXZiZC6xm03XFp197KUPfdwwkadQvnX4hX4DLR6q/oz3nLzKNcMxzgSdNvxArAoILsb6zmaHfRKzDTVR403VTOccmOsgYOxslBzDnQuB2uxX8hwT0v0oFvlRq43d0K2+uNoOAXiOLD0TGK4SAEkWahkloRvVMEztCiDyxsByboxzoMT716osow3USlO062O9BMs25OqpvhZTgHR78G5rVASWoFxzMITTZMAxKsL9vGTANfMFnvoe95ck3dDW1HUduNXb8vdxjbKlQPg/KOE1wDia+K59nmUFO4onHUQOAzp04haDOeQSPqDt2JBSW4Ey2bRu8wRGopUX4QaBWmUI648YPUqPZhhAsLdNCBSsf+tyR5Miv3r7hn+ErQsUeBENUcM7KRSg1s6JU3W4kWjMN7pBztRmSz+UzC0oUigHjKEKIui2X79TrrNG0NT1hFMD6lAF2pv/5v/0fUa/63e1OW/zOn/wBfenyBZ/SwjfL5wviqVPBqXTD9Nhud8SV29dH9l5PCFalQmmsaq6Hmcck3zEo45VSuadd3GBMPXP2fGBHqBBCXL1zk65tbSQ5lL59QRIX58KX3Q6CvizLlAj5NO7EMELt/I0B1JRFei2P7zTqgf1PKaud9e6V63lYB9MNN00j4wAGx4XruskfcHwaXIebhvF+Gyi1auXs1/TYd/gbjHHLtDQ99IFlCcaRU0sncFyU2VIpfvnmNba+vZm9HwNGyvVcPCY0E6rT6QQ+2GdvUtLVyDAM5Lee+cLsvPj2D36ou3e5nsfXdzZDHQaB8vmlSxfwc6+9nOjgtTMxUbiP7MxvUJrOAs7OnGVNE0IIn5mqsdmp6chU63AuNna2ojqfK9txMBdDZBRHNrLxFgTOwXKhTCiNaurGG69RHF0xV+jpDMniWCBjcnVrnTUiYEkJMr5u3d9CgZYLpYk5G0spRd1uJPbDt6ycWJqdT6y/IPM/bFsorYMRxnbTETuNXWY3nS59nH6SRyBn5cS3f8XX03MnTvfsfHVrQ/yLX/tXsa5DSqk4ubhMq+VKIgC4nsuv370d6l6ZiIJHdIIJEYVcbjJp4VMEH+6IlWIJ97JjUErlmeUTJAxrY0dw9fEXP52ZfRTq3vt5cqYFJTJS+w09cP4SCMpNTQc/OOk2QRDAvG7XWdNzg7yk2x6NgPRaLdJqtzVOQyIwEg5gKGjX8lrDRQVrR+6QSyXc65hgUSmWadB6EuF6i+6tPXpoqIMBdRgmPkMCMkTOHj+N4syOXt/e4hdvXMnU4QdqiLR4B2pmZeZAO+wq72gKsmEhhO+BhIwGgxlsUPYU/Ga+50PfisqFImp12nx1cz3wGk+K8rkfMLocwtBLJlkBOms7WbxHqDfTMOS5E6cjzQYEY/fK5nqkKEBtnw7XdJmRgvqIMHB8FXMFBmdc/YwfAqVCEVnRZPknBo7b8vid1WRpoE3TELNTM7E6hRID0H9HUA4G2U0n8HnUfxcPWkIA8cLMHIZM9HF4MEJCKkWEkqhh27Ju1yNhwBgHbNIeA6VEfOnnvI9+3jve3VOVdqcjP/K7v0Wu3bkZm6qmaco3nH0y0jPWUcrW7Qa/s3o/9t9x1ICB08s0DFwtVybt2xs1lKHkGYYhKn3KQsxO1ULR9Usl+e3799jt1XuhdIr4Jah55st2B8wUg2w5Eev2UBz8DiglcFYbud9wXJiMhVyFxFZ9h2aY2XKkYFYIiVarRbXzN5ppy74DGCPVarWxSCsbQDuOh1ppsKHOT88OJSPNl/fpoU3TFBYz6CRnSpw/dRZBzeS4njbvqE+89Fx8HYRQXColHNcZq8uJdgCHWAg9XoFsTIwJZowdWTOOMcY//x3vZu945s2ISyHura34Xk+pUD73gkfvg9EsmiGlBHLE6zkbEu3xe50Soo7NL2JwDEX67F10W51oo3Khxo++PEc6U4eEAbtD3srTCaG9jQ/IjEkGh1spX4yNsSfO4ULAN9BAJ5VB2a37W5vBk3i3A4Oa53kQ4BrnlCKoNz83PTvaxm2luESKCSHkTn2XNJoO8lperLhp4eEQeObsef6dX/VNfdfb9Ts3+S//zr+LZT0SSvny3AKbiZBhZRAKGztbam1zI1O2k0E6w98ZY2K6OuX7PuxHpm4TDIFaudqzPB/UsH7juSdDrSnYuz/5yvOp1ztXCtj3B5c8g73fMq0udX8w9IZvjTHiXfppUzt/h0czWxLgLLu+tYmgxKF+hkaAtzsd7Hpe4r/RoTXPqICsO4A5F5y02+1oIunCGkR1Nk3o5Zuzcrzap85EaKEpvLhPqUkpE3nLpAabrIwJcOSfP3k2VuRhk/ybCy+huI0RQQbheM3x2ryhJkqH+6qJEgSnSW4L3wbGqGLU6LtPzdZmxIe/8huolFLdWbvv61KVFuXzJM9l5sce9gyT+YFpBeNGAFgLSsWSPD6/GLnhE76BQHtZd2xf37YAY+3W+snSmSCA7iPR1LJyvJjLR74mRmLwY6YkBKURTFC5WCJgVBzFp0sDvbnerZ0a9zNhdX/7wuk0HdTxSZUZdE4gaHhpfhGNIssArEWMMfPaLbFT36V2007dqREU/0lsXy1X1I989w/2PYsAs8gv/OavopWNtcjhYZSqZ88/E/U56Cg9xermOt3c2Y58LHEKhG9vrVKdyMCbOHENIhvOC8DOWMgVHrNdUELFyaVlWi6GChaVa9ub8tKNq6meK+H7LYQYqEPOsjghydM/a+dvkNU6em0VQmp1Yy3JvWD0QPKnMYcSjE6zOfC37E+cbgUIZNoBrJQSrpdC3V+9NiJBAOqLVUtVMooXv6MAgJolGCFimSYGerW0aEMimSSfQiAa8Nzx07FuZEAdc+XWDba2teFTq1ibSa/dImNHQYmR4B1Ok8quiHWGMiQcKHwwxsRgBiHkcT8woxR9+Ku+EVVLFeSHGiltyuee0GIE3z2kVPJRshma6tRU8Vv/96GCOnAttbnKYsdwTnni5BkE36I4HsiMWtvejCZY85CCSnqtNtHZVnHMGmThUFEpagrGeNBNTiqwFUEmS7lQGliWIjmtwvXkttzYKU27dX/zBVouTk7d3yNmQ9XtBo46UwUCg0r5opipTY+M4Q7sTpAJBmtwp17vBiIIAf9LP6OCAATB/JO/9w8gq66vyi9cfJX/5n/+fyJdl4QQvjAzxxZm5hKDSinE762vsN1GPbE+o+hoqlxB5hHzE0UfWsZgBOBeAFnAveyYU+UqP7l0LNRvBPaSFy9fgBIDg5WIoQXsPUIIX3taIV+IQYOjRWrnb+KQJ96h4Fys72zFc+FOfDSpdSggGcZ2tPM36hnIrAMYHBRg8IncUREmgybMO1HP1AjKA6fh7NR0rE7DNGEBg4tUilmmyU3DZHEZVtMc437fjDF1dvlU7HO5ubPDL1y/FOrAGRlOGAsuOBrL4BOMueCcRW3oiQz7MRAE7ACMHV7ClFL+OW/9TPauN70N3V65h4AapteTGcrnMZiHsRtCGIeuPruM3TIIMyBCiZivzdBaZSrM677fWd3aiIsxQ0DpAsdt6su079nw1/BBFmQ19rOdP210qzAIYEyEyZgqFYrpnp3DKN/jHbj3d2mg+5yToujGNAwxW5u4ur99oZNSirrdiPz7enzxGGLJJ1cFWiJSSYkRxnbTETuNXQZOi8htT4E00o2HQSBnWfI7vvIbydnjp44U85P/+udQw4mOaQCcaM8+8TRKkk4eAhZur9yjaTnags4TJIYU8gVSyOWDvqrbx4AABK/nrRzLW7nHpMN6ftP5p0P32nBs/sKlV1M5k2CEIGuQDfqOw95kmiYHRvLQAw344gPnLwHa6cT6DKiibh4BAl7LEzuNeuRnqghUGwkRUPKMCyltZ7zKMGYF/Gw6gLt1f1s4rqjLfTrfQJOAkUQKxZDdEEiLkWkMtcUKuSItFZKPrEoDJFhThFCZM006bhnPgKdhGPLMsZOxr/+O4OrjL346bWOksl1nLGmSIYuQc0G0Azi+rwTGWIBR3WDGoUycWqUqv+urv4ncX19DQj6eUTAylM/aqRjf4jlCcqhzSyqa6k6zhkDOssSZ5ZPxXkSV4tt2nXmteOpJKoS4EBzZjqONJhEuMDhs1aq1CCVqUUkiAAb1nJnDeSuX9rk5smFLpcTq5lpsTg0wbM9PzybqqIkMnPgEcc45ZGxF8n2Fc3ClVMa1ylTs98agkGCEhFSKCCVRw7Zl3a5Tx20GFaPbZxQBSqn4ss99H/2ct7+rr4YQ8PAXn/44+aOP/Vkk300osTEzVVPHF47Fe856ZEQQvHDz7h3ijkA9anA2AuVwuVR17XSyAAAgAElEQVSK5BuT0eU3cmp16bh7BAFSQsTxhSVaLVdCjUlKKS/euEo2d9OgJwcXwmC2u3wuxzEmia1H+A1QgrXzN9SKGqWXMK/bddb03FFSOlO6wt5mO00yKIgjU0qPkDJZdABHW/e312SEMGDD4U4plbmLTFbXGsYITVenY6MbzO64icAYEcswMdDbEABiDJ6caYmTS8djv9jAj+zTF17EcRmRB00FZBwA8wDUGxjXRyopBBexz+W44ud3XIRgqAv8sMaRaRjqb3/ga1VH8MeoxTNJ+dxnoNoR6XcFRNsuFO4hzjrRaq2lpY0AODtOLR1H+dzjEf5R6+a1W3y7vhunMYVD8Aw4gfWlMLrZmypXUa/SBdH1oCXFhUAxX0BgVB+3p+k1+d21lci/JWDsrpYr4DAfN8iGHo9CSHieR6OouQ77zonF5ex8V5TiEikGpQp26ruk0XS6dz39jCcCzz7xlPi2r/iGI++5cO/6p7/wv2Eh5dAgwHp/+swT4NgZWlYQAUopdeXWDTwK5aoMwxC1SlXbHoJMcAJtgc2wkCsAm+FjvZULJX7m+InQ+3Cr3ZaffOX5xG3ncF/udDpHGmDhN5tPMBP9QXIAVjmd+ZvAqk65C4XEVn2btjudlBUZ1e6VajhNXxTuozrCtPXOnAMYIn+9BOr+hjOmIoF0/UNfa9ZgTExXaxN70IMoL6UUMw2TW+bo00MXcnl+fCFcLRBfC2avkVSKX719g61urgd5LZK2kGHEeYd67dZ4eO37oKKUgkj/0Af6SMCeECGwz1BKpcEMSggVn/WWt5PzJ85gr/0gS25kKZ/D0BFPyJzHNsywmId9L7aBaMFJIYAJFuDcW5yZS+QsJpVUq5sb8e6fGFimJTiBNZNFBAuJECxK+RJ9tGxBBKK1iJgRKBeKyDT617mMuftYxUOAx5Xb1yPtA+r+FvN5UimWEzdIRzqQmIU5TQd1OLBihnsA56lShYXNHAvX6+NvwV0HY8y8dkvs1Hep3bSRNshGhW625UxVKuqH/84PHnkW6XDO/+hj/y/72POfGnow1VKZnzl+KvF7NXwnL964GlfpjaFx2RcAgTfT1SmsA80igzRSQZQQOVWu9twXn33iqdCBPFJKfv3ebXZ/fTVSff0IA0aLox4484KNNgn65z3nLwTrJXIX84OPbhMfApBMtL61mfnvcnwIDCVZ2Y4TSWDWUFqM+ctZcwAr13OToV4NkRkTymk85guo1/Dg8lfOF1iSkVVZhhkTrAgme/TQo2msKRfLfGl2PpHLzdbutnj12uXED0kQfOK4E1FrAOopJo5vln+jceoGwSAYY2Iwg0xVquhD7/syBLQwI0P53AMcoBJXuiRCnMvmMdlQVkHpALREMR/1ziil6vzJMxgi3RN61Pr2Jk6CQUMh9eCSOMZsHUnMGexP/bI/kuhf9xEcATCml/JFbLBEjuTBFYzgjS4N9MYatV0nAmkPRJgGE7O1WX32HYyoqtuN0NkXsO+cWFxObNM5OByoiYoQom7L5Tv1Oms0bQi0HDxi3WKsEIAzzz/7vn+EDGYcOa5G01E/+cv/Yqi1SilRZ4+fxsDGkPQDDuAL1y4n3W3g/mqVKpQSC/yefiEZBDDBspQvEvOR3wshlB+bm2fT1anQiggp1cdf+nTo/SRkx5DpcOTvOp/LC4xx/OcBjCQlBDJ/4+8rJFj6tWgRgPvp6sb6UPtKtBqNjjSn2RxrFs6szER2HMAx1/3tBXhgh67OpPG9buemZ8eG/tj3oAc0BJoVhDHUCMaWYYaOqItKnyBypsoVMT+dTBYRF0L99Yt/k/jG6XjNSYnWGkiNE2Rt6Lb+EYBsna9//5cjhLD68099DN9euef/5ay1xEgi7QROZlZCBKw9VGyYd5MZne4lBgQoJXJhZp5US+UYpPcTqfiubSdZ90jZTQcPivRPEICR6wruQTmrW0N25HSfNIUh8AoyqMqFMqFk/JNYHbfJ761HQwMNDqG56RnE6Pg6zaP8PUCN1LrdCGywJpD9W6mySjG5fQdqxWGEsd10xE5jl9lNB+kSAVGuhtGTlbMs+eGv+mZyevnEkcq3O23x0T/9Q/rCxVdCD7KQL4gnT50N/FsJ3eGBF4F15bVrVxK3l/jVHWrUFwtFos8XfhFLr51BGa+Uyo9tkIVcgT9xMnx2OzAx3Ftfpdfv3kpsnSrVJVjr+5tMiv65e2bDROUs7fxNb2Un3zPnXGzsbKWyJyQ/2uh6bLruUOwz0Wky/pKy4gCGur+03W4ntjl0pzaMYRQjjhTSN8gjfhumafJauaox6oMRUIEopajJjAf00CMQxT9draHZqelEvohwoXnutZex6yVWn0l67dZjdVkTGWxKnXR0XYqUkEfo7PFTaGVjrZsFPNJPmP1zpAecnvJDZ1xrZ316k5dSz1C24dSx44mfwzqdDt/Y3U60X4gYHoUaeCkthYHdQmZkqVDWxoqBSKXXAAJICaW4UijRBDP60xswQl0nXhQ00N26v6UKTqIOeqqARds5lIpBdtMJ9C1njKnjC8diteVghIRUigglUcO2Zd2uU8dtRjt6LW2kEWCM8S/73Pex97ztMweOY317S/zMR34x1P5HKRUnl5ZptVQZ2E8cDTq8Iy/fvJ7JaCBgAyxYFgEHcBxj1zKjRQCCASvFEn40SGq/vvWwjCN/8+qLyE2o7jo4nYUQffcuYAYwDUMohEL97v0gD3gSjKVlmhNzZvODyyS08Vqe2GnUY1tbY4chRqrpeljbppOb2Uw4gKHup+e5gS4ZUUEUOAs4qo7HVA7UnKsWy9QyrTEdYbTDAtoVgjGyDItYZjbpocH5MDs1Q2qV8BQwQVCD78G1OzcZOMlifzAWnHPlttL5/sQ+vj4d6E02WeQf1H8hZK42g+F31Oq0+bXbN1LZ86Icud4/o0QzPll6nuLDNquSIdAkjTMFOG1WNtcThwUih9udduL9jkOHYMSuliraWJHRycSYCJMxVSoUR/7MEARioIFe2VgdyrnXdULk8rha0gEOQbCHtgoh4XkebbVbvl4lhIjpao2WCkVf7QM1UopLpJgQQu7Ud0mj6SAvIWdCID1148wg8Kbzz/Bv/fKvG/jNbHfa8td//3fIlVvBa45bpimfOftkag5Or9US1+7czNzeDXYjg5lyqlIZiH9mFoxWBGi6BQSZHYSCYMIXZ+fYbG24JJCt+g5/9eql+NcDRlIKSaSUfWc0n88Da0Ssv1vIfs+ZFpmUgD3983mIAK/bjSSZsEYdeum2WqTd1vf3JCcyCw7g5Or+9kI2aBZT0PZJzmYG+oJIa3ByZECVkVLhAD20sgwTfEWZ0R90m5ueZUlGuG7Xd/krVy/Gf1BEqEshqcDUMSkPRpJ3ONEUaclMOBz+q0ChXpul8LsGZ5xpmqper8vr924lscbjG6jeD+PD9qBkjOATFXpfBWMMUJ4opULLSGagupdhEQAKzunqFJurzQwrKtT7Cim5tbtD2smzTCjX87BfZ0WowY3pS3BunypX9bchg/MLRkQIEC3k8hnULn6VnKbD722shj4nGQYTc7ru71AT5TQdX7R8hmGK5fnFyJxRkMWFMWZeuyV26rvUbtoohX1lKOz0y+khUKtW5T/+rh/wZUy5ee82/6Xf/rVA3xlCKV+eW2QzU7XUBmk3HX7r/t1AeiehLJQgma7WtPMrCbAj7qNWrj5Woi5nWuLJ08PRnEsp1StXL+Fdux6xxofFYYQ4F4L1s3GBHSZn5cDoF9uZVzt/Y53ibAtXSGzVt6k+qwyeJrAXtFpt0tLO38FgRdwiVQcwxkh5rRYWQkQ8rGDiAmfHaDrFvgDnc3lRKR6OHgs2G5Pdep/q02CMW6bFhqVciQJNMCgvTM+xcrEUhThfMoQU6q9eiL8OsNtyJ6/YPEaCdzjVDmBfSzF0I8iGgJq/C9Nz9CD14IPIaANTQuXm7ja6df9OZAaz0MrqF7ONQASOdjhvqSGcyNkGSGu3j4DBmHri5JnYDBs+kJaNpkOgDmPyj5KtdhvKR6Q5/uSHHUGPUOZDP9lDoJgvoNwEMyoppNSVW9dD/Z513d/I1rOq2w18VEYVIUTO1maGDlRQSoFBiLotl+/U66zRtKGYY2QD0YImC4Ef/4Ef9lX3u8O5+qXf+gi+t77iGyBGqXr2/DOhvk2+OxnQcLuxK+6vrWbqDgnf3VqlikahvFlU8zAucsA+AeeNQq5wKHCCEqKeOHkaD8vu6LhN8dxrL8e9XqUQom+SAwTgQ6kCpJCv4JCgc6udv0ERG6/2sLDWtzbRUeel8RpxuNEAw0ynA/f1Viy/w3BaTc5baTqAeYd3WCaoSAMaVwM7jCdkPcEFcKpcIVBbQT/DIwD00BhhMP4Q0zTjC1UboColRCzOLlAwRCX1QKTg8xdfwXHVSYUIwVanzVqTSBmJMRecM304iWc1H6R7nipXe3ZCCFZ5Kw8GNbG+vUnurN5L1YgwDBIYY6kQkkipzEWhDzOurLw7dP3fvYFEJScruGg9HkeAUqKW5hZxOQ4KzgCAQ/Gt9e3NuI08PTWCSyWUdXAC1q4MMLyxawr7UblYhqCksRvbKA+oXChBnbpRHsLQugMN9P31FRr0LvCg7m8Z5yc0c3po4B8RAGfVut3o+4EwTUscm1sI9QGRSsJdF9tNR+w0dhkED+kA1ahncPLk5SxLftfXfAs5tXTc1+BfvnKB//s/+Kive0w3MH5mji3MzPmSHUsjjNTa5gbe2N6KRXwYoQ/OEqWhHYVh+tbvRINA14FfrgJb2UOBBGMxNz1LF2Zmh+pEKCGu3rpJ17Y2hpIz6GWoX9/vKeQLsWX/wvrPmRbWtM+DZmh8/w5Bi6sb6yNr00toZjgXHDnNySq/mBC2vrpJzQEMlzrPc0NdFnyNLGCjIE5daIuQkkrFVzw+oPqZaE4pVbNT0/qjF/FsAAWzQohZpilMw6BJG+kooeLY/CLNW7mIR9ZfHNQBvn7nFru/sRpLn/D9cVwnM9+fWAbZRyh8vzjnR0bzJ6nPOPX1KN1zv7HBHMAlAaiIoFjNyuY6ub8ez1ofJ3wnciwYCRTRWQNjJPS5ZTxXEXxTioWCOLFwzJcBM24UoA5wWkZ8hYDYQyDbsTOBRdxYDysfEyxK+SLVwZvDIhnN++C8LBeKmFG9fAHRRtPmKxtrvsGAur95K4enyrqudTQrsiuFg1Hd7hFYA+t1fnoW53zeETFCQipFhJKoYduybteHqvMc4Ri1qDFCgDHGP/h5X8Q++63v9DUqOK/8L//2/0C7jcEUtXDXe/b80yhpe8yhgSjE72+ssu36rq/xxd0IEyIKuVyiyQJxj2kS5WOMYf9kj9r8TMNQT595Ymgbb4d31Mdfem5oOUfNTT8H8AP6ZwtKIkWedaidv5P4a3l8zJxzsbGzNZH2ZT8rYI+iHdnNpu8zvR+5uk0wBNJyAKdb97cXRjoLONjKeaQ1GJaL+aI++A2F4tEv7wcpMMZEzjQTM9ZBZveJxWViGWaMo3tc9E6jzl++8losG4TjNSeangMc7JAFnOiEjnFn/eie+w4ZI2kyAwMVNLSRUsr7G6tkZWNtdFHCiCOF9JrK8AwGCXTL8DC0aj0QAIPkuROnURbKRiClxHajTr12K8254kJKbDu2LncwYBbA4FfI5dmw9H5pTvY49P2APQTjSqFMwFCpnwcIKKXUldv+aaB13d94Vg6wK3ieRx+ts57P5bvZkEf2qhSXSDEhhNyp75JG00Fey4tHUS1VI7CHwFuefAP/lg9+yNe9BOjH/+vznyT/6S/+y5HOKWA9mp2aVssLS6ka+ZVC/O7qPVZ37NTnG84QpmHiarmcKiapAzEmCkBQT61cPfQ7AIahM8sncWFIVg2pZLdu9Z3V+3Gh1U1y6CUcEmkoZZGvUXD+WhDUfyBrOq7BabnZRsBreWKnUY98jWV71D61w0gKIZXtTGYClk+UEmmWigMYLg9ZrOkSxDiqM2kOr0/YaWemphGl+puXxC8XIi0xQsQyTQyO2TjpRuAgeHrpBE66nouQUv3VC5+KOEpQSa/dJh3eSWKaMtsHXBw57/i6FGd2EBlQzA/dcz814XcFWSr7f5dKqrur93Hc1EhxwdalglZKW60jBjjIuWRg1xFmEw/sSzdIDAFCKJ+rTbPp6lRifQ7qqNnyxG7Kl2Coew3nCNtxiC55cPSM5XM5mbfy+vs9aGHH9Hdg+oH7U7lQYnGe52NSP1axQBF8f32V+KGB7tb9rc3o+pMxzojTdFBnj2IT8F6aW0BmjwBhpRTHGDOv3RI79V1qN23U7kz23SvGadGieyAwPTUl/9GHv9/3vga0lP/sF3/64fruBSqs+afPnEeWmWxQ/KO6gMP65v07tOm6qc89JCZMV6e0ATD1mYhGATiPFHIFYB48JHB2alocmw9H9X9QEGTbf+Ll51EctjilwMXAe67FOOiftfM3mjU3JlJ43W4wP2fVMRlvoGHAWd52mn3rcwcSphsPhUDSDmDe6XRYHB/8oVDYfzlgFjAK2j4SJbMpxOge/mr68Jfw9EDUpVIKMje4ZRgsDgd8N7Po+GmUdEYC1AF+4dKr2HGb0aCKcbc2oNvSNQcg6bTT6fi+FEczAeMlxS/dc79RH6SB3m8DTuA7K/fw+vbmaIKlHYzRz1vUmOpzS/RzlLJEy7TE2eMnM3X+AlaD1a2NrOwxquHYOIuBpykvnYfdG4bBwfmYFX0mSQ+MCZR3UaV8QePfZ+LrTkOsbq4f+Y0DtqJKqUyGzVCapLUXcqyqbje6ZWRKhSKfrc08XLfglEIIUbfl8p16nTWadiYD/kOOW782ggj8xA/+KKI+GRWgMOEf/9Wfsb987hN9RzpVqvDTx0+m/q0GY/r1O7dIq91OdVa62aKVKo7D/pTqwCa8c0qInCpXD53hGaXqDeeejCIxA+4H6vLNa5HfWyDwSAjx2O8T1ifclWB/impqu85fw+yW89KPRkApJLfr20QHuj2+FqA2sm07kCmiF0oGEEjMAQzGbiEF0Aelfmg6CvdIs20yMMFJqAD1lsr5IsvnkqsRm8S4Rq0PWLuEUAn00KZhRKr+k6fORSrPjzCFHtQBvhdZbVSlGk0nioOrH/Wz3kZ1Oh2NRYhZCkz33K8PjKRBGXk0cwKMardW7qLNna0Q2qX7imbGiB5/jWn0mI6TREqIOr54bGhatqgxgQj/9e0tJCTYW9J/QB8IJutXGyx9DdPVgFIiq6XDxr50NZqM3h8YEK3M/X6zhv4gGmhd9zfZGYMAn7rdIMsLxxB8OzDC2G46Yqexy+ymk1r992RR0L1lHQGo9/ndX/u3yYnFZd+qNt2m+rF/9bM978dAg3v2+GlczBd8y4uroVQSXbl5HXGR7hlrqlLpyQAQ17i13GQQwATLUr5ITPa6PRFsjKePLZNSoTi0ErB+X7x0AerKDy3roQCMwdVAezH+5CxLEBIdTaV2/kY3beMiCVyb65sbCNa2fg4hAExcWEiNS1bWRWIOYCjj43ouBiNMpp8g2TFB2mZ60MMrNz89GysN8fAaTo4EyCbAGEHNXgz0LcPSycH750+eTQXAut3gL16+EEnQSLPl6kj0A7PY0VRsgdb0MHTP/Tp6lAZ6vx1EyN28dwtt7e4E0jELjYF2VSmkgwuimIw4zhhxyIxirFpGYATgm1QtV9DS7HxkEe2Blej7guK7XSqsbNV5BCew3vsenzQ459Uq2aEQj24dZlsSOBJyppVtJTOgnVJS3l1bIW6furHAQjU3PZvB72AGwBtCBYwROHclnOhU9zapMEIYsn+7GcDVcqWbDby5s43anXQzEYcYpn51TBFgjPGv+FvvZ+9+8zt8j7DdaYv/+Gd/RJ+78NJj7xTyBf7kqbOR2CR8K3REw1evXopCTCgZhGBZyBc040Io9EbjJYMyXimVD633qXKVn1w6FslvoOHY/IVLr0YiCxDFCHEuBOvlayhEGLShnb+jsX6T1hKyXFc31rX96xHg7WZT29+TXowD+kvMAZzVur+98AlkwI6anjFjC8SPOkA/PFWuRLaB++lTtxmMwD49tGmY3DJNxkIGvlFK1bnjp1PZ0KCo6Mee/+RQfSuEeLvTZto4cXjNQCZU5gNyBi/zRFoMS/fcT8leNND7bWFurt25iXYau4mMMbJOtIMxQigRxAJEzy2FEUcK6T07splKRxDszU+cOJ1Z+rFWu8W36ruZW2dQn6mdMm1iOivm6F7BATxswGAWx5VFneBQWyqUUNRsPVkca1Q67ToNsdaHBnpuehYZLHOfmqiGPrScoxy58JvvMkh1/yUSjNsEE0QpJRjD9kIQ/DchuPsvJkS4nkdv3LuNTi0tq5xlQXsCJUwajg2131nDgTrBut7v0BOnBQyNwNuefpZ/0we+JtDHYXNnW/7vv/oLh87ekOl+cukEqZbKQ+sUhQBgRbhw7fJQ9pGweoB9ybIsXCmWdNBNWBBH4D3YFyrFEmb09Z8P7BPPnn86Eu2BSeK1G1dIhMHuUgjxWI1RsH+apsURGv7eCz+4nGUlXhYvEsC1kFgR4JyLjZ0t/U08gLLjupp5K9ZVF054Eg5g0el06EhdBAIYsCedMpoQLCrFCoVMU/1kF4EH9NBE5kwrMD00Y0ydXT6VyiVDSClfunyBDEMRI5UUjtvUG/LB5YmR5B3+2CE5uys4Hc0io3vup36XBtogRxmBr9y6jnbtejoA6F41AhqBTCJAKRHz03N0qlzJpH6gFERDr2QzGlp5LQ97rVZmsUtaMcjmKRXKJGygYNL6jnJ/wPxRLhQPGVVHeTxJ6S6lVFfv3Dh0F5m0ur8+HbkKY6IGO3L3HLrY//UO7pKu58rXrl+lpmGK5fmF7t0KSkAZe1ShUkqOMGZCcFm3bbVr16nt2KlT1Sa1TnU/2UJgZqom/+GHvy9QIGW73Za/8YcfJRdvXH04GMs05TNnnwwkJ04kuOTq0vVr/n+8ESpjGIaoVararhIhplkVBXNdKbzu6KeEiOOLx2hUgRCtdkt+8pUXIvtd9SrzkrNynBASKAik33yA89dvTfGszqnWKx4EvJYndhp1/V18cP9HrtfSjFvxLLWhpcbqAIZMWiFl5uv+9kLRbxYwXMaAdEIpFdnmNfSsJigADBlztZlUDqAJDnNsugLKSIjoNg0DW4bpK4LNMkxx6tiJVDY0pZS4ce82vbu2EmoOYANquq6ux/AoehhzwTnrVSclFNBj9lIcdM/9IAIDZt7K9d0/IBP48q1rqOHYo4MyRgI2BaVQKt+N0QFqgKZwvoglAxhD+n8kl+GxwXrEBpLP5fnpY8czPYfgAN7c2cYdDoH3WXuUbHXayHW9iTy7P3YkIJgXcwX2aE36rM3aKOuzd65AYEyFrEr9BENA7tFAe3s00JhgnrNyqFauZvo72MfG0Jda+UBGbmyO3GDIv966zdvywpUrBL7tEBx8YmGpu5DBMdy9V/agMweHMMaYtXlH1u06qjds0mjaSN8/ws6Cfi8IAvB7+skf/NHA7Ba3Vu6JX/zN/6t7hyGU8uPzi2y6WgvSdaxtO52OuHzreuJ3LLD7TVenMss8EyvoEyq8Vq4esheWCyV+5viJSPZdIUTXznd/Yy0SdB91AMPvP5/LRyJbO38jgXFchfB6t+yRO67jCzIu5XoebutSg0EwS7RtrA7gkan72/t25ttAOslZwPl8QVQKxcQPoIn+SsaxM4wFUoqazOCWBfTQ/c9xOdMSJ5eOpzbHDcfhL1x6JcxBU3rtFhkp9oGk1pp2APdFOi66534dHkUDvf8OOIEv3byKhsmET2pp6X4iRCAAG0ngXnX5isCQZeUFjDA6vXyiS0OW8UfUHZtC3d0sPgohwQVXjuOEOV9kcUihdcIYdwORwKGmn+gRIBhzSimqFA/X04u+p/GVCGelncaOWtva7DodDcbk3PRsqp70aDNygWq5S8ecyUkUUqgLVy9jKKcDNNCUUHJqafmhshDgwChV+Vz+yO+plFIQQmir3RI7jV3SsG3caDq6JE0mZ330lcpZlvyeD30bOb6wFGgwHd5Rv/wffh3fWb2PINjh2SeeztQP0/Vcfv3u7cTPLrVKFRmGEQhL3Xh0EYA9LmdaqJArHNprn33iKV9JJH5GDnvLx196rltXfshHcs4P6ckYQ1AKb1j6Z+38HXJmxv11pcRWfYdqp6eSXqtNWrrMUqZXfKwO4FarhYQUmQbgKOX8ZgGjCTWkQhTgVLmC92mfRnaiJ1xxTLAkiCjLMilkBT/6FHJ5fnzhWOKXjH094ED4sRc+FWyWMBacc+W23NT0DqZw8q0BVyFG9/scNWKx0z33U9gHDTS8CvWeXrtxBTcz6kzpObw4HZhRL4CMycMYCZ1BnbFJyYA6hBA+XZ2io8K8wjnn6ztbmd2HFUIc7im2bWdWx6SWnWVavJgvTDwOUeMNzjKLGUpjOzyyYCi+dudm1xEzNz3zkHZ4WMmT5MgNgxXcFy7euNJlVMKEcIwwA0f1meUTh8VhLKBwcCGX79YOHvR0meKElJgQ2qVPrO9SYLvRwY6DkNN/94uAwQz+Fe99P3vXm97u95WH7V69eon/+//0f6PFmXk2PzMb+P04X2g4Nr+9ci+x/Roo5UuFItZBYnHOajZlw7cesoD3g5MoofzY/DyrVaYiUVgpxe+tr9Lrd28NF2ShEOeCH/pN5HM5gTEZKolFO38jmeaxF7K2uTHRjJMQVN3ptLHrtQYf/sZ+NWR7gHE5gEev7m+veQpivA7SNttrwrd2jFI5MzWtf+S+Ect2Q8hQQBh3ncBA5bV/ea8Uy3xxdj6xS8ajKEEd4JevvEaCUOACPZnddIY7SGZ7uobWTirVpYEeWtCIC0iS7rkfVINooPffE0qqi9cuY3ePAjHr0E8yO8awcxO7A3hCA9eGnZe034dMlPMnz4zM3gZlGFY21hmuN4QAACAASURBVNOGbUD/WHSdwI5NgW1hUh/GqKgUK0MZyiYVu/57O1Y5M4fzOrM6kqWhlJL31lfgjkIK+cJjMrUjNxKYHxNy6cbVh2VICKXwWcfgDDi5tNyzHmKXdtPKQeZkQIUUlHoG4cRtuXy7vstsx0FZZZEIODjdPCUE3vGGN/Nv+JKvCroYuzTlP/2RX0KQPewnoCHJ4W3t7siVjbVEbHAQ9FHI5WgxXxiZs2eSczHufWGMed7KsYPnmGK+wM+dOBX4N3UUVp969UW0X+IhDKZSKSGFeHiGjYL+OWeaCNhb9KMROAoBsDuvbqxP8vcR4r2R4+rEq1H4pUTvAMZISiGl1/Ii3RTSAtN3FnBaCqbULxwGIJq92OMCnpJKutuIEACHmFKKQtSsZZpsrjaD5qdTjHyFOsD371CgYfL7NFuuzm4dABZkPvFOZyy+037XxaPtkqZ77qenHxro/XeFEOrC9cu41W6FHXay72lHY7J4B+ktrhrDQXTQbX0jQCmRS7MLpFws+X4n9YYKdWmxoN5ulh/4BoPnoeHYJAIauiwPta9uD1h9qpNswIh83uCOBPSJ+okOATDG2q6jCMY+a+Rmm1o5OmSilwQBMdfv3ETb9d2HwsleMhUELh6bWyDmEXSwUBPYMh9nlgqgKcQAwzeJND2X79R3GdBFu7rOXgAIddPZ2rT8B9/590M5S2/dv4M+/tJzWQNRrG6u082d7dj1gqAawzDlVLky0faC2IHOeAdwPqwdOB+C/eTpM09AKYbINN/c2RYXrl8O622FvYIePL8DQ6VhGKHpn7XzN7KpHXtBnHOxsbMVdu2OOj4cGCXtZjO6j8GoI5Jx/aN3ACOkXM/FYxNF7zez12+7jC+IIOrN1qYRHY5VI0h3um1KCEC24XRlSizNLQDtZCpa2M0mf/7iywM3FnBqtjttBjWq9DMQAdnpdEJdiAdKzniD1Oie++ACQRcGYxB04Qu5DufqteuX8CjUGgHjgVJoIteZr8nsvyaA9TtWZ4zO0B5mhpJ/t1go8pOL6ZVjCDtix2vKum2PyjcAnMB4UssjTFdrYadZv3cAATCOlvJFyFTVuAyPQNeA2+Ed3uq06RvOPoltr4kg20A/8SEglVS379/FG9tbDzuBdQ2U5khB4i8WC9NzNJ/rXzd872yrclZu4P3Nz0iAKlQh1TWyOs0mUEazRtNGXmtEAiL9DFK3iRwBggn6yR/60cBy2x3Of+uP/yO5u3JPnjkebbZjYGUOvKAU4vfXV9hOoz6MGF/vUkrldHUKmN19tdeNxhMBYAks5ApsP6CHYMIX5+bY7NR0ZAOGPeeVKxfxrt0ILBNDUoMQ7KD/IZ/PSYx81CLo0RuMk+nM38DzMKkvdEtYNOqT5wDeS/xsOE4kZ7xJXT9JjztyB/Co1/3tNQG+s4AnKNPJMJiYrtQm70OX9C80vf64VJI2XQ83vSbUH4Uov2503dz0LF+eX2QL03Mh6L3CDQg8SB97/pMDX5ZKCsdt6nU5ECmEEEaq0+5M1I0uC3TP/abGLw30/vvtTlteuH6ZjIQRVGea+vlFHm6TwHkCHMAPqktrB33wCUr2DfhQnz1xeiQdSkIKuba1OSoO4O55B2qtdybMwQQ1/irFysPyH8mu8PHpDTJlyoUS1sbD4eYU6okhpIjrebjVbndrqzHGxGc++1aCCVX31u6PzDdlOCSSf1tKKe+trZDVzcP0/RgToMLtBqcBLezcVI2VCsUjFQTGMIwJBgrZqGl09x3C8M22m47cqdep3bQRrBf9aAT2EchZlvzer/t2sjy/GAiUdqetfvbXfxlv7W6JmakZdGrpeCbsC0pJfnvlPou7Vna39mulmpitJ9Dk6MaJI0AJkVPl6sN9N29a4vzps5H+Jhy3KZ577eXgMjGSggvYnLq4wF6Ty+W65QqCAqWdv0ERm/j2fNdusElkJgHaddtxJrp80iiu/ggdwBgKP9MO74wiDkfrPIHZvUcBApe+cqF4qBbE+E36xI4IQuqp47rYa7eQUrInlTJjDLj+Wa1SFccXjlGgiI6TDhw8z69cvUjqR0QFwimv6bpdI5F+/CHQ6Yzh97rP0LNC99xvZoLQQO/LaLXb4sK1SxTqV2b60Xto4OnBGEulVOwGbt8BboFHoF+ICgFCCJ+dmmYzU6Obnbm6tdGtpzdKDziBR4FlISpMMcGilC/RKCn9otJtFOTsBZihSqEUuaNrFMYfkY7wkSBccO62PPbo7w9qoH/+O96Nwen46rVLiIuMn30iAiVJMVLKLr3svbWVx7oF9hyEcNc4D2eUWqVKpsoVX+qB4zhnWZjR+BJFwDEG+sGZuOE4YrfxgDJ6ku46viZjwhoBDexXvfdL2DuffVugkcM6+sc/82PddyilYmFmjizPLwV2KAXq1EdjqaS8efcOAYa2uB4ICCsXSxho3PWjEeh+8wmWpXyRmHtsZQRjdP7U2WFp/g+BK4QQV27foOvbm4FBPxgQbxgGMpkp9hkj/ArTzl+/SOl2+wgohOT27jaZpPsijB3qHjdsZ3xYfydoSUfjAMYYiq6rcan722v+/RhJMUZCKRQ8amkEFxw4/DQdzAhOXB+VgTpFKsXcVgs9vFB0o+n4w2i6fqOllHKkFIMI2+X5JbIwM9+NGI3ygc311v075PbKvX5ipdf2yKRl7AyDMTgcO53O2G/cWaN77jdnQWmg9+RIt+UpcAJnveyCphsO8GtN0GGuKboDzEtKTU3TkOeOn449GCC24SnFdyA6OkZjZRy6Q1CZ53kTk00GmXoHKf7iwHRcZQI9Iji2ysVSfN6tcQWva0hCAiNE3LaHWq0WFn2CReDe+WWf9z5EKREbW1vk3sZq6s6YcZoWKSXfru/gG3dv97Rl7Nf/3R9zpVQWs1PB2MByloVMY6i6wL4hl12HMGJCCFW3bblr16ntOIgLTR/uG8QxafjON76Nf937vzzQ93lze0v+1L/5+YdnL6BDXpqdJ0tzwTKJo4YQUvCv3r4RWxkgoHmHjP04A/ujxkTLSwYBgzJeKZW7vyOCsZifnqXzM7ORdt7mHfWJl54LtrdjpHiHP3ynkM8rCFMKoph2/gZBS7c9iMDa5nq33tkEParhOHjUArsnaH6OHGo0DmCEVNNtBvrIjtwE+DTI+nEUj9zYH1HYsiw+VaoEOkSP+pjHVv89alav3VJNz3vUGaiE6CAVgD4FogMZoYhgghdm5qBuMFuYmYsEPqj39NzFnrQwgguh3Jar12QQpDGSvDPYwR9EZJbaZpnuuR9OQWmg9+QIoGm/cO1ytoOPfO6hWVpDaemSVPbvw/HpuUlrqgf2SylRkHEy6oY4r93i2/XdUdyjpdfyyKTUmMxbOZTP5QeuS93gdQTAWA4OrVIun+09OJuTprgU0vM82uoMpu2FDOAPft77uvYGCHp75dqlnixF2RxqtrWC7Nld28ZXb13vs44xON4B9of2nnw+z5dm5gJ91+F8YzJDWZaV+O8FHNwYY9bmHVm3G6puN6jt2KhfwEG2Z0xrFwSB+elZ8T98x98NtOZevPQq/7Xf++1D6xucwMvzi91g97Qe+BFevHE1FlYVCASzDBNVyg+cfPrRCBxEAIK5K0UocfFgeZiGKZ8+cy7SAFUI3Ll1/y67s3o/CPiSc97Vo0v/bOW6bCJ+BWjnr1+kdLtHEYBM2NWN9fH2gx0YNOw/juvqs/cI/xQicQB7LS+WQ0jmcMWQ7X50LYFxz6YhBItKsUJho9TP6CPQ4h3edF32WAQPxlwKzqCmLhoiqx3qdUHd4NmpGl+eX+o6g8NGfsOG81971AGGjdduOhOz8Ua26jAGlr3H5z6yDtITlHW6537IhKGB7sqCGhxuU128cUVf2NNbdrpnjUCkCIChvFwqy+W5hZH/XUsl1ermxkju05CdCBSiTbcZyHgc6WJISBhQZZYLOovVL9xAk5kzcxgc5/rxjQBXSgG9s/DaHg1C41zM5+UXfdbn7xt1+ermOlt5pE6tby10w4MICNt11MVr/c+QcK7G5AHj0/6LpmmJ4/MLgb+L4GQiBOoC52mabGJAd00Ioa12S+w2GqTuNHDDsbvBBfoZLwTAKfSTP/ijvgcFa+P3/vyP6V8+9/HH3qGUqhMLx/DcdLSZj36Vg/V54dplv80DtQO7zXR1KvBvOlAnuvFII2AYhoBSFzAICAo6s3wSvuWRjgnKuX3y5eeRb2Y/hTgXvLs3WaYpKGW+1jDYXUzGMGMjf82KFH8tzD8CnHOxsbPla735l5rdluD8PUi3nl1NtWb9EBjWASzanTadmEWAkT9nGEYcKTSWOwnU8JmrzYykEU9/Bh4ioNqci6bnAi1Wb1i6VCoduJdHRmsOdYOFEKxSLIvjC0tdyphyoeR7WuAy9srVS3TXrh96p9nSUUi+QTzYECMhuKDjRN8xKnTPfTdkjIXBGDX26usEmVelFLebDrp082pm955ugBTC8qABMcgYJ6btHjNDUuON8juflM6T0A8lRJ07cRpTOhb3SrW+vQVRRyM5dQp1jUvYcZyxmIx+kwB1DqulyliPMcoFWMoXkK6R6BdRpYSSyvNaxGu3/L50qB0Ek37O29/18IzTzQK+elFncIZC88FLYAB3PVe+evXoUiLg/MXosG0DMrJPLh4LbRMAm0LeymVmj9t3CHstT2zXdyk4g+FcrZ/RR8CyLPl3v/47yNLcgq/BtDtt8W8++hv06u0bPduDQ/n0sRNoZmral7woG0FA3WvXroT+3fXTBX6PtUo1M7/HKDHTsqJFoFaudjNtYf+YqdbUsfkF39m2/jRRYnVzE12+dc3XeRTqYkshuzoU8gWI4Bn4+9DOX38zoVsdjYDb8sRuo+5rnY46lk3X9R+UMeqDHWP9wzuAJ6Dub895T9gwm6W1BxtlIZdXpUIx4k0+S6Mca11kRwjVdF16pBH2YfavOhTpHSUyhFBOCKYGY+jY3KJanJ0nM9XagC5wtw7wrZW7D4wWCHGv02ZtH7RxUeo+TrLgwCy4GPnf8yjSPfe/gGOZt/Kh5gQo/OqOja/0pfAbp9U7xmNJI4hM00BnakERSsR8bZbWKtVM6TWEMrxuN5jjuUOISP1VzqVAtm1nNshmWITAADxVrg40nA3bz6i/D9GRpUIRmSGCtUZ97AH179Zg7QDbUMtjwwaMn1w6zt/+zLMHfn+Kr2xusFWdBRxwWl5v3uZteeHKZTIoOIdQ+hgLGvwOziyfCN33/ouQQW8YxtByIhYAHgWEMSFNMPDuOYQdtxlxN1pcEggAu8VXf8EH2Ge88S2+ugNmgh/7pZ9GR803rP9zJ06jWmXKl8yoGnV4R16+eT3UPfEoHaYqldAsbVGNTcvJPgIQzJ0zLVTIFbprkFGm3nDufOTnRsgCfuHiq0f+BvfQ6rINQkIDJRRZlikRwkf+PsCmbTCGwQ6pH43AEAjwXbvB3NG+2/oZvnI9L7a6834U0G2iQyC8A3gS6v72wNlXpsyYGlL3DUN6s4zuB5iEJKAvhEOR47q0wzu+uuTQLqFgBziEMTAsYIznazPi2NxilyoaIgsffZquKz792kvdKCuhJG+6TX1y8zWjvRtJpbo00EOISP3VUaV77gdcaBroPYFQO2e3UUfX7tzM7rym4eBMfaX6VMAv04hPcbrZaCKQt3Li9PKJsYoo7nQ6fGN3O7vfJT9LBYJfHziBqRxTmlAwZqdJy+pnGtJsA3ehcgFq4I3VzzNSSBVSUimFvVYLQ7ZvFJS6QIn/hrPnyflTZw/pCkbiV65emoxSVJHOElwOhbpw9TJu+cjIJqT3egcH8LDfi25dYMOAbPrInVoRQiakkuDkIK7r8u3GLrMdBzXH3/AbIYTpinrXm94uvvaLPujrw+22PPU//ct/7sup9eTpc6haqiQ2uFarJa7euelrHH6UIgTLYr5A8hHT+PrpW7cZTQTgmw9ZwPAvIVSePrZMICgu6qfuNPiLly4MujcIIQSFc0bOtDihewWK+yijnb9Rz9LkylMIya3dbQJlgsb1gfN8q9UmrXZ7XIc4ceMK7QCemLq/vZaEH8fYGBpxGaNypjqd5cvZxP2AjxowOH6VkrjpeqQVIEsWqGTFXh2NNABljAohJJ2pTPHlhWNsYWYW5Q7UV4M6wODQhks3GH70Ex4BhZTgHR7ZJTK8JsHfHHW6534jhmzmsDTQ+zKllHy7votv3LuVybmFyxcYh4PP+gS8kdbZYUwD10ZxxYBB5dSx42jc6oqCcWZc6nUqpJRt2+ANHsUl1ldnqGlbLpQ1BWQPhPaYRlClWKLk6OSSsVoTAQYDNWVoR3Dueh5k/QZ4dXBTRil/69PPsuMLS4caw50FagGvbm0MFqJbPEQA7lEXb1xBQOk36HlQ/5c8VgYLgiGW5xcjyaKCusCQvZXP5diwDuVB44nk70oJiRTBCCOn6QBlNGs0HQT2Mf1kE4GFmXnx33/7f+PrXnR75S7/uX/3rwc5nroDhfX61OknULnov6zVMAjZrsNv3bvrS7dB/cDvLmdZuFx8UNNVPxoBPwjAuslbObZ/T5mqTvGTC0uRrMmD/Usp5Ws3rpCt3Z3+amEwZgkwLCAIYjhq/4BgI4MxopOZ/MyybuMHAWCgiSLI0U9fSbcBX0K70yae19I2u6TBj7G/MA5gCQthWBqnGMcUu2hfWcCxa5FsB7DRl/IFVsgXku1Y9xYGAa4Qok23ib2A0TrgmOG80z1EZcFJQynlSilWzBfE8vwSnZuekXfXVvDKxiru8NGsJRhmQmN8R3U6nZHa1MeJ7rnfvEI0dlga6H2ZwF23sbuFb9+/m82gnbQcnTH+mEZetJ6T1KcQE8Jr5QpZmJnL5u92CIQginhrd4e0xydSWtmOM7J1jXtNJaw/OOuHqUM/xNLI/KsEY84oAwN/5AbOzA9+gIJgIEJIEaCHg2BTcCzG8TBmiM9689vpzNTj5WIgouylK6917y768YfApRtXEdS49fPsZXk9FrhHCJGLs3ME6ECjeIBaFGOC87kcBmfwKD0QiKCQ6mahPXAI15ndtJHOmsnOLFJK0U/8wI/4Uuj/+/TH5e/92X/2fQ6jlKqnTj+BiwnYybYbdXF/bSWSHwhQY9cqVb2v+VoVutFBBLo1o/dKhlBC1RufeDIWe5LXaslPvfrCkb9F8EvA79syrW4gWs/zrXb+6gUcMQJwKFrdXI9l3UesahhxnHc4cjxX7w9h0MvwO8EcwBgDxYJqtTy9EAZlAY+hIXW2NoNoD1reDK/viVINauJKpZjb8pDbaoUaO2SECr6XEZqxNUwIJNsoCjRhXEqOEWK9aKJDDXyCXxol2pJxo3vut+y6NNCWhYfNMgIn8Nr2Brm7ej97h9OMfV+y8gnIQuBNVrCYRD0YY+qJE6fxSGRABZ8g2Wg6xG46wd/M8BtOs4miznZMa7gQ4JrPFWhUDp20xhFlv5hgaRmWKubykRjco9QtNVkYAcUzEUJwt9Vi7QAsQ2F1hm/jF3zme3ChB00pON9WNtfZms4CHggvOCiv37mJtuu7A9vuNyCEdms5P/oCIYTP1aYhSNe3LL8N87kcGuVAFKUkRwh361I2mrbY2XMIj1EAlN+pzEw7y7LU3/uG78SLs/NH6tThnP/2H/8ue+7CS4F0h2/U02fO4zjZW+COsLa5gde3NwPp1qsxOPCmq1NY21KGhnIiBUBgXCFXYJZpgn1YHF88RqulcuRYgPPh+r3bdGVjrbdsjBTvcJyzLE5Ib/pnCC4ymKEzfyOfnckWyDnnGztb4+gX40IIZDd1qcVxXOHBHMBIyabr+o6GG0fA9sfkJwsY4y4jQPYM7yEmxjSYqFVq2vgRArvYX9kLRnDbrW6B9tAR8BgJwaGGxl70fkYpQacqVQQHzFv37wil4MyJBcaEdinK8Fj83GJfMgc7GAUH8LjSPfeb6ChooPdlA33SyuYaub++mui68tPZOO2Rfsbrq02a3900+/YFzng3opTIxZl5UonBgJIV5OBGub69OXZnSaBRTcIJlsQ85qycKGhnZxdqoMTOmblYDfpJzGmEfYAjkHptT3mtNhESkm2Se77yve/ve84Hj/TLl1/DCuks4H4zIpVUt+/fxRvbW4EmjVLWs2wHJljMVKZoHHsWOLpMw8BWRNnFgQYcQ2MlJVcYMSGkaji22G08oIyeZEa9GGA+UqRhmPxrvvAD7B1vePOR7dqdjvyXv/Eroe5NpmGop888icEpFsujEL+/uca2j6LE9dlxrVod6SALn8PUzWJEgBIip8rVrm+gXCzxM8snYnGGQb36v37x031snFhw3qH9WCq18zfGBTDhol3PE7t2fczutFgIyZXtaOfvuC7vQA7gia7722sFDMgChg1HKTTyDnOghKsUiuxgHdZx/UGM4rhanY5oem43ynjIp0v/3JWR0ew8qN1RrVTVUyfP4Zv3b5OH0YAYQ0YwhXALgrHCmBDtDB68GsAB1+nw8EEDg7sYqsUk0D33AygKGuh92eAEvre+SlY3+0TPDjVLQ7ysHY6PgZd6BnBGv/1DrLKRebWYL/CTS8uxGE+yBALUAQ4dqJalgRzWpRuA12qHY1/J0rAYY7xSLI/9OvSDeSlfRLEZ8v0okJ02Skgp3ZZL06K0BcfKBz73C/tGeUIW8P2NNRZFZlx2YI9Ok+45cG2FQL26YA9GlJK+Ae21avUhDWgwuYNbwx2AUaryufzYfY8kMFlhDLWy5a5tq7pdp7bjoKSDKgbPwni1ePdbPkN8zRd+4EiDPSz2f/jT/zT0wC3TlM+cfSqWbEPILL+7tsrqdiO0fhDYVCoUsbbrhYZQv7iHADCklPJFYjKjG5z1xnNPojgyymF/v7N2n968d+exMwD8DSPMTNN8jKkCbPGMMgLsgfrRCESMAN+1G8z13IjFpitOKiUatj1mTu10Mc1a734dwBNf97fnxPkxlI6BgRs29Lnp2fFIZc7aLzC8PqrNuWi6Lovksogxl4KzfSeynwz38KqHe3M/oKJUKIo3nX+m6/C+cvs62tzZfkzgvv5ATwYXbJ0d3AdzjATv8G7Nqqw9k0L33A/3qGig9+VD5gdQQWuKxKyt9AP6ZOC8kLoDOsPTE7dq506cQqYRU9ZI3Mr7la+U2G7UqTcGjtLHh6wkZEVCsOwoP5CJXi09yOiY1AfOH+VCcdKzo7hSigEdqtvyGBdgW03vKRdL4gvf9TlHGqXgnPPS5dc0FdAj0wTlQFY31+m9tZXAE9i9PwEFtFI9nbClQpHPT8/E56DFWEBEbyGXJ3E4FgIDEtMLMEeEEAiwgIwiXLcbxHbsbiaBfqJDYHF2Qfx33/a9R35Htuu78id++WeH2gPzubx45uyTNOrSaUopcev+Xeq4zVCgQFJHIZejxXxBfydDIahfehQBgzJeKZUZJZQfm19gtUo1NpA+9coL6NH7A9BTmIYBbICH9qEHbGqUGMzQaz22GZlcwQohubWzTcalBBDMpEJKNmynG/Gnn/FFYLADGOr+cqFabV33t+cyGFQLeAzWDtRUqJYq8V3uxgCjBIcguRDScd3IjTGcdx4OI5NOgL3fWt6y5FufflP3YgYb1CtXL6KGY/efgj2nCkQpEgxmhO6T4JRluCuMuODioeM/C5pOGt1zP8yjpIHe7wMoEm+vAP3f8LWjIlsrGAmMEB4HtoxhMcnCdzeLwT/D4pr19yFQaWaqxmanprOuaiT6NVue2G2MG2XWQ2gElFVw3ObIRk/D+ahWmYpkrkdRCNRFrBRKmNKRncKhYAcDkFQSeV6LtDrtzGTrz8/M8s9+y2cceRfVWcCPTz1kmm7Xd/CNu7dDLWhw/uIe9X/3ewLK+GNz86FkB1mo8F2C2qqMTYY5Yt8h7LU8sV3fpXbTOfquGwTMCW7LKEU//gM/ciQCr157Tfzbj/7mUGsaGMvyubx647mnhpLzqKJSSXn9zm0Shm2ke680DDVV1ja9Cf4JRD50uLtWiiXMKEPFfF6cO3E60jV/UOHN3R1+4dqlh5sARogLKR9jqSQYC8ooNpkxVCBH5GBpgWOFADCqjJGzVDUcB0fAKDpWczyOgxnoAIaLoKvr/h7hXEICKdR/o8tARs8wCxdoSKulChn7rJRhQErg3a5BRirluC6NOtIIDm5SCimEiO3ANjREB35HcHn5jDe85aEHF+qCvHjxVewnowjG2g1wQsBUA7WDMRvniPKBuGMkBRckC5v9JNM995unKGmg9/uAub61cqdn5vzA9aIbTAQCujZzstNsGoY8d+L0xBgp4DCzurUxtlFYCgxSgiPbcUbWUzFVmYJyGsn+EFLujWDMCaG4XCxSgifm57iPepc6sc07wmt5tMPTzfbttRTOnjgt33z+6YETA3eCl69cnKzF2+e3A3Sxu7aNr966Hvp+RyiV6IhyVgYz5InFpYHzEtXPG2oCTyAtOzB4K4wx7QZQ1Xdpo2kjpxkuCzSquRhFOZZpqu/75r+D56dne6oPGbZ/8Bf/hf75pz429PCgRnYxX1TPnDkf2VkAgnOu3LwB0duB9QN2j+lqTZfICoycfmEQAoZhiEqhRGHjfebs+dgCdYDlA/b3AxToAiFETeN1+ue9AHpkMBZ63xs0Xv13jQBknq9uro/FWROc2I7rIiHg56SfcUdgoANY1/31sQQGZQH7oYr20U0aTSgharY2MxYftzTwG7ZPhZBQSmLHdUm783qG7rByH30fjJWHIpgGremoFQggDxy273rT2w+90Wq35PMXXwnuyHw9O1gQTOgkUkVLJYHlIdVD8qTTPfdb/lHTQO/3A7/163dvoe36ToBfXsxNR3ifjAyZjHx39+n2IxuXFtQXAThjHZtfxKVCcWJQgu/P+s7WuF80OZTnACfwqEWHQ+BRqVAikM0xKQ84fyGzsFwoTc6g9+jeICByv351VulmgRkGMumAJn/QA1nA4yzH9wAAIABJREFU99ZX2cbO1qCm4/53YbuOunjtylBrmpCjrweUUnVqaTkxO8GecV/lrNxQ4xrxyRdSScCcuJ7Ht+u7DOiim2NWizCOOQJH0de+78vY2555U0/x7U5bfOR3f4tevHE1ku6B4aVULKGnTp2LbL1euHY5cNZZl9mjWkWTtK9HMoFaiG8EauXu+uKLc/Nsdqrm+72gDe1mUzx/8eXuxgQBy5QyRTDpBiHt1Y1HpmGkatcKOibdfvQQ4JzzjZ2tyL7raSIAwWRcO3/TnIJE+z7KAazr/vqdijE1XAN9TSGfR6V8MbHIXr+QT0A7rpCiTdfFXrsd63C72Sq8c3gDy1DmOjgjEMJw2Xm4Dt/95nfAIe8hLlCHwWna8qXLr4XeiIH6FCFMoNh1NzsYTUZ2sFSKC85D4zbM4tR0z0ejFwcN9H6PCil07fZNtNPYHWYKI3s3C/THkQ0mrKBsfXeFOordJOwY9XsPEYAzVqlYksfnF1P5/qY3FQqy0tjYG6sxgqwtcAIHD05Lb3Lg/MOL+QKbFOYfKA+SMyxVyOUnxWDYzZiBg5/reZD1m+Jq89e1wRh/+zNvYktzC75emPQsYDhPuZ4rX716iQ4TgPKg/i85mukMIXT2+Elf8xJVI/hGYUww1DKdaBanhwd6JSRSMFvYaTbFdmOH2Y6D3BGvRx/VenlUznve+k7xlV/wpT2/98Cy9lO/8vPoQIbh0GoQSnmtVEZnT5wZ+qwHGcCvXbsSSCdCsCoXSxiy5/WjEYgDAbDV5UwLFXIFkrcscf7U2djOU5C4cPnmdbq+V85q/6wK+wJQvJuGMfTvLA6MtMzxQsD1PLFrj345o6broiyy/ozXasnWaPo5gDlEAbTbLf0B9TtfRzmBM2TU9TscaAd1sGrlKp6UejtBsImxLXD60KbnYrfVirGbPdFdCmB+qNh71h0xcNl/+zNvBmqXQ/hIqfhWfRtdvnktku/Wfi1MQoAqeqyzg6FmYWwH9V6LWNM9+/9px0EDfbD3K7euoV274V+hOFuO6F4ZCSQZCyTL+j4QCeYpCwHj+hMnT09kRkar0+Jbu7uR7NUpT+PA7hVSynYcPCrUWhCYkLNyBOptjvsDhvGcmcOTMFZgFMKQMdhycavdRkLKkZlegzH5nre9k0yVq750hizgu+srbHNn21f7cWvU5m154cplEoYm9iAWsEcRQiAxvG8gOLQ5uXgMpVEzG+wUOcvq1p7Uz+sIwPqHIHKlEHKajthp7LKG46AwdWPHEdeluUXxQ9/6PT3vve1OR/3oz/1E5BntFJzA1Ro+c+zEUPdtLoW6dP2qb/0g0BqCmyChQz8agTgR6GaZl6uwZ6AnT52Nlaq/zdvqEy893/0dWIYpEMZKO3/jnF0t+xEE+K5dZ67njTIwCth/4mQYHWVwxln3ng5gXfc3xJQPom4c9PcQXcb9CmNUzlSndfZv3ECD/L314bVbqul5eJiI7YDqSs47h+c4a06YR/QBurE3nX+mp8FOSinura/Q2yv3AsIwoDlEmyNE97KD5T5ddLSdpCZNdTod35fJYbXUdM/BEcznciiumoTwrbl86xpqOHZwxSJ+Y6KphzPmAEZZ0yfitZa2OEKJmJuaodPVqbRVSat/dX9jLbF9J61BHuhX2U0H8wzWVu2FjWmavJQvjr1XBajXLcPMwPKIR4W9eu6ISyE9z6OtTryMQvGMAiFKCPriz/5bgQzKXHD1ytVLk/SN6cIP2c8Xrl7GUTj7wHmEED7SYQUO4mNz8yRNxoCcZaE0+49r3UclF2pBwzwCI0WjaYudep3ZTRtNquEXEht+/Pt/uCe899ZXxM985JeGctL2mzcK577aLD6xuBzattbpdMRlnzW9ISMS9rdKuTz2e3lUvxUtJzwCsN7yVo4Vc3kxPzNL+9XZDt/D629KJfnNe3fZvfUVZBiGNCiVpmHqdR4FuFrGQASAeXJrZ5sAY8RoPkp6rTaBYFD9TB4CPR3Auu5vyIVwhMEUIuoPUtiG7CGx12ATLxWKrJDTEYNJgN7qdETTc7uXs8QejLkUnD3aZ5Yyv3o5hCil4pkz52m5WOoJlZRS3bh3G69urscG5evZwYRjjNmo1w7uxFhfen8SNN1zuOUYJw30vkZAKXb55jVkN51wSkb51ggGS0U5/EzJylowUKbAGU6ZnGWJM8snYzEyDqdZMm9DoOlm9/IMpCeT80CdpVEwGDBGRaVYGdv1CZmDpXwBG8wY18XHlVKs3ekIt+3RUck+7zcZBGP0Fe99f6C56mYBr62wzd3JyQKG+9zFG1cQUPpF8UBtRaXUkU50YEman56jhVx6jAFgYzGZoSzLGttvVhTzuS8DHMJKIbj/q4MO4UnZjy3TVN//Ld+N52ozj8H68Rf/RvyHP/n92NYRpVQuzsyTY/OLoaYUaj5fv3vLl6OLMSamq1OxjSXUAPRLY43APnukaZjy6TPnQgc6+AEJ9rtPXXgRMUKFZZp6nfsBTbeJDAGwMyeYsBWZ3sAG1G63qNfSzt/IQB0xQY86gGW73R6aMmjEMIhO3UGG6xHLqIGDsa6tE93y6CFJtTmXTdelQkJJrmQfyAxIMvMz1Oh6/KaARun8yTOsVumfOQV8ZZdvXEVb9Z1Q3QZ6ac9JAnXkIEsTQ2GqA/WJA8lKqXGcDmBN9zz8pFJCRM7KxXq5ASvfa9cv49Trco7YPjn87D6QsJepNXHZSlHhN0pyupSZS8towgPsRMOxqe02R2nqItEVnDPtjGdighFvqlwdu+8RBDjC769SKOE0KGsjWUBHC1FCSum2PBpFBmgC+vrqImdZ6kve897A65Fzrl65NjlZwJduXI2UzcWPAxgTwmerNVYuFn3NZVyNIHCdEKgLnKejdgeLCxO/cqWU3WDmDu/IumOreqNOG00HjXrgSL/xA8PFh77og+ytTz17qEmHC/7RP/199smXn/cLXah2jFK5NLdAFmf91TQ/2EnDsfntlXsDHcBdR1ylOq77XCjc9UvxI0Aw5oVcgRVyOXX2+CkMDGZxPfCdh7rDv/8Xf4K0zToulLXcXgiAzWx1cz3wmTQDaPJ2h2PXc2O1KWZgnFqFIxA46ADWdX+jWCpHZwEPjKSNQoUoZJiGyWuV6sADZhR9TaAMxQUXjuuxYeszhcYOI6GkJEJASbDDT2YcEX2yzwgh/MzySTaIWgaisl6+8lriWY37Wcug50hkB2MkeedwHejQ6+qxtYRRtVwR87VZqoNJhkM1n8sjyIKJ8wHqwIvXr2C3lW5NkyyxEMSJ9yHZGHGkULb2XJ0BHPn0Y4LFVKmKFmfnJv7y1eFcbOxsTSIO3bpLWXfQTVdrka//NAWCYZIQiivF0rg5iCCNnrV5h7teiveKGCcXzpHvfednB/5WSCXF3bUVurWbQDBojOMfJBruO9fv3ETb9d1BTX3/vctsRChHSh15LoHs21qlSqbKFd+y42wIjq+8ldOOryFA7jqECWbtTlvuNhqobjcIMAQlylI2hP5+Xv3cd7xbfvnnf/GhDMV2uy1/4bd+ldxZjbiMVA+FoJzV8fklPD8z50fdh2226jtyZf3/Z+/NYyTJzjuxd8WRd+VVR9/3XJyL5FDDYzhDihydpAwYWB+Q/zG8NgwIXsAwYAP7hw1Yu5J3rV0duytLoqSVRFELHdSC0uq0VpSlpbSiliJHnOnpo7q6u6rrviszI493GF9UZU91TVVlRGScmRGDQfdMvuN7v/fixXvf8ftWB0ZWThSLKS26K2TTwn4hQAmR5eIErk5UFKQH8Kvdw+1AMEgpX0DXzl9mX/vW36Bf+Z3fQLVKTUxXamm+6yAAT9t8AgHOOV/f3oyXzmbwHPGe4LjVSo2/g6Ea7RKPDcAQDm5ZLdeXq9GGx/3oTs1hmJDIJvDmLWbzDHLqpI9/CMA7JqRELatF40CztJ+LTr1/gHE0RBySEhToF6bP0TP1wZ6zXAj1rVtv46iibcAjHWj4IDoYVClgBI2dZzpGgvc49ZPGJKV79m/fgJZgHWmMsTDoKoUQ6uacP/njPKMwhobH2Bq9Y/498LzGIqoISr9rFy4DTUREEsSr26X11XgJFJo0Sna6XQyG4NC6dNERIVgVc0U4tLioFd+iYPyFvI+FbD5pCpsTQQUadTi3WZ22ncfLzzNc3GbyTH2Kf+T5lz3NXY9z9c4IRwFLJdX80iO8vrXp67SB8RcjZ05pxXxB1CbKsdIhZQwTckP6ism4NialFIQQ2u52xNbONgVj8F6zkWg4zk7OiH/wg3//iTWrkEL/8Cd+BIXlnA/nwQvTZ3HtGCrqE8CVKxtrZGP7ZFp7QrDMZXIkyMjLRE98KnzgCIDOK5/JkayZUc9eue77GRdSwVVKZXX5zHn7TNDpdsR/+Nuv41//o68QeKcyhiln6pN01JwYA5+4tAPHCLSsFrBlJOmCJCDIo9FseTpHOwYmLZgIBB4bgNO8vz7O12mG3gQoU8FANSi60ke0Rr4pMPwqJXHTskg3hFyrTgBVCIKQ+bEfgTjkqwZHCoQwKLSO/bienZxWF2bOOTpUtjtt8c1bb/tq4HSC8dEy/THt2/OQxJjEIyoWw11XvC8XtLcxYlASkHq5iicKJS9NpHVOQCAMGuh+1z3es+mg47JfjfyiGEOD98jP6TEDpJTIqUqdlGISKRX5HCglNvd2KBivxvGBsyFQ1DZbzdhdyMHRLp/JU43FTjTXSwWUkaZmAOV6kpQ1x44T1gxGiPYg2rfTAcpW13gkscJTl66iZ65c9yQ6RAEvrCzTrTBSwniS0HslKaVcXF0mkIvO74dQKpFCjt6ZTCbDZ6r1WG0Wdl5gTUOGbjgag9/4jXB7CtYdxpi2u22xtbNjG4Th3yQ9uq6rH/6h/+0JPcJuY0/98M/+c0e6Bb/GCgqBK+cuIifGKqUQX1pbZtt7u8d2D87CpmHiQi4XK2cMv7BK20kOAhplfKI4QS6dOUvyWf/SA1DKRH2igi/MnH1iX+90u+KPvvZVCnTQ8FBKBCGUTFXreLJcTZ2BkrN0kiAp32nsMqsdLVueU6AgwIBLIRuNZvpdcAraiJcDA7BI8/76O8unRgH721UgrZmGCbQasbrIBTLQ4BvlCinatCwcJwUnUDxzzvGx0QIJMUTUy1V+7cJlZ2tUKbHTaqh37t5yVj74dWH30I8OJgQLMAbbdGsRRIXtrweBh6X2AtlTuudgF08YNND9EXR6XfnuvTskLE/4o8jZ31GE5SD6wWARD6f12Eb/7m9UAykgw0Ep+b1kMxl+ceZcrL5DUaPabLfkbiNRXtS+QqYQ4pBnsdFsxGpdwPkka2aYoSebCQj2VqCDhWjAJD9g+EVIEZs6vNcdKSrWQfMCVI/PX3+aXTpzflDRE3/vcS7fuXd7pAyBEJW5srFGF1eXPeNyWkVCnOsKdU0X56amnVcIROL3Nwr7GCUUZUyTRXG/CmmYkXZjMxHAaR1j0mxbYmd3h+61Gghy3cf5MXRd/YMf/O9xbaLyWMw7D+7xn/utL4b+LQaL87WLV9Agx2kwAC8sP2KQn/n9dyasGGMiTd8W51U3PrLB2auYy+N6pcbPT8348k5B7uypap2cnZw5FshOtyu/8tU/JH/yH//88e+Qjk1KycqlCTFdm6TFXH58JiEdaSAIKITk5vYWSYoDplRSNpotMsosQYFM9Ag3ij9c+C94t9uJ3aE98ZifFAUcc2UqUMeU8iUCXrPp4xkB4FamrbaFrU7HcyMBVhSc945952PjvDDgPSkVivzZKzccHyilVJCrAc/Oz8Vyr8OwXyBMEAZ7C4EIDxYm9aJUJ0eED1qHKd3zIIT8+T1MGui+xECrdPPebQrU9ekzxggkJH1F3GfoyrkLEI0UdzFDlU9IIVc3N0bKMOMBQC6kxI1mI3KmksOyZ8yMbTz1MJ7YVIHIE0PTYyOPS0GkQooIIbjVabNxZeQAo8Yrz71Ep6o1l/C9V3w/CniJ+pkj17MwPlSEHK1bu9v4/qP5QO40+/l/iUAKOWqfsX0qWx+G5nsTB4xLOGOaGIzB6RM4AkIqabs0N1tNsbW3yxrNBlDVB96xmw50Xed/783PsxduPLtfTSn5h1/76hPGIzftDVsWXp4bl66hYr5wYlOgyH+wuACOQO8rQwlR5dLEyKRtGBbPtH70CIBj0EShSJ67emPobwOlRJ2pT+OZ2unp37q9rvr1P/wK/ou//ev3vyOUSp0xNF2fIvVKFWFQuqVPioAHBIB1JSEGVbXXbA4d5OMBorRKjBHALxj/2TFJQGMscUJEG5AL2DGtUtjDhQ9sbaKafhG9AA+0xQoRuOSA4TeWHwaMhOCCKhVfg44TI3QukxUv3HjW1U0evOVBAfRodcnL7IZaBwzCSiGgiOYYY9tzPUjvdfAq5rzn2KAOYGCc0j2HuijAq4QQYRqmq3U/pIzS6rQVGIEj289i7jQ1JL771VMDqy8wxrUR2McrpQlWd57nLa5D8V0uuICsbq6PVUTjcSACE4eQUjWaTTIsG4dfk6RpGk9qzlxCiMpncjiJFNYHNM+k3e2gdqeDhRR+TWki22GMqdc/9CouDBm50+315M25O4l3NlFK8p1GA88+DM6hFe4bhBCpHFJAQ/nLZ71HaIe1MCEvqsZSB/ew8IZ+lFI2Gxr8vdkEg/AOazSbCPa3qJ9Pfvhj8vs/+Rl7T+j2evxLv/dl9s7srcjEIhijpy5fRydR5iql1Oz8/WPT85RLpXRtRzZzaccnIVApTcjLZ86T0xwbBqEHeX3PTc7gqWp9UFH7d4jM/OWv/Ab6+tvfPLY8sIoopdhkpSonq3WSdIYYR6CkhXxDQCqlVjfWYm8rAb1d07IQsEylT4rAYQRSA3CQ6+EEpW5c6R4hX04uk8Xwb5CwjGrbnV5PtCyLyhgbVyGtLu/1TpzfWKzNA0P6aevE0HX5wWdecK3IAZ6quYWHGBTOiXkw5pDzDRwVCcZ27uAAjMGy1+s5xjOle45u9WTNTKDOAMeMTLTaLXXz3h1XDgJ+IRSLPcmvwZzUTtyN3HGXL+j5GbJ9jTF17cLl9Fx1LI6Kb+/tsbhFBw055cNUV3vNBo7DhR1yVgMj0DCDCbsufC8IxqqQy5MERvvZebra7TYFmuf02UcAjCLf+9p3IjZkPmqIAp5fXqQn5c9MCN6iYTXVrXt3Az2PAbMPQtiVs+Gls+cQwfHeLmB/0DUNp0wc0a12MAiDPyvoSvaaDbGzt8v2mk3UjWDPOzd9RvxP//V/Z6/zHu+pH/uln8abO9vRgWPnLqXq6cvXMdz1jj6g0L99fxYdZmUiBKt8No9NI2WXiXTi0s7fhwAEdACLzFSlLi6dPe/pmwX6Jkj/4NaBFhwpf/rXfwn93Z2bJ84M6L2Buj6XyfKZ+hQrF0vpLKYIDESgx3tiY3vL1floYKMBFGi2WpBjKICW0yaTjkBqAA5wBk+KZIQLCIKcKQ6plQIU8YmmwWO+XCxhRj19o8MSM1b9wGG8JwRvWS0We5pUjLkUnJ0aXRJ1JJpDQwMo1D/83EueFOowZ+/O3UXbezuxWktOhQkoOlj1TnEM6MuW0j07naVgykVBAw0jAYVN02qhW/eDVTqefEtDjqkIg0E+wFYd7nkBSuCsaQeOOc4aGq9SYESbqU2RYaPXRhm1drfDt3Z30oPnwSTve223gJYj0mmHO8FEoeTpnBWF4ARjTijFxWw+CCe5oIZkR6J0eU+0O22aKmveDzMY8j/3xmd9wb/b68qbc3fjbaU8YaSgO7DalnxnNnhGFkoZBBs6fvdhrzg7OZ2IiHtgL2KUqoyZSb85vrxVwzUCEe1KIdBNqL1WQ2wfUEb3Qvj+Gbqh/s8f+l/tdQ5Rg//wJ39kuMH4VBt0HE9fuYHNIylD4Gxw896dx71gQnjWNGkauOET8GkzviMABtxKcQJ94PrTtjOXmwfqXjl3EVVLZTfVHpcFJ5Mf/5WfQ7cfzA6sTykVlFIyXa1joIdOdeEDIRvbAi2rJXebjVifI1uWhcL4ho7tIkj4wFMDcNATmKAoYMaoqJYqsfdoCXrKHLYPSVNF07JYkhQ2nPdOHV7fuOgQg8iKwaHw1Rc+5Ll/MIJ/++67tpI10c+B8QgTLAkm+ODxNKRe7+S1kdI9e4I0kEoR0EDb4wAj8F6rie48mA1faRa1Y0ogM3nQaELGNhaR2AHMcz6b4+enz4T/zgQwlqCaBDqtlQTQaQU1/pPahfPJad/lMOQpFyfCZpzwNCw4owDdcyGbT8gdRkmhJGq3O6TT7aA0F9PJ057NZOSbH33dF2VbkqOAu7wrb969Q7gI3jHEgwFYTFfrNDFRiJDCBmOIsiSE+LK0PO1baaX3IwD5rSH1UU9wudvYU7t7e3Sv1QiExlLXdfU//zf/A66UymhlY1382C/9q9h8P0C2Zy7fwLr2HmU5eGXcvHfHtqLZ3zxNUxOFYnq+TF+k2CIAjuvZTIZeP38Zu42wvX7hCnJb5ygQ3V4P/dgv/TR6sLTgCCNI2SOlZLWJCp+q1dlJdOyOGksLjR4CCvGd5i47Lg97TAarrHb72DQBMZEvFSMGCKQG4IAn4eQo4P0cnwF377h5TDDPZ3LsOMoZx42MQUGFlBRSqZbVoknzrAEDjhD85ItCxJFo8K5AMkyl1MDbOBiAP/KBlyFHledVB3RP37r1Dgav31F4DpgFlH0txFjABdoNPicpmlO65/itjghooG0Q9nPP7eHZ+fuhf7sgR6ZSQISePlEgAFRZoHNyExUUhZxx6hP2zqvnL6Ek5iENGUe1trWJwzBshDyuobtrtS3U7UZDB0wIloVsgVAa+nbvCjeQEyhds0bG+4HQVY+eC4PljvV4j1udNkvaHcLzqIesWClNiE9+6FXfFmGn2xXv3r/rW3tDDs9RdSGFujl7B4OzQNAPfLcwoRwp5diwBErzernCcpls0OL52j6MFfI/Dksv7qtQaWNPICClhPssBQeI3cYe2t3bI+CMeiqbmUMMDV3nf++7foA9f/0Z9I2bb/F/8/v/1vGad9jFUMVMw5DPXHmKsINvMOdc3n5wz/7OUUplpTQBfgxD9ZFWThEIGgFgiDg3OSOunr/o6P2CNX3j4lVUyhd8Ea3VttT/9Qv/Aq9srLlqD+jYDU2XM/VJWitXXdVNC48mAkohubmzRWKqO5btDjiVRnNnHM0ZH81RpQbgMOb1pAifiA1uR4cO+RXcGIzCgC4ufSgEBnuJm5ZFwJssaQ8YBznvgfL+RNGTEv17cPFRLz31HNY1faipsNqW+OattxOlCHI84PeigwU5yBt84kURI8l7nBxeHynds2OkQy24TwMN/zi6R/kuG3jn7zR20b2FB+EKELPvpV/AJsmwnSRZ/Zofr+0QQnm9XGYQWZI+AxHgu8091rSsgQXHsIBqd9q43Qne8HMUW6CXzJlZdjgCKY7458wsinPkITiOguNMu9PBbYj2PeUcHkd8o5bpwsxZ/sFnnvftvCGllA+XH5Gdxl7UQ3PUPxi6bt2/i4DSL4wHjL8YIVd4g9NppTRB/VLYhzHOw32AA4mhD3efDFvmce0PDMKEENrudsTO3g7ZbTRwo9X0vK9+6iOfUJ/96OviK3/6B+yv3vpPsYIVdDcZw5TPXH2KAn0uOK+AAy7c5culUkpTG6vZSoU5CQH4PuTMLH35mecGrlkwut64eAUXsnlfAd1u7Kof/cJPYS/p3yi1v4l0slZHk+VqmkPe15lJXmPgSBC3czzYKTqdDk2Nv8lbT1FInBqAQ0D9pCjgELp23IWu67xcKLm68DluPNkFuUKKNi0LJ3lTVUgJwXm8DZ0uDDyMUvnc1adJNpMZanUpoPJo7EBOnZFe+/3oaoTt8GCB0ZHoYIw573GmlLRppYATrV6u4olCaSh808rBIBAVDXR/NGAE3trdxvcX5+O9pwQDv7+tYsSRcqds9VcA560l4SzjfDTBljR0Q1w5dyF9PxzC3Ov1+PrO1kh/hx1CcUwxJTu9LrKsdqgRruAUmDEy1DRM76IHXBPo+YwhHQEDElFAkFZPcG61Ido3eY6jAeHiqllgnnjmynVy4+IVV/UGFQbj0a37s4nYn2/fn0V7zcagIfn2O6FUIoVc7zXlYkmVi8nJGX4YsAMKeWUaZvoN8m0lhdAQMAMJCRdX2u62xdbODgVjMPzr9AEHk7//n/8g+fkvf4ncX5x3Wi20cphgkTWz6tkrN1jTaomHSwu0mC+mDguhzUDakR8IUELRc1dvoOrEyU6xkJv9qUvXcFBMEmubG/Iff+EniNVpexoSvItIIVrIF/hMbZJNFIqe2kkrJRcBqaRa3ViPG+0C7/Z62Gq3E3GmTe7sj47kqQE4rLk8LgrYhcErSDHhg1bMFaipG0F2k7S2gaqNNttWJJEXvoKFkRBcUDDuxfVxa1iglIqnL12jRR/oYaRUfHVrHc8tPBibDydEkSqlGCFAFU0o5BCWQtoRwKVCUUyWazRlA4jr27IvV1Q00H1UwAt/fWcTzy89cq0o9IwsRuC8AEwG4fXpWdjBFROZVzcm55bB6EZXggLd2dQZPKyDUnQjCL9n+PYsu6RnC1/K6HoE724uuGo2m6EaKAzDFDkzE7uzEVAK5jM5HBUTxkkrAeYJIUUgBxcY7f2gKY1u1UXfM6OUv/jUc+z89BlfhYEo4AdLj8huM75RwLAnzi08QFu7O76OfVBjhHh73XPZLJ+q1ELdnwaNxc3vcC/CmOCsaab3HzfAxaospOmSiGBCrLbFt3Z3GNBFt6zWiVKahqn+j//xf8H/+7/6pygMinUvcAHFeiGXI/VynYAzSHq29IJiWidKBODMVsoX0UtPPXus8UzXNNv4C5T8AT5yYXVJ/aOf/XE6bAQnULADNft0bZLUKzVEh0hJF+B406Z9RqDX42JjZ9PbIclnWQ6a41wI1Gy1Env2CgaWtNVGN8uVAAAgAElEQVTTEEgNwCGtD/BiPlZpfRI9dEhyQTdAJTNZqYXYY5y7wqC8oeAdZrU7SKGTKZPjPIojstn0zwPljXItQv5fFx7nQMdy9fwlVvWJXlNIKReWF8ni2vJAmEatQJ/6G/L8nZs8gzJmoIfvUYMvkvFgjLjG9MhooPuDBiPwysYaHcf3xpeJT6AxNZFGa18my1kjEElUKhQVeIc7q5GWAgSAJndzZzuRKTbCmkGFEBdSoEajEdraYoyKYq4YG2UHOAsSTFAhlycQURKLByP7fieE4Fanw7q9NP+WX/PCmCZefeFlWpuo+NXk43asTlvcfnAvJovoyeFBlMn80iO8vrXp+7hPVQrZ+X+JHeXktmNDN/jZyanQ9ia38jktD4YK0zAwo4kfitMhj3I5uN4D8xWG6Nlt2yDcQFb7vQhAjWnoh/6r/1b981/5mcF6koCQAh0hwljuC4ARwgoy+/blwVIqO4XXuakzSNO09+hH8SEl1WOFFeitsJ1oAMPRav/P/cf+i12pnznYTvmt1HtFAhpi2myKANIoQ688/9L7WFtM3ZBPXb5GwmBzEVKIuUcP1f/9r3/alw2eUMqVlKxervDJap0FFb2cLp94INC0WnKv2YhLEIIQUqhGMzX+xmN1JEeK1AAc5lwdo+yNgzLVNExeyhd8+RCGCWcQfUF+lVbbonJUcnRhxKUQzFEUQlRUpB6MIOANe+nMeTZVrfu2DECDNzt/H69vbfjWZhIagj1I03Q5U61TMKzrmp7uBQmYuKhpoPsQCSnkyvoaWVpfCQ81D3tGeMI57ykO33/n0h7ojzASyoNy2G0/SS0P+auunr+EU29wlzOIkWw0mwSiddLnNAQwXPhRo9kYOoLBCc5gDJkoxIPWlWDMwVGtkM0z0FrH4LGZgtrdtmp3ugTmJX38RYAxpj71ysdxbsh0L8dJpaSS95fmyW6I9MpO0IHo5MXVZQJ55sJ+4L0ihMAV2LWCkzEmL0yfcV0v7DE67Q/yiuvxpJd3OoS03BEElFJ2Wi/4381mS2zt7bBur6PeeOUT6Ct/+geOPipOjbX2u4TBkmvnXoL3ShFMFCZEUQL/TRElFM6KdsS5/e9+uYO/H/wJZTGBNvjyxhrbbezZ7e3bcuFPaP/Jv9u/2v2Cuffg7wcBH/1v534b+2bmAxkVIdQ2QsPdBGQ53I6dQOrgu3vQv/3fB73bbdhCHTImH/5OP464PMForRDuG6tPM1rvD9zD/pS+DNEjAOvh/NQZdPX8RVsYeJcgAv+ZS9coY+Gpnrjg/N25O+hf/Nov+top3P9Mw5AztSl6GtV19DORSuAJATtt4C7zSiHuqc8TKmGMFBcS7s2unfX8lCNtKzkIYEI4UkBcwGRqAA5x3o5T9vZzc0ZFaUkIlqV8ieiaFiIS8eoKnCZ7nPOWZTGgDhq1hzvIPeaWgjlqjODQeH76DDk7OeO7KO/M3kI7jfjSwvk9YFCwzVQnsU35vJ//F7wz0wOF30AH0F7UNND9IdkKy7XwFJZJNJwGMP3RNTkiBni/AaSUiMlKnaZ5obwhy4UQa1sb6bdnAHyw/0kpFXihO3Lu8zYdfQUdKhcnhmjBn6oYE6EzpvLZnK8KO4/SQdpJaXUs2umm0b4eMXRc7Qc+9V37xoUAnrhFAT9mVVmNho0IE8oxQp7eMUh9cPHMuWAmKoC5H9Qk3DN1pinDMNJv0iCwEvo7GITRwXp/69bbvhlr4R7t956llBIPlx7RVttKFNpHDc5HjdW2ifqosfrAcP1E3SeMz2AoB+M6gTmDcGl1YKzGfaN730LeN3S/Z+/um60PtqpDRms3Bus0ytrbMoQo34+99GEE6QczZhY9e+laJJT7vV6Pf/P2t9HPf/nXPH3vThs93AWBhn6qWsf1SjV1JPK2VGJXSykkN3e2SM+BXj1o4aUC42/LTt2XPikCxyGwb/BVjFKiMropDMNgkO4VHKlTA3DYa+YYmt0oldngrVSbqIzMhc3ldCouuGhaFgP+/FF7wKgLSkIhxODLa0QK/WEcIGbqk/LSmQu+e5sD9dpbt9/BhymiRm1t9McDHsnT1ToGCqz+A3MClyBdM4jfF9hRxTGKcYE3uMbgH9/vLp6GA+/No5UlvLq57qm+60oR7Vmu5TytQpS0+74OJG0MEMiYprh05vzg720K14kIQB7g9ELreIGAERiLgM+vE8WSHYEU1QOOqqZuQm64KO8qEDnGQGkINM9cgN0gfYJGAPICfu9r3xnYvEMU8NziPAFa2KgfKSXf2t3G9x/NR/YNAZ3AMHSwV85diBpGX/uHczYhkBc4Q9P7kK/QxqQxxdudDl5aW6HViQqKczCEVBLNPnyA0m9P8EunH7XtX5T1QTQ2RFanUdbo+RvPyMtnzstnLl+PVIHR6XbEX771n9C/+f1/G8g3lxAslFS0VCxxSAtUzBeCX7xpD4EiAMws0d9RldprtnDQDsCBApk27jsChw2+pmYI0zSZoRsIcpUffVIDsO/wn97gscbeiJTAkPsza2ZpPpsLGYWou1OSS6lalkV7fLSVOEKA88dg76AonRC8robaRIVfv3glkMNjp9eVb916m4yiY8BhvKcqNWQax+f8BaVragT2ujrDqRcXGuj+aJVS6uEy5K0LnkY9aawFx66IpBqxkyp3gK8lKIwunTmPgDYyfTwioJTY2tul7W7HYwPjVw3Ody2rBSw2gQwezgH5bJ5EmQ8TcqqB13IUD+SmBoytdpt0el1H5+ko5BzVPvPZnPzMq68F6n1gddr89oN7gdwlnM6LUpLvNBp49uFcIIpop3JQyuAY58ngbtN7Tp85VtnktP+4lgNnWXBAgciJ9BkZBESn21GPVpbtd1/XNFErV2I7wfAdenfu7siAnw7EPwT8jbJ+jzo8qChriAL+L7/7B9B0bdI/EDy2BKn//viv/oz+7p/9sccWnFVjlEqguZ6pTRGICk4dipzhFqdSEOiwurHu6Xzk4zhUo9nEo8hY6iNGY9EUJphjhCmkazB0XZiGyUAH5eS+nhqAo1gix+VajUChCmwqlVJlJC9rx02rQkhIJXHLski314ti5kPtU0F6AM4jVWoMHPAQ676YL/Dnrj4V1PhU02rJt26/E9vL4EBsTykAyoxysYTzmdOdP+Dwr2k6jjL6Z5hxjkPduNBA97EGj8SHSwtoY2crePgxkonNBTXE3hc8sA56SLr8DobotAjkpC+XJuhkuRr1xdCpyLEt1+60+dbeblDf9diOe1jBwAgcxLkWIuBymSyLKhdmIZuLgj7PpgXtcYj2bbOgjOvDzvk41J+sVPnHXnol0P0AlHpzj+ZxI7r846JhNdWte3cDHeeg9WJHvRFqU8YNKnvc75A7eKY2SQxd91I9EXUyhom0MU6ZlYhJciIkRqrX68mF5SU75B0eQogo5vI0G0C+cSciDSrDBZd3HswF6gwzSIb09xQBtwjAGVLt05AKjWlUZ5q9h+pMR2+88jH0yQ+96rZJ38t3uh35u3/2x+SP/+r/873tow1SSm086pWamKpUacbMBN5n2oE/CAAD0MbOlqfzkT8SINRstdCoByf5hdWotQN7KcbYZqMBg2/G2I/w9cIEmRqAI1gdcYm21BgTlVJ5JA1cR6YVqNto07Lw2OTrwkgKzp3nBsAIUiGHqrweNoIva2bEi089F9j6hdxA27s76N370Spl/N6i9i+5BVpySEVjG4GZvp8jOH1ihUDcaKD74IBCZe7RQ7S1ux0sXhGxZ/gxqGH3Pz9kSNvwBwHIo379wuVQv5/+SB6/VsAYsxK9h3X8gBkgERzg2u028vuMC/cV07Dpl0PFBJzUCpkchoiJsB5wEkVIEavdtu8KQLmZPtEicOXcBfHCjWcDO+f3R9e0WuLu/P3A+zmKJrxfVtuS78zefmyIigrxYfL/gszgCDVZqTJwShzVx84LrGnI0I30QpTgSe6Jnny0vEyOUmjCd2eqWsNxjM6z2ha/v7gQ3gcxwfObih4tAphgCXHEhFChM/t5HPFayhVQq2MhziUq5HK8kMuTz7/+Jrl45lykQnd6XfWbf/S7+M+/8VehyLGfuxrjbCZr00NXShOh9Jt24h0BCAzaazYi+/a3LCswtifvqKQ1g0LgscEXoYMI3wwzDR0dTtvote/UAOwVuWHrHY0CDjmaBnjCC5ksG3HPI/Dip822hdudsaMUlJz3nH+kQl5/9uszZPSeruvqQ8+8EKjSXUopVjbXyP1H84H2M+x24rQ+vPc5M4OqpbLrSyR4GaVGYKdIh1eOUipM3QhdcTlohOBTf29+Dm3v7Q4qOtTvcXGoGmoQSawcxTcjhjhRSuR0bYoUc/kYSpc8kcB5ZG17EwWd1zZ5yDiSWLY7beL3eVfXdJ7P5lyfGRxJfKQQOMbAOaOQLRAaitMZBqMvBbociPYNIoraCw5pnf2IvOeu3qBXz18KHA47CnjhIW5YrcD7OtxBl3flzbt3SBzyehJKh2JUgftFrTTBCiP+LQSlHCUUZUyTxdFQGOoCTmBnQgr1aHkJHxdFhTGG1GioVMjH7k61tbcrltdWYidXApdAKrLPCMCeCPpWuI+DgwyljBzNOwlG4ayRIUD/bLXbamtvR0wUSva5EihLP/zci/K7P/6Gc72lz2OA5nq9HvqV3/1N9Nff/tsAWj+5SdDjUELIVLWO65Wap4i+UAUex84U4juNXWZ12uGPHiPVstoY1mf6jC4CBwZf2APx4Qhf2FP9flIDsN+IOmwvDrmA4SMDvOGj92ChkKRWu4PanTYanAF3xBDAmEvBmZvk8KEbUXwwHjBK1SsfeDnwBSylkg+W5sny+mqiFwpcbA3dUFOVmmdFrq7rCBQf6RMvBOJGA30YnTsP76Hdxl5wgPmwlwQn3MktY2ynkwx8/wp0bAmOwPYLl1w2yy9Mn/W8p/olx+i0oyAXJmu1rdEZUogjgShWUBK0rJZvH2pGqSjmi761dxIcBGNOKMXFbN6muAryAZwwQsTqtlGn00nzaQUJtse2GWP8g888z87Upzy24K5ay7L4nfm50PZyMETdnL2DOzHJeU6GPNvDPbJcKOKJYskd8AksDY4qGBOcMU2c3omSM4FSSvVoZQmfRusPX55auRI3qm++vL7GAmdVSs5UppJGjADolJRSFIyXOtMoRPmeFCQAhg0w/GbNjP19bXc7YmlthU5W6o8jgzXGeMY06fe/9hl849LVyEYHuVV/9jd+GX3r9juhywAsGlJKVp0o86lqfeSdqUIHeIgOlUJyc2eTRJASRlqdDul2u0NIn1aNIwKwhwILgFKKGLrBgdIZInzDSLmUGoCjXBHH5QIOSR5d13n5wPMqpC5D66bT7YpW26LyIK9LaB3HpSOMFO/1nGvPEmtAwejVFz4UCupgTL87P4c2tkPIaxrQiDRNkzPVSTKsYhU+TJQGrgsOCIXRazauNNB9pMHKeefBPbTXaowe+MOMKKH77uEhh+44NAzeAdWF6LQgvDMDEjcRzXZ7Xb6xsx2aISYRoLgQUiHEueC42Wz68qEGWsyJQsn5mdKFrP2iGBOgClRBRhof7FeISyHb7Tbt9FKFioepCq2Kxpj82EuvkHJIBkWIAr638BA3Q4gChjvFrft3EVD6xeHZz/9LBFJoqD2jkMvzerkyVnt3xjR9oeSLwzoYZRmUUurRyjLuOtj3dU0TtXJlqHfBTyyVUmJhZYlGmKfcz+GkbSUQAXB6QfCdQBhTyoTGGHOaexKMxKVc4fH71OE9sbi6rIq5AjuaXgTY/Z66dE18/2uftvNbRvGA3uLHv/hz9jc6qodSqnRNlzO1SVqvVKMSI+33EAIrG2u2535Yj0JKdjpd4ndqn7DkT/t5EoEnDb66bfCFPc7Q9dChSg3AoUP+XodHlacYI6GGvHw5GQ4m2P4QR/VhdSKj2zKQ/6zHOW9ZFgPvrbF9MBJSSCqlcAxB2Lko7UMkssPfhqJ6AYXFK8+9FJoxEj76b8/eQnvN5Bmy4CA5Xa1joNnx40mNwH6g6F8bcaWB7o8Qcinevj+LglKs2nsYsvOYx0Zhc9rsQh65Yfc//1bPEC2NcQQweGrXJirgqT0EgGnVExBQS+urgRocxwB5zqVAjUbDl49+pRTcOicES0MzSIC5Q7lSCuidhdVt05RePBmrH6KJ3vzY68gMUQnctFr87vx9X96Z01CG81Cc7hJ+GYBNM8PP1OqB4xenFXxAe4pHSacSJ3z9kAXu70urKxB56Kg5oJ8v5vM0wG+SIzn6hcB4Dc4pTozXrhpOC6cInIIAOJjD2YlQcNDTKOiQ3AYAwEG+mC88wR4HObjnlxYJpBepHJOSzM4drGnke1/7NH7h+jORzBFEev7YL/00ur84H0n//U4ppTa99mSlqiYrdWIa0RjFIwUhBp2Dg+Dqxnpo99J9NqcuttqdoXTlMYBubEUAXR+crUHfp2m6yJomhftMFAbfo5OQGoCjXpZHooDDoIUEb/56uRraJhYwxIoLLpqWxY7L5xJw37FsnnM4K4TnoRQVCGDUfPHGs6FeuoGy7a1b72Cnl8iosDna73S1jvxUToDCgzHmm0E5LjglWY4400ADrmDxvDV3B6fUrpDdA3Ok1GgoSbFteB+V84TjLUDXNHn1/KX0YuYYMecFwet5Y3ub9Hia78g5aseUxMBsbBuBh2LEIQSrQq6Ig8rJm8tkgzLyKSEl5EWmSTuzDTXvI1IZFCc/8KnvCnU0YGi5O38/sHMKGKLmFh6grd2dUMc1qDNMKMcIDX0m0TVdnJuaToQj3iBM3PwOkR2QlihzQHHqpm5aNngEltZWIO+oq45AVzZVrQFDo6t6QRV+d+5uqNFnQY0jbTfeCECQEDhTg+FRY/APe0zT7FZyTLDKGhkM9M+HH9ClPVhcsF8sSEd4Eo2+oevy/PRZ+bnXP8tK+YLb7ocub3Xa6p/8wr/ES+srQ7c1bANgTEIIEWDZmKlNsnFItTAsZn7W7/V6fGNna+gzkkOZOOjywbbhsHxaLAYIgG4cYyKlFFTXdZE1TGoYRlD326FGnBqAh4Jv+MrHRAEDc3GgSsWMmRHFXD7hFzQluZSqZVk0Aj7+4Sc+oBaUUlwI7uqDEYbTwRPD9cn4QSmVz165QfLZXEBoHt9sp9uR37z1NuzwofbrpTO4uNYmKpB3xUv1U+vYRmDKMOR9SZ9oEcAYcY3pjumYopIWLn3vzt3FkJs9kMenvSUQ2Q41OkrUyaM0FqfzDorBc1MzGAxX6eM/Ahghsdts0EYIVKz+Sx+/FhVSqtFoeM5zCwrBfCZHNab5PrhCNu83hTp4QLIu73Gr3WZcwH+mTxIRMAxDfc/HPxW69aXRavLZhQe+H2whgmR+6RFe39qM3XSAQ63ywZELjKAXZs6GPmexABRjATl2smaGnJQLMxZyjpkQy+urnqjWIfoxl82SYi4fqE7OyXRA7uJb92fH871yAlBaxjMCsM4hwhT0RRrTJKPUzuc77GPn/dUNDEaQo22Bo9Xco4fgXMEh7Ucuc7oeD6KOv/vjn0KvPPfisGK5rr/T3FM/+oWfwnHKvw2sb5RSMl2dxJOVquuobNcgpBVQs92Se41G4N8CbKfwEajRag3/EqbzFjgCwBYipaT7Eb4GNXXTjvCNi+PYSQCkBuDAl4aDDo7mAg4wNzAhRE4UiiQIRY6DkQ5dBCgRpJK4ZVmk20ujQw4DCoZczjkkE3eHc4hGEz/ppuEAdOPiVTpRKLob75ClFUKy2WrIv7vzbqw/zvCul/JFuLwOOeKTq4NH4kEkcHoxDQxlZw3HnQa6PwouuHp37g4OIqfJOBojna2OYEuFlb4i2FE4ax32vEK+IM/Wp2K9/zsbTXxL9TgX69ubCXdUjBW+qtFsYi8GUVDSZc2Mr/nYwImikM35xiICUeNKKWx1OrjT7aSRUrFaet6EKeUL4lMf+Xjoe0AQUcBSSrm4ukwgh1wcH0oZDHvoczwovS6fPR/HIYYmE2AAeS39MKKEJvQIdgS6kLXNdVCkDzU6yL/pNNfpUB2dUrnT7Yp7Cw9C3wuDGk/abrQI9KmdQW+gAbUzY8hvhpejeX8PjxicEucWHtrfG8aorE3UBhrWDN0Qk+Wq+twbn2WTlVqoAK5vbcp//IWfIHFjMINUREDRXZso88nqJMtnU6fkIBaGUojvNnaZFVTwQl9ojKQQEu5q6V4fxET60OZ7Bl8NKJ0JOLkArXPcDb5Hh54agH1YDMM2EabSGrx8axOVoS95w47ZQ32ukKJNywrEcOBBnthVUUgJwbnrj0aoynvI/+tThDuhlF89d5FBhGvYj5SKb+5uoTsP7sXSCACHwnw2R8qF0sBD9dDY2dRnDC7Irtfe0H2nDTyBQNxpoPvC9nhP3rx3JxiK1yTkpU2CjC7erTDPMC7ECqQoHPKvX7icelwHgu6TjULkjkt3thCkSnYXzVYLeaHWzpimzBiZoc8TQJVKCMbFbGHoKDlwCMUI0R5E+3Y6zMu4kj2boy39TH1KfMfzL0dyrvQzChj44FY21uji6nIsJ2w//y/1JS0FtHVx5ixKI2CRTfun609Sn8ZyAYygUGBgWt/cxH7k2QYqx9pEOZJ9qD81e80GX1hZiqW+YQSXz8gNCe5oCCOFEcYQHKBr+/l8gzJaQLvFHOT9Pf7IaKdCePTQxhmcAcvFCewmMOkzr76GPvHyR0KbJ9hPltZW5D/62Z+gQorQ+nXTEej3Dd2QM7VJWiuHrxd1I2vSykLgz+b2JgmacVQqKRvNFnEdyJU0QBMk73sGXyYhujdjmMQwdETw0NfhSFFIDcCRwn+o88NRmAFFZIKhL5fJ0YTRFtrUJGD4TXN4nbJYMRKCC6qUS1rigNbasZL63BchWFycOU+na5ORvMWg1FlcW6bzy4uR9H9Sp5gQntENVC9Xw7ssghGYUKVpWnh9xgr16IUBj95+vp7opRksQafXke/eu0u8RKSd2noCjKuhOt0MnorhSyQA8+EHiRChREyWa7RcLPnRXNrGaQgoJTb3dmgQTAHjDnzLslC313UFg6ZpvJDND/V9JxhzoPKDdoZRPILhFyFFrHYbd3pdlIR0HK7ATgvbCNy4eEU9e/VGJA7LsKbuzt9Hw0Z8SCn51s42vr84H6kB6bQlBXcp+Lr5sexAmX92csqVMt+PfuPYBji7aIwp0zCH2jfjOLY4ywTGmo2tLbzb2PNFTFAAl/IFmjFNX9rz0Ihc3VwnG9tbHqqmVcYVgX6U74HBF1NI2UV92eZPhZTYeX+zWNdOTxkCBuC+oSubyblKTWhoOi8Vivhzr3+Wnp8+E8oUg85vbnEe/dNf/JfBgzjEiCglAsz8U9U6rperNh1t+gyPALC3BGmY3U/V08SQBzR9okOAEsKllIwyJk3DVBkDaJ2NkXNqTA3A0a2xJ3p+XwRNAApVuEVXJyoJiVzBQilJrU5n6At4TKY4aDEU5z33ipIA1lnQA+23D+8M5GE8NxXO4e+4cUFenvuL8zhOtG66romZ6lToB1S4bIC3p6bpqbIjrJfgSD9JoYEGseH9tTptefPebeq3Aj/0vOZu5ttnRxg3XQdadlTHdQg00zDF5bPnQ99bA523GDfearfkTgg5l2IMQVCiKdt42u04bp9SSCnhnVEEYyJ0TVP5TNbb+QAjoHgmXAjR7rRpmgLG8dQlsiAllD9//Wl2KUI64d3GrphbXPC83ysl+U6jgWcfznluI4zJI5T6x8xEiJiq1ihQIKePfc7lGBOcNU2aRkUHvyIggmprZ4fs7O362hmlRIFBxddGHTamlOKLq8tst9lwWCMtNq4IgNOJUgqS+HKdMQZRvmHuO7DfmbpOBrHFgCHtwdLCY+c9cByarLh/v8Ch8KMvfEh95tXXQnk3hRD81oNZ9JO/+gVv59gQFyYGxy6FaLFQ5DPVOiuFnC4vxKEG3pVUUq1urAe5xuwUPUK6DOIKfOSj3wEETSGlIPW5MnVDZgyTGobhOyV+3JBMDcBxmpGAFagaY6JSipbGZhDcfUN4u9sVrbZFg/S2GSRLYn7HiEshmN9GFD/HD7l/EfDPKOUrZ8JkdVJcPXchUuUKeGvduT+LNne3/YTMU1uMUTVdncTUH2d+1zLA4R8uG3pqBHaNnV8VkkIDvT9eJa1OW928d8ffvT7gb+kwc+VnHvRh5EjrukPAprY8c87O7Zc+4SAgpLQjX8Lpbdx6UbLd6ZK2w5xWoKCbKJQ8KUAgIsTQDAzfJg+PzQLU7rYVyBtX+j0P40qrnIIAY0y88tyLdKpajwwnqSS683AOtTvOHSUOCSsaVlPdunc39opi4uN9AZRp9YlKmovwyKqF/dM0DN9ynkf2UsS4Y6WU2N7doVu7O75LCXfbfDZLC7m8p2/gMAKBUfvB4gLxuA8N03VaN+YIAJsUsDpjhBFjmmCUsijzVVPKRCmXH6iTg2jH+aVF3GcAAxaKUr5EDd1wjbjGGM9mMuRzn3yTXLtwyXV9txV6vR7/1p130Bd+61dj/23vj41SKiHP80xtkkBUcJhOAW7xjWN5mPONna3A5hvy1AsRT2rxOM7HMDK9Z/AlYPAVwNACEb7gTDJOT2oAjuts+xyZCQu+kMmxCClsBiKtkEI9znnLsljqBTMQricKcN5zV+GgdNJzN5ZLE/zpS9cC+yg7BRUcFb59913UaDWdVvG9HBgopquTaBDtju8dH2nQ9ngnBBuaPl5f06CBddA+xohrTI/0AuhAzKNFRKPdQrfu3fF1vSR9b/OAY7RVfD6zRDuYJ3uH81O5UCBT1cnUGBnixMCZcHVzI6X4DQ5z0ev1UNNqOdp7y8UJTznjIO0MXLBdPopLISHaN6UBd4ncCBTXGJOvffA7SDFfiHQ0u809Pvdo3tUdw2Y3aVvyndnb/jq2BYIEtlMbQKSQH81DBFqlNEFLEc+bH2MJog3TMH6yIEYAACAASURBVMBBNoimx7pNMP7uNfbw+vZWoGe0eqWKwjawgX7hzoM5lDo/jfUSfzz4PrUzUP1qbD+XbxyMF+DkUszmIcfwwIlSSqlHq0v4MJOLYRi8XJhw9a093JGu6+q5qzfE937iOwPXgXS6Xf4f/+4b+Eu/92VfvpsDAfOpAKGUKylZrVIT05UazWY8OWX6JE1ymmm2W2qv0QjE+adpWYhz8HNNnyAQAP0NRogSjJGhGyJjmAwifMOgww9iPH61mRqA/ULSr3YORS75TWM5Wal5Ut74NbRT2lFccNG0LMZTDxhXcIOiQUohhRDeDiFhKe0Disgr5PL8A9ee9nxgdAX2gMJcCPWtW29jt7n1/JIB3u/YRKdhJAkmStd0OkyuP7+wGad2kkQD3Z8XoDhrWk106/6sf+8yOCIgRPxmHRh2Lfn9XR9WHl/rB7TP+yqjh8YYperahcs43cs8gDdUFcW39/bYsHk4hxJhxCsrhLgQHDWazVP3XkKwzGcLxM2lGbQl+WzejVMaV0oxcAS1Oul9YMSX3qnDI5ig73nt06EbW44KBcaX2w/uobYLuvQu78qbd++QfnRTnOcRvmmY+GcAhrGWCkVZLU0MtgLEGZiAZMMYS51pyjAMb3f2gORKcrNwf2i0mnhtcyNwTA1d59WJsn/3FAfAg7Hs3bm7gRgfHHSfFokBAn06X0oZ1xizDZxxuo+ALjJnDs7724cSotqX1lbJ0TQkU9XJocYF+g9D08n3ffI78XNXnwp05jrdjviTv/4L+pU//cNA+wmqcaC8zRimnKlP0kqpHFQ3yW9XIb7T2PX9HgoOzla7g8AJN338QwAT0P1hW/ds6LpN6QwOyBABnz7vIZAagGO8GvykijR0g08UirFa/QopKaRULcuivdT7xfNKBOWdZ6rsEBT2fq7joyBlDEO+9PTzsVE0tDtt8c1bb4fq9Q9el+VCCeezOc9rKIiKcCEAY5euGSROF5Ugxhq3NpNFA72Pnq3EaTbQ7Yf3YvWd8n1uQ9hzfZd5jBuE3KcQ+ZtGNEWzCNrdDt/a3RntPSEaaA/3yiG6CIzAJ50l4VKdM7PMafQanEsK2ZxDylMlhZKo3e4QiPYFxUj6jDcClBD0uTfejAUIO41dfn9xwdEeJKRQN2fvuMqvHeUgMaHgKOdobE7lzGWzfKpS87VNp30nodxBqhygxE8dZIecMLg3WJaFljfWQllv4AhVyhdJmGx6Pd6Tdx/ej42eY8gpS6s7QAD2CEh9AboTTWOKUUYg0jeOj5331zBoRjcdOylIpcTK+io97NwJkXrFbJ5lvKUKeQIaMPxcOnNBfu71z7AgdWOdbkf+uz//E/JHX/tqHKfGkUwQSU4IJZDjfNJmONAc1RuXQgohubm9SXy2Uyir3X4iAn5c8PR7nDbrJAaDL0KGZoiMaTKgkg+bqcPvcQXdXmoADhphL+0fVhD7oCyG3ArFXJEaejxohxRCQiqBW1abHKb/8ALVuNexozd4z9upMLToXySRQoFcXjRNUx9+9kXHh87A14tSYqfVUO/cveVtTlwKuP9uF2gpX3RZM7zikP9P14w0ei4kyOEwZJNAJ9DbTSnJdxp7aHb+vn/vD0YcKX8VnF6nMkhnGK8y+VrPh/OKr/L40Fg2k+EXZ875tx59kGmcmoDol+WNtfh840cVfAxM2xKMwAT+PPpArrmMkaHmgBzYQAELFIDFbJ4OoAIEBSfr8R63Om2I+h1VZNNxeUAga5ryzY+9Eci9wa044BRx68EsGkRFDu/Nrft3Ucuy3HYRWXmIAlIK+bq/As3e2cmpwKMxIwPNp47BSSZjmDgO9K0+DSncZsD422mjpbXVUM9nlBIFxpKwBtu0Wvzh0qNQxxjW2NJ+3kMAzk5KKQpRrEDtDAYMJ3TKUWOoUcYLubyr9QmOGyuba+zot1LTmKiWqr58OyAIgVGKv+cTn0YffOb5wGDq9Lrqy//vv8N/9jd/GVgfYTRMCOFSSlYuTYjp2iQt5vJhdJuIPlY21rwHWr1vhEq2O13b2TV93CPQN/hCTVPX93P4GmDwTR0X3KCZGoDdoJXQsnDJqJeroR1WT4GJS6Voq23hdOPzYTFhJAXnQHHqrbEwDMABGwRAefGRD7wch7X9eA6kVHx9exPPzs/5cog9aXLBWxIiPWulcOmovCw2MAJrTHeUG8ZL+2mdJxFIIg10fwRSSr7d2EVzCw9cXShPfE8wBhtSPPaIMPbcqF+GERvjlfMXkZHm7ItyVam1rU2cBDrVKEHyq2+FlGo0m1gck44FmIRymeyJ+zLBmIMxo5grnFgGHECVkqTd6dhRktLr+dWvAaftxBKBammCv/ahV305Aww7QGCy2dzdFQ+XTo8Cvn1/Fu01G8N2F2p9SiHo39/zEWNMXpg+EwvjfahgeuwMUvdoWqq8dAmfaHfbanFlJfQ9AhTQ+WyWFUIykGzsbKnVjfV43GFcTlJa/GQEwCEYAQU/wphSJjRGGUT5Jokxzc77m8tjSNng5gED8NrWBmu0mk9Ugyi+2kTN15zG4JA0Xa2rz7/xJqtOBEN1DKnfvvR7X0Z/9dY33MAQ27KUUqkzhqbrUwTynsMqHddHKunb/gv3n16vi612x90LM67gIwT7oTiIIMKGpgvTNBlQOuvpmWmoVZEagIeCL8DKfSWqDwa0TCYritlcoMaoAUjYVCZNy8Ju8igFiO6oNC0573n+iIB3nN8X/yiA/eiLH46i21P7lFKKhZUl+mh1KRDZ7DxSuq6mK/Uo32tXY4P1pmupEdgVaEMUTiINdH+48P5s7G6jh4vz/qxvH76jQ0xFWjWBCIA3dLVUZrVyJYHSj5TIfLfZYE2rNVKDivlgFORU5Eeichlj/CTjLuQRNZimTjAQC7gD9ESPt9sd1uVpzquYz3/k4p2fnuEfevbF0I07Jw0caMnfnZtFoOg9+oAT7r2FB2h7dydy3NwIsJ//l0IOIV9xBqPApTPnxldj7GYS9hWcEpSZhm54vs+77DLhxZXs9npqYXnJn/uBRzSALjVopiUwlC2vr7LtvV2PUqbV4oQAOA8opRihRGpUIxDlm2QGgEI25zXyjq9vbbDdIw5TwDSTy+RpELTN8L377Ec/iT4WkM4QnCZ/7su/ir757rfjtOSGkoVSaq/XyUpVTlbrBJyVxu3p9Xp8Y2fLjzMShztV07L8aGtkp6Fv8FVKEUPXeeYgwtdp+qGRBcbngaUGYJ8BDaS5ISJq4CI2USjiiELjbToTq9NBh/M8BILRuDWKEZdCsOOo+uIChe3diDDQZgR2qQWvww8++0Isuf7Ba2xu4SFe3Vz3fUrAw36mNkUIuEsm7NF1HVES6b09YYi5FzfJNND90YIRGCLp55cfDb1/xIV6eVScbk5dkSNibNc0Jq+dvzz02nP/9qY1jiIANMHr275cwFNwXSDQbLVQ75Cxdv8+UXrfoQMYPkzdxEeVQ+DtjhAi7U7bdv6M83nVBSxp0YARgO/k05ev4acuXQ24J1fNq62dbflwZfGJwyuc8+eXHuH1rU1XjcWhMCFEIIQDOYxfPns+UZFsUc8HnNnhXgT565IUARgFbj3eE2D89cx+5pPQpq7zykSwDFxKKfFw+RFNEq28T/COTDOYYIFsamfG7eRMQO3sMmI2bmDYeX91gw1hEBQb21t0p/F+xwZg9quXa4Eot8CgVC6U8OffeJOemZwOBNaf+NWfQzfv3Qmk7agaBScljDHJZbJ8pj7FysVSVKKE3m/Taqm9ZmPY9cjBQaDRaqXG3yMzeLC2bFuBrukczkAQ4RuXtKWhL7iQOkwNwCEB7akbHxSpjFJZnaiEqsTsK7nb3Y5stdveKYo9gTYelYCSrNfrDfdBAgNtQLl5w5oFOCg+f/2Z9ykew+p/UD9wQX137i7a3vMvMoASyD80iZOc4B48uZLs9Tpo3uPwO3huwgUtDrJ4lQGMwCsba3RxbdlrE+/Vi8N+N4Qz1/AAhNhCHLAeYriwx56ZnMZBeKEPIdbYVoXv6PLG2tiOP8qBg+L5cNRjpfR+Cr1cJovgwm4/4PMnFQYq/1anzY6LmIxyPGnf8UeAUcpffOo5dn76TOyEvTl3B3V7+xHskDR7cXWZQH64JD6E0kDugOAocm5qBjMaiG05iVA7khkcFTEmOGOaOHWSPR4yLrh8tLxExDF56h2B7GMhQogsFQqBRsUBTdvs/H3cO8LG4eMw0qZ8RgCiWBHCBBw5NKZJBqZfluir+BMIHeTWFYWsu7y/hxuBNjZ3tvDWMawZ8F5NFCZIkBSvlBD0iQ9+BH3qlY/7PPsIQbqaf/bL/w+6t/DQ97bj0CCkGKOUkulqHQM9NNCWj+qjFOK7jV02VBAbRlIKKfeazdEFysUCOGzw1TRNZA2TQg5fo3+HdNFWWtQ7AqkB2Dt24dX0aAgGDy2gYwPlTFgPZKOFaA2gOEi9/QNCHSOhpCRCiCENwNh36q8jp8Rg20cIgYPD05evk7By8XiZUXgPvn33XeQXheVUtf6estWLQDGpkxqBg5+IJNNA99EBJevS+gpZXl8dDrAYGF9BMaAUGnmtaJIjnUH2fDYnz03NjPw8DfdChVdbISU3d7ZJ3/ASXs9pTwghZbXbdr5eeDdK+SImZN+nFBSc+Uyun4vJTvUCjp/tbocel0M4RTNFwAkCjGni1edfpjGk35eQjxPSuzx2Tlv1wTnNCSgBlCEBMfGAAn+mNgn0fQFIPR5NZkzTK7XqyAIkpFCPlpcxGFji8oAT+lQ1mGhFGGPfiTwu403lOB6BPrUzGMc0ptkGXzAyjuKzn/e3ABbuoYa329yT61ubx4KUMTOilC8GegfTNQ105ORzr79Jrpy7MNRYjlZudzvqn/ziv8SLCT4fDAIE0iRJKVltosKnanU2ig7TCiG5ub1JhnHAkUqJRrNBFRhIxvCBeyMYfaWUVNd0kTFNCg7DYPRNn+gQSA3A0WHvrGeMOFKIIY8RNXCBDsmTVHHBBRh+uQDWt/QJEgEhwLbq/WsStII+LMpViHK8fuFK7OlIerynvnXrHXyYTtHt+oBDd6U4gcN06HAro9vymqaNtPegWzz8LD8KNNB9PKTyJ9Im6H3v1Pnz6Mjl55oIq60D+n9IMj+chiAsgQ/1A0ataxcupftSBNif2CVGqtFs4r1WM05SjZEsSna6XTACy3wmbys34TxSyOYhyk8JKaXVaVMwEqdPisCwCDDG1Kde+Vhsz7pvz94WK+ur6P7ifKAK6mFxPL0+RoQSgQJwSAPF8GS5yrKZTLBDGOHW4ayqaxpOo2L2JxkiYRdWlnDvIPo+LlMP96x8NscKuVwgInHJ1Z37c4k7RwcCRowahfcT2E4wwpgQKvQDaudxoG8vZPO+pF1rtJp8dXP92KhIOF9OVuqhrHtd09SL15+V3/3ap6mfRvu9ZkP96C/8FN7Y3orRyg1GFHCEMTRdztQnaa1cDaaTiFoFhhev+naFlNprNEEXEpH00XQL6UXA4KtpusiaJjF13T7LjMP+GA3i7ntNDcDuMYukBnhPuM2lqmlMVIrlQC+oEJkB1AbNtsWG8ZCJBNSEdqoQ2Nr5cFQSQRsjPDosuJ0SUDRcOXeR1RNw4LDalvjmrbc9vY821VS+QIq5gluIYl1+n0qI4VGiR4oT4KNAA93HE3LtgQJobZic2kHve6dMflhOMXFZf5CmQIGKJEEPKMTrE1VaKU0kSOrxEJULKda21j19P8cDoWBHCfl8BecEOJ4zhomLuTziUnCr3WZxisgKFoW09bAQ+Pwbb4KTQVjdOe5HIYX2mk30m3/0O47rxLEgKOIw5AAOwACMCeHV0gSDPSJ9vCOAMRbgYJMxM8Pd972LEIuaoERfXFnGnW43FvIcJ8RktQaMZL7LZ3Xa4v6jJDua+A5JZA32o3xBHwPOGRR0FwHMeWQDHNAxxkSYuk6HyPv7RA+ttiWW11ePfWkIwaKYL9mRgmE8kHbCNEz6fZ/8TvzM5eu+dbmxvSV/5Od/kjTGxHkVdE4YITpZq6PJcjXxDkygd1rdWPeqx1B7zSaEvvq2nuLa0HsGXyYzZgaZmkEgwjc1+MZ1xhBKDcDxnZv3JOsrrV1QWMIFrJDNMb8+1EdhAmUQbGqttkVTWr7wFhEYETjnQ+dV9uJQ4HiUIRpZMMHi4vQ5OlOfcixeVAUhl8ROYwfdvHfH1WUejNy5TBZXihP+3y6jAuNQv7AWGWUkNQIHMxmjQAPdRwaiAB4uLeD17c1gwEpb9Q2BJBq8Dd0QV85dGMl91reJjbAh8MSWY+ZJHSHcxxz7EbbabVSbqKB2t+PZKz5GY0pFiSECmqap73vtO70q3QIdkRBCff2db+Kbs3cSvf4xsRW1ru4iToEFx86JQhGXiyWnVdJyJyGAsYBkolkzQ+LoEBH0xIEX4dLaCmp34s0uYRoGr5QmfH+ftvd2xdLaSnomDXqhndA+OGEopShlEOWrUch3Oo7vIdznNMpkfoi8v0chbnc7fHF1+cR3xtANXi76/06dtpQMXVfXzl8S3/fJzzDQnfjwqOX1VfnDP/vjdJwcJUE3C85lhXyBz9Qm2USh6AOU4TfR6/X4xs6W630dvltNy0KjmgqHEsKFlMB7IDOGqUzDsJ01xnFvDH9V+tNjagD2B8dQWnFLXzlZqQXhfcGlUrRlWbjTi683ZigTEk0ngvNeehk4hP256TPq/NSZWCqLji4RKRVf3VrHcwsPHM0hXD5Mw1CT5ZrrA0g0y9Nbr3C5gIsVY1r8Qj68DSkWtUaJBroPKDgePVhaQJs73miV9umJbd2to3fQt4kMiRXBN3l9aChJOY/BU/XCzFnk06XfB/TSJp5EQPGt3V0Ghsf0CQEBDAocBc6GGJQYXMDRX2Hw7s5n8xIiIbvdbprrN4SpGLcu8tms/Myrn4zdWRCSmN2dv082tjf58voa29rdTuzUAGVjkAwdhVye18uVkb63hDn5cD4Bh/5xc5QF4y84HcX9gajQiULRjnry8RErG2t0cye5+4yPWITSFNxZgNUZIwzvmmCUMY2l2xhQMpdyBexnRF+n1xWPVpZOvYdPVuuI4HCPAoRgqTENf88nPo1feuq5odedUko8WFpQP/rzPzWWC4lSKiFSfro2SeqVWqJyYzetltprNlzrl8H4y3l8ctUPu4ghqBApmEYmQSedMfbz+KYG32GRja5+agCODnt3PUNUJaSbcKi0NgyDT+SLfn5sYCejTcvCqQLO3dT5VhoDBZ+gSg1PJxEUPedB7kewroR2YpusVPnV85f9XOu+TdlxDUHo/MLyIllcWx7Yj6Zp4kxtKlxD1UCpgikAxm5KKdKYNhbjDQbF97dKKRWmbowUpqC5nHv0ECVKARsiM0JYa2tQP26d1ga1F9Tv4K1cypfQTK0+Uu9JUHhF1W670+FbezuJ+dZHhZOXfuFdlUpJoG8TUsge5xgUGFJKDJd8UIjCUyoUlGmYfYUIGIJVt9tLDcFeQE/rHItAvVzlH3/5lbi953Jrd0feun/XlqvHe/LOg7nQ7jl+LxVKGRCquFZsOpXDNE1+pjYZtzl0Kn5sy4HSVdf12Mrnp2Ar62uoabX8bDLQtoCue7Ja8+2dUkrxhZUlNi70sYFOzimN96mdKSUC9A/gjA66iPR5DwG/8v4exrQnuJhfenQi0H0my6yZjWQqDF2XZ+oz8vNvfJYNy2YhpOC3H9xDP/HFnxvbbyKhlCspWb1c4ZPVOstloplXp4tpn7Vxl7U77hyQWpaFkp4Sc9/gqxilRGV0UxiGwcC5iZJ0X3S6fuJeLjUAx32GjsqHEUfqdNomO3dCrkgNfy4JNv2J1ekgy+UmmDRoYy8vRor3ev5cLhyso9jjcSBgqVjiz16+nqhDFYTSzM7fx+tbGyfCDJfJ6eokHqeLCFzE4IChaVqi5jPu78oo0UAfxvru/Bza2dv1Bn+IBtkkRcJ6A/OEWi7SVvjar8vGIBrq2vlLtqErfeKLAORjWvGejym+A4tOMgGOnVIp0et1CRh9geIWHPkwJvRo5AU4E2VNk0IU8JFIkNQQHN0cjlzPl89eEC8+9WysNE1wZv/bm2/hvmJPKnDkXEpkbr/9/L/UVvAFtXg0TZPnp2bSD6rPAIOjrMYYOOEENnc+i+y6OXDwXNvcQEkzfML9FVKv5XM512M+rgJ4aMw9ehjr3Me+DDSCRvoUtZQyrrH9KF8/o1sjGFIgXULe38wBvavfHXAp5MPFhVO/ERpjojpRjfQsAPfC7/rY6+g7nv/gUBAAnfC3Z2+in/mNL47s3u0UILhzm4YhZ2pTtDpRdlot1HIKIbmxvUlcRPIqq93GSUyLedjga2qGME2TGboRSF77UCcx7exEBFIDcEIWhx1JgxBQsg38cABVR71cHcpQ2I8QbXc7stVuD51zNiEwx1dMjLkUnPmVTD6wHMAhGlX6k5XP5sTz15+J9IDodeG8M3sL7TT23lcdLiJT1ToytPHw9D4MAFyi4cCta/rAvc4r7uNUbxRpoA/P350H99Bu8/3v0KA5DjM6dWwNwDAJEXwTBs394d/B63+qUqelhOYocjPWESirVrc2bEri9HGPgEIImITgu6p6PS57vZ6dl8z+/0ox8NAnCLPjFKGwh+maDo6lwtANeoKzBNjJVLeXRgS7n520BiBACBHPXr1Br52/FBtAgPp57tFDsnbEYbPVbvH7jxYSd04FjBHCgd6ZQMF7cebsUHqI2CyAmAkCZ3pgqQVnnFFzWoPvx/rWJt5rNmKGunNxpqo13yJI3527m+hc485RC7YkvDPg7AZnG3BOgcPOuNGpu0XYdjahTOWzuUC+cVJKdX9x/tRvBOizK6UyhqjsKB9d10WtVEaff+NNOl2b9CxKp9vjX3/7G/iLv/tbgX5/PQsYckW4fxNMyFS1juuVKuj9Qpbg9O5W1lfhfjTwUUjJTqdLOt1kpMbEBHOMMCUYI7jTgUMZRPhG/Z4NBDot4BsCqQHYNyhDamhARA0otbNmBj7YQ3nednmPNy3LN4NjSOiMdDec9/wZX0AKeYgaUQoNte68DBC8yF5++vnQ+/Ui69E6ENH01u138OEcR3BBqU1UxjoXpa3gIAQbmp4ekn1YaJRSbupGtDcoH8ZxXBMQLXD7way3aIGERKgGBF3aLEKwz4qLZ86l+0wiVoPiO40Ga7WtREgbAyFtpSfI0RNc9rr7Bt++I6GdsgNjTCDL2oDod0ywzOgmYYxyDeJlTs+LJ8ESDAbm1Fgfg1WQIBEYZfzlZz7Azk5Ox0bq3eYef2f29vvOT3D2mJ1/gLq9ZCj9+oASQu3I/yABhnvM5bPng+xi7NsG44hpGJEbR/yaCDD+bm5v4eOcov3qI4x2TMPgldLE0Pct+IbemrubOlF4nDSMCVd23kpqUztDlO+gc47HrkayWhB5fw8DBelD5hYenrq+wQidy2RpPpuPBcZgMHvjlY+hT37oVc/ydLod8dW/+Rr57T/5/fTdPkARmEuVVBQYHWdqk6yYL3jG16+KoJ9ddcA4BcF53V6XtNud2M7nvtMYth1gwOCbMfYjfNP85n6tluS1kxqAEzRnYNxFfV/AEwxt8MGeKJSwx5dadTkXrbbFUqVNvBYG5IIRgg99oYBRBWaoBWViBAZgjWnqw8+9GNsP76CV1Ol15Vu33iZcCLicyIlCkUC+lbF/MBb7kcAa7ecfHHtMhgBgVGmgARIwaIAR2HW+sJAMwGFGGw+xRIKpGpDDkV/CXjl3AcFFKH2SgUC31+UbO9u+nIWSMWIXUmIskJJAF0SEkrzX7TLOBRLyvYjpPhsBIYQTTI6N9j2uR1Ac5LP7Obs0xrjmjKEjNQS7mL60KEKMMfnxlz5MysWJWMABRt5v3vo2OiGyQ27ubqPltdVEOaCSEPK4wX5xYeYsomlahcDXMUTuxC1yyu2glZJya3eXbO/uuK0au/L7ergihnkZ5ul0e+Lewv1AHTWGkS9udYHZDmGEMMKYUiY0RhlEtKXUzt5mqpjLBxoRCN/WuUcPBwoHbBL1sn+5tQd2OKCArmm8kMuTz7/+Jrl45pyn5oBd8w/+4t+TP/gPf+qp/ihXYpRKcDCdqU0RiAqO6v0Fyu6Nna1Bd03Oexw129agcqFO2WODL0IHEb4ZZho60pgWqhxpZ/FFIDUAx3duTpTsNGUyY1RWSxVXl1GgLpBCStjAkp64PIHTOVBkmG/OexgOS7F9IlTyg0fed7zwodhC40Aw1bRa8tt3b6JCrkAm8sXEGrMdjNVVkf1chBjpmkGiOgS6EjimhW0aaE2zL8Oj+oC35rtzd7HlMjqwn+4gUFxCMjQHOoZhGo9hznkwgEGURr1cHWZkad3wEVBL66vpN/IAd/A+xwhRISXk8aWQrwqcyY4+fQpEcKoCBanb7ynkysua+ywS4KhmGqabe0ZqCA7/PUlkj2Aw/OxHX0fDGk/8GLxQQswvPqLLG2snNieVRLfmZhNE04oRoSRwZ13YI87Up4iupQpHP9biaW2A4UtnmjIMI5HGQqWU2N7bpVs720FDFVr7oIubrNTcfCPfJ1uj1eTzy4uje2nzYTbgXKMgfQUhUtc0iIbHlCbyNfABDX+awISIjG5QMwTH2HsLDwYKvR8YUSJxc3IBfcqHn3tRfvfH3/D0nne6HfXb//738Ve//rWBGIxjAWCug3e7XqmJqUqVZsxMqDA0rZbaazZOu2tyCJZrtFqR79EHBl9Yh/hwhG96/gp1ySSqs9QAnKjpguhNiAKGRwHd7hOnHNgA8pksy2b2vfQHPaA4gsiplmXRrl/0woM6TX93jQDkZxO859sHZhSj0cAADIbgpD5g3G+0mijJeY+CxJ4QrHTNcK20DlKmpLXNKOXGiNJA9+dCSKHenbuD252O8+kJwXklMNYF56NMSx5BQGNMXbtwObkfjTGdUXBY3NjeshziZwAAIABJREFUJr0xPbPCeRAjxKSSstfjqMd7BIy+Jz32nQEjScDs4zEar+9AdFiZ4PSecUSufUNwtwsG6zFdwemwT0MAHBN+4FPfFQuQWlaLv3Xn5ql3L2BnWl5fY1u7yTBeAb6g4EdH9Ad+Aw6UjlPVOs0Ypt9Np+0dgwDs0YRAXuCMTfOYlAeMv3utBl7f3PRkRInrOCHHYiGbY/lszpuIGKm1zQ28vrXprf4I1wJaYKUUJPHlOiSjoCm1s1/TDdgCnoVsLnArOui9HiwtPE5JctoYTDPDJ/JF3/SgfuEFbDgZ06Tf/9pn8I1LV1032+M99aXf+238l9/6G9d1x6UC3GFA+ZfNZG166EopBHYYhfh2Y5e1O+0TYMZCSK4azWiMv/CeAiZKKWLoBgdKZ4jwjZuTxLis0SSOMzUAJ3HWbBpfeO/V+075tXLVCeUSl0rSltXGnYTlLkrodHkXGyMhuKBK+ags8zkazc4jhzB4wEdygQOl5stPPw9Uwd5xjrgmXNjP1qfRX7/9t/BSC6VQ7A66EUOEwAisaTomOJJlFvXwfel/lGmg+wBxwdXNe3ewm7x8gTrFhGBg9mVxBNlIzDCglEiglyrkUqr9IKc9iLbh+7jbatBGqxVE87FrEwy+CCk4DyjOBeSaYmDwPZUR5uB9I5RwgpzTPJ80eNgfs6b5OE8w/LdhGMN8i1NDcOxWWjwEMnRdfc8nPh0LC9Zbt99BTvKN93hP3nkwl4iDKSbUdiAJerYxIbw+UfZuAAtawBFtH+iHM4aZiChIcJ6AtC2rG+uBr8cophs2sclqDXmJSAVsFtdW2G5jLwrRY9UnpK1AGBNIBcWYJjQw/bKRXDKR427Tl4fEQgc5gOeXHuHjGGuOAgE6sqnqZOT4nCSAruvqqUvXxPe/9mk7t6qbhwuOfuG3fw194+bfuak2lmUhnzd4sk5V67heqQWWw1YhJDe2N090rpXguNRoBO4k0Z/kJw2+um3whXVm6PpYroN00MMjkBqAh8cw9BZOiibSNSbKxfJpGxKECdCmZeF210WEVOgjTDs8hIBN/+wrIjFTxg87NsgX8dy1pwkYt5L4wIfd0A1ayhfQo9VltLKxKsFHP4ljCVpm2wjM9MeK6KD7G6X2x4EGuj9fXd6T79674zxKEGNQitLjnKqGXQNp9O8Bgj47Hg0zL/lsjp+fPpNqkIYBMcK6PS7E+vZGaJfvkIdqn9OhTy646HZ7DBREwNYz6LEVpRDfB6ZZj9G+x/UBSsFcJvP4HLr/LdGZF8X2kfYhIFh2u12WRgQPmt3x+L2YL4hPf+Tjkb7bUkm+sLzEFteWHYEO0fgLy0sEWHzi/kA+RQWcAAE/QEtcKZZIqVAMuKe0+eMQgMhrLcZO0WDgtNpttLy+OrLnMNtRStdlpTThej+DPeXh4iNinRiBNtrrvk/tTCkRGtPA4otoCLnLRxvVwaMr5gqIhUShDQbgheUl7ITNBxMsSrkiNWPMKEEIFbqmke997dP4hevPDAb7SImf/NIX0Duzt13XG8cKkMJJSsmqE2U+Va2zIJy5l9dXj4UWWKj2Gk0SZFpGOD+B0wMEVmmaLrKmaVOypwbfcVztwYw5NQAHg2s4rR5SqIK3bTGbYyd8HG26FKvTQeN6mAxnQnzuBWMuBWdOFH+Oew5CCR+xQRk8wp6+dI0W8wXHMMSpICVU5LJZCrnPKqUy/+rXv8ZAOwMHHIQRQQqlxuAjEwaeb34quOO0HoKUZRxooPv4dXod2wjsxLs4SMzTtuOFAFyqrp6/iDSWXMaIeCEajTSQlzPIC3hoowIGFYXsi75QkvcODL6QW8rJ03cwgfMCxpgFwZDBgObO2M//2380TVMa0/wyJAGjkUgNwU5mfLTLTNcm+asvfDBSo5DVbotv3X7bldGm1W7x+48WIpXbycqglB3LHuakrtsyYMyvTZzqlO62ybS8QwTsvMCahgzdiN/9USkOQQiLqyuxf18cwn1iMXCeKheL2G1UIJxt7jycQ07PAcPKGYf6mGBwfse2IQ1ifBkDtsM4iDbyMgD2Wd0EOtnQxgrOf4try6TT7TrqU9d1XimWY79ngNPH+emz8vOvf5a50UvCu/7PfuVn0Oz8fUd4pIX2EQCnNl3T5UxtktYrVV9gkVKq1c314zYftddsYl/18gesrhgTKaWguq6LrGFSwzBQGHm4fQEsbSRxCKQG4MRN2b7AR6OK4JAEGx9QpDx+9hVLpN3tyFa7Hai3SkJhjL3Y3Oc8dxAhcjR39DAgxCG6jVLKr52/xCql8jBDiaQueAhnTBNDzhV4h196+nn1xd/5jcORNpDbWB3MW+wPvmGCqOt66hHsAfBxoIHe/0gi1e505M17t6mTw7pNA40U5Mbz9z07+A57mKrRqhKE85FLhMBIVitXWDWB3wqXQx314mJzd5s6VRzFEAyw7kIeXNHrdSnnAqJ93Yl5wFoArBgYEiQEpCiFSBxD15l2hHIRHO+AucSd0ANLK6mUTHMED8RpZAtcv3hZPXf1qci0/mB4eXv2FnIbzQv1ZucfIDepJ8KexP38vxT44/0945wwkGwmw6er9VD6ChvLJPQHezdETWZMkwX1ffCAg+h0O+jRyrLf3w4PooRThTEqJys1V4Z42E/enbsbjoAR9QLrE85BsDbBoYzR/5+9936SJLvvxJ7LzPLV3kz39Njd2dlZi104whIAQUI0d/e7Qv/N6aS4CN3FnRgh3emOEnmhYxCgRAI8HgEojgDFAHgiAC4WC6yZnenpmfa2utqUyWcU36yunu7qMulNVWbsxM5uvXzv+77v5TNf8/lQAraQ9AlXAxaiC9NQPpsLVfkAo7u5u01786xe1cPMxHRigv8BIee3Pvfr6JMPXrc9oA2zqf75H/w+Xt3asP1OWrClAbAFw79mJibVzMQ0yRjugxlM0+R7hweXvgdYk09qNd+CcgghQkpJWxm+Bs3oGSvDN0Z7dTq1hlgDqQN4SAY3Yxi8XChdWqwa3OSntZq/GaRDoq+4dwMcqxCBJITw9ZLkO9dlDJwbYNS/tbDEZiam4j6sl+SDsWCUCbictw4vTN67eRv9/S/eIU/Wn3WWBUdwovoXhrC6prviVwpDtji2MUow0C39K1lr1NX7jz6iKqoBiYHjM6quX2k34v0CIrNvL95wZIiLje5SQS5p4LReF4fHVV/PR0GpGHh8gXcTYB0B7o6b3OKWcrMmQWYXBLcQRIAKKyiRz+vt5P9t/wCZTRkjE9ShBJJDRKNppveXwEc4Pg1QQvgrL7zEbi0sRSKUxbu5u0WBl9CFAHK/WkGbO9vBf5QuhINXwOCIEA5tzTR0QyzMzIbWnku1DPVrYEsA+lQINI4BhK5smk2AfR2pOQEIfcVcnhVyOdtzDXjFP376JLZrie2OdBTEmHClJKOU8XaWbxjnGLfyjsJ7lBBZLpRCn2uw327t7bDTes2WmmHuFHJ5ls/a/45sVRxgIdgDZ8Yn1e9++etsxmZ26vHpifof/v2/xrsH+wFKNrxVW3ckhEgxX+DzUzNsrFR23FkIAOwMAjw5PUVeEOWeO3w1gHSGbHsMGb6pw9fx8KQv+KCB1AHsgxKjqqLtzCMEW5s3OEPA4t3kXJzWa2yUoGOiGoMg2xUCArXdmAiDlOpC3RFDP7clgc3++twCWZiZC6nj/jVTyOdRG7IRotfuLN5gtUad/9Xf/nXXSExCMCcY0zA4vPzrZbA1Ac9VGjVsX8ejBAN9phVxXDtFHy4/tGd08tNh62dd9oc4tiV9D0By0FNKiFqYncdJMh446N7IFYUIua393dCNVnYUfebwpQopxLkQTbPJLIev2/Pc2VmLECwIplbGTFhPJ//vxXazmWzQxovUERzWQMegHY0x/tbLr7O5qelIpGmaTfmz93/hek2RSqIPlx+5/84D7jVAq7b5xQNuyqqeMaaW5q6Ft1iF0akEt5HNZCKlvuCci9WtDVuIPAlWc1fRYc+emZxCQPVk5wFI+ZX1tVAzMu3I5bQMBCAAZCFAO1PKhMYoayOeOa0rLR+MBsLk/b3YA3AA7xzsMSdoG4wxOTU2ae8jCkZdrmv92me+gD7/5qdsvX9wWJH//b/7V+To5NhW+bRQdw0AUhGllMxNzmBwwENW9qBHKcQPj6vsYmb6aa2GTO4Mpem5w5dJyO7NGhkCsM5pMs+gEUh/D0MDqQM4DC0H3AYYaKbHJ5QQUh7Xa5ahKX2SrQEwIApu+n/4jzgDK6hRmZ+elTevXU/MoRAiGXVNYwD30X4IxmJxboHOT82gP/rOtxBkCnV74CJJMHDlIKmQz3C1QQ1QgPVamdSMWTDa6WNPAyMDA32mDrhowiXzo5VHAyeJn7D2fkPu2xvd+JaCb9ViOw2Z1xxjLMqFkpqfnhk4/vHVXipZh/EI7RzsISEh2DvyBxwr1vmDCy6apmmdw+1Az/eTHNYPixIPwsRsGo791oSmaTyj61e+G/imdF2noWSVYaSUTDOC/R7buNWnMSY//4lPk3KhGLposCt9sPwQHx4fuW4bzhmbuzvsoFpxXUeQLxIy2PjpZ/twV7m1cN3PKtO6PGgAzl+6pjnmo/XQ5PmrXHK5trlJRjUxAXSfMQwxXirbOoMeVCtyc3cnMTaNi3MEkKaUUoxQInSmUbib23G8+DHP0jrsawCSh7JGlhit5KEIHnAA7zMnTk6wd0+UxjHwQyftMTSdl4sl/Ltf+g16fe7aQPG39nbEP/23/5I2ze62wIEVpAXONQBIkbAmTY2N85nJmb5oDAohuVfZt1CaIKmuVq9jO2MACDZSSghxkRkjo7IGwDobiYEsT6fLaGkgdQAneLzbhyw4XEEkfq1RT3BvUtHPNYCRFJwHw9nsU0aaFdUJOIRKxeKCMj0+we8u3U7MiRAOsYVc/kpk/PTEFF+au4b+7t2fsY+ePOr7UZw5goEQXCClwrXsxOxzPYPTTuSlIGxVjh4MdEvDYJyFi+bDp48HrxNDGigT9lzr1h62tg0UalYQpVTduX4T282+iIOeUhkGaEApXjk+AsSM8FVlrQ8K/iFCSWE2TQocvn4Yt58j+xCOMWZthJDwOwlHi+78v5Ys4AAG426YhjiMlJRSNFNo6CimQ+BtQpDDNz7/66FnKSqk+M7eLn689tTzORqgWx+uLMfiXnR5wDCAxksUcvAVOIDDRCwIfJImvAEI3GGUqmwmO/gc7FNfgc5qdWsDj3pyAtz7x0tlfDHwu6uKIZBkDwJJDn0ageCrwQTsEODnpVxjGoNzQZrpFrze3bbQsgPoKB/iOtBFVrFXOaCHx1Xb3QDEP0BxKuQKMdxj7XUDgiE++9pb6muf+ULfezBQxjzbXFf/7H/7V57PJfYkG41SYA/I6Iacm5qhU+MTXTu9ubttUYjVG03SaDa7lgFof6SAurxVX9bIUMjwTe0MozGPkt7L1AGcsBGEw7tSCg5ZQmsZX6SSikyUx9BRF8z6hHUvFbelAcm56fvhxs/MtrgNVKlQ5A/u3AvtQuul/xgTmTEMonUxnAJnxcu3X2S7lQPx7b/+K1uHPoCFxggnou9e9DboXZjfjGmQCRyqc2mQXHH8fQRhoFsLq5K8elxFj56t9P1e/MrcjRLyOI7zDmQKex+ilIiZiSk6VnTOAxRXHaZytTRQbzbEQfXQ1j7pVWcKIYERokJKYZomBWM2OH19e85gnmG+gqsmLk6TfC7X05ALkL2adjU72Ded9KoodQQHruIoGgAH8O99+euhN21yrn72/rvYNUT7BYnBaLu6uUGcwFqG0WFYTzBwACsUynoJfQKH1+LMXBqYGcYAO2kDA5UAxrlMlgSNLAGZ9WtbG7YyqJx0IallNcbE9MRk329QKSWeba7Tk9ppbLtpoZMgDNMIAnaA1DfcYLDYaiYZgoENuZwvhrYXdNMKBAPvH1aw00AHoPOZnphOtJ0Hzs65bJb87he/Tu4u3ew5aYQU/OOny+hf/NG/GXkbn99flnXXwoTMTk7j6fFJ1A7MgYClrf1d2Ww2aL3x3Pn73OFLwOErMkaGQYZvim7g98ik9YWhgdQBHIaWPbQBUVrA2QOHLMY0wQigqVDg02jXyoXgNJfN4YyucyEUrhwfppARHnQe6asYcSkE8wod2LUPfnL2+lmXDwrPZXPi9RdfjvQwa7cbjGo8l810PczpmqbefOlVLKRAf/r9/4TsGpFgNQDjTmtdGOFsYCu6nSGNsUTMBbtzJohyuWz24j4SRBOxrFNKyStHh2h57ekAJzDYg5W3S2bM1snYDEiIeslmMuLmtevpehCbwfdPEMjB3dzd8faN9hDnjMcXIiwlOIg4OH0FgG0o/zpgBURgCds2AXdJRDDPvTrUj//3zMEDUGe+ByvaVjA4goW0ILcDOTPbFiQt6IcGspmM+s1f+3Ig33Mv+SCC+uHKMvYTthn4O5+srcbKYIsJ5ThkyhhCiJybmiZgJE2f+GkA7EpZIwNczYEIB3vl+vYm6pVBFUijMa8UnAilXJ5BYFWvB841j56tYDNm0K9t1MELCShptlvM51sv8YBmIRT6jgH6qR5X5W7lwNEZErhVy4UyHZhJn4Cx0XVdPbjzovhvPv9VyJvvKrEpOP/lxx+i/+VP/o9gFuoE6ClIEdvoBaViic9PTrOMYaDtvV1VazatoF9AMjB0Q2SNDIMMX2aDRzhIedO6Uw34oYHUAeyHFn2u40qWL2X9MOSFyU0LdmW82OIWUUih01pNVU+OQ71I+6yG0awOIzA0BjJufmWjhZ3BZWciGLquPnH/tUD0Zqd9J2UKuXzP7xku5J965U0kpeI//dXP2S8evu+kagtqjRCssEJiZPmBwQlMqNI0LT0s95g9owoD3VYHwIjuHR6gpxurvR2DPjgpwbkTF5h8RwvJkBSG9fDmtesILnTpM3waAEPpXuUAmy2uJk/PmcOXwgna5EKYZrPF4+uzwxeEbCMMAC8VwYTFJdu3U4G6pnGjC//vxXK5bG9DtqcBcfIywMoLKRqpI9iJ1mJXdqI0xr/49mdCPLcpsXtYUR+v2KCFcKAtcHw9eraCmmZ36EAHVflWFGAKw6ZegPVtenyCAWRn+sRXA+Cg13V/eUBhsm3sbKN6FBQN8VW1JRns97OTU325Id9//DDyXoDNCJi+MII8OSLblA9xPa9ErrAECBA97+9lJR2dnoid/V3HAboZI8PHzmzeCVB7XxEhoMLQdPLbX/wqfnDnXteyDdPkP/3lO/gPv/NNx7pKun7CkB8TLAnw2kiJX7xxG1VPjgFq3ApeCypAKox+pW2kGuilgdQBHIO5YSPLt5+U0jSbFl/sRHn8IhQBkJGTylGVNGJ0CY2BuuMrAkZCCkmlFPGV0bq9AP8dchSxF3SHGGXqk6+8EWsH8BnnCjF0vafuwEjz6t37FkfQ0cmx/Ob3vuNKz5C5g2GkRvQBXQMPRyTwlAnR+ajCQLeHB5zAO5U9srq5Hsx34oMDOSFTybGYfkFs92sYjM/jpRKZmZh2tYY67lT6QhQa4NWTY+YSKhEOWhZ4BhdCNNsOXykD60cbNpEAciIBvI5glh4/OgB7aEbXLS6/nhdIjJWhG2Ac9qNJz3UApKBIM4I96zGqChZn5/nbD14PzQEspFA/e/8X2A/u7g6dyf1qBW3ubMfjw7DgmMO3G0NmzWRpnJYKhaimVNquDQ1A0oHGmAJISxvFbRXZ3NlGp/WarbKjVgiC6LNGRo6VWkkbnQ+sSx89eRzJ4aCd5Ws5fDUNU8pwmvE2HDMUxhbOazkjE/5m0EOFp/Wa2NzddiwPBCHMTEwPFb+8oevy5rUl+btf+hqDRJHOp9FsiL/52d+RP/3+f4pkbRiOrwAhQiknCBEuBNhjZS6bk6V8geWyWQlEGWvbmxCkiwBZcrxYBtjVYel62o9UA+caSB3AEU0Gh1m+vaXESDWbTdgMBPAJ5DO5zo1B1Rp1eXh8ZIX/pk+8NQAZJ5CBEsiDreRwbweHmDo14DD4mdfeCkRtflUKTtlCLt9X/4xS8cLSbVoqFIFfUP3FD/8fvH944EoEaAicIAgjEjeHvasOOXwJLjtgmNaj4Ch0KGtUxSF7y9uCEJXk/rQLTuDNvW26sbPVtcKWwwYh5YI3zy/EBX96GsNaAt5LGGPqhaVbozy9Yzjo/ovU5FzsVfYHGpDAOWg9CBGAgW82TQYcvgE4f650EtYCMPpiTCjBsfEJDRyMQi7X18AGeywgbcTRQGKNcZoRPHCM41IAvpGXbt3F927eCUUkKaV8vLpCdiv7gbQnlUQfLj/yHTLejbAt/l/KkVKhWzLHS2UEf9In3hqAtRyiknKZDPUS0AM77PbeLnIZlBVvJfkoHdgDxktlK9i786k3G2J59enAM41f4pzbIxnjVshXf9RBv5pN6wlZA3Hg/b061+t8fXvL8b5kQanniwwg7IfpgXMQoxR/4/NfQZ+4/+rVtaHRkN/90V+T//y3/2WYuh1IXyAADe5bSimAcYYAJ1nMF1A+m6OASpLLZM/vN0ohflI7Qatbm5gLE9ZeRQix7AflQgmNFUuByJhWmmogKg2kDuCQNO8xy7evlM1mw3IZwoFyamziisFTISQAhvLwqIrrzUZIPU6bcaoBhRQXnDs+CNluByOOFAquftuC+F8QDByffOWNWHCadOsdXLAyukE1TevbeXDY3phfZDMTUxAHIH/x8fv47997x5MTw4KFbhmghRrS8e+lVMuoQQg2ND20y7T/szuYGkcdBrqtVeD43NjZIpu728EoOq01dA1QCtyDM6SUL4bedtpguBoAg/Pm3k7XRuHsCxxOEOjRtDh8OWoF2YXwnAU4tKLNcWxhnntpAjKA8tnsQG+1pmlSY9rAciFovGsTqSM4Ks07axcQSV578WW2NL/g7EU3pTFSh0dV8f7jh4Hdh5RSfHN3h/nJLeymq/AOcCYihCM5AxdyeT4zMRmYnt3qJH2vuwbAjpQxDOwmqAf24p2DPXR8cpKq14YGNKaJ6YmJK99l9fiIr21vBvbNWIGtZxgkjDHBKOvJP2qjG2mRBGgA7EBwHwJktDg9DbMp1rY2XO1NuqbzifJ4YN9JlHoCztm5yWn1e1/+OpscG78kSqPZlH/+139F/sv/97dRihirtntm9WZyKJ/NQiJIT3nhrHZ8eoJgzQUHvMlNbFECYVgkMcUEA1UPHSuWcCF7NTM7VopIhUk1YFMDqQPYpqLcFPMty3dA440zpy4mRJRyBdotohCqAL60ZrMpKkdHDKKT0yc+GoDsFM45DjJL22tGGmSwAGJiHDktATr59RcfdI2mjcMoQ2ZvLpuzdcidn55VS3MLltO33mio//Mv/y9PDuB2/88cwRDxBnlQvtQZB90OlAEjSTBRuqbTlLvosrZGHQa6rQ1wAq9vb5KtHo4k5CZbNYZQ+QO/lTALuNGpTfnyuRxfmlsYSsOATRWMTDGFlNw/PCTAt3nG48uUUtLkXJlnTt8gz1Wdigbeb4BVIOB2iZmxzcmk0HVNAi/ZoHcIpVZw26ByUf+eOoKjHoH+7YMj4tOvvkmnxycDF1RKid758D3UNM1A2zK5KR+uLA/8hgIVogX/DEgmkXyjwNV4bXom3YuDHmSf688YRl+jeWdzYF/aOzjA1eMjnyUZ3uosm10+b2Wjnd/TERJbe7t0zyXyVy9ttaGdKSVCY5oFa0ppJEvC8A5oTHuGCVZ5I4v7OcGiEh0QfFY311xPxOmJqdgmfvihU7BZff2zX0Sfff3tS9U1zab647/6c/yjd/7ej2YSU4eTrF47nbKcvycnaG3necCNyVvnwhZyk/VY/w2BdECJA7DQwA2cPqkGkqyB1AHs4+gFmeXbU0yMVKPROHfm6JrGx4rdeUVaK5rF34orR1Vca9R97H1alRcNKKAu49z1IWhg2wEa2we2HUIBSql8cOceuXiRCqFZ202AXHYvW2PFEr93865lMOGcy+//3d+QXhC1tgW4UJASC+oLIOFHxwlsHd6w1DWDpE7gy7Mmrt+Mm7nt5R2ppAI+YMhg6HxcBU0MMeKCFz1fehcyEVzAaw9q/871m0gfgLYwqI7095hrQCkOEWkYY3pYPUTV02NkmibiXKCwAxzbnNaA4EEwSVy279X1joiMoVM73H+tjLFMYs4SQkoBgQHgBEyf+GgAIPu//PZncTfuOz+llEqKJ2vP6Pb+rp/Vdq0LAstWNzcIZJdE+UTB/9vuLyAEXJ+dj9wJHqX+k9g2BDLpTFOGMTi4BwKu9g8rgDKXxK5GKjPcR2cnp8C5YMkBDgnIRDs6OfYsFyYY7H2EUsY11sryTe+/ntWaqApavL86yRmD0Vyi6BiXXD5dX3O1P0DfCrk8yw95Vqah63y8WMa/9+Wv02szc+fDBIhGf/Bnf4x++qt3oxi6wNv0ktVrRzilpDg6OVHrO5cgyK0M4Pb7YPtpQ0G3/x/cebKGIcDX4gYpw45saZlUA0FrIHUAe9RwWFm+fcRUjeZzBzCUA7gISvr7EiFrwjRNCdnAQlo0h+kTlQYwEoILqgLMyobsXaWQq0PWuVpi7EQGbpN7N+7Qctx4GlqXaJkxDNsR8IaRkW+8+PL5WD169oT/8Cc/tv2+nWncygYmAgHQSQAOGDsyRFGGEKx0zTiP6ItChji1mcJAXx4NSI1/urGKu/ICOnFWOikbpwmRcFnAATc1Ns4mxyYS3pNU/LYGwCCqkCIYE6KUVE3TlLV6nQLyTaPZRJD5y0U0Z9gWRzi2Mn2x5YtOjB904AQr5PO2+eGzF7i0BlYckwJSSN7kJksdwfEYEPh2fudLvxE4ROXx6TF/7+MPfT1P99Pgaf2UP1lbDa29q7JgRCixHEFRjDSgM92YbyEapU+yNAD3AzB+5zLZnuhJEORQqVZJpXqYrM7FRFqwIeYyGVUulqw1AvS5srZK3NC1XUxCgcALRqnKf4KrAAAgAElEQVSV6Zs+o6sBSpko5wvBJZd4VK2UUj1Zf+Z6f2CMyqmxqUj2No9dd/w6wHd//hOfQr/+yc+dvwvoRr//x3+A3vv4A8f1xeUFv7N67fQLnL/Vk2O0sbPd+W0Ik1scwK0H9sBWFvClcu2kAOAGBo7g9Ek1kDQNpA5ghyMWSZZvXxmVbDSb55tf6zCZvQQp0+912DxgETyt1xxqIi3uowYUvxBx5GO9vlXliwPZN2muVgSRYncXb8TO8A/24EKu4CjqFgwmb7/8+vmBmEuh/vDP/8T1Abmf2sHoRsGujgAZQMX2kuDn1AEnsMZ0sNr7WW1i60phoC8PHWQPrqyvov1OCDYnkM6pA9je9+BzUJGuafLO9Zvph21P+3EqJSGLCGBK4abNBVdNsylqjQYFhJuGaVqO3q7OOqwEUuHyW8LlH9B0gBeK4OGbbgAZm89mbJ0H4M4B9Ap2EU7iNOlAFssRbDYZREimT3Qa0DRN/fYXvhrIObfdK7jv/vyjX6F6iOhX0OajZyvW+hXFA2d8gJqNKtATBvTW4lIUXU/b9EkDrYynDO5c45VS4vD4iOxXDgL9bn3qRmyrgW8UEjcAtUYhhT568rj7WadLDzAmXCnL12tBO0OWb3q3je1QhyoYzKtyvhjr+QBB18trT12vH7A2jZfGsMa0UHUbVWOA8pnP5sjvfunr5PbZvgr3ov/pj/5X9PHT5ajEst1u0Fm9dgSBfQuoCjZ2rzh/IVNKCHEVjdMK8u0S4Av8wBQTWi6WceEClL8dOdIyqQai1EDqALah/Rhk+faUUinEm2bjUogfbIhTYxO2N1SFIAOVq4OjKgNIifQJUQMYcyl44FkIriBML6rBifMjRPW1myIEixvXrtO5yZkIWu/eJFzMDF1jTnlX4JDxifuvonbkrim4+Juf/JiCUyqoB7gtcEQcYUH1aVC9hm7E+mI0SH4/f09hoC9rE4y2y2sr6KAzqwFb9hnbe6ufYzS0dfnkLIdzz8LMPC7knvOpDa3OktsxAY42iyIXIXD0yobZlLVanTXMVjYvZPXafnyaO7baOwtWaBkwcOJhnnv1Gc6KGmPY0HVbakEYC40xmnQDXOoItjfcQZXKZ3PyNz77xcCiKYQSYnVjg27sbgXVhV71yv1qBW3ubAfWt34dIoTCpT6yNEC4zyzNXxuIShb2oKTtOddA1sgg7YxaA4zoR6cnaHd/z1agkPPWRusNTdPE9PgEUDOpD5Y/7nnHAGhuOEAB4ghkd2qMWjCkw4Q+MlojH0xvCcYql8nhuFPhtO7aTz0pIZfNi1KMs5w9da7Hy7qmqddfeFl+4wtfoeCcbJqm+uf/++/jZ5vrQTTnuM4osnrtCNnP+QvvgzO9GyoqJEERQnue4VJ+YDvaT8vESQOpA7jLaMQvy7f3lJFKcdNsdjqARTFXoLYNOBeqh2zgk9ppnObo0MvCzwjnA+2oF0Opz1laQfQTjJaLs9fw4ux8ENW7qpMQKgu5nGOjD6VM3r919xKf8drWBv/uj34QqBEHbpyQKWDdLVsG+qF/dF0fecNUCgPde5pDRO3h8QVeM5troeeAm6H/8p530A9dgVGskC/IxZm5QNfIERoWT11twTYjiJcG47AF29xoNlStUWdt2GaTew82xBgo84INyDiHecZkJFAjgDcwqxvESUYvY4zrmj4U317qCPb06bt+eXp8gn/uzU8FNodOazXx7sNfReKsAlSRD5cfWYtV2A+hNNKgNUKIvDY9S+LuiAh7XJLYnsULrGlI13R5WjtFW3u7gX2vSdSPF5nh7g1QvYwx8ejZk064Ua6UYgDlrlGNQJavk/3Zi1zpu8nTANzpM4ZBs3omEcHKj1dXPCkZgn9nJqYT0VdPHe14GdDbMkaG/vYXv4rv33oBbPfqf/z3/zPe3t/1s5mBdcUhq3egkC1+dVE5PsRbu7td7ZsYIc6l6J6Q1YKCBjTovrbR5/zAY4zRSI6bdlSRlkk1gFIH8NkkiHOWb795KqQU/CJe/VlhXdP52BmniLN5rjgXEleOqtQMwzHpTLihKw0OfMgADrpjYMRUQ871Ojc1K24tXI/FjgtODYDMYsz50FJK+a2FJTZZHj+fFmA4+g9/8S3kh9F80Fyz+IEJVlghoSLMHBgkp1+/Q4b2qF+mUxjo7rMJLKcfryyj6snReQFbDksvATd+TeyE1OPH3gRr1t2lWyi9cIU76G1+XnCNCiksRy9w19XrDWpl85pNJILi5w3wG2tTXgCnNMaEkSHi9rUzQ4r5vJ1i52XAyZMxMkMVNAY4cE3TZFE47Rwpf0gK37p2Xbz+0oNAzu8whsCRF1VwM6yTm7s77KBaCX20CAlEpbb7AehMsxPTNJvJ2H4nLRhvDcA5a3N3p6+QFk3CpQdO0/BPt6ezrFXmrDj4ddqvdf7dKtfh+FFnu3XrX0qpxDiG4BxbyOfF6uY6UGEIpRSlEFzFmJXlm0I7x/u7iIt0GmW8mC84Nz5F0AFYFVbWVoH72nXrsMeUC2UKqG6j+Bi6ru5evyl++4tfYxBo+8/+3b/GAHHs9xPXrF47/ZRKyYNqBe/s7/XZD7DgwgQUhp5V9oKCvvhCyg9sZ0TSMlFrYGQdwEnK8u03ScC41gu2eXJsAvg9Xc+x49MTBBA/6ROcBoTgwUeF28xa63otA+hnZKXZuJ9IwanvUs3j5XHx0s070Vo7ziTSmMazmYyrAzhEWS/OzpNr03Pn/eOC87/7+U/ZRyuPQ9Imgssm3JwTc3n2opjUCYxQCgPdfQbBZeCjlUcI9sOWuQlzyGzsZ1iy5ST2MmGH7F0vmZyEEjEzPkXHS+Uh00pcuqMAtdni54XZL6SQTbMpTztgm4fBUda+F7T2PivaOy6DEJocwCWYy9jj/70oVG7I+K/aa3jqCA5+6kH8yIPbL1AI4vH7UUry1a1Ntra94XfVjuozuSkfriyHeo9q8f9SuGS6uos46mCPwpgQPjU2zoo5Z0ElfrSd1uGrBgQgQ3Fu2Szw1v4ucgP733dHDWi/tdpsOaTbTuW2hb/T0o/BZTzg2tuq7tLV+JKTudXFLh29+EOv+wNQmOxWDgSQ+roJIPd1xNPKEqcBOLuWcoXEoNWA4xdgi70GihqGwceLY5Htc1FPFEKw1JiGv/H5r+Br07Pin/7bf0kd0el0dCApWb129A7O3/3DA7J7sN+3OJz5TW7ifnfZQVDQFxto8wOPFcs4ta/ZGam0TJgaGCkHcFKzfHtOCIyt7N9uGycYsnKZLPO46HAhJakcVQlkc6SPvxpQCHz3ZvAHlgAzZfzViLfaivmCeOXuS7FwABdyeU/RulNjE/zO9ZuX5sZOZV9856+/G3r/KMEcAeyJGl5YaDj4McZwm3fZ20xM3tstGGg9hazpMXTAy/Xhk4+xrQwiDwE3yZs5/kjczrh0U1vGyMQG+cGN/DF6h0srW0ZZewxgYTXNujqt11mzCdm8psXRG5vHx+/MylYCjidELD6tUX0gG1/XdOoUrhWC1gzdIMOou9QRHPzXAAgkb95/lS3MPA969KvVRqMh/+HD9yL/qKWScnVzg5wHkvnVwT71QGY+ELuE0FQfMwWW46UyGSuWohQjbdujBrgQwjRNyExVmsbQxs625WSiEWeYe+xW7F7PGBmUzRgoiAy+2HU2FchXDcC3mc/msM40X+sNsjKFlFrd3MB+IE7OTs6MPBe2oetyYWYef/qVN9S/+A//ZuDen+SsXjvz0nL+Vg7IbqW/87dd18B52IKChn3QdnQwIVQwRtF4sUwzI5qlbmes0jLhamCoHcDDkuXbZ0pwzk0mZHfoDEqImhybsL1I9WoHomFqjYY4PK6G7nwK93MIsTWMpOCCKA+wJ6FI66ORNWh5s5mseONeMBBydmVv86l6haLJZ3NXnNnwnX/re9+JBMbOgoXGWGKE5LDCQltOYMpcwXbbnR9xLpfCQPcfHamk+mD5Ia7V63DJhDQB0S2zJs3+dTfL3UBBw7p0Y34RpfCS9nXehm2G3DBIh2nBNtcvwTZDlk+cHy8BA+f9OjvbEEo4QYQ5uM/HWTWeZANHbjaTAS+4o3rg3KNpmgVTOaxPG6Wg7QgZhoz3uIyVxjTx2dffohPlMV9FklKi95cfoqOTY1/rdVvZaf2UP1lbDe0jAcPjGXKDW5F9ea9UKIqpsfHUfuCLNkOtREqlFDh+4VuCBxOsDE3HRyfHareyr/LZvLPNIlTxk9cYnEPu3byDVjZW4xVwlzxVjpTEFu+vbrCskSyofaWUXN/eJEAX4+UBpIlSrsCymayXaobmXQjO+dwbn1Tf/N63z30Aw5TVa2egwPm7V9kne5UDO8WhjJUBbKewHSjoznpa/MAZMVYsp8kWdpSclglUA0PnAB66LN/+wy9M/vxg3mWxEaV8gQK8qQ8Pl0rSw6MjDBxv6eNZA5JzM5SLk1uHhC9GVs9qsl+Bruvqrfuv2dq87dfqrCRs8IVc3rMMGmPqEx19kVLxn/zqHfbeww+cCeVj6TNHMEra3LCrAjCAM8rIqEJveUSMsKvmxJYDntMPHj9M98AARtDpPgUX/rFiCc9NTqeG5c7xANYGqYRCilzg5xW1Rp00Gg3L2AJZvb2CBwMYXn+rBGoKl4gUEGgAZmyCQTOhHMH87XuAtVkchLmcqxY0TRMa04b/Wzybe6kj2NU06foSo1R99TNfwH4ary3e3b0dsrL+LDYfOQQNPHq2EppjJ2r+3/ZgZ7NZPj85HZrj27+ZObI1QQQYbZom7kSYI4QIXdOAAkUtr61IxjSV0d3RHY2sdvt0nFIil+YWIQhLLK8/Hf79NJ0EvmhAY4wXc8ng/b3YYamU2NzdpvVG3bMeNI2JyfJk+s2caZJSim4uXEc//+A9UcwXgOaLgo0nl8kOfaa0C+cvaM3yqdiZiOBrIi4OWCk/sB3tpmXC0EDiHcAjkOXbbx5I02wSIGjr9eiaDkZSPy9eqt5siMpRlaUR8C4/UYy5FJy1I2pd1mL/NbcQ0B6MrPaF868kpVR96pU3PTtf3UoEzsOMYRA3vEjd2vzUK29eOaRVj4/lt77/ncgNWgALjTHpy4PqVo9RvwcHO0op1pgWuZ7D1EUKA21P25xz9f7yQ2zB4WLEkUKX99eErZv2eh1CKYf7FKz3LyzdcoLEFEInQm9CwPkPIwueH3PBJWT0ntZrl2Cbh+qs5gKVpH3pJgQL2LdItKiooU8Suw1SynguY7i6LxBKRUY3bBlP7MoT63KpI9i34YHAg3/067/pW31QUZM31c9+9YvI7gM9OiP3qxW0ubMdwtkSA6C960AZPwdD13SxODs3OmuDn8qLoC5AADF7oIAwRq0gWXDcbO1u01qzLnWmE58SDSLobbyahMDG2YlJNlYc44cnh2R7bzeEtSJeOkilcaYBi/c3X8TEPiqtswYCLA3ryPbeDj2t1zy3At2fGptC4PhMH4SAygUQsoQEIJDReQCtbffgAO8f2s78tZQDc1EIbm/ytKCgXSNHpfzAozMf49rTRDqARyzLt/fcwUg1m82+hOXw8tTYhCc+0i4CWJklkA1c8yFqK64fR5BycW4GWf3lul0YTJGbd8LrUc+WPvv625FJwcB4ms26Mp52Cg3OjVfuvIQzhnHpJy64+osffh/vH1Yi62e74VY2MBHgfUCqxRs5LA/sMZCVwpjmy3gmRS8pDLS9kWrypvzg8UMCDjfVmYmY0LXTXs8DLtXNod6lSciSmJ2cIeVCMWCBYlK9UhzIHDFCsM4qk3PZaDZa/LyQzWv9CfFMERO1DBTj7FuklAhwh6Qwz32uExYPvMac8v+2awQjZMbIxM3hNnCKeC6QOoI9q9DQdfWNz3/Ft7kDBsCPnjzGlaNDz7L5XYFUEn24/AgFHZQDax0mlHejqfC7T4PqY4yppblrvo3voPbS311pAGiqZcM0ewb3Q5AoY4y1KQJOaid8c3fHuiPlMrnU8eJK7VdfKubyfHHuGgN+1I2dLRwmb7hPXUirCVEDxVwe+ZV4EKLYVlOA1LG9v8tOaqeemwZ0n3y2QAu5vOe6kl4BoBvdvXFTcZOP1L4LyBQ7B3uubKSQlOXUWe4GCvri3GrzA08Uy9QrdWDS52wqf7gaSIQDeMSzfPvOiGazgXrn/4LFEPN8NscA8sHvRyFlZZscHlV78hD73Wbi68MILllICBFKVKcbXsWk6hiiH9968DqKiocun8shSvzxgwL80wtLt2m5WLo8HErJdz/+AP/kvXdic6izHMEEK4SwHCZHMKydMJ7AbZjUb8KN3CkMtD2t1c2G5QQWUjzPsnGYxWqvpbRUpwZy2Sy/Mb84dN/lOT8vJgQwnC1+3kYD1Rt12mi2HL1cjFY095XZbyPAAtA4WmnRBJ70A7KhAciSzmUynmCxgX9tZJ3sqSPYxizrXgQ4Yr/yqc/5cnhWSIndyoF69HQ5lvuDBU29u8MOqsEGcRJw/qIOdBLXI+TtRVgTbi1c91ZJ+nZQGoB5QpqmSTrhnjsbhD1C17SLqCvq0bMn1l0UAoDyWe/0R0F1Mkn1QsAEoNuAzC2o7aeA7pKkLqSyhqABjInI6Dr1kzohBLE7mlB852CfHZ0c+9I0JE9Mj0/Fxj7mS6ccVkIBRWByio6Xx3Ct7h1a22HzkRWHtXJ7fw+7OVthhDiXwjEyp1so6E4lwf6ZMzKinPIDRzZ/Rq3h2DqA0yxfe1OxYYOPl1KiJssTgWyIcCGQUuLqyTHyA8LDXq+TXUoICMru57b3sX8uHBLA7wrYpkqpRFlOIWPz1Rfu44yR8VGBg6uCtUpnGjIM/+APCSF8aW6BzU5OXxGg1qir//iX/3cg3/Pg3vYuAdxQZxlqXqqJ1bvgBAYHgq7psTQm+q0say5rOmUphNJg1WKk6vW6/GD5IXCptozXLtbbwQ2NUAkbzj3Qxu3FG8jQ9aQqRiqlJHDsgSUVUB2aZlPUGg3aaDRwwzQtR29oFBEJ0mJfnuizuQN7J8HENTRXgtThq6gtA37W9bmivXeMPPwexgIC4QAdwjQ5Ce2s7+tsCLeyualp/pnX3vLljCWEUD99/10c5/XT5KZ8uLIc6P2KUKqQxQ4QjwccwCMbHBKPIbgkRXsvBahngHy2+1xEpWrDt0L2HgSbU6qprJHyAdvVZa9y8J3cuX4Taay1JNYbdf50c82X9dGrbOn78dAABDkySmUSeX8valAhJPYr+/Tw+MgXxRJC5FhxjLhFsvFFiIgryRqGfO3ey2TvYB9gjSOWJpzmW87fXXxQdYv6ggUXJtDaORPYIxT0xcZgT0ZKYUj8KRc6kn+cSZWWTjUwUAOxcQCnWb4Dx+pqAYwUGAwHvUkIlqV8KdANETZx4EasHB2ykc9Q6TMgCikuOA/tIN/XYDpo4iTsdzgM37/9Igkb/qVlOM35zkU5Nzkjb1xbvGIk4pzL7/34h2Rzdzt2IwSLEQZHMIYIAouXMvHPqDmBUxho+1MWUDBq9Rr6YPkhblGxpo9nDfSBgQbn3mR5nE2NT3huJoQKrvDzNsymrNXqrHEG2wxZvenjQANdAizA8IwwJgQRjAlsPOln6ECj50UZYzxruOP/hUogcJAxjSQVitCNzvq+kzqCbav07tIt+crde57Pi1JK+ejZE7LnkPvNtqA+FQQYqNXNDRIktCvxCY3Ijy7DHWlhZg63HVp+1JnW4UkDELgPCG6ODN4Q5Ktr2qVM/Vq9xtd3tiybBiYQDK3TlA/Y09hANjWfn55lpXzBqkgpJfYOD6hTTktvUqRvx1kDsKaW80Xf7U6h9xkjtV+p+ErXkM1kRblQ8gVRJHR9eGwQbj8P7t5Duq7xSrUamq3Zo9ieXgfn79b+Lq64dv5aaKnK5OZASs1egnqFgr5YL/DAU4zpWLGMU0Q+T1MjfbmPBiJ1AKdZvp7npmo0BzuAoRVd1/lYoRTKZgDZwH7wOXjWTtwqwEgKnoCMAJtZWHFTL6WUv7B0m42XyqGJBmuYoRs0iGjDUqHI7996oes3+/GzZf43P/m7UL5nN8psw0JjhYSKCQydm36cv4OxIBgygbWR4JFMD50OZotS4qReI+AExhZwQuqBcqA9R0U1jcm71295dhQ4anRA4RZs83N+XoBtBn7eWqPO2rDNkGWTPh410HEugQs7OB0xJhTW5vRxrwEIcjJ0nXl10EDwkK67dyK770Gc38QCoTQjuI/hTLx69yV6a3HJ6yDKg+qh/PDJx7E9F1/s4Gn9lD9ZWw1E1jjx/0KfwXE4NzlNL2aPeh3s9H1XGuAKKdJsmsRNhjxjTLAOiAc48C6vPb2EapbyAbsam0svjZfHrG+m/T9Bz2vbGynSnnfVDkUNxVzhPEM86R2qHFfVfuXAt8hNcI7PTEz7Vl9S9EspFQszs3RuakYcnRxbtEHD/kgl0fbeLqocVT131eSm6zog+Ilgf6PuUn5g18ORvmhDA6E6gNMsXxsj4qiIko1m07blC7JmwjGUKUhSxJXjQ5oaPi8NqODcDDcq7YyXzO60AoOqSmjmJqGU315YYtPjk3a767kcJVTkc7lAxlTXDfnmvQddv2+ADf3Db38z9gdc4GUeFti3M4eD0jWDDEufun0AKQy082UBIvThwvXw2SOBFA5kPXAuVULf6BGABFQW16bncNgIDxcMcJbxlADEgRQtft5mA9XrDQqQzZDVO4hDL6EjEjuxCSWCIDISwThhKN8P/t8zR4/KGJnYn0vC0GmXNoC8G6ChlWly15kGEckeWLMaY/ytl19jc1MzntoAXP1/eP9dnJQ7Jzh0Hj1bseD+/X4ABhPyMf2u1219kNE4PT7B0sBCtxr0+B7c66UiAPXsFqEN7HeMAjvM5eMtBMBt7++yi9nsFp9hxn9ULI9aSNTrhm6I24tLl5QN587l1acYnB7pM5oaAN7frGHQjG4MjQKOTk/Ezv6ub/dmQrAoFcpDpSM7g13I5fmDuy9CUJna2d8b+nM4rINbe7vo0AfnL+gMMoDt6LlrGR+hoDvrb/MDjxXLV/Zf1/KmL468BgJ3AKdZvsHNMaUQb5oNWxHEcHjPZ3Msl8kGJ1CXmo9OT1CQMFehdsZLYxbVH2ct6r8QH6fZvA4dxiH2ZGBTEIF1Y26Rzk/PDizrRwEwmmYzWRwUXyo4Tz/5yptdRTUFF3/z9z+mKxurfnQl8DoowRxhTOPESea204RgcAInH3qpjwJSGGh3s+Po5Bg9fPpYIQT0e/DP+R9ICwaYaN8uue4kTMhbHVC/sNYWcnm5ODsfsP4UBEBZ/LyAaCikkE2zKU87YJsd8wQlRO1uxLSyzS78aQf9dP9/xCoLayghVBKM1fPy1m9nr53/Bb4g63/uVypW9gtAbaWPvxrwyv97UZpcNuevcMNXW+oIvjCmjDH5hTc/RYD3zO0DcLbLa0/JzsGe2yqieE/uVytoc2fb9wUNMkfO9rAo+nWlTbADTZbHaKlQjIU8oyaEEIKblv3BIb/hBUXBGUzXtK73nnqzzte2Ns9tURBITqkmUz5gbzPtpVt3OwOoxUntVK1tb9iy+3lrPX07bhqA70qjmizk8kM1/qe1Gt/c2/a1T4Zu8PHSmK91xm0+XJQH7kivvXgfAcpGvdGwAtLjLK9X2WAvAxo8v7ijEULC9CFBy08o6I7xhc0bAzdwOT1HeZ0+6fswmV4z/rH7E2EXFaZZvuHNK6kUN82m7Q2OUiony+O+Xzb791hxISSpHFdJ03QPrxCeVgNqCSMYLPfRRS7Ecsz/69RZ7EKmoF9ZnJ1H1+cWgm4G8D4Vo7rIZoKDOwTD+BsvvYJ6ceqtbm3w7/3oB7a//8CVMqABy/CPscQIyaTDQoMDQ2M6HmZnRJqt4eyLkVKq1e11VT0+Jo1mo/fL4NxE2Dp3YaQs2mxAEFbK+rv1wNp95kQ+ixg6L0+SitDgTJuXS8Pacff6TcSYb8sdl5a+lXVJ5lyKpllXp/U6azYhm9cMJDPLiw6cvjvYKdtyxl4qR7AkhIJTVgFaTAtK9MwZa01L6z8svOu2YxbksnDPYQq3wh7OYh+wpeDWhD4r3uKKhTls+ywEe62QCleqFVVvNG2/51Rfo1xe0zSe0XXPHxfGWBq6QYZ5X/RxnqSO4BY8MPqtz/060Gu4Vm315Ij/6tFHnuevawFcvggZLB8uP7oEn+uyqkuvxYn/ty3YeKmsxkvldP32Y4Dt1SEgms00TeoG7rlbE/0gvAEG+mI7bSShlA/Y3mB1liKUiuuz87QzaQPQhnYO9mjl6NBdxelbidXA0PD+doxAvVE/5xH3c3BmJqdDQr30U2rndQH089L8Ap2ZmITrl6pUqxjQHob1gfvmxu42qh4f+dZFqRTESXl2mgcBBX2xkyk/sG9DPvIV+eIATrN8o5lHQgKlrH1IYUKwLOVLxMtF221PYcE+bdQkGMfd1pHY9zDmUnDm1yXMth6GwKFru69nBWcnpvjt6zdDMQQV8gVwaDoV0XZ5CNh46eZd0gvyFL6pP/rOtxAXyTronTmCwSkgUULhxmEQMWQCD6kTOIWBtv2ZWgXh0rV7sI8hQxG+y0q1goQMBu3hzNEGEI9nwXtAhdrdiWz54pCV0Qoz9szpDA44Fe99+EIGMCHUgo+cKI85G5SWY9KCbQY3JnglW7DN9UuwzWFflNvr32Xn61lmbIdDtl0WID0xIZZjlgKyJ/ToQrrsWe5si4lYqfMsHSvjB585Yc8mA+gBSrW2LuvHs/mDYjknpFRgWJb7hweYCxHchut4dg3HC37x/1qzCWOuAZOwf4Eaw6HkPr3ACAGHOAPoYliLvGTpJVFZ4AD+vS9/3bXooK93PnwPJZHvDvanzd0ddlCtuO7/1RcxopTEjsoH4ClnJiZDuZv5qMwkVgWBJcQ0TdgvfZMfeJx1TetqIId5vHuwx6onx1fay2ayiNF02J0OBED9To9P0Mmx8a6vPohgTCMAACAASURBVN1YRUBBkj6jo4FSvjCU31LDbPK1LX+z2sFRVszlGfCRD/MD9oBysSju3bxjLbJSKrlX2Y/lXc6PcbCcvzvbqHrin/O3pTeJhPRhvwwQCvqi/sAmwBhTE8Uxaui6H6pN6xgxDbhyAKdZvvGYJcA359T5A7AY5UIxqtM4l1LSynEVJ/Gy7mXUuQdyebftOuHzhbKWMTjujoEByhgrjfH7t+4GOr9h/dM1nQW96QKn8a1r19nU2ETXXgOm+I9//lP2cOWx2ykS6XuUEI4xphczHyMVyGXjhm4MJSxpCgNte0JYsGy7lf3zdQcg2g+rh56jSW1L4LCgtTcgfMFD3deJfAHKGp9lLWNwIgfrjDsLEOnGhXapu7BtSSU6+HlFrVEn9UaDQEYv8CwOcsh3QBGfZ8b2gzQmlEiC4Q84ZAlAG1teMOvvVqLscyhj0FebO7yLY9YCZyTnGbPxd8w6nHLOimMswJEtpYRsYSvAYntvpxXnkD6+a6CQy3VCTbpugzGtp6PAdaUj8CI4giVSjHOBuGmeRW0Mf8ezmYz6zV/7sqsPWyghnq2v0c29ncQqyuSmfLiy7JvBtoXaQCGSINB7kFOFG0aGL0zPxEomp31IQnkuhICsX79lpYwKjbKe9YITZ3Vz/cr4pnzA7kcin83ypfnFrt8MrBsAe+++9vTNpGgAEyKy+nDx/l7UfZObYnVz3fc1S2NMTI5N+l5vnOYNo1S9fu9lfBZ0yU9OTxkEog/rs7a9iYBqy88Hzt5cCl+TtCgNZ9rBeS+fyfKUH9jPGTEaddl2AKdZvjGbEBhb2b/gBHb6TI9P+mbscdo2lAdjXqPZFJWjqidOGjdtR/EORMcKwdOLbwjKL+Ty4tUX7ge688KFtpDLuzJYOVEBRPYtzMzhhZn5nq/tHuzzb//gu4mdWxb+LSHCcoyoFhxrEh+AOQvrwBemflIY6MHabkE/bwCE88XC/LQ23Bexy07kljMYTM/WHn/mHL4AZX3FiTyID7n1LsLX56+hnJGFc4Ns6RhAgRXw8ypTcNVsmkQIbjl44Y8FX2zxy0KWK8EA137JKQsG8jPHbAuc2PLZthwuz6GMW4N5ljULf7uUMWv5weOZMTt4xsa8BGR/Ax6XvOzA2NjZFBgT2naix7wXiREPIsnz2axvhmTgH80YRmL38qgH7twRbHIEWcHD/oyXyuJLb3/W1Xw5rZ3ydx++n9jzL4ytVFKubm6Q49MTX4YaEDMQQrHTicaYvD53zbd1xhdlDU8lEg5HfsI9X1QNBD0zSlm/Ow4clZ6ur6LOrGM4x8GekMtkYzcn4z78lFL14o3bXW0NSiF+dHoEPJipXuM+kB7kA9s7ZNAXc3lXe6SHpkN7lUsun66v+b43gK1uojyOhxWBANaH24tL+CI61l7l4BIUf2iDGEJDQTh/W2JjwYUJySi+9QITzAkmoazNQL0D8eMpP7BvwzcSFfV0AKdZvrEff865yQZltXT2Asa1kM0xgOWJ+LEydipHVVxvDC+MDVx+ODc7nQOhqN4yk9vl2hsSuOiMYcg3X3rV94Nke8AwJjJrGCQsiMPJ8hi/u3S75yECYEu++b3voJPaaShzKqhGLKhTYnFGCqXiZ7yy0+9hcwITjIWm6WD1sdP9kSxzEfq5mwIOj6rIjAD9ISmDgTES6jIf8iV+WMMw0LXpWetCCwZGjCyeWdjXrJualTF75npu+Z8Raf+fpOgglfO5BuC8JIS8cl6CAV/f2RAEU5ryy/o7Y3RNE4au+7bIQ6BEdshh9/wdge61WY5gBRnBw+0IXpyZ42+/8oYrQ9m7H/0KDUO2y2n9lD9ZW3Wlg87ZQyhtbZUxe8BYfWN+IXZyxUxNTsUBZz9tmiZ2kwxgtzEwMGuaRvpSHgEMdOWAHR5Xr1Sb8gHb1fTlcuDAurVwHffiUZZKye29HeI3HKo7adO3gtCAxftbKAVINhaE1M7qhCDqJ+vPfN8bYN3JZ3O0kCs4EygBpSFxYqo8pm5fv3F+boBMo4PDii/niLipYHVrA/kVJNfZN7h3mj7b6WHuAcJhmAHLKT9w3GZtvOW55ABOs3zjPVgd0gmTm9QNryyjVE6UxwNzkjnRImT1NJtNWTk+8hV+wYkMQZZVSAnBvRPLu5LxAo9iv/edQEW7kiPElzRNU2+//LrvB8l2FxjVeC6bCe2Alctk+2Y0S6n4T375Dnvv4w9C1HJwTQFPeTuLMLhWgqtZ07Sh4uhhjHJDM0Kb78GNTCA1X4F+7mxFKqn2KweBrUeB9CqCSi1HsELU4gUHaGqlGPAYLs1fJ7lM1oJwhj/pM9waAL7fblHYYCBa39nEhBBOSUoo6NcsgIDQjK77ytkLxpSMkTmHO/dL1lGtZ5gdwTBX7t28g1+6ddfR8Eol+ermBlvf2XT0XlwLw5r36NmKL3scIb7FcviurtuLS77XOcoVhhkckjGMgaoGKNdnG2s9J2DKBzxQhZcKwHlnbnKalYulni/C2rGy8Qw1TdNZ5WnpRGhgWHl/LyofQnqX154Gck+GwKPp8alA6o5yAum6pt649+AirZA4OjmhjSHkBQ/S+dsew6AC9aNABgTEDUhSmiiWU37gKD/SmLeNX8/8EwkRCsDbxAhlQPEBaRTpE3sNSNNsEukCsgCcLOVCiWhMi0cnW1x/GLiBa/V6PGTyQwqMhOCCKnWBatGPem3WYduxe8a1aLPaWBeD7KBPv/qJwGQs5PKh8r0yytRbL7/Wd0GunhyLb33vO/G1+jgcDegsXHzPsvliEahitwtg0GSUtflY7L4W63IpDHT34ekB/XypMBjv62YTHR0fpU70tmYwEkDmqgBC2fp7dz5huLi/dOuF9trHFZIWp2+QmS6x/hCHVDj4RgCjWwjRcw8zTZNv7e+w9vo6pKqIpFt+8v9CBwjGXNP0vnChkXQ04Y22vhNETdPEwwINTSnlr714n92YX3Q0OrV6Xfz8o18OzZkXkKD3qxW0ubPt6bwbV/5fGFyQbWnu2lBSpTiavN4LA2q4bJhmaBRaYDPSNX3g3ARn5LPNtZ7Q9SkfsPPBHyuW+Pz0bN/7Q9Nsiifrz4ZpPXSuqCF7AxMsc3qGGPrgwIukdx3WjeW1p4F0AyhOxopl0iuLPpBGA64U7Jwv3ryNyoXieUugw92D/YBbDrd66BM4f0NAOLQygIPoXZhQ0J3yp/zAQYzo8NSJf238v1UppFoCBxQj1Ww2XUMLG4bBy/lirIzSkA3MTS4PjqtsSIy8FvxzJLPLLqSz3XKRdMJdo5957S3fOa4hU0bXNGroRujj+ckHb/R1OnMh1Hd+8D18UK24U1hM37JgoTEG7s1EwUIDXBqjLDSY8CCHL4WB7q7dQdDPl99S8ujkhAxjZK6tuYcxxwhZxilAxEA2Id7HSmN8YWbu8hkFI2WaXDaa9dTYZUv5cS+EBVA7d/L9dkpda9T5XmXfmguxCVyMu2ptyOc3/y80CYGHjGnxCTC1oYeEFbFgX4fBEcwYE59+5U06PTFpewjAKPjLRx8GBgdoWxCfC0ol0YfLj7oiINhtCr5nhPBAR53d+vwsRwmRc9MzxNB0P6sdpbrguydN0ww9CI5Ryu3ARCiExP7hAa1UD3uOC6WMp3zA9qetpjF59/qtvt808AEfHFXo7sFe6PYJ+z1JS9rVgGVvYhrKZ3OxstHald9NucerK25es/VOJpPlY4XSUOiSEsJnJqfoUgedQsNs8urR8ASah+j8hTlkIaramkxOC2EsSMhQ0BdFTPmBnQ7Y6JTHn5/87/xjvR4dvcWip81mo0WE5+KBLO+p8QnfHWUuRLnyCiz8RyfH6KRe86O6aOrAiEshooO1tgn/HI1ygmsVglk+cf9V343EELlcyOVDv1xBFtyD2/dwNpPpqTSllHz3w1+Sn77/i+AUG2HNZ47gCCVw3vSZERxDNrDzt+P1RgoDfWU8BkI/d74Be1qlWkFCRoMGEeqMau89GI4n4OBTji/elBKxMHONFvNXuZssnnCESL1Rx1yATTR9kqqBXpDPHRdYdXhUxcBzB+sqJYyEyauUVN3akdvQNVuZXXbqulgGHAa6nlIHONWbk/LDkBGsMaa+9PZnMSDr2HmUknx9d5s+21hL/LmqyxmBb+7uMC+BnIQQgRAOxpBpZ4D6lCEEi5mJKQqUDuljXwOAeqGUsrL+AfI57AecUYxS24gOpjDl0/W1ng5LqE9jGhuFzEY/xgoWuhdu3kGU9I/rgEmysbOFj2snfjSb1hGhBiBYBlAaIxQh1KbBjr2y9hS5QbS0IyjcF2YnZ+wUjX2ZjJERr9+7f2mPVwjJw2qVBAVjHLZSLCSJrXV0WgvHByCVEkIES9UYBRT0pXu0RZ+E6VihjFNUv7BndDzbSx3A8RwXW1J5ySiCQ3ghl2dZo7djyZYQARWCSFLBuTo4qrKkGnk5jzcnCxhTEcIQcT40B03gt35w9yWLN9KvB7jRM4ZBo8g8Aoi8O4s32Xip3Lc7tUZN/ce//LOhM4pd7DQhmEMknVIJ4SjAWDDKkMZYLA1yTr6P9MD4XFt2oJ+76dYUXBxWDxM/Fy5dKsDZexnOGayVnvcTuLC/fOfegCmqpJBS1hv10KAQnXwzadk+GsBISaHsItjwg2qFWTBgGHOKCUtRi7zPLoyJyBg6WPa9V9ZRAwTMAQ+w7xWnFXbTQGIzgmGd/50vfs02LHDTbMqfvf8Lz/tLXKeRyU35cGXZdf/izP+LCeFT5XFWzNtz9sd1jEKWC9CeZdM0KRjFo3jATqAxjdjdc8ERubq1gZtms6e4bZ54uB+lT38NAJ/jwswstRMkA7p/vLYCdBqpWhOsgVK+iII4l8VVJbC2Pd1cQ0HNW0ywKOdLNBNTe7fdcYED9YO791A+l7v0Ctgk9ioHQ3HebtEIrKPTEBPApJRIyGDXzCihoC/bUQkgNKmUH9juVze85VIHcFLHFiPVaDQ8LfgAvzVRGvPf+uOzTiEb+BiMfwl54HIjpZD9OO2C7ko7ajjoduJWP6VUvHTrBVrqkjnmVlZGqchlc5F8JwDBe31ugc5N9Y9e5JzL7/34B2Rzd8dtNxPx3lk2sMQISYVQ7K0HEGhDCUWapsVe1l4TAOagruk06gjGOExQZ9DPVyTmp7VTFubFxneduYRzdipHIZ/nN+avD/xmWnuttIyNwxL97FRXSSoPWYsQdSaFtL2fKqXEXmWf1psNq6uEEk5xajn2Y9yDdMbkspeNVH7Im9bRVwOJcwQzxtTvfPFrtu6x4Nz4YPkhPjw+GtppAOSuq5sb5PjUTRYfRpQSSKJy7UAOUrGwV4+XynisWAqymWGpmyukSLNpEjBOR/1kDCc8pEoeVA/J/mF/SqKUD9jeqMJ3Mzk2jqfHB8PkY4zUab0mnm2uDzw722s9LRWmBlq8v1li6KMFkw/36tXNdQvlIKhH13U+URpP7HcBtk0IBJmfnu1UESCS0bCyZYMaH6gXaDDA+Vur14Ns5lLdcCflMgS0zoihoDsVes4PXCozsFGmz+hpIHUAJ3fMVaPpzQFMCFblQhlrLPZ7IudC4sOjQ9qMeVZtezoJwT1xOXmelnYgoIeQ/xcyZu9ev8UmymOeVdiuALIfo3R+zUxMiVsLSwN36Icrj8X/+7P/OrCcb4qJsKJzWGhsQczGus8tJzBBmqbHfqHtNaSMUWFoRqz1HMJ0dAz93E2mw6NqcpyVZ3sEGJYAlcMuf6+XsSCE8vnpGTZW7I960NGGgMtjvVGncTCYeun/0L6Lrfs9OOwdrSNgHNra28Ft+EswkjHCYunkSNLYQWZRPptxNBZ2+we8U4Zu2M4as1tvWs6WBixHcNM0z78ZW29FUCifzcrf+OyXBn7LCim+s7eLH689DWS+RtD1nk2e1k/5k7VVx2dFOBNjQuHi6fjdsPpfzBfE9PjE0I+ha31ae6QisNfxmGRxEoId0wQIKdSTtWcDAztSPmB7MyVrZMTNheu2vpt2wNx+tb8D3l7LaamwNGDx/mo6ymeysV2/g9KFUlKubW+RfqgBfrQ9MzGN7CIZ+NGen3UUcnn+4O6LV+aGQgodVA4Dz2D1sy/d6oIAv6cba7jWCM/525IDCy7CQ9iI0pbcqfeUHzjoWR3v+lMHcLzHp490SjaazYEX50HdyxgZXsoXEnHgAACk09qpqp4cD7xYDOp3kL8rhLjgZrQ6HeDcBVinuEaKexkbQgi/tbDEZiamvFTTOhZgLDSmqYwRLZddIZcXD+7cG3j544KrP/z2N2P9bXgelI4KABYaIxztt2ajU3C5g4uHnlAnMEyqUc/ocgv93Dk9wMK3H0O4JmtPQAjukxRhJGDMFfw9guelWy+4DroBI0LQhoQIVJL4Ju3w/fbq5Nr2xqWAuijoGBI/ABc6ABd/XdOIrmmBdKvN88jiH1waSP9jUmnsHcFTY+P885/49MDzm8m5+tn779qFjI+J+t2JARCIj56tON7D4O6DYn4WzmayfH5qeuB4u9Nc8t8CIkKT81hRWgCfO3O4kIMxf317E7dRO3qNzJnTi+qaPlL3VqczFYI7Xrp11/ZrsIasbm+gWogwqraFSwt21QCgN5Tzo8P7e1EJwMG6ubtF640Wyk8QD8bEoj1MIp0VfP+vvXgfdUNi4FyIg2olknu6X+ME+8XKxhquh+78tey8yuRmaGfLuEBBXxw7oOdI+YH9ms3JqSd1ACdnrC5JqhTiTbPh+SIFG8vU+ATCCaHVRAAhKCWpHFVJow/HTGTDipEUnJOo+HqsftvK/kUSxRQqzMvYgWFzaW6BXJuZ81JNS40YI+DdgX9H+eiapt586dWBQgDH6A///kf06cZalOKG3jYoBhMiWmtYjLOBLQgYggxdT9xhfdRhoD1CP1/6JgByqG420dHxkef929PHdhnOGfaDWMzLbCYrbi/e8CILl0iSRqNBguKU8qT3EXr5jIoCAUy3BwpDtbq1fr7/wR5PCSVR78tJHkbIos7qBgkyGl1jjCcZ9SLJ43vJuIMQVzHNCL55bVG88dIrfdd6CJh6uLKMD0Yno01C9t7mzrajAG9CKQRvDbwnRDmvdU0Xi7NzXvb2KMUPqm0B0dimacYPvQSCoIH8xSFPPOz7h8eHamd/f+ActviA9Qx26GMOaixiWS84B5fmFokTKG4uhVpeXQnNsRFLxSVIqHK+6DroNUHd7CoqOIC393Zo0PRIjDE5NTY5cE2Kkz4B+nlpfoHOTFyFgIdko+OTYxak4zxoXVjO3/XVgcFCQcoRJn0UBNpjTGJ5fyWESI1pcrxUZoY2WjD0Qc6vuNadOoDjOjID5JJKcdNsejYgQzRKIZtnWSOTNE2oWqMuK0fVuF0mJedmpAcMjJHom7k1hNDPFyfvtZlZeWP+uqcxgGhBQ9cYQPJE/YCh+1OvvGlLjNXNdf69H//Q87pgq7GYFbJgoQlWWCERW35gjCTBRAGnbtIcGIwxbiQ0g9njVPUF+vmyDEoenZyQxhmvqUf57L1+Gc45Ng7fi8JDFtPMxDSbHBu316c+pcAazjkXjWYjbmcEz31LQgVu+H679UtIITd2tp7v5y1IfQbBNOnjXgNB8v+CVAAxnTFGnjbA/QD5/2asMoIhCOHl2y+SF5Zu9VvFxe5hRX288nikzrSAlf/h8iNHNEIkATxujFG1NLcQaye1/59dzxoFLJMmQLXHBO65U9IWChajbmBTATFnee2prbGGuxAgDKV7eve5AhlasxNTbLzkjBbl+PREre9sjtTaGeL360tTALGeNbJklB0uSim+vb/LTmqnvui0VyXAOz5RGk9MsAkEx5SLRXHv5p2u3zAkGu1VDhydEwJVsMPKIbhvZX0Nh2oHuSqjlQHsUHRPxWFcCSGhtulE4JQf2Im2kls2dQAndOyEhERT0xfDJmNMTJTGfKkrZHVyqSQ9PDqKNHrovM8Ycyk4i5qD8CzrJrabS9BzZHp8kt9duuXp0kMIlYVcLhYWZkqpeu2F+9iOMxoOhH/0nW/Ghj8q6LHuVj8c8jHkwcf4afFqGbGMAuyntiTCJ3mdBn5BP3fKAd9qpVpBQkqvIl55vwPOWWJAc45Jhm+/zhKM0Z2lWwCV7pdOLKdHvVHHXMBf0ycUDQBntARmL+V5D22aptje37l0PqWUCIIdpiWF0vFkNEIp5blMxtMZyU5PR502wI6OIigTC0cwQMu+8dIrbHF2vqcKgEv0Z+//Ao8akgMYxDd3d5jdrOcW/y8RcUHx6DWgIOethesRTPn4NcmFEJD1Gz/JLkvkJOv04ptKKStwyy6nI2S65TK52OsjqvEq5vJ8ce6aoz0bjmA7B7vk8Kgaldhpu300ABDohm7gnJEZ7XmvFN+p7LOjk+NA5wugB4ENo5AreL6XBCroWeUMbH/3XsZaDyqVhtnk1aOIkcRcKkJIqZ5urOJGs+myBt9eE6ZPvhS7EoGNHpA6CSaO1nO79ftRrs0PPFYooVKh6EeVaR0x00DqAI7ZgNgVBy7Efhk0IWturFBOTFRUp44AnrPRbIrDoyoDKKXIHowgLTvWjidwDIBvTCnvhtnI9Dyg4XKxxF++/aLrjRU252wmgxl1XYWvqmGUihdv3KHFfGFgvVxw/uN3fsIePl0eWHaYC8BHaHGiYUTiCnUO666m6TgpUe+jCAPtJ/Rzt+8NYNsPq4feL/8WnLMiFq97ghEeDF2Xd5duB3E5lwCJ12jUaaT0DMO86F7omxe+304V1Ro1vlc5uLQZE4IFJcz7dzMi43Gxm4AQAwgUQfH/ttuyoD2NDE4a0sWoTAnI0I8SGlpjTH7m9bfIZLk72oOUUj5eXSG7lf1RGZJL/TS5KR+uLNvaCyHoEUhr4q4oEPDGtUU4m8dd1KDkk1IpFUu45y49hjuKF37eo9Njvr23a+sibfHGaxoxNGNkJ0e/SccYUy8s3XL1ja9srKKIs+yC+p4SXS8EPZTzxZE/xyqExF5ln1aPjwIfT0qImp6YdvUdBS7chQYg8eP24hKeKI91bVYhJKtHVdI0zTDF8qUtCOyDzN9mDGgcAX5cCB76NxhnKOhL98WUH9iXOR/HSlIHcBxHZZBMGFvZv35GRQPvXjGXD30RHNRV+79joZCCSEdsN+LUft02SgLsspTAORj9wQKcvEPI72tjFKwi+WxOvPbiy67nssY0ng0hO8Zuf8CRefPadTY9fpUDpFsd2wd74i9+8D3X/bcrVxLKWbDQGKszWHRbhogw+2U5gZmOk2IQA15HfXRgoAOAfr4yu/hp7ZQ55j66BOeMBVIqdnPb6XcEEadT45NkZmLK6av2yreyUq1LZ5icP/aEG4JSrXMH9sj3e1kRGCk403XLDNCYNgRKC78L8J1lMxlCA3bCgEEf9gqn/JHha2TkW4wkIxgcGl/91OdwNpO9OgCt7168//hh4vc1t7NLKilXNzfI8enJwCoIZP8iHPszPziqF2Zm8Qiu3effmJ92m4ETw2MBSgnXmOb6GwR+x8erK7ZtIhA0BBmRIzg/Bo4U3GXvXr+J3HAlAxXK47WV2K8PA5UwRAVgPEv5AqIJgO4PXO0Yyf1KhVSODgNvCvbKcqFMDd03lCnfZQY0j6nymLp9/UbPtRfgk/cODmyvrb4L6bJCCMR+ur6K4+K4BsROIYGNIfwn7lDQFzUC/MA60+RYyg8c/kQJqMXUARyQYgOulnNuMj+hI+EwYtfBFHDfPFWvkJKmaQI3sK/6sSMU53DHizADuS1kvwywBGeH2RkDKGPouvrE/ddcH4wKuXzsItSvTc+h63PXbKkADjR/8t1vI8dOJVu1J7PQmSMYxRUe3dCN2M25biMNOSa5TC6Zk8Ch1EFBP3cTAyDaejklLbggBIC6iCILwQEBve3QGXMoJfLG/BLJZjIOR8pxcWDQUPVmI3K6BseSx/cFCEJQQvoeiMD3DyvstH6ZGwy+CUqARt31Nh9fTQYsGThh8tls4IqDMWKUYU1LHfUBD6lf1YfuCP7HX/mtrrLDGfadD99DcTES+qVgp/Wc1k/5k7XVgQ64JPD/Qt/B+D43OU3dwgo71V9cyoNtwLTsAwl6MBYQvcM8MC1AdtXW7jZ1che1+IAzuUTch8IcTQgEvzY9y+wggXXKpRTi1ZMq3tq7TKURpvxpW881AIHfOSNri9ZrVPR2eFRVe4fhODQzRoaPFcsD99WodK/rmnrj3oOe9xvI/j2tnZLTWi0qEV21ywW3Mn/jEoANKDhcisjsABYiJyaK4PgH77UHHPbnQjbHy8USS4NXXH0GsXkpdQDHZigcCWJh1vvJNYsJ4cVsjmWMwI2vjjrqtjDAPFZPjkNzgikkheAicqO8xf3YI/u3329u9RzH9zTG1NsP3nBs4GxnrMQxMnC8VOYv3rhj68AqpOQ/+eU77JcffxjH4YlUJkowx5gADKzj+RG04Lquxz4aGGMsDE2nw57VFTT0c+dcgmje/crZ5fcSnDOKPa+fX98FZITdu3k31O8SsoHjAEPllw6jqAccfUJIHAS0NkDD7R7s0U74QtirCSEsKfD5UYxLrzYpZTyXMWydJbzKDTyvuh5OW15lTd9vaSAsaGhD09U3vvCVK+u9VFI8WXtGt/d3R35IYE199GxlwB6FEQRP9br3xUmJ4MSaGptghdxIBBFCErdsmCYLYm8MelzhrK8xRr2iE53WTvnG7raj/QYCBfLZJCPSBTM6E+UxMTs57crOBNnYm3vbXdFUgpE2rbWbBlLe3+7z4uj0ROzs77qa205nGjixZiamISHA6auBl4f19sWbt1G5P++q2j+s4CShSXAh5Mr6MxKvQCgsuDAjpYVKChT0xYl/RiVJUn7gwJeDQBtIHcCBqjewyiHLlUgFyUD+PYwxMVEaC2UD9k/q3jWB8RAibytHh5SL4CAeMHD/ch6IAdSxnvpm/44GNDQc6j7z2luOVQeZMYVcZqS+/AAAIABJREFUPn4nQoRQ1sg4grU+PD4Sf/r9vxiab9nxYPZ5oZUNTASyEivjlUmpazqKu3N1BGCgw4B+vjJDa/U6OqmfjIzDt1MB4+UxcW16Luw1i0MwSL1Rp1HBQPm5tkVRl598v1flV2pzdwdzcTV7CjiyCCax3K+jGAc7bbaC3DQWNP9vWxY4UwEPsB3Z0jLx0kDQjuBiviC++unPX1nvj0+P+Xsff+jIYRQvzfkqjdyvVtDmznZPXlQ4z2JCeRJoIMCpOFEeowOM274qMILKYLMCbkaghIqgef+aNAwDAkI8PeD8fry64qiOFh8ww4aWCfs86EjOsAsbuiFuLy651gmMxZP1ZykFStgDd6E9Spko5wuuxzBC0QNtGgJFNvd2Qtn3IeGplC+ybMwSnighfGZyii7NL/RddoUQYv+wkpg5ZHIuVzZWSQslMz4PBC+b3Izcdp8kKOiLowffESWEjhfLONeNyiU+Q51K0kUDqQM4idMCI9VsNn1ftACWZKxYxoyGsgeHqnnIBj6pXYYR9E8ABY7mWGzGPSFuRwD6uT2eYBD55CtvIiccdxgTmTEMorF4zn0wdr/98uu27+JCCPXtH3wXH1SD51Tx7zsKtyaYJ5QQBXA6SKlYfL+ggbg7gWGfyBrBQ4iGOxuetxYm9DO0CrQFzaapjk6OANMWAvVtf+dR6cjvdiklYnF2gQL8flSPybloNOuxWQei0oOdds+cQ0RKaS2gQT5r2xuALn2lCUKwoISl4+VA+bC+5DKZUDnngeM1jpkWDtQ26kXBi0XgzulnIO3s5DT/7OtvXTpww3f+849+heqN+qjr/Lz/EOj94fKjrmsgFIJ1EKHkEEmOlUpyojTW06Gd1IFvn90gwyluhm43OoVzvq7pns+iAAO9vb9LT2xwWV8yLmMsDR3u5CmFwEW9vHT7LsIe3PKNZkOsbKym5yY3H4XHd1q8v0VHtimPTSbm9Vqjzjd2tkIzwOmazifK46G1Z2cgMkZGvH7vft9vUyHET05OWC0hZyTL+bv+jPh5drSjS7tlYgFHjbGwnMAYx2o+2tVhyg9sV1PxKpc6gOM1HralaTYbvrPNwgKUzWRlIZsbwsOh4lxIDNnAvkJQYGRBPyufs7FtT4S04BUNgLP09XsPsKHptrXDABYxm43t5gsXh7fuv+YkO1S888F79Gfv/8K2Dka1IMCNYRSfTGCLO5Gx2AbiDDMMdNjQz2DwBn60Wv05l88oOoFhfXv5zr2olyCOkKL1RqNrxmnUwsWnfSwkxMyI4INmAKNhbWu9qxG6zTEbH73EX5Kw+H/bmgCoMEPPEK8wovHX7EhI2OII9skRfOf6LfnqC/fOHYFCCbG6sUE3drdGQpl2O6mU4pu7O+ygWun6CqFUIeXBI2RXEJ/K5XM5MTsxNWw2BkB7lk0zWjhJn4bIqoZSwjWm+XInBufO+vamq7ry2XzKB3w2sAD1vjh7jXjJtgI+4P3qAdur7Ps5XdK6BmgAzqv5TA6Hhb6StAGpmw2xvrUZ6r4wPTEVG9otuOQ8uHsP5W3QI+we7PcMCIvNuEOimgmcv8/ijIRhZQDHQWewPgDpc5KDZZ/zA5eBOyIOak1l6KOB1AGc0OnRyYnmVzfAQDQ1NhGLBdGvPnXWc3R6go4dRqP2kUXxmGwgICPAUasOY8AZXj/8MBIrMqNUvnznHsln7fNM5XP5WEdlUsrky7deILls1vZncVqvqT/+z3821N+ybWUMupzBt9NyBIO+Iv9O2s4NFtOM9CGFgQ4d+vno5Ag1ms2rsxMQG5DCcYMo9+t766ynmC/wpflFVwbCAGRSALFVb9YTyd0XgD4uVRks5PNl6YUUcmNnq+d6nGYHORttxhjPGuFx8lpQnkxjcd3HnGkvLQ0aAGodjBRuNk3XWR0QdPfK3Xv09uKNc6We1mri3Ye/CtUAnJQRNbkpH64sd10HSXKSfy11A4ztwszssIwzV0gR+Bak9JeSK9K5iZFklBFG/RkmiFBYXn3qymmR8gE/nwkYEzE9PkEnx8Y9TQ9AFdjY2QoQFc+TeEP3MpyDMoZBs3pKh9FrcJvcFKub6/4sODZmEIxJIZdnEGAS9UMptfbE+enZgaI0uckPq9W43JV7yIulaTbVk/VnVMR7XxQmN0Obc4MGN6lQ0Bf7dc4PXCxZaAfpE18NpA7g+I5Nb8kwUo1GIxDHDmC6F3N5ltGNJGrGrsxcSEEqR1Xg6bH7ztVyGHMpOIvVxQ8jjhSK+eHAvcrtvAmHqXs379ByoTSwOMZIaJqBM7oeudOvn7CUUn574QabKI8N7FO7AOdcfvdHPyBbezu23xn1ghY/MMEKKyQUivY7whhLSmksIdCGEQY6TOhnyDQ+PKriQVCBo5ANTCjl16ZmWbk4eL0ObX3CkOKKcKPZwLGAiAqt432OnRgrIaTv1CP9utY0m3x7f7freQb2boCATnLEdJjDCgYvQ9fBHRtmswiChTRND7fRUHs4so0JhRQ2XTiCYU584v5rbH56xlIeRK2+9/EHqUOix1SSSsrVzQ3SGbjc4v8lIkmBYowxuTR3Ldb3rYFfNEZSSWVxGsYV2nJgH/oUAJQfjUESjz/DBFnsOwd77Ojk2LFYZ0FEEDiQ7iEIoXw260uwJEzg5dWnWMhk81Q7nlARvMAoE6WU97ev5rng8unGmj8Ljs0xZozKqbGpUNvsJlohl+cP7r44eH1TShweH9Om2SVo3GafQygGSBiW8zdWtvEuHQd6AiHiQd9oiZdwKOiLKk75gUP40jw2kTqAPSowotcVGCaDaltjmhgvlWMTFRNUP8HoUGvU5OHxsesDAOceHMgBdKyrw2CE+H9BpeAsvbN4k9mJkrUgEXM5MKMEMBr+VUkwFouz12xFCF5s9aMnj8Xf/sN/Hfpv2T9Nt2qCeXGWDex31Y7qA0MMpRRrTHO9Rjlq0GZhmI+6plPqU4aAzWYDKxYW9DNwp/L/n7038ZIkOesE7XL3uCPyrqz76jq6W6VutWjQIFYaeIhjYAaGWXb3MbPzty0z7w27zAOEODQgkASSAAkkDdLoarqrqyrvKzLuw+3Y93lmVGdlRmT4YX5FuL+uzu5KOz77zNzN7Dt+Pylxo9VwfTmaByfw47sPkgrzJyAwALKBk36ZDevlOOH7xVgIEfk+0un3eL1Rn+QAlgSDjTpRn8awpiFwu3Hw/57upTJn5bJJCjyDiW3AsyPYYEz+7Nvvklq5gpSSfGNvh23ubid2gEkQrNvv8g83N175FsI51cF9StFDCVG3rl5Plczn1QtWY5vzmUYIsUxTK3d7fzjgm7vb050cY9YyJlhaRsYHfGrfUA9u3dXw/mDZ7Xflxu6WrzlJ0ScnVlHhG10plHB2Tr18GoSUABesYV27n26Ym4VKDewr7itpLglBXE8ePEY5a3rSlWOnODqKVEcehyuGwyH6cGuDAspA0h+40yctAGYWoKDPzjvwAxuGoRbLVWp6oGVM+tqZBfkyB3AqZ1HJwXAYmkEFrpMLlQWkC/4n4SrmUkl63GrisVCclwgPUa1C8OQcnsc4egGOQan4IW2jXAOEEH776g22trRyabeOE8u0aFo4WVYWlvjd67c8rTfOufrdL/x+kg+MUS4Nz31RgjnCmKA43yGMBaNU6eLj8qyECRVmCAY6KuhnPuQ2arZ8wDfNMCR0IZfndzx+13StYS/tQNR1wiOvvQzHXVnIhJZICik97TvuGp9SCiPZaDXJZVlDsNdTQqOXTcsAo20kav7fs6MreKDjiFYrWW8aNeDaEQz8YJ/72c8iyzDRYDCQ3/nx90O7z2ocX6xNQcDy+y+evbIHATwuQjjywJygirh7/WbQJuKoL+Aybdu26+C9OITU0ScmWFmGqf3e+OHmcxQEEjTjA3a4mdXtqze1cMkqpcTB8RGdxC+uYy3NcxsO72++gM0YHYxp0b9SSj3dfK79mzNt/IV8MbbsbEArvLl+la4uLk8TE8jJVLfXV51uJ6lnJQE2dMj8hbNK0p+TYHyRyMDuWYCCPj//EOhQzBdErVylGT9wMt6OzAGcjHnwJIVSiA/tQWhGL4AeLeRyqJgvJnWj8aQvl4VVfzgQx62mq6he+EAD92+SNrqxzt4TKMt5mkeIWlY31q7ia2vrl049JVQUC4XUGE+KhaJ4895DT/LagouvfvMb9PnOpsvXICs27uBCMJYYIRkXLDTAoBFCMGTdJmWGZgUGOhroZyV7gwHudDuBLrizlg0MDry1pRW2WA3GaRbRO8GVUrg/6NOkRQ2HNf4o+X4vjkHxo8Yx6/Z7E4c34koPa/yz1K5hGDxnRg/FDHNkWRYmeK6OobO0dLyOxXEEAy+qEOPhRSEb6t9+9nMIMjB++PQ95Aca1qtQM1BeHjWP0c7+3ssXKW38vzAHEIhyfW0dpyjAHBYxsW0bzyLc87j3glLicLfrfGcgYP7g+Ig12y3fzUI20ZzZpS7oCs7MV5ZWtFKmvNjZRL1B3/e8ZBUvasDh/TUtlrdymXpcaABsqU83n7soqbcI7EeriyuB7uV+JIJzcbVcBro6t99ZVW80MBfcT3dh1xGDwQB9uL2RCufviTKw4MJOprwnUNCI4PQF91220ADREEA6Afkn4wcO+5Wc3n7mAJ6uo8SVkEpx2x663TR8yQ+b4nJtMfJN0Zew+iqB4YIAN2NvMLi0VYWUEDxB3AHjpJ0z6OezKlhfWRO3r96Y6Cw7gUPM4zRB2JqGod5+9DHP7+SLnS3+l3/31VC/F/peweS2dHogA8C9WLLqT53AyEwIn+IswEBHBf0M3H19TQaWWXICwzv12q27KE4ILj9fHJvbcjAczLJHS0mpYg1wO8lOOaTTkFnStnb8rLegdeLi/3XMLBhz2LPSdNYKqu+svqOBiY7gnJVTv/SvPiN2D/fJh1svZvk7qnUpAKzij5++73AmQ0oQpSSWs2iQQYETb315lQDEcBoeLoSArN80yKpDRjhfAu1MGA76gT0UGztbvnUJewljBgLHmo6xprWNWrnC11fWtOkA+FefbjwDPPns0aQBxpioFEq+17omMVLVzAcbzyKXlxAsqqUqtczpEMw6hQNUtycPX8cGc/caCyHlUaOevLOSQrw/7GOAfdapn7Dbgn3OTlgS19kxzxoU9Ctjc5C7CFkoV0khlw97qrP2J2ggcwCncGkIKQXn4V5IMCGiXCjSXMSbYhKmQyElh0NbHreb4+EhMJKCC6ISxnEwS46BoOtgqbrAH0yKrMNYmsyQOStdl0jgKX73Y297Vg1YiP7LH/9+4rguPA8kIRUAFhpjApGDnp3xQYfgOIExQWYMmVzjZE85DHTo0M9gqIXsJu3QwTMCCW2Zprx/827yLrXTX1SukKKDwSCpEdnTRzCmxAnfL0JCxAD5fFEetXOwe2nWFcZIUMIoBBJkz+UaKBUKWjkdvegbOKAMZmST5EVps1P2giO4VqnKf/XWO/jbP/hetiY8zDNkUe4c7DOAbIVvHiaUI6XcWZA99BNmUchgXF1cYgk3/EmplJoHuOcLcw3USIyBfVb7MoDz8PPtTRQkiy3jA0bINAx578ZtnRPE250O2jrYSdW3RPsC1dSgw/tbLGWoJx71CRnAcaAqWpbFF8q1yNY+pVTdvX4TL1ZrrjSkEOKdbof1+snK0gc00sGwD5y/kenOlcJcFrK57bJkPMVmEQr6rCYhGBD2soVylWX8wNGvscwBHL3OA/cIsFpBDtBuBQDIOHgx3ZafqXIYKaQQarRbeAwEoeTc1nn41qM6jARSyInCgixFhzRCqeTJqWe0l7ZSLpb4m/cfTVy75WIpNmOo3+HDofFj9x9hr5GKXHD+je/+I/uX50/9dp3VO6eBk2xgIhCYL5WKNvIRY0Ewhkzg2B0faYaBDhP6GQ7uABPcbLVCdRCmOegH4IBWFpbpyuJSmr8vAAUi+sOBK+qIRA8UkA0kUlLKaL9nlyhlc3f75CA26cGYU0xYGMbqRM+VR+FOoDPzsZ0FgevMMq3ErCuP6suK69GAgDd5OBzStaUVVCmW0HGroaflOWoF0Cfee/aUYEI4Rjh193OQe7laY3AHS+AD+Jp0aNt4Enx5AmXWLhJkZ4cTVAUw0HXWaDUDywy88pTM75by8PY9gFMPrMdRA1IpuX90QBrt4HOjTaiUNlQuFFOHahS3qkfBIXHR66wtrYb0zXtVs5BctVytqbs3bnnauw+P6w5lRlIecP72Bz30bHvT0ziSIj9Y7iADOEHyXBQFQ7IJxrMGBX1+oCN+4IVyNZTAs0TPcYzCZQ7gGJXvq2uMnezfKC4n8GUEbr55hm6DbGBuc1lvN5mjc4y4FEkljkdCnTqAfa2tGapUyOXFxx++ceF2iDHhlmmkMtoIOItfu3WXVktlzzO1d3Qo/uSrfzG/t2XPGnNXwXEEE6wQwjJKR/AJPAxSpmGRcAw17safVhjokKGfORcCN1qNSPhl0uoEppSo21dv4lz6ObLgVo4HwwFOekTxZW91vHy/FyWDd3Rzd3vqBZ1QwimmaTVCuPvQBixlGoawzPj44yEjJmflps5lwGFm1VOiAUCWMg3DCe7ACM5PEOXhwBqPoj1eRn1g+EuAv1FIn7cjJXoaJ6ZUUm7sbJPuoH+ivpQ9cF6plSt4oVJNnOScc2TzRHIsRqYrh7PdNENbV0Nuixfbm4HvovPMB0wIFdfXrtBivqB1XZw44TbQwB5qbXdeGoOg1pxp0Yz31/uMw3n/xc4Whm9w1A8EJVUKJZaPAI7WNA311sM3wK/nepg25/y42UjMHQecv71BFz3f3kqMTK6V+VFBYYeMpOpDpgtVZhkK+uxgM35gHavFWxuZA9ibvpJQmnNuMxFBJBC8kIV8nhRzBfc7VRI0FIIMcNNudTqo0+sinkTYiPN8v3PM/wvTb5qmeufxkwvrlhAqS4VCKg1JAJ12a/06W11c9rzCIbXr//3iH6Nev+e5blZhugYIIQKjk+z7KB9wPpuG5ekyoVu+FMJAhwb9rBASQ3uoWu1WtBejFEJCG4ypB7fvz8zZAjvIyUL1BwMG39tUPIAUohCWUmKHVjJBjxBCbh/sTt2rARKSETa1XIKGFqkoAJOds3I0DE5HLwMB45oXo5eXtrOy6dEAOBkGgwEaIdk4UMYg/rmfo7Vy9ie86xgRRcAdDJ5h8Avjk5rwL/hnVB4oOs6ut1lyNnf6PfFi2z+XatyrBRCaVhYWoz0jTR40+NTlwLbTj+KhYWIpIdwwjNDmBs5GGzvbKGiwHOxrjBkqZ+ZCk1WDOkNpApwCy7VFvLywqL1927bF063nkd9ltQ8k4gZhThilolwozd161KFqpZTc3Nsh2umSXApnGEwsVZdCXfeQsf/g1l1ULbtP4lBKiVanTQfDZARlgPO32++iFzupdv4iqZQQgoc63y6X3tRigOhJCJ2LOy4EY2T8wFOXhJYCmQNYixojbcSJWokKCgIi9+GgGekIE9zZcfMYtXsdsGEkSyfn4J/VnEfLA1zyu2++/cocYUxk3rIIY+k9n68vr8mb69c8HwSElPxb3/8u+8H7P07w25Vu0WCxAbyPY42M8P0DJ7DBTKwTDszLTKQNBjpE6GfV7XXHUQZ4UWegsmnKBl6sLYj15bVUXMC8TsrAHiDbTji/EPD9QsSCTATf7wUVD+0h3zs6cLVZG8zwOkVzVT5O/t8T3x4WpmnSeYbsnKsFN3mwvD/oU3DfRsn5NcnJPHI6v+psdjzJKMnOZriAPt3aEACnncZ1lcvl+NXlVVff9hDHB6lmZGjbJApEtRDHobVpxhg4skKzb8CRo96o03ozOPw7vKMmM0mU3xKtyg7QWD6XE7ev3tD+/oODp9FpkL3DA892hgDDSX1VsJVWi+VYg7HTrESlpNze3yP94SCWYcCev1xbDg3xEgJrVpeW6c31a16/rWr/6NBrnVB0eOL87aAXO9tx792Bxwc+lLjgxj0LjzEnwDqHNWL+exYi2goZP3D4+s4cwOHrWHcP0rZtElWGCTg0KoUSBU6Y+X4U7w366KB+xF4xsp9k0CTroJxEmSJePGDQ+Zkn77zSq8EMns+lO1q4Vq7wh7fv+zp8Hbdb4g/+8k+0XxgjntrEdzeChcYKAeedr7nyOkgMmcAxOYEhOtEyLZIG436Y0M/tThvFdXk9u17S4ASmlMgbV64T3RB2Xt+bEMtzpSTuDwY0iZfM0zUCKcuJMCyMmwfIcgND8bQ5whhLSmisUPjTZIzz9wAXWcznpuoxVBnBAcwMmubgu1D1MyeNw/7baDZF3sqxWQ3aiMrZDGhU2/t7EMCDwCGcpscwTHFj7Uos36TR+QignuOAG03yPGGMOWOM0ZDtzFxw+WxrQ5vdpJArhOa4Sep8wXfm0Z37oYinlFI7B3u41W2H0v4sNloulJCR4uSCuOcEMjJ3D/dor9+PRRRAFCjmS7RUKIbSf87KiY8/fOx5zxsMBqLZaXuup3sQSine6XXxxu527LIEHRtGiHOZTCrHy8YGSR7zhqKU8QMHXe2T62cO4PB0G07LGKnhcIijvPCZhsFr5WokjoxwlBasVYWU6PX76vD46IIOzjmDBYqbg3fOoZ9HMw2bxiffeAudhT2Eg11cWZLBVuBHtS0rJ9968Lqvi7MQQn3+y1/Ex62mLnGydi7RADkBJIxURwCrGMcaTwkMdFjQz6rRbuJEZXwmHBIaEBoe3Xkt2pcj0jfxo85sbivgB46p+7HdJo3vd4yQstFqElcGSIw5xYTF8d1L0pxOksUyTWUaRuzrD/YIwzDn9h6RhrUSpoyQ+dftdalt2zxv5VlmLA+m7Wa7BdHHAilFlUKCC06joIYKJvVJbUap8pEJpaNrQHuWQ9umUdpQdAgeRRtgz4C9Iux7CwSCbO5uY12wppB9WcwXY9/jopijUR8QRHlz/ToBPvUwHnACP916HgsnaxjjCatNjInImxbNWeHMQ1hyJ61dcDAC4g8ENsX1wL10ZWFZ+3cEGnz9/kMESDxentOAORw3Lz1k/nZ6HbSxm/7M3xP9Y8FF+s4A8wQFffY9+YgfuIoqxZKXVygre4kGMgdwCpfHcDhAUcf7LtUWUBoyvHRPJ/AvdAc9dHQ8JRPlFIIZLlAjGcDggZSKxuB1BgJatw7S2B4c5J689jqGQzlGmBumwcK6KEWpHzBy/9Qbb/ntUnznh9+j3/nR9/3Wz+r50AAlmCOMHdhDH9U9VwE4NEqjDdJMAwy0duhnjMCWiMBRlVQIwaRmA1dKZXHjyrVoF6nnN0lbBa6QooPBAHMBqJMxPRjDeQT4fknyE8YUP2ocs65LznpKiSA44o9eTNPopVtMkMiZ8fP/gswA6ZWzcr6C17yMOSubTA0IKUWz1aRgMC/kYE1GczVKpjb8S4UxUgPbluBMP9cKbC5MKsW5SHZ2CzgY71y74V8J3mvCHkyGQ5tERZ/lXcT4a8B50TLNKO4p8rjVwIfHdS19QfYepYYCZIH4tRiNBMCVuLa4zBYq1dA67A/74vn25ryc0z3rERwyBjVkqVCcm3XnWUmuK4AD+JC1ux3XNXQXhDNqrVwjpqGPUoZSKq6trtH1lTXP4kqp5OHxUaxnZnD+trtttLm3MzNrHPY5m9uRJtJ5nvxxFRwoaExDj9DSIqz+RjJ+YL06zRzAevUZSWuDiDkSIPqikMvTGYZrHDtvEFXd6bVxvdnwtgFjJDDCRCkFbKAnWcFhO2gx4hgBFDUGODBv8kayaqPthFEqH999QE6zflWpMBvRwWA4+cTjjyG/xrNuv6t+788/r+XSHe2Mprs3BxYaY8BblVHAQkftBCYJ53gMAfqZ28JGzVaLJT2TJGlOYEKJuLayTiulcrpfau/SKyGE6A/70a8ZjIUCa4KMKCDNu25eqQHBcwdHB3RgD121hAkWjLDMUDlGW+ViOJB2ribmXKFC3lsGhJ8+sjqJ1IBqd9pOJgvwdhatAok6SC2RWvEpVLPTguizS2pjgZAiQgolhCQyYRE/cB6+tX4tfLQajKSSigDUMxfCp7bnpxohRJiGEck+Cmvzw80X2u6icAYwmUnniQ+4VCyJG2vroc0XOH+OGkfssFGfn5fAw0gz3l8PyppSFM78h8dHFJAt4nzyubyolira3qlSocjfuP/Au/MUI97pdF0HwYahM8jKBmqrzf1d7/KHIZDGNm1ua2wt2qbmEQr6rIY/4geuMZ3BGtHOYvy9ZQ7g+OfAmwQQ/TuIHk4QDjrLtUVth3Vvg46+tFJKtjpt0mj7h8uFqFR11vk7gmfGSAI4rOMg1vBAFKJKGg+xhnEFaQIygh7cukcXKjWZsywyK3xjlFL56M59Usr7M+pyzuUXv/Flsnd4EES9WV2fGjh1BEOcRujc4YZh+A4U8DO8BMNAa4V+hovq0B6iVrul7ZLoR9+e6iQMEvrxvYcQEOFpCLNQGCMsIBOpP+xHCq2XAsjnV6YXAjaAg85LZv2s7PE61zlkH0C2pc42/bZ1kl1m4Qyq268G01uPC85b7bZjRATO7mK+SMLmGU2vti6XHHTZ7nZcGWSd4C/AC1NIcSFIUviCwZ5wdWUNh228E0Jwm/PoA65SuvgYo5JRFkkAOdhYtvZ3SH8w0KqteeIDZoyp127eCfUgDQGum3vbyC0ai9bJTHhjlUIJsYz3V9csyaNGncRNUQZ70+riipZ3Cuw9Tx48Rn7hwQ+P61MCvXSp/mI74PxtdtpoewadvwghJwM4PO2F2/K8QkGf1ypMYLFQEgvlCs3uld7XXOYA9q6zuGvEwicHkaHlQolaphn3+EPvXyElm60WgShrbc9pVjBCCpy1AOEAt3IF5pDAUNEvHcuYRwY5rU0x4TREKOX3rt1kV5bXeCGfd2UsCUcSva3CuO5eu8mWqgu+G/7J0/fF1777zUQYhX0PIuUVKSEcYww8ZKEdQuEbwyjY7QUSAAAgAElEQVTDUV1QkwoDrRn6WXV6XdxzCU2btGWahGzgYr7Ab1+7OTPfZH9z7FARyv5gwKS6LJPLX+ujWjDfQsj0QV0hhDZ2t1wPHsZJydwiY43VExgJTMPUCmfnekLGFMQYc8MwmF/0kiB9Z3Xj1QBk9YyCOeBdBUQegiPxM8U78BB6b3XaSEgf2awYcaQQg6w+LjiLky+YECzWllZo3sqFoCEk4JJt2zbN4J7dqxe+z4wxFmVgRrPTFvtHB1rvouDAKeQKc4GSCQ6m+zdvhx7oK6RUTzefAX2I+wU1wyUxOeX9DYl/eYZVd+nQ6s0GqjePYx0+7E2VUpUGpYyD4Mub61fp6uKyr/FwzkW92dD6bXQrCFAfwplt+2Avlv7dyhmgnLC5nd6xYQyInyxzejoBpXAYprVyxg/s9X3IHMBeNRZ7eSUHw2EsN2fTMHmtXJlpwy1knjRaTQyX7DCeEUcwOJkdaOiPLLUnzlsfUNEjZ3KWBfzRjMEh7tb6DXrvxu3I+VDDWDdnDPry+to6ubpyxXc3Nufqv3zh90NzPPoWbM4qwgTARRIu8UipUA6jkG0DEf1ROIHB4WCZFkkSV7xu6GfYF6KmYND9WsTpBCaE8CvLq2yhUtM9rNS2B+tJNxwVRogrhCGDNpTvStjKVkqpzb1t93sUxpwSwjKn0kczA9/+vGUlCmrXMAxpMCOW+0vYazZrf5wGsIDv23m+2kqxDIabTGUeNeAl+/fSpoESQCkqleRCSBa1Ywe43FZqCwwoejQ+YAgktm3jDO7Zu1bhXGgaRqSOU9jnP9h4pvVDAPcQSg05D3zAcJ6+urLGysWS9wn3VkN2+l25ubs90/Y/NyoBh4NBGQQxzb0u3OjLS5lmty0Ojg5jv7NYpsUXKjXf8wvf0mq5LB7evuerDYUQb7fbrB8x3SPMFTh/G+0W2pld5y9AZgI4SOzrzMu7Ma7svENBn9VJxg/sfTVlDmDvOou1BkTvDu2Br01Fh+BLtUUUZYSoDpndtgHOguNmA7e7HbdVgpWblLl7Et1DAbrLcQ25gXeOAFI22GDH14YNDP7AmiKEnv4c/T/8pM7vR2UYMwSjVDH4e+r8HkNdTDAmmGJCgHYZOzCDjVYT3Vi/FobYsba5XFvg927c8f0NsAUXX/nm1+mLHfcZVrEOeMY7d2ChCYZUYICM9z2vk9QEBhFGDcgE1mpoGdefwQxuGob2MfhcAtqgn2FvaLaaDofhTDwxQULDWn/t1j1kZLBpZ5cRV0ri3qCvKWMJC+cWL2VS3kPPrwwXQuwc7Hq6oFNKFcEk9G+c58HEVAEUUUoQ/y+ogVLKLdNK7bqMaSpT2y1cXuAcDj/PPtVSJbVjik1wjFSr0/YEi+9K1pO7IzhNcVQQ0eBEWazUaLVcdiWim0KwZ0DWr5uyWZnxGvALVepXn1JJuXOwT3Qj6sD6Mo354ANerNbk2tJK6EFVcKTcrx/S41bD73TPRD2H97dUxmBpyh69Guj0unz3cD8R58PVpRXkN6AUbJRPHr6O/d5z4bx0UD/Sq1wXrcE7ftxu4t2D/dC/Jy7ECa0IBLz5QlEJTSJ/DcM+R8Bwnj0vNXDCD2zKhXI14weesi4yB3DKXhypFLftYSwbJEAEFXJ5VswXUqa16eLChgvwI51eRM7fcyKdcjWBz/fixjvKCh45jKcPR2uJkRP2xEl70Sl79u8gMpIyKiklAMmIqOOkZeCaRZiCk5aMOOAcCDjQu2McwsBSdcJXBU5vhAAZG+AdnKFgqImQcn8oUUi0ex1sMkMuLy7F8r5onYQzjRXyBfGx+48CbfrPdjbEX/3d3wZqI6zxzWu7hGDgBne/xj0oCg6KlDJwvIU653A5zlu5RNyMNUE/CzCKNloNTc45D5MWQdGos4FzVk7cu3E71DUYgdpC6wK4peFPkCdtfL/jxjocDvle/cDTvg2oH5SE+30LMi9R100S/+9o7LA/5BKyP0Q9H3PYH+/1e2wcx2fmAPa+GgTwKLvk/vXeunPLgsAhqhQSXHAaNkR0tVSWS7WFoOddKZVSGdyzrxl/pRLQfJmGEfnZrN3thOb0yefyocMjB9d8sBYs0xJ3r9+MbN6e72wg3bzNwTQQbe1KsTTzaypajX7UW6/f59sHu57O/WHICtmE5UKRAZ+41wcCUe9ev4kXq/5Rrgb2kDdbrUj14Dh/m028ezTbzl9Ax+JSRI564nUduSqPMScYswxN56K2HH7gYkkslDJ+4ElrKXMAu3rLklNISCl4jNj1lBC1VFtMhIFf16yAp/GoUQeYMl1N+m/HrZP3HFQ0o5Ap+1EG7eSsWoqY46BlyiBUnWbROpm0hICf1cmjBWhacMQ6cFAvnbQnpMWQqXgazj9y0kLOrRMOCZf5xKwNcOhD0EIxn8dLtcXILkj+J99dTYMx9YnHTwLpGSLgfvcLv4+ihn5zN8L5LeW8RIRwhBEZGwwSQDXwLkBQBvAwBmjm0qpJgYHWBP3Mh9xGzVYzNH2FNQ9e2o3KCYwJFqsLy3R5YcmLePNWliukSH/QJyPOTNcKwEhJAVFUr2bbua6foIKdfk/UG3VPe/aI8zxBw4hNFIzRaQaUEZsMkzoGo3xmsEjctGgXyEFUajQunFMhCKBcKAU6v2oXNvkNqna3HR208SlfMASccxGOsbSQL/ArS8t+z1YAxUKHtq0/Izr5ayEUCRljgK7lac/VIQh8Jz54oRcGeiTXPPABw1766M59HVPhqg1b2PLpxvOggRuu+kpSoYz3N/zZGNgDvrm743dP0CqgwZhYqi15+h7CGlmu1tTdG7d8j0EpJBvtJlAZaB3PZY2B8/eoeUz2jw7n4FyGBRc2nYV78pl9LrtTjVngGT/w5Z+QzAEc2SdWT0dgFOQiPhhKiBKtFEvUNEw9A0pAK4fHR6jb7yVAEn8i/Pbnfh0929kE6GMngxb+9YqTFjy5jjsXQRrtXBzcpZTiuNV0Dm+wZkvFEl6sVGdm7O+++XagDR+4xL7+nW+x91986G/RZbVC1YADC42xAkO+TlhocAJDcIhpmL4vKNMGbjAjlkyCM3IFhn4GjnaIcu90OzPzzbh03iKAhIbgsdvXb+GcaU1bQtnvMVLc5sCfyWBPv+yBiGaJEJZCejJWJFjJzt7d7rY9i2iw5Dk8PQ9CQwWH/zeXI0mja3GgOU2TJoknXoO6sybOaUAhJLrdLh2HZpA5gL0vFyEFb3XaoZ3ZppiJBKAvCbhUCUGlpgAjyFy8trrma8/inKOZoePwvhy014B7AaM0Dv+vw8e4d7hPOyEE4ENQGCFUAHKddqUlpEGAvLx55SqBwKooHqCha3dbaPtgb2Z1el6PDu8vM1QpX5ibMUexls73MeS22NjZ8rUn6JYXzimL1QXMqPspN01DvfXwjUA86lJJdVivR+aIlUrJo0adxAE5rXvO3LQHe4LN7ZkIlB6NN4OCnnKCJYRTQshCuUoKEe2TbtZi3GUyB3DcM+Clf4yd7F/PmSFe+nBR1jRMXitX3O+KLtqMq8hB/RD1Bv24uh/bLxjKDcOUy7UFulCtqc996jP41vr1iTJKJdEXv/YV1Gg3EzWOOIXpDwey2+u9dN5QQkS5WKK1SjVOsbT0DRAzb957iHNWLlB7e0cH/E+++pcz8R4HUkSCK586grVKGLYTOG4Y6KDQz+Bw63a7idsXtC6CCY2FmQ1sGEw9uHU/sottFPoKsw+HExwh0h/2MRi8xz4YwfavpJwZ5y9CSPHDxjHzygsIwTIAAZ1llzpBbwqQT8Jcn77adgypjGaOel/aS00lQKpqngZgnhc6cwB7nkbV7nZwnIHfLyV2qHqQ4kKAQ/gCt7OXkTHG1M0rV718o4AyVg5sm81S9o4XnYVVFs59pmEEclwEka3T64mdg91QHD+zzgeMMREri4t0qboQZAo81QWn0d7RPmm2W57qpbUwONlrpcp8BAPHOEm24PLF9mYi9AzfjWK+QEuFkiuNQGD9g1t3UUBeewhep91eNAlJjvP3uE4OjqPnG3al1JAK2Ty67OqQhvBqsxkUtCs1w3fcMkxZy/iBHX1lDmBXyyYxhTjnnCWBvHy5tujwwab1gQvkwfFhorhMwHBZyOX5Um2BnY1SKRYK6j//+m9felHePtjjX/nWNzJnnrMglWh1uvT8Jg8f/2qpTKrlSlqXrSM3OLPv37xLawHHAe/A7/35H82loyttC4AQh+sD+Nm8GMwmDxNjARzclmlqN7rECQMdFPoZ3olWpx2YhzVt6+usvGE5gZdqi/LK8mp6Dw2xTSqYvaXsDfoXDN+zwPd7Xq2Qfb9/dEi8ciHDd4dgiPPNlhiljBdyViLPg5QxYRn6953YXs+s4wuvcKvTnhi0AufwcqGUvaQu142QQrQ6be3nNJfdjy92SlUE2YBcgE1Cem4OAgFuX73u5jwL0U9kaNveaRE8SzW/FXJWfMgscO5+uvFsCtZJsLmZZT7gYr7Ab65fi3S/hzl7tv0CDSOEqg22AvzXrhTLCGjWsidcDQgp1LOtDTd7QriCnLYOyRYrC8tT5aGE8NWlZXpz/drUspcJDu8UUNdFkeQFzt/D4yNyeFyPRJcJ6sTJAE6QPNpEgbtvFgA9XZ0w+aViSdTmnB84cwBPXytJKiFsbtO4eTtPeFULrzgpk6SkabLAJrtfP0SD4WBa0dB/D1B9SilSLpX5UrXGxsFjMkr547sP2M994qcnysOFUH/zT3+Pdw/3Q5c5DR3AIWpclLgTyVmukEqpnIZhjJWRYCxurl+na0srgcYgpOTf+v532A/e/0mgdrLK0WjgNBtYYoSkQij4Zd9xmBBlGqb2rLmYYKADQT8rJVWj1UpGpk00S2pyL5ohoSml8saVa6SYL8Q9shT3r9BgOERc2M7WJqUEzodZfNT2wa4vbkfgT6fEA2bbDGoPzueWYTDDSCYcNpzBclYucwDO4NqDIUGU8mVwxZQyUcoXMmu6i/mHYJhur0sSDXd8yhcslORCSObFPnHn2o2JBstRIBqMfSIChgsdZkWmawBokkzDiO2dBBjo/aMD2u52pgvrs8Qs8wGDo+rBrbuROzWG9lB8uPUitnXjcym4roYJlgUzTyxzdijvXA8+hoJKKfV083nk63jSUE/shVUyjfIwZ+XExx8+DvweCC6AizdwO9OmznH+1o/IYWPunL+gGsePMk1Hafw9Jk5ix0yOTfd8QIY/xpjUShVcLrrL8tctQ9zt4XfL/6eilCL4kz2J14C0bZsA5l/cD6VELVUXE7NRu9UHZIjtHR5gr9klbtt3Ww4TwpFSrFauisVqdSoknsGY+pVP/wK+vrY+sYtGqyn+7Gt/PfcvslBSNprNiQZGuAguVKqp/uhfWVoRt67eCDzXx62m+IMv/Wngdtyu+6xccA28hIXGWCClAs8dIViahkV0Rg7GAQMdAPqZcyEwQFYmYW8NvkL0taArGxgMVI/uvJa684I+TfpvybmoIKQQxhD8hxvNJtKEA+BfqJBrbuxu+eoB1iujbK7XGeigkMvhJGdCF7JAEF/rOw2Vmq0WugylCrLTMy5FdzMplBStdivwGc9dbxpKYSRhp4KMYDhTXQbVDGfE62tXJnEsOrAXQ9umGdyzhnmZ0gQEmTPGggeVBhC1N+jzrb2dUGU4QcaYPT5gsMfdvnoTmxEHfQECQKPVIHv1g5kL6IJAOnD8FWdwvQR4TUOt6iABbD4PtQ+vjedyeV4rTaY8hMvG6/cfolIhWHCzQoi3O23WH4SbmARO9v36IT5qHHtVxUyUh2AjIXh6zlRetJ5BQXvRllMWsvfhsjyP/MD447nf4BCCqaQC6DTJmKEoIZQSmmqIX8+rIA0VMFLD4TAR5OXgNKgUKyTqA2eQaZJKOs7fOPH/IUMFY0zBAblQqSJ4z9w+5WJZ/qdf+62JB20uhPjm979Dn21tuG1yJssNh0PR7nUvVSw4u5ZqC6hUKKZSB5VSmT++81rgyzLwin3+y/8DNVoZf3TaFgLAQmOEA68BGDchGHjHMcBC63iihoH2C/2snGjQoWq2Wlr0qEN3SWtDhxO4Uq7wG2tXMx2PmVx4VzDCEmFElELOC0gJUYxSyShDjDEK/00IwbsH+7jV7cAdfmadnDC4zb1t3+Obd37ZxPL/nq59QL2xTCuD6k7ahz64PAIQCrpTzt6MGTwzqrtStsMHGOd91ZWU4wqd7GkAbwVpwVQKcQHeF+xN68ur57PruEKKDIc28ZJJ7FvOrCKY/zijcMRwb4sIS23g/Alz3mGsBjOYZcYHdx2G7sCudGV5lVVjQDaD8xogtoSZvR2Gzqa1SSmR1WLG+ztNTzp/n0QHMNgK15ZWxw6TUiqura7R9ZW1wGoAMKfD+tFY5MLAjZ82AHCTB3Ps/AU1wP6SBBpNXXM6rp0MCtq7dueRHxg/sX7jAogcHJLABuVkGhEiGGHO4TAJB0Tv0zpbNYbDIVKhMqW415dpmpdGRrlvKfySkB22e7Q/kZcqbAkIJQDNQJaqNbxQqfnqjlHGnzx4TH/myTsTjaPdfl99/stf9G089SVYsirxdrfD3PDSwPdteWERpRGW1DQt+fbDNwJ76yAa7rs/+j797o++n6xZzKRxpQF40TEhAjspgcGygR0nMDO1ZY5FCAPtF/pZdfs93O11Xel6rgs5Z0KJkcKerYSUEnF1dZ0Cj9Y8PuBAxwgB3BBWCBElJSaUKkYcB68yDHDxnpyvweFLX+WwdSgitvZ30db+rmp3O+rqyhqGLKsht2dSnRDItnOw63mdgTLAmU4J04pmkDYlM8ZE3rJ86S+KsTpGeFj0843UHYWqI+0DjLcQSDgtY9M0TJ63clkw0JTZkUrKZrsV+Iwf6SIY19kpRLRUCj7tL/mCwWm1srDEivk8IFpAfDYBqGcuROwiz5MAEJBjGAYhOF6zgVKK79cPWavTDlX9cAzLWblJmeeh9h1m47Vyha+vrMXyXT2B7n2GZ+ndrRbLmc07zAU7oW0IApl2hohSLIDVrRYrNGflLnRbKhT5G/cfaHnnBsOhaIaI9gHv6N7RAQZ6vHl9MDCUSOGJpiKNusqgoIPNWhn4gcsVqishJpg04dUe6wA+3x3GSGRZwuFNgpeWk8Bbe1ZecKAl/SURUsi9w30Sx+EUogghy3eptkCqpYqXqR5bFozE//azn0Pry+MjzrgQ/J9/8gP24w/fD9xXWhuYxP87aTyrS8uokMunarjgvH73zbe1yNztd9Xv/fnn4739axnJ/DZyEqyFFVZIBOUHhuh4HfChIE/eyoe+rvxCP7e7bRQ23NKsrUg/2cCwNh/ffTCR628WdETAQX6CoQ6ZSxgg+ejIwQvYiiPnrvPTnW8OIpWPW03+fGeL2ZyLgT1QwAd5/8YdQinlzfZsZq0Ph0O+Vz/wZ1TBmFNMmI7vVxrXpcP/a5rMiBfNc6rqDMMU4AKeWjArkBYN8F6/5wq+0DItkTOTG6CQBIUDMkmv16UzF+QDtCVIESGkFELQxdoCqhRLCDAZbc5Zkgz/SVgHUcmQs5KREdu3B2JzZzv0fWEW+YBNw5D3btyOLWCkN+jxFztb/s5tUS10F/04vL9WnlhGxvvrQl1ai8D3//n2BgIKgSQ9kOy0WFl4ZW3Dde/Jg8dIx7dTKeUEe7lJXPGjl8z5O9IaFlzMAa0EBi5g7CRxZo93DcwLP7ArB/A49WVZwt4XVeAaGKnBYJCYNxrWQDFfYIl1nmGkOOcA+0yihnwAx6/BTLVUW6BlzTDD1XJV/s6v/ubEg76QUv3BX/1ZbNnOgdd5gAYAcuy42fB8CVpbXkH5MRF+AUQJtSoEXbz16A2kA+6Scy6/+PUvk72jg1BlzhoPXwNg2MAaGEJN0/QETz/hjOBAfZ7LaNSqBJ/Qz6rZbuKwLltaB5jAxrw6gYuFIr999UaqDUNw1oEM3pGDF94zyOAFR69pmJRSik+cvCdZvEEeIZXsDbrq+fYW7Zxmp8M6PzquQ3a+w6VsUIYOjo+CdJPYup1eR9Z97OGjARFKOMUBJyGx2pkuWLFQQHFnc02TklCaOQGnKSlFvwcD43Gz4epuCgFmuRmDYNU9VTOT/TtFMZBVBQhMYcL+6p6bWWsP6LxMw/R8Zw5LDx9uvYCAgLCaf9nuLPIBP7x9T0vwrh/lKyXFYaNO08wt6vD+miYuWvnQgxD86HjW68A54sXOFgZqsqQ9q4srL98tgH6+uX6Vri4uaxETxn1QP3J1fvLaIbS9e3iAj1vzm/k70hnYLmxuJ4JG0+s8+imfofb60dpHdUb8wIvlKsmnLEnMzch9O4DPN55lCbtRd+AyajBMjgMYRkMplUvVhcRcHs5oWNoCnL/7NMrLJXD3WZYllquLrADQViE8BmP87Udvsk++8dbY1qVU/CfPPiDf+dH3kjgvIWjkoyaHti3a3Y7nw/sJz8eKlmi+UAd42jijVDy4fY+WCyUt3f346Xvi69/9R89609J51ohWDTheKkI4cIqiU05RPx2YhhkYAitkGGhv0M8Y7IwSYCpJFAYmPzpPTR2XkNCwDteX11itUk300JyITwTAypDBq4CfVFGCFaNMMmYQRin8cZy78DOMyFqAyLQ5Jy92NsmrMF1KtjptAvya8Lz18E3oXzQ7LTr6u0Qr15tw4rjVoEH45CCDgxE2d2cfUHPS+X9HSwHkBBhOb0sjK51EDUC2arfbpUP75Pt02QMQ7ZaZy7KrLlGSk/3b77nS5zR9J/n3gIxVLpUd8pLsiU8DjFIOICXxSXCmZ6X4wfERa7RboYvjOPsMk5qGORNLEIKqrq9eoXFSWkEG5+beNur2e6HPXxgdgGOvWixndpAwlOuiTciE3dzbDi0T1oUIY4tgTHipUGTwboETsVoui4e372n6ZmLZ7Xdxp9vV/h2SSqK9wwNAkvI79JmrZ88oddK4icqgoPUs35f8wJUqM5mhp9EEtKLNATx28WVcwpqnWMnBcJgowxZEj1aKFWIayXkp4AINH3lw/kYBKQUcOmB7KxVLfKlSYzogQaYtHIA4/Pe/8Kvosgi0L3z1L1EQQ+o0GRL4e9f8vxO+V+jK8iqyzORD/xBK+Z2rN9hybVHLNAy5rf7rF/679gOoFuGyRnxpwIGFBv5RjIRSyNdlJagTOEwYaI/Qz9wWHDVbzQxm0NdqGl9pWjYwrMEHt+8FzooNKjI4HjDCEhy86jQoAlA6IIvXYAbwwdGXPLyMRkproZQC2HaysbOFd8+jMGAsBsOBap3CPVNK1ZPXXne+0za3+XGr6eu9DqrP8OorfnhcZ71BP1AXOpAxAgkQU2XDMHjONFOxJiCiOoxAiphUP7fdCilEs9VyZTQHp0vOtBicK7JnvAYA7aHRas70WdwJVCkUkcGoUNLf2TRbP8E1AO8jo3D0cfX6Bu/QRQsDbouN7c1IBHL4gM0cTor/24V6JhYBO9RybZEALVucj5BCfbDxLHVZdnAWATh6CEzJnng0AMgX2/t7JGlUh6ANxphcri1BILB68vB1rJFmRdUbx9r5s8H2vXOwjxrtzPl7ZjU7GcDxrO7oez2FMs6goDWqfpb4gUN1AJ/XeZYlHGwVKoX40B4kzrhjmRavlspJkYtDJPru4X7o8mBCuJKSLVSqYqFSo1E7wZeqC+L/+OV/N/G0urG7zf/22/8Quh6CrWp9tRVSqNFqBYITgwzuteVVHPVcetUCXFyvrV7B11bXvVYdW94WXHz5H75ON3a3tLSXNZIcDZw6gp3IVaUAIdr9A3UYY+Agc1/pTEkwSoQBA+0F+hkCgob28KUTzddAskqXGZ4mrqu8lRN3b9wO3aIC6xQjJF5x8EIWL6XCoAZijL7CwxsmLLnXpbJ7tC83dneAO3hcVXV4fPTSmGaapnzj7sOXQYAAAx1FkJvXMfktr5CS+0cHgTIA4JtDCSXz5lw8ca6ZiUnmumwNgGHiFDrd71LJ6iVDA6rVabumm4E1mrdybF4DNFxMGe/2e8xNNrWLthJbpFQoKcaowhjDXiaDINUkdpApEAwC4wxmAOJJYqSF88yLnU1k82hgYOGcUMgDbUJydOB3Mgq5HL8VP92K6PQ6aHNvJ/Rzv189na+HCVZFK4+zwCRdGvXXjlRK7B7s0aABoP56v7wWBC0tLyyhB7fv4qXqgrYuhJDiqFHX+q6cOH/3UBRICtoUEU1DkBymVdfRiB2slyQFeAUbSfy1Z4kfOFIH8Lipy7iE3S9oByLQHvqzxLvvxlfJlYWlBETzKw6QiHtHB6HqCGAtMUJ0oVLDC5VqYJhUXwpHCJnM4O+8/oS9/fhjY5uASMy//ubX8UF9NrkCzw9aKqmOm8Ej5yHL6sryqs4IP79TfGk9CDx4cOuetsPM8+0N/qW//9tQ351QFJE16koDlACPKQFUBO9OYMp8R8mbhiEMZmhbpwghL9DPqtPr4l5KIclcTWwSCo2BhAb4obXFFbqkCaWAnPLwQraslBLDd5oRIhk1wJgM/5xy8NLY9mS3UwF7VavdFc93N1h/MJhQDaCfO69EwxfyBf7w1gh6TPFWt8v6AbNl3cocRbmR4ULIAByAGHOKCUuSUTsK3UEfpYIDURdVd777AccDQKtnjkDfKkxERc45b3Xars+MJw7gPNOYPZMIPWgUQh233HEpa+wzsqZGGZcQyATOX+dThZFEEqXf+xaZFvV2FAVimUeJHRSQKDkrIVCwkCvovKN4HLKe4rD3P7pzX09jAVoBVJv9+gFNA/Qs7EmWaeGClUv9/AeYskRUVUpxsN92et3Y5YEzqgLUKAQgag5yFM6ZFvqlT/9rbbIphHin0wmMeHRWILhDbR/soWYEMPraFBFRQxBgIASfu/ccE8wJJq7P6RFNR6q7AX5giJxbKNdIPpdL5VhidwCf11qWJTx5HQkpBU9g9AocoEr5AouVJFudOn/r4Tl/CaGcEEwXT62320sAACAASURBVB2/STC0wf35t3/536FJEWlHjWP+P77xlbn48Nu2zVvdjpaxQnT6leU1DLCgSX3yubx48tpjbQJCBtrvfuH3A2VQJ1VXmVwnGjjJBibiJBnYPfSek1VHqS+DPUTO5jXyPXqBfm512iiJcFKzuh7PZpmDg/bOtVvYLaQ+nCPwyaZ64uA9yeCVjDLHwWtQ5jh2R47eNOpQSgnZ6OjZ9iZtdtqTh4CRhKz189CqtXKV37l28+UeJ4QQR81jbXtA3DoFFI/N3e3AYhBKBMUJ3rwDj/BiA8BTVMznU+NIAe5J07S0nNdCUGfWpAsNNFst5CVYA2MiCrkcAO67aH3uivDeoMdmkNd9dPZ0sv4t00IYI0UIeRmpghHiXs6jc7cyQhowULQkkQPXFrZ8vrUZ2V4GZ0/DMIhlWJH1GcaUUkrUrfXrGN6xJDzPtjcSf/+ilIlqsTQzZ+gkzLtvGcABXD9kYVLXOXdUpCDC1LlrYoQBRQmunvD3EiGswOmLFLqwJkqFgvyFn/nftH4jIEFHF4oT3J+293bRpXdL35OT/opg4/RyXk3/iE9HgLEgGGdQ0CFM6IgfeKFSTR2yUeIcwOPmJ8sSPtGKEAJxEQ0sjtf3hFEqF6sLWjdG1zIoxXvDPjqoH4ViVaBgTCQEL1YXSa1ccS1WVAVXF5fFf/jFXxt7gOWcy7/752+TOYD25Z1ulw3soTa1A+fH+soaSRJc6NnBARfJO69/XFu6Dxecf/0732Lvv/hQmw6zhpKpAfCzgYNNOfB7ytXlF6BPKGXIYMxV+dHIdcJAe4B+dnj0gAs+e+LRgGkY6rVb9z4y8mIsMFyusePgheBJBWsQzg6GYTopm+AYOHHy0lRkMrrVLKC3SCnpi50tDLDNLp5XoJ9H5deWV9TV5SsvdQoX/nqjMTOXWsiM3trbCbynQfY5I96+Uy7mJNFFTMMUlqkVaSHU8cL7n9MYGBSqsFnj5zUgwFHZ7XW9nQUIlkWrQDJIurELamazf0/PjqqQyzOHrgFDWtU5zF2VvWRRa4BQKkyP5/koZIRz/sbOFh7a0Z3fYV1CJmiaUSmAlmxtcRloyaKYpql92NyWTzefx2MXnCrdSUB0pViGu7CL0lmRCDTAwY7b7LT8deUgUTkbCTh2Iczdcewix8V6ks07zrHrtjNAFfrFT30G6UJNGHKbN5pNbXbrzb0dBEHv2XNRAxBkxqVgE6iW5kJl2bk73GkuF4uyVq6RE2ib5D+pcACfV+NcZglj7GT/ghM4iQ8hWFZLFV8ZYkHGA5AO/UFPAWRQkHbG1aWUSIMaaqm2QMvFku7mtbUHEKvvvvk2ffLg9bFtdnpd+cdf+YuZPuHC8Q74LnRv7mBUXV9ZTWTkFGwxn3zjLaQT6nL38ID/6d/8pfZ3SdtizxrSqgFCiAA4e9eNYiwg8MBghqc1ogkG2g30sxBSomarQeFn9kSrAUIp0CMQIQT5zCd/Bh23W5IRJg3gkYY03lPnLjh6k4CgEYF2pFKKbO3vIvjj5oEo9PY56GeoB07NayvrFOg2zjzwTtDujECcAxc9cIC50dO0Mmk25E4b28U7ERE5y3TerzQ9wL2YPenTgHPebjU9Z65AMFgxX0xsUGWMM8F7gz6bVbQSQqgoFYrOxwmgNTF+1UZ2ghziPhgxxnmana5PzvJJ3TPEUeOY1pvHkerb4QPOFbTeqSMdAEKoXCzx62vrnu5nYcmoFOLNTgvvHuo50+mUE745xVwBm4ahs9msrWAakIeNOoGzxdkHbP7qNDN3BMc82kvAuwtZu2DH8Epv5VVUxhh/8uAxu3HlmteqF8oDTHqz06bDoZ6kFUBOanU7geWa3Qaw4MKGNTK7Q5wysgwKOtypTxs/cCodwOOmcA6yhDnnNkuyUTtnWbxSLEd28IQNFAyfR426VqsXwOhYhiWWagusmBIDFVxc/q9f+U00LkOZCy6++6P/Rd97/jTcr1+MrUPEcL2hnzsLjBWmYar1lTWta0yHqihl8vW7r5FCLq+jOacNOBz9tz//IzRLvJLalDOjDTk0bCeOYAcSadowYa8F+D6A85tWdvR7HTDQLqCfOWT8Nlr6Imrdjm+eyhGCBSTvOI5eKcGAovJWXpSKRVLMFRw+lGK+IO9ev4Utw1Sbe9tT19Qs6g+CkY5bTf58Z4u5zUSHzKiBbYvmmDUMzvVbV66xWvnV7A4ppWM0mQUdDoYDvl8/DHyGBOMeJRC3lY5IXB1zlxb+39FYR8gQOgPYdOgxa2OqBniv37uEu3xyfXgvS4UiJueSP6f2OPsFZjb7F85+hVwBj95zWAMTUyTm1zYb+QoHYyWg+ST1+8slV882NyLfwCEotpg/CVZI42Mwpu7fvBO53ibpCsiGdg73cJIyE+EOmzMtkrdyM3FuTuM6fUVm+O5j5dAAAEXO9sGeUkoCBy+k7AJUWWLm6cryKv/pJ58IfEdx0MyOjrS8pxu72yhM2OzUr68T+jNlc9uJNJvbByNJnOA7LctubtU4beAOPzA95Qe2kssPPDMO4PMTMoNZwsLmNtWd4ThtIXv5PXApLC8sRpLZ42TJdDv4uKnH6XcCE4JwsVDky9UayyX4pZ00J+vLa/w3f+FXxh5MbM7VH3zpT7Gc0c3P5jZvdfTw/57XL8FYmKaJriyvJupSSCnl967f1gr3JITk3/z+t9kPP3jPy6uflZ0BDTj8wAQrrCDa9nJ+4FMnMDIN09VFKCgM9DToZ9gPBoOhanfbiXpH07osToy0TlAAOHkBmhng8WQpX1DFQoHlc3lUsPIInL3jHoIJv33tOluuLcqdw31yUD9Mqyo8yy2kkr1BVz3f3qKdXtdrfXXUqONx5zxKqbh3/TYdE5Sm6q0G5jyZ9CBeFNDqtmWj1Qxu7MGYU0LYvDiaIMOumM+l6tt3yrsIuABelkhWNmYNgEE/yL0LIDczA9Qrk8j7gz7rDwcxz2w43UOW/+gdnwj/fELImPEAhzMFE1vVBWUahthw5t/c3cFRZ8Wf7EsMW0a69tPRHMC39f7NOw6NSlIecLp8uPUCuQ2EDFtuRpmoZLy/Yav5kvYVXFYo4DIjhxrIcfI6XimgrdurH2IhhRBcMKC5SdJjGIb61Z/7hUAeNNgHe72+bGmwVwC9X7vr+Z6ZJJVGJktSvj+RDXhCRxkUdDQzkHR+4Jl1AI+b3gtZwhTCH6nDOZeCR9q2TSRw1Cf0Af2WCkWWD9l5CqFhzU6LNNs+eSLO6A9gFZVUtFapisVKjaYZDgbgij/15B36xv2HF1aIkJL/8IOfsO+996OErp5AYvFOr8uAkyysh2DMLctCa0sribFWgmP6xpVr9MryqtZh11tN8Ydf+tNUfBS1DjxrzNEAZGycZgNfqhGvTuAAMNCXQj+DcaHb66LeoJ/NoEcNEIhUJBhLecIDbZmmLFh5WSqWGCALwF4OP72ekQiB4JSbbKm2AKgCCrhvj1sNj9Klqzjw/Nqckxc7m6Te9D7WSdDPIy1QStXD2/chq/oVxYAxodvvqna3G9xxGqPKFUKi0WpQXZHsoC+CSSBDTYzqcN01zD+cW03DSN1YGTOEaaSHt9j1pMxoQfhGdbs9Alk6fp9qqeK36kzWg/MLcB7OWmYKJlhahkXMM/vVOPjnVzczBEDQqfuOpXFhQrCnaZjJ1TVGqtFsqoPjo8jPNaOA1TTSSMCZ/urKGksabdlwOBQfbr+I3a4A99tKofQSkSCN726aZIZz/UsHL8YnHIbq5L456QEuW9grIPMXaA+FTA71ocGY/NRbnyQLlVqQaVD1ZrCgXTgvQOavjyDjIHKnua6TAZzmAeiQ3Ul2w0gQTBJjy9YxrqS3US6V5EKpmqjs67lyAJ9fIKnKEsZIDYfDxMMXMMYcR2pYLyNEhTZazcBwMnBIVkqBgVrVylWcpGjJILoDOKff+Te/hcqF4oVm4MDwx1/5CzQrfIFnBuisibDh0cEJnMvl0OricmI2zpWFZXH3+k2t7xsXHH3+r7/ocCpnz/xqgBLMEWD9Xga/hLEgGEMm8FSebL8w0JdBP0N0cKvdRkEM0rM+w2CIJZhI4EjiQjiQzTkrL4uFIirl8/QkkzcPzl9tqqCE8tdu3X4FrviDjWczCVMFVBQKIbKxs4V3jw586RAuZQN7OBb6edQg3FyfPHwDjctqHWXI++o8KZWU4oeNOtMVyAFnPEpmP70U4Pvzpkm9BmkkYdoJpSJnWlrPL0kY16zKAFk5zVYr0HxlDuBXVocY2APS6/dnyjAJwYGmaRJwAJ8d7aXwz1AQHASnwWiz+g4lZVyUEm4wIzF32XF6gbP/083nsb0bxXwxlXzAi9WaXFtaidxxftnaBj7geqtOD+p6YG/9vEcO72++gE2W8f760Z+LOlwhdWIzAK53BKCDytM3BoLMDut1MhgFmWHEoT0uOEkCAiYhWD64fZ88vH3PhTrGFxFSyqNj/7Q9mfPXl+odFFVfNWes0keBeLFtrTOm0enDgTMxxpjWyhVcLpSmV4igxFw7gMfpN8lZwkAWnzQ4jPM6hKjSaqmKDeZpz3e11B3nb7OJW922q/LjCoFREF7CpWoNQwTXLEKR3Vi7yn/9s58bNwHy2dYL+Y3/+U/6J8f3jASvGBb/7/j1gzk4TJYXlxKhw1KhKN6491DroUYqJb77w+/R7/74fwWfnKyFVGvAgYXGGJyHchIs9AjWzzSsS6Pb/MBAXwb9PAoGmgXoWx2LBDhiCUZECkBvxg5kcyFfAM5FNoJrhmzeKPY8Rql4cPserRQ/OuhCJvB7zz/A/cFsQV3uHu3Ljd2dQMYJuNDXm8foMgMHBHd9/MEbk5aKaLSbdGjbOpZSLG0Asst+/YDoGgN8lxhlc3HDLRcvBvzFMokeO4WgoJyVm4s58qiaJBZXrU47ENQ8zHe5UMrm+8zsNtrNmcr+BW5ZQig4Wi7ckcB4jiGo8JIng4KO4NXHWDBKadID3+FMsL2/S3QFhXnVbFr5gC3LEnev6Q0M96q7ceXhzra1t4PjyFoE227esmjOzM4bOuYSIYcqysnmBYcSAhuBupw6ymW/DsJjq9N5tThkBEslueAsbrSMSqks/vW7P+vX7sbb3Q7r9f0hlsHYX+xszWIij8vl4a8Y2DWF4H7nzF+nCa51SvOVncUjniM4U1BK8EK5Bhz0Efd+7pP6xPqNZAHsx6qOi50nKUs4ai4Uv1ORs3K8UixpdZDBpgcQkn7hASklAHmAl2qLpFaebQgy0zDkp9/+afLozv0LUwhwKl/6h79FR41jv9ObuHph8v+OGywEERTzeVhLsR8mIJvv7Ucf076Jd3td+Xtf/HyiIogTt/DmSKBTR/BLWKbx7wVAyln4MgejYTBpMtPtupoE/cy5FLjZatIkRARHuQwIwQLsp6fcvBggm3NWTpYLJVrI5bED25zLobih6yhl8vW7r5FiPv+KeoCL/r1nH2BAGUjzA5aIVrsrnu9usKAObYh473Q7ZFo78K1/496jid/6oT3kjXZL67kryjmCM972we6lTnCv8jDGgGTMa7VUlQdu6EIutXyFjgM4iqCUVE1qAoXl3OatTifQ9yVzAJ+ZWIzkYDhUvX4v9nuEzuUGvGelQunCGW8q/POpEGCYVBJYSLInNA1gLExgQCNuj+KhSTK14Va3LfYOD2J5Rxw+YGYgy7QCffemDlJzAdhPx9l/NHfjqzlICX268Qw4Xn3V91sJ0AkrhVIs68ivzAmqJ8F5jxQCpC+FkBKanL1jhzi0udivT37npZKScx7bxwver1/59M8jw/CXSX54XPd1zwEP+0bm/PX1WoCtKOpvji9BI6rkBG1gBx0uVXtbROoJvRsn+Nk0Ra1cZXHZ67IMYB/THEuWMEZqMBik4lIEm+PywqI2w9soO8ZP1CClRDJqqKXawivZSD6mPVVVDMbU7/yb33IcAuefvaND/lf/8Lez8tHnnV6PRR0cAVE8pWIJL1aqsR1CYV7hXXv3zbe1r01bcPXFr/013j861N521mB6NQCw0BgTqtR4Ax1knhrMnMiv5AUGehz0M/AJ2XyIgsJQJnkGTiMzBSRfCyEJY8zJ5i3nC6qYLzJw8AJkc9zRg5fpEPhXP/baI5wzrQvFesOBeO/D91NpiJFSCoAbf7a9SZsd/0gkZ5Uy5DZvtppT9+N8viAe3bo3UW9wTjo4Pkry0r5UNpB/c29bm/wQvEkJmwpNr63DGBqCS7xpmAQ4gNP4AK2GYZiQjJZG8edK5mariYLSrGQO4FeXTLPdgrSmmVlHcB+ZBJs7Ff75jBayLODwlwRQfqQh8AaQYz7YeBab7WvEZR2XkdbPSoAgjJtXrhG4KyTuwUj1ej3xYndr6plXl+wO72+xhMfRp+jqY1bacbJrMfD2jpAawnX2jtMbyLC1vztZpRhzyDzmguM4gsAZY/ytR2+ya6tXPE+7zTk/bjY8r31wwD/f2sRxoSF4HmiCKsB5gkvB4lgrCVLDBVEyKOhkzE6lVJa1UiVyfuDMAaxh/iPKElaDYUocwATzEhiqNaW3Hx4feYa7gAMfGM2Xawu0mC9omOV0NQGX7VtXb4hf/fTPXzhocCHk17/zTXLpASs9w1WNdgtDZnPUDyVElIslWqtUo+76ZX8njpbH2DL08XeOGv/hB++Jv/uf/5hZZmOb3WR2fJINTISTWKfUhfWBCVbmBCcwwEDnTItMyzwYD/2sZG/Qx51uNzZjkM4ZASQBAvjap5x3kM1byOUhm5eBg3eUzUtJ+l5BmN+3H72JxlNBKN7udtEHG888X4J16t9LW1IpLqWkL3a2sE4nqxvo55Gc1XKF37126xKdKd7sdCIPhvKix8vKQlY1wAPqag8utwRDklOsMVq6hjO2HTBO502LpNWBCnPEmEHSZFwPdUKT2biAu2e31wv8IoFjojwmOzSZww5PKgwB3bYtu71u+jb3S9RSyBUQoC6Me4CrnGDkfrwZNl1oCxACNU3D1LbXhiaoc8WQcudgn3T7vTC7mdp2mviAMSZidXGJLlZrU8cVRwGllDg4PqJAexLFUy4UY0dFimKc/vpQHCF8EtSNsQB0qUkB3v7a914LUJEO6kfT6WAwFkpJxDkH+b13FKDG9bV1/s4bH/d0h4V13+q06WA49NQzBME8386cv56U9kphLLiwI18j/uWNrmYGBR2drif1BEmlBGNajZgfOHMAhzT3+rOEFcBFBb6AhzTcC80C3Mpipeb+sjdBMDC29jwc/E8ikAt8qbagzQEdlc509wNQ0J9551PktVt3LzQNsEp/8tUvBZ4f3TL7aE8dNY5ju8iCQataKpNqTLDiwLX52q27tFIs+1Dd5VWG3Fb/9Qv/PTbdah9Q1qBWDTiOYAJwUFiOcwSbponOOy8dXk7GlMmMy/aysdDPAP/fH/jjzdE6cA+NYYKBegDSpSkXAiCbVc7MyVKxhIq5PIUIfXD0miEEcHgQU3tRWBs/9cbH0STnm1KS11tNvLGzlfQ9CBDrnGAp3QFTkM3e6Xao2zW9srgkr69evfQMCHQIxy6yibVPuIYGbc7F7uGe1vUAQRaUUE9GGg1DiawJjBEqFdLJ/ztSEqOUmymD2IxsgpPRkTpuNrAOAyulTJTyBa3veDJU5F2KZqflCwbSe0/h1xhlSU46x7iFfx5JijHiSmrhkwx/8CnsgVIC0Map2Re7vS7fPtiLVV646xfzxdTY4Er5Ar+xfi1WnV32agCeMMDZhpnRCHbYnGnNvS3wo3kAZy+iSgFAIxYIKYwUStyahrtRs92ibin/wK4gJFC8CgbrKooH7vK//Omf92ofU/tHh57qgPP32fYGnkYRFMWY09oHrA+b21rOsGnVwSS5T6CgiSQYJ3avmDWdTxoPhaQQSkhU/MCZAziilRU0S1gpxIf2IDUvKDgGaqUqnhQNPE3tIzhDN8ZR7ESBKYie4IvVGgsjG3KavEn9PRxS/uOv/YcLGaJccPFPP/hn+sHG86SK7koumwve6sTLewgXw1q5Qiol/U7YaUoAA/ftqzfYysLStKKef29zW375m18nG7v6YDk9C5FVSLwGAA4dHJzjBAWD4PnsNNgb8lZ+4iXoPPQz7AWtTgsNbTuxuqCU8hFkM2TlA/pEMZdXpQJANp9m81q5VEDu6VAyOIB/+mOXQ9NLKeXe0QHZOzrQ0aX2NgAu6rjV5M93tpjN9a89W9i80ZwO/QwDg0CCq8tX6Ori8tRxOvxSKYQV7Q374rB+pNU55AScUObJ4DJVwQkqQCnjhVy6+AnPq8/hQrJyMztHCVoufkThvX4vMM/5qGNYr6V8ITX3WD8Kc1OHC87b3WB8ym76iaKMw5NqmED3MPHb7QX++aXM4JqQM07gHsUEnesDDL6UMsJSBLsPd4APNp7FoK2PuoR1zpiBwKEYqyAuO4d7yINbdxO9r3LJ1dON56E4Zk7OflQAopJLlc1YMcUVQsRx8IKTB2EA1tJ6vg5TYUPb5vv1Q9dzB981pYA2SUTC9QqB7J/+xLu4Wqq4VkPfHvJWy729EqKPn29t4P5w4LqPrOB4DYRxh58VXQMyH8Y4cgjiWdGf7nE4d2LDFLVKuPzAmQNY98x5aM9LljBAENr20PVm6EGM0Irmc3lRLhQ9HzjgsL9fP0TTeF3B+aWUYgvVmgQuVja7iR6+5whgiu9cv6U+96nPXFg7A3ug/uBLf57oC8LlA8e82+uyJByO4IO9UKnicrHke678Vry6ekXdWLsayjw+337Bv/T3X0vVd8evHrN6/jUAiw8g/jBGFyKKzzuBL4OBfgX6GUOCjESNVtO51MX9EMjmJQTBJVNKCdm8Mm/lZblUogUrj51sXis/EQIxbvmj7B+MTz/1xsenfpNGsL9HjWig4NzoQEiAGu+q59tbtNPruqniuQyccY6bDdeGCjjr3LxyjS1UpkH6OfDaLMysCs+DdVmh3W2r41Zz6ppx2dzLYrMKLwxBpaZh0rTy/56dx8Ic0rR4XcdxlFdKquOmvneSMYMXc/m5P0+2Om3X3/445t1tn3CWI4TK4hSnvmf4ZxAAMtRO6THcypOVm64BCJg3GANuhOmFE1JCKiX2DvdDO4+5HWaa+IApIer2tZs44ecD0e521Nb+jvY9AWwy1WIZp4Hn2u36m1QOMmad34GDFyOJkeMM1a7ToHJ6qa8Q8kcJgxEHpzcXHO7pXrr0VBbsAY/vPqD3b95xVU8hJBvNBrE5JGFPf+Bu/GxrA3uFi57e8lyWcDKA53LkLgedQUG7VFTExaqlsqyGxA+cOYAjnszLurssSxg2eM5tz87UOIcHBy+vmYmw6e8f7uOBPZkjAYyhGGO6WKnhhUp1IsxknGNPUt+mYaiff/fT+O71W6+IJYTk3/+XH7EffPCTJInrQRalGu12LPy/44SE9b5UW4gcknGhUuUPbt0L5bAPB+j/54//P6QD/s/DxGZFU6qBESw0Vkgo9NEF1DAMNArQuQQG+iz0M7cFR81Wk0W59k4PweDIJoILwgxD5SCbN1+A95o6vLxWHuUsK6UzFI3YBmPqndefuLpwwfw+23qBmp12NMJN6MUJsuOcvNjZJPVmIzRZvEI/gyCUEnH32m3qBu5XCikOm/VUnRURQrzebLBOr6NV73CmpoTRWTQCgvMln8sBYpRWnUXdGIzDcsELH7Vc894ffKe63S4dXnIX86oj0zB53sqFclb1Kktc5Wcp+xecLMV88VIni1f453PzIpDywBsc16SmrF/LNFOHRtPr9/jW/m4ivh0QsHSe3iZpSwDsZFeWV1k1BmQyL7qQSsn9owPSaDe9VJtatlwoIWMCH/nUyskuICFQGr6LcF9FSIm0O3vHqRvGCHDJbh2mF9qAjGCpJBc8NBtCrVwVn/mpT7m6a0mp5OHxkavDupBCPd/avNQOnuwlmjjphJ0y/0nkGgT+b4xVBgUdueYv7fAjfuAqBi57nU/mANapzRDagsmHLFfIosKYCCe/SqlEHIKnDRcTwsv5AstZuWlFnd8D18He0T6eBPUJUKMQtrpUXcC1StVVm1mhEw3kczn1f//a/47Pw7GCg++PvvxFlNIos1j5f8etLTA0Ly8sAg91ZEvPsnLyrQevuzpYehUKjFVf+/Y3WdzwW17lzsrHqwECqcBAUHn6jKBYR5QA42CgR9DPEO0/tIeq1XYPleR1tGAcIQRjeZphAk7eQj4vS4USO3HynnDzpilLwqsOwixvmqb6xKM3XTmAT/d+9C8vPkS9fi9Msca2rZSC6HnyYmcL70YAR20LLhrNhiujwUjgEzi/ewCzOVU/4FCvtxooCVnzU4V9WUDxg+M6c0P54b5NyCJDgmKaqmwnt+M7cb5MhtJ3207c5RwIWWYwv3Qxccs/q/1zKUSr1fL0nZqmC8u0xGVQwdPqp/73GKlWJzlBq0H1WSwUpzrCfME/nzk3KqlcnyOCjmce6sPZ2zTM1OkUzjVPN58nIhg5LXzAtUpVrC+vav2Gh/WOPNt+ocUOBXbSvGlSt3bHsMajo11Y88CHjhA+mUOlXgms1tFHgtvgx60m04HCJJWUnPNQbGS/9tlfnLoHgpO+0+vRbm/6/ZY7zt+NiXbwBM9XYkUDm5IQPBXfwTiVCGc1iOabxYDpOPWqo2/H/0UpWihXKdgndTyZA1iHFsNsAyMnAhZeSOcPwgigJzCmcDCADQ0jhAXCTkRY4hzDjDGxWKlN/fBCqNbe4QEeh9NPCZGMUbVUXaRx8KyGOb1RtQ1Q0K/dvqd+/qd+9pU1Asbv9zefoW9977tT5ygqWd32w4XgzRCdRG7lGFdudWnZcSBF8YBz4JOvT4db9SvL7uE+/9O/+VLivi1+x5PVi04DlGCOYLOCeyzGkgH3GGPwPzJ3JuvrDPSz6va6uKvBEQi8qQRThTGignMMTsmclQNaAlLIFwjANQM/b8Ih0qKbLI09ZqoiCgAAIABJREFUAf3Dxx889rSnCCHUT559MPYMoFG0C03tHu3Ljd2dUOHCznZabx57ds7C2e9jrz12YWhweoJMeqrjHQpT72fbVkjJvcMDEgZPE6GEUzx7/CCMMZ630sFHOG0dGczghmFkZ4xpioru946jkruEK3QrlmVawKHptvjMlROC89aMcP/C2ckNvL4v+OczM48R4rOY4RbX4qaUOAE3cfXvt1+lFN87OmDtrl6UED/yALIIY4AOlGw0A9Mw5L0bt0NxfPnR22V1bG6Lp5vPPd0ZzrcHaAMGNWSpUEzd+j4Zi3KcvUopMPgKjBBx/ntOn8Fw4ASGBh4+xhzgsbngWCcsNNi333n9Cb2yvHqpiGCcrx8fIzEFkho4sSHzd1ISVGA9zGkDMOdCxk8jlgb1Z1DQyZ4lhx/YNEWtXIOw6UDCZg7gQOoLuTLGHCOAP1LA5zD2YOS4hEfO4TMGb8cxjBEQIMg4HcMQbVorV/Fl/LyQ+bV7uI+5eJUbAThMTNMUS9UF5gb6MOTZSH3zhmEAFzC+tX79lbFIJdEXv/YVpBuCJ2SFiW6/R/uDQcjd+G9+bXnFySQM+4H3/53HT9D57G5d/UIU6n/7sz9ESeBa1jWmrJ3oNODAQmMsEUQXIuXsBYZhYoAJNpgBxglwWOGD4yMC3HjTuN/PS04p5Q5ks5CEUapM05LlfEEVC0UGcM0ON29EwRjRaTXZPZUKBfHm/UeejTkD2xY/+fBfwAAS6gAh4KzV7ornuxssqj3kBFK1Q/3w88I79NbDN13rBMZ3eFxPjeEI5nv7YBdIv12P0W1B4O1jhKXCCOp6TBhzyzDZrPhMCaEiZ1mevxdu9ZWV86YBzm3e6nSCWRfOdQnGecvMEcswvQkzO6VVu9vGXKTbEAkOXYuZ1DSnz2NA+OePZj7c48DsrLApIwHjLiUEpxVtoT/s881d/XyxfhYAnCtMZhJA50vy8/D2vVQgGSmFeKPTwnuHe77PAeni/QVnL6KQ5OvwnSO4HjtJPdlzqgG4x2zv7+m7x2AslJKIc67tjnnz6nXx9qM3L12zkKxSbxxfep7igjucv74hr7NVM1YDEEDGpWBh3C1nUuUZFHRqpjUoP3DmAE7qVEPE0smBwPdhCGMChncEB1WCiQTe3Kgdw3DhyOfyspQvjB2HkELuHu6Ts3CFYOws5PN8ubrIwHifPfo0UCwU1H/+9d++cKDaPtjjX/nWN7QafPRJfbElhZBstVskycYUWMdrSyuh84VSyuTjO/dJWLDTwBX9ze9/m/3wg/fCnNKs7RnXwKkjGAKWFGStW6aJ81YeInLVxt42Om42JmZ/jiCblUJESYkt05K5XE6WiyUGmbwObHMu95JneMZVmfjhVcoV/vqd+573E8dJ2uuq91986LmuG6VIKQFeHD3b3qRRcw6DEeC4ebkRYNIYIFjizfuPXRtCIKO20WqStBgTwAG8ubftZgp9lXGTqear4ZgqwTe0kMvhWYKoB17F7EmGBpqt5tRsFa+SAtR3zrQcOqN5fIQUvNVph7KvRaVPmEPGDAhsdTWOIPDPozEBBKqSyUM3i0rnOvs5mT/G0swbDzDQSTLmF3KF0IKvg849pVRcW71Cw7INBJXvfH2ggds52MOtbttX08nl/VVcIUQcB6+TmIMB9Mq3bdeXctJZ6TQ5SG/QFOxLQgIqsGCQnRvkyVk59Us/+9mJdzOFEG932pcGGnMh5IdbL4huxJUg45qdulhwYWtz+M+OXiaPJIOCTscsB+UHzhzASZxnx/nr8D0AViZAV7i6bLkdyihjGDJsgS/jjGMY9kLn/3XCjkBU3nJt8dUNEiPJuVC7h3sUDvPYicxSAPHMIePXchFd7Ha8WbmPNMAo5Y/vPsA/94mffuXwyYVQf/NPf493D/dToS6H57DZSLys8K4BPEyY6xkyIO9eu8UWq7XQ9FFvNsQf/tWfZReW0DQ8Pw1TQmB/Y/Bu1MpVdNioq629HQw8PcCtBbBXXAhiGoYD2VwsFHApV6SjTF6AkcyeZGtgsbbAH9y84+vcAlB/jXYLPd/e8FV/nGakUlxKSYHn9+D4KBbl+YF+Hgmay+XF49v3PX1/B4OBaHbbnurEohiAqZFSbe3vuHZwe5ET4OYpoWSWeI1mhf93NI9gcMhZuYx7ysvCDqEsZEv0hwPS7fW0ZyKBsQIch7MWjOFyGlS727mAcuWybmKKUcpEcUIw9zghg8I/f/R9QJC4Fcr+kBjlRiAIfGdNw0jtdxbOhgf1I9bstCLQlrsuTvbiYiLXJpx9lmuLZHlh0d1gElAKPKMfbj73lAkJ35m8adGE0AtwhdRLZy9GCBActd1lEjBFEYqgeL3ZZGHQ2QA6BQSUQ/JREHhgxpj6zCc/hSehVIKt8qA++c5pcy6fbW2Q8wiYESp5pruCPc/mNg4bVWzWlJhBQadnRv3yA2cO4KTN8Vnnb8SyvYSSBjxNQjmBFGKIWoM8ZIRO+Si8Q5RgQni5UGRnDmcCMlPA+TtycNcqVblYqZGgmOb/P3vvFWXZdZ6J7XTCDVW3wq3QOTcaqQkQjCZFSCSHi6TIoZIlz8gzlmXPw1jym2V5zZtnvObRa9mvXvMwXhrPiBKjKBAUCYABkABQAEiAAAmQjU6V481xB6//3KpGVXVV3XPu2Sfde/ZCr17ou8O//3+fHf7w/SGzLJHDQTTR5z7+KXx67sQ++svVinjq+WcToTDmgotKLRnKbXC0mCvO4qByjcIj78zcSXJiZi6w9QiR1l9/9tuoUovPwzuwyaYdB8oBOGcYpY7XPCD93llZUPlMTk6MjVPIK7cbzUuc4yctSeTA7HRRXDx1duCzRCol1rc2qAaHJKmUIkvrqwj+RFF2oppp00de6/HcGL905rxXJZJa396MpWLyoBy6nAvnPhhEwZhTTNgwRcsyZvCMZXpdD0FwV0ufBGNuGCYLKo2FFiJHoxMFSBxBKMt6BuCM77xVSRQDRBtV68l4rxzF311Dl1tHGm3wzwBbhjFXUq8jfBLXkV+aMcHKMsxE3AmOmmur2xGLK0vB3BUGYDDkA6bUUG6j4gcYwleTrG3zcyfPJOquALlfb7t0AIXgEYMyFVHeX+HEjypFMehJFYL/TxSvfS2uEBq32i2+2Qc+2RcZGHGIzOaCk0GQBSAA46FLV9nF0+cOJaPd7fBKtXrfmgADW6fbVRD5uxcB09dc0saHcqDLuylnvHIAUpBijEkPOTYtCeBALz+wJSbGCq7eWakBOE5CPWj87R1MkV8mjjIMw4UHoHgh3XA/OBODGWJyvAAbCe90u2RjexP8eenU+ASeHC8kIkdJnJaKX1rGcmPyX3zhd/dZWLgQ4uWfvUZvLy347T7Q9hhyhrZatNVuBTqOzs4B8na+OAt5T3V2e6+v4uQUv3Tas4HANS1gkHnt52/Qn779pus2acWUA7scgDMEYOcoo5CKABRQgPaFVjfWSb3VlJCXzGAGfCOkODGV5uxN+NI5PTevTs+d9KVoVErJpfUVslnaHogb8JgvVSv8zsoSi/IBCOdqqVLy9YgqTk6LM3MnvfYhyrUqBcjruBdQ8myUtoI5HMGLkRJBMfXKv1iyDYwhlmm6euDFcgKHEAXKMEYZNgwjKSQPI5280WqydrsdyNwAbSpr25TRwD7zQOj22ynA8TeajcTA8R8131wm5wnqVgf8835asOinZ/Arq2FvD5EipmEk+hwEK9udpQUUp/RPmGBhQl7sGMLbgwP61fOXfN3Fw/4uINJ7q7zNNsv97/4h5v1VsJdDUj2HH0qlxt4QFgagAy1vaMwDfBTNEBEsleSCM68OcNMTk/zj7//wfRcbpZAs1yqk2z1ggMRIdTtdeWtpgfqJPg6B/cMwhBMBPAwTCXsOKRR02BzXN14hP64K+bFj0V5SA7A+fvvrKcLI30EJ328YJpxgApZgijHZMQz3POOgf9h9pwqTinOOt6olNV2YdAy/aYmGA4wyfv3qg/Qj15/YdzA2Wi31jeeejvVh2cv/W0scZApjYASewxD9qLvkMlnxyOVr+jveQ2i92ZB/+fQ30rBM3cIb0v7eM/oyQI+AtQmJfO6tUYD6urO8uA/qixAsEMIUoJ9PTM9SgC6LCazXkEpJ/7QcRIL5k+SkBkQCqSS6u7yEyrWKa0KFVLLZbqg7y0u03my4bhdUxVKl5EtZCfw8UZwjkE/ea+l0O44R2Gu7sOsDpGOQ6BKgoGWExZ4Pbvmey2YRcfxohqdAehLTtEbLOhgj8SklValSCWxRYYJlzsqSUYvyFkqKagL24KOW4i48u1fobl3wz7t0OQ7nKQy0rx0D4EoZpYF9476Ic91Y8Y3SNitX3d8JXXfts2Ic8wGDAfjcydM4aalzAJ93eX0F9bvDj+fyKBinIsXhLQrp8BwEAs2p+HwutZFp7jiKb64jIWVoc4Z0VJxz17ou0HV88Tc+g/CBLAVgUd7c3j6w32LZ7XbUzaW7TvrDtATOAdHl3aF5+wXOrQMDpFDQYXNcz3i7+YEnxgpHwtOnBmA9vPbXy2HG3wBy//oj0n3rvYZhgH+mjmEYUYh+HMvlUSE/5r6ztGZgHABFzD/99c+gE8X3oIO5EPz1d95ib9+6Edi4fjsGD+Dtcvzz/x42T8aYPDEzRyAaUmcBWO/3P3g90Id9l3P19PPP4vXtTZ2kp30NEQdg7weoVUqp2IGOcfL9HjZFMADfuHv7yDVLIFewUiybyYkTxRlanJxGJksjxOK+XAjG4tzJ03QQg+Wh60Qp9O7C7b6KIMjz2+Wc3F1ZJDHJD8/rzQbzA/0M/IDv4MzcSTZVmPQselCeQAQ1nJkxLny7UmL9FH1+6fdqwPA7XlDthy3/7y6fHPgqyw70DhOUTJLerxOl2miQzsFIFY0TA0eWXCan/e6rkcQguhL1ZoNGiUDhZ1IQtQ0Ro56NRxhJgol2HxXIUZ3m0xxMoqAQZIwx3W/Pwajx16rDu+Lu8mLslPpwhmXtbKxyLIMObn6qyCYSGHAB0Z/vLt7GhxnKwKEoY9pEj4MwGHsRVQpseOCErADQWa+Sxt+SH93WEA1eKbNmmIh/Pf075YIfuvYOCsNgTHzgkcfo7FRx70+i0Wzuc0KG4JVuD/Y5Nf6GtKIBvVAIHruzIqTp+x8GY0gHCiXloX9uht5DLz8wQ5OQYs+y942fGoBDF8eBAQ8x/oLHBXidRU2atvF3jNnTE5NgAOaWYTJ4yCGMU29/bUwerKPCWEH+4ed/e99FV0ipvvrMU5hzuBPHrwghEhHVdBTnTMMUJ2ZmqdtcWm4l8OFH3++26qD11M/f/aX6h5/+Y/owGpSDQ9oOnEkgggv39vQjjb57p9/udsRdl7m8IM+OlJKN5fLiRHGWzkxMe4IjHFK2x3JahFB+8dQZBtHbugp4Uv/y1ru4fQicsVIKIsvJ3ZUlvLq1oWtI3/1wKUSp7A/6GYiglIgLJ89RcJ7zXhSv1uus1QkG1tU7Pfe3APltlrdoKyDoWRgR7tSUwJGb/Gu1aRgOBLQO3setD8gBPwwyihtf+9EDOWor1WCRAuAbzGdzmOwgaPajaRh+h0iiSq2ayPvyjsEQQd5mr7LQD/+8h4JY+zJ55VR49UEmpmEMxRkIjm13V5ZQ3BwrIO81pYaMWz7g8fwYPzU77/k7Dm91HjUSlo1WXS6sLu+j3cn7ywyVz2QHmJPiCpCo7hl730MqjH6+KQWHcaDRaortSjl8AxTGAmAnOOcQCX6scC6cOSeuX3nwPYQzpRA4Iu/J7yvanQ4C42+/vtJVoI8D4DySwmz742cKBe2Pf3FofVh+4NQAHKVkjoJ9jknuXy2sgUTiCBFGGclmMk6XoIKzbRvl7KxglFKIGHIuZGkJnQMGY/zxa4+wDzz82L2xpVT8ndvvktd+8UYMFRdYNltNEqo3oGapwCPRNEx1YmZO25qnlKhHLj+I9XjDHj3hTrej/uJbX0m+Fl2zTEexO4gkACh5TLDj0KOOiPQ9ijflek2sb214/gbAGCyEYJPjBT4/PctmJqdTo0GMFiAllF8+e45Njk9oparb7cp3bt8gB6HAVrfW5cLqCokbnFapUkZc+HeiopTKK2cvkoPem26ZyzkX29UIlCcuCYTow7XNDRKoMhdjTglhSTc+gVHGNk0I5HLJ3eRUA6WuZVoUECTSEioHVLVeC8Xhczw3NjJntUJINJsN2uEH8v+FKtrBByOEinw25/l+5rzxCREEB/Cmh+g8SCuVGoEHEqxtWQO1i1sj+La2ytsU7lhxK3COmUa88gEDQtjlsxcS+W4HB8GN0ibdi+pDCJET+XE3FwWukCJONC9GEiMEyNLDd3mK20egmR4hhVzZWHcjb80j97oDAxg4yQku2FFoSlnblv/kv/r1ezRCoMrWew7Aot1pI8j5mxp/AxHRoZ2CXopLweKmGwiPA/pGAgQfkj7O9DE0wp4KY+OqkBvDqQE4KiEcYfwdquhfZ44KEUxoPpdzsFUOshvyoYJiM5vJKIwJXNAGenBGJcZhGBf29N/51OfRAfgS9Dc/+C6qNepxm6Ko1mu0G9PoZLfMAqcH0zTRfHFWy3qnhIor5y7QQn7cLQkD1esKIZ598Ud0cW15oPZpo2RzAPYKiPQlhDBQwgy6Xyul+Nr2JqvWa74YshsZPFWYcIzBxQl9Uae+CBvhxgD//cC5i3Rcf6oH2Ww35S9v32QQEVytNcSd1QUWZOTogGLkjWaDNVrNAZvvbwYRkY9cvuYrz9lmeRvF9REMCpXltVUE+Z6DLJRSRXrpSBJd8tnsUBrRwLhtMGMojdtxXnBdzkWtXtNyD+03z6Dvp/3GD/P3JEf/OlC2mexg0doO/DMG1MBA2O3oSOQQIaQFwqX7OwUoQIDzDmm4wIfpCi7vLC1EZhTqN8GMnYW3Ur9qofwO3+LlsxdiQ88gk76zsohaOzDA4Eh0CG8hkASBgwg42SOFpFen5EHoStuEw4Hl9bXA3wjHzQTWlFKIQETvYRGl4BD/yY/8GsraGfBP4jVAXnLWqxKtdgdgn1PHg3CWyp5RsOCimxrddfDdgYJGcLWL7ZmrY5qj0MdufuDUAByFtI+K/AVahiX6d8f4ixRicPmE/CP9FJCWaaKcneGWaTGEICdHChEd1vKcLkyKP/jsl/a9Vu6uLvPnX30pdpeWrXIpLLYEOg7BmFuWheamZ3zzGPJEnjtxmh004gcxgVtLd/mzLz3vm+YgaEv71M+BXk5fwilxtBlgpfGt1YAcB3dXl3HnEEjfQWfAKBVSKVqcmOLwTU1pjkAdlK5RawcRqw9euELAUKW7gJHwxp1b6NWfv4FqzYbu7rX0J6QU2+Vt39/ILjFwf3rsgUf80MZrjXq4ObQ8UAse8WE4FMEZSQlN9LkFkS+5TGZoH+CASGMYwwlv7eGTCLVquVrp+zbTRdCoGICd6N9Wk+q83+iSgZt+cpncwCk2AoV/dqKxEFcyjeJzI8e9dRhjDuKa13Zxra+QUgsret8QOucap3zAYPw/OTtPx7I5nVMMtS8uuLy1dAdB3l/LtBQgx2C0m09AiTSyN1RxhDqYQsqJpo2Fs29PR0+44PtQp8AZ/dEr19i5k2cc3mxsbyElFW91Whgif0NlWDqYwwG4i3R5F3JqphzRxAHQBwbl3KeJxLQblxxIDcAuGaWt2jHG36GJ/sVIIIThfu4o2yDCF6Id3RaCMbItG+UyOcEocTyJhyonsltGhFjPZAZ/4qHr7PEHH703qpBCPfvyCxguMnEpUkpRqlaG5jIFRmCAQ5+dKvpWTJ8ozsqzJ04HrhwG78f/95t/Bd9kXJZFSodmDjhGX0IFBbdWgHFASOu6grVzY+G2Zqrf644xKkA5MD0xJeemZujEWLCR8YFNJIEdQ6TlI5cfwINCFh835Uq9Jv/Lt78OdwIFyezi+BApVcuQM0qb5Bhj6tHLD/oKp4Jzc1OjUVrb5MCjREq1tL7ia35u6IE1wyig1Se3mKYprCGK4jooCYCdtS1raO53cV5pAI/X6rRJo9nUerYfNWcwiIxl84n+/tzKEx6/5WolcXOFPdI2bWwYhtup3lcvMPjn/SNBhF8o63ZgRsSooZPPmTJG6VCxTG5XSiSuDuE9Rwgqsrb3HNpBLJ3pyUk5O1lM9AJotlqo1vCHGhUEb9M+g+dArVmX5Wo1PusXIoKlklxwtqsLm52a5h997IOs0+3yUqWCWu0mur286Fu3Fzx3h3eEQFMLDS/bjpwZRMITMlwXiREUozPl1AAcpuSPi/x1pIH5rtE0TLK0juUYfx2TgaPEgUf/xNi4ElIOdHAbjKGsnRUZ2yao5/GXKoe0Cuy9zkBb8fuf/RKaLkze+8etcol/5++/H4sLDPgBNNtt1Gg2E6dYOU5khGCetTKoODXti8+FsXF+7fxlX324WVpdwcULr75E312446Z6WichHADHG8qoosTZYrUbffeyAWAnby+H4xXLKIXcJXh2qqhmJotkPJdPiESSSSYYgN939SFs+lAiHzZzeGR/9Zlvo81SzyFpxwgMf8flPNAK/bzLA8uy5EMXrg50f9rDR7VdKWEuetezOJUO74q1zfVQ7nWQOxejuCwXb1LAmAjbMmlcYCW9Ue++djajHznA/egjVVOVKuXQoiNGyADMG60mS1r0by8Ht0lMwxp8gwwY/vne1wkQrzI1ALvdreCuZBpGjK5Kbik/vh44qd9avDv4etVDxpG9xCkfsG1Z4sKps6Hcs4Ji663lu87LlFEmGKOIYnisQu4QDMhUges+gppX2m9/DnAhxGpI74T+1OyvAekeOOcE/OW/8ORnRLlWxaVqSd5ZXkrXpFdm6q3vRADr7XLEe3OgoDEdusvECIo1NQCHJfQ+xt/d/AJhkRPEOM4c4Hq2Y/yFMQBxCKKvdCgebctCeTvLDcOAQxVCbNLDVbMgZ6eK4vf+yRfuPRI45/LF118ld1eXNI80UHdDkf/3sJkDPGUuk8HTE1MDP9DAUPDY1Yf9GgpcCWZlY40/9aNn0u/PFbfiWwlsZ/BoYYzJHcsI7N+Br6Fqo85XN9dDXT+gBKOEKEopnpuewTOT0yifSS4kWlxXFaypDzx8HSLItZEI59ALP/kxefvWjf19YswxhHo7iqBoi27o593Z5HN5fuXMBV/fCkZI1FtNWo8hbHaz3eKbpS1f83MjeYyRoITBw9VN9VjWGdb8v7vMhj3asqzBco/GUmKxJcoxUrbb7dAIHCEDsCpVy4naZMBQRSlTfqMVg4Z/3rtYIYI9hX11//mC/mTYilJKLq2tkFYnvH1sEB5m7AwYLQdpqq0N3HuuXbisrb+QOxKlaomsb2/dt6/COwOc4nYgzglGGAMEP+SrVCqh3n4hMzcpwy2tr8YTea4XvOXkmv3Qo4/hWrPB76bG3zgsK9Hl3ch1A3FghG4aUiho3RwNv7/UABwGz/tF/gINEDm7x3AaBlk6xzjM+AuwQ2PZHIPUkTrhYsFgAfCSuUxWYrju3csDonNGo9mXaRjiQ488Tq9ffegeA+rNhvzm9/8ucKOQG45vV8pa15KbMcOqA3l68rk8nhovDMRrOJA/+PBjYZGL/tPffgW1O53QxksH0sOBXaMvZUzgXj5fCAsM8ZKs+Pr2FivXqnomNEAvGGMJ2QUMZqj54iwpTkyhrJ0ZoKe0yWEc+Mj192tjjJCC/+rOLfyDf/yHY9do1A8S3dDPuwycnpjkZ+dP+9YeAl7ZZmk7VoYJMBgAVGqlHvxe4EBXYUpgnSSxAJxkLmOHuE+HzyV4M5iGOUypKsNnoosRIWKlXKmE+iFA/uqxbD7UMV2wQncV3mw3WdLuxbC35LM533tLSPDP78kszULjav3C29IcwtQBzv2hVlHrW5ux3lfikA+YUiLPzJ8iQaRmcbUIfVQC/eHNxdtISAj0Pb7A+5YR6gSfGIxxCgrIXoF3ru97dL/x09+D4YBSSGyWt2jcz1Z4X6S6hGDWgNdepVJCCO77XuN13FGon0JBJ1/KqQE4aBm6MP4mPfrXyV0MMCyHGLBnp4uy3ekEdjkHmMmcneWWaUJyN44wTi94Ptc0XKD/2ed+24nchsIFFz/5xZv0l3du+uzZX/Nhy/97GDcoIWIsl6cT4wXPzAII38euPQqPHs9tvTYQQvKX3niF/eLmr7w2TetHwAH4puFhwigVGOBbIHoioscweO0vxshrnxAMOeupbdnixPQsLU5OIdscvmiJsJYd7EMfevRxbcOVqlXx5e98o+8jDu4hCGMJ8ETaBnfXkRNN1wgguhbmND89i+eLs+4oOaYW3NEgh1bMciLx7UqJhRWZDEgblEQcijOAJGEdGIxhyzQHaJ2sJoZhKIMZsXJUSBYH+1GrZL3RIJ1ut19Frb9TykQ+kw17b9Y6BxedJS76d9c45dsxJiz4510hYCRhk1ApFHTfZQnOngZYxIawSCnVzcU7sT8vKGXcb4S9H/GBc8bs5DSdKkz46Sb0tkohvl3ZZpvl7YHHhqARiBQ2mMEp+ABiQuA+jBEEC4fp/DzwFNKGGMlKrUaq9fjmgIa9iAuOC/lxxwEhLdFyQEqJhIxf2qNouaJpdEBfQ4j5vjdqIiftxjsHUgOwd565b+HC+Ot0luDo3+OMv7ZlqXw2h7sc0JqDLztRwQLCBwjGQqUXu4GZfqI4x3/7U5+7Z0nscq6++r2nsIR0KxGVVqctG81mYM4EEU3rvmEhUqKQHyOFHQO8W7oopfLa+csknw0H1narUhZff+ap9JbrVkAR1INHCKVU7BjFYgObf2Phdiwj+cFAhJRi2UxOnCjOUICJNpgRgeSSOySjVH3g4fdpUcjBA+4r3/tbBMgPrkrvUQLpaUKD+hVSyO1yKZBzCdbj6dkTbHpiytX0+1VqdzqiUq/GZs9WSonN0hYNC8IR7quMgq9gsgoobzOmSUdBqcQo5aYFdWlWAAAgAElEQVRpBe/FlqwloI1aLoWoVsPfA8AAks9kh1muvNlusXbM4WgPLiTIua0DnjZM+Od9c0ijgI/dGwBVgVFIHR+bY1/bXgYdKSXl8voaabZbWvvV3RnIwWAGsyJ0Ls1nsvzMiVOJ2oMlRP8u3ELwt84CsNFgFDYNw4kSVkhBNpnYvJF1znVY+upyLta2NmK1kTk6cPBS4PyeftQwDD6WzSfqOxuWNbI7Dwhy4FIw0CGkJTgORI28FtzMhr/n1AAclIzdG38hcjYQ5WFQU9vXL0aH0g9RVRNjBScHR9hGQ7jYgTE4m8koOJxTiGjvK8E0TPHR60/Qhy8/4DQWUvKfv/sOe+OXv/DemZYWSlTrDRqz6CUtMzusEzACT4yNk/H8mOsxCKX84skz2owF/QYWQqCvPfMUqsTYI7PfHIbxdyenL2UcEwcNIXYPWi65vLW4EPszj1LKpZRsLJcXJ4qzdGZiOvXqdfHBmIah3v/go76NbF3B1fOvvIQHRZ4I42ECCbMr1SoK6lyCNXjuxBlW8HAO9BGRWt/e9C0bF8vAVRWFlFrbXA/NSRCISqpDx1guHMcuV4ILsBJEJNqWHZs1GuBUo+haVes1zENyyt07QcYMnrMzw6wUTVT0LyZYWoZFTEMPqgAhmOOQEbjSPMD9txBId2IYBgFklmEttUaNr25uxH5vAX0UnG06HC4GkSWlVF09dzExCwHsalvlLbZVKQ0yXU9t4PsAJwlGmWSMKYIcJ1KwHsGf2K8tT5NNaGUwtEIe4NgUCDSSUnV5t7c+ermAGSFY5TI5SDEVG1JHjxAsuOg6eZnTEhwHMMaCEBIrp4zgZjtcPacG4CDk6db46xwYhxtQgyBLe5/H0E4JUbPTM6jRakZ62QTIvKydEbZpUYQURyiFiHa7DkCB/oe/+btobCeiFA7Sb37/70CmbrvQWm+Y8/8exihQhE6OF/BYLu+Kj/C4PDV7Ap+anXdV328lyK/x2luv05++85bfrtL2PjnQg3dmghBMFUK7uX199hpM83qzKZY3VhN1YQRDnBCCTY4X+Pz0LIPIYIDVTsv9HLAtWz72wEO+DPyQuOftWzfw86+9PPA6gdQaGBMZoFIa8j3SeqMR2EIAVIfLZy4QjTmlRKVWpe1ufHK3L64th4YGgDESlLDQosN17Q+A4pC1hzv/715eZexMur/qWjx7+oEImlq9NvCe6ock0zB5xrKHVZHOW+0WCwvJwI8cHLWDk2vbIJZp+zqn79EBSkCMotpXk+1E71eYLtrb1nCnNIEQvHcXbgd2D3PBYtdVoswHDHq5C6fPJsYwBXK9cfcWBkfLKApECINR2GSME8CORpg472uMcKIDd6JgpoYxIX3URmkr9PQVR5EOQRD3IIYPIHnCnb2QH4/krqWB1YnvAvShXd6F8OzEzyXWE8CYE4xZqg+LtZQOJS41AOuWmTfjrzgsb65ukgLp7xjjL3jN5TJZkrFt2el29TwwfU4CNqddiGi4xzmblUKJeDD4nLqv5mfmTvIv/vpndpU28vbSXfn3P30ldCUOuNmVK5VYrCVfDPXYGNbp9MQkcgvrPF2Y5JfPXghNPvVGQ/7ld74xcnLxKMZAqu/k9OU73nfgpRz7xwY8ngHytVStBMKTMDrdjQyeKkw4xuCiJnjeMGgPY4xcJisevXLN11rcKpfEX3/3W776cObqQEIrgvHOma+RAVJJuVXaDnTvg2/8oYtXtUatdrpdXq5VQjsjjmM5PM7BABxWAQMwwU4WuLCG9D0O0GwaJjWN0YgmAI9yE+CuU6dy32vnYAflagVFBYlnmdaOI672aUXeIexjlXo1NEcWPxPuRWxQldMIxx0Z/LNzxiOJ0jzARy4JQrA0DTM5B94AixuckVc312ijGY1zuleSo8oHDClFThRnmRdkMa9z01Ufon83S5tsu+oy/YuugY/pB/QxcC8BlEGDMQc62tEiKgSJRmNxpw6BDVEOIcq1Kq016pHRAI7FgGy5F/K599R0oKDv6ZQxwSJrZWiUkO+RMSkmAweFzBWT6cWKjDAQ12I14SEgJjUA6xSiF+Pv7sMlifDP4Pt2jPEUPBynJyaVEIKIGOLvG4yhrG3LjJ2BdIESJ8BwonOZeunLNAz58cc/TK5duOw0A4+37730I7RVDh6SZy+dnU5H1JoN/wYBL5OPSV14dBQnp1Auk+1LEUS7P3rlwdD4xAVXT/3oGbyxvdWXtrSCfw7AJYsSKhxnZHh2omSlDwBFzfL6Ko17vi63kmKUCqkULU5M8bnpGTY1PuG26dDWG8uP8YcvXhlYGQJnzF9/91uoXKtq5ZHOB4qj8K8FB/28d+KPX3tUKx+gs43SViyMFUJC/r6VUJXToASlhA68PrULo0+HANWasWzS2/JHoIABmBmUscSIKPZCAajcVqcNBpLInF5BEWpHmP8yQCGJdrdNmq1WZLz1MjdIL5PL5ggEsekqUcA/76U9hYI+WpKQU52NwGbaaDb48sZaIg6NXgQ+OHWZ+j5Clx/zxHjBSWnjsnpk1aSSTvRvZAS4HNhxxHYihZlgjCKKCeQTlhg58NGJWI8upxqLat1ul69tb0bDV4zhyaL4LuTzHo4cNADDT6ALnxgrxH4Nx0Kw+olwIoD1d5v2eBgHUijo5K2L1ACsS2Yejb/g1a9U/CO2DrIHY0dveOymCkbD6YkpHDX8sxvRgkIin8lywzBimS/TzRyCrmMwpv7wN38X78JQrm1t8mde+lGYFzBea9RZp9sNeqqx7n92ughw5sfSCLlrnnjwepiXHvXzG++of3j9lRHRToe/RJzcRIyqnYioxBl993IMPIduLt6NLAopSOkxRgXkm5+emJJzUzN0Ymw8yOFi2/dkYYI/cO7iQOcDOJR8/8f/gN9duK19fhohoXmz3SL1Rj3wPQ9ytl2/8pDm/Vzxar0eC7jSTrcr1rbWQ1VGgkGVERa47HQtYACrcYsAomvMqPuB6BrDMAfaQ6KmPabjq1KlHBkcHuy9ADdsaco3Gzcel2uVWDjU9OMLOJPmMjlQTPer6v53jCRAbEQOAZgiPd4nMzA0MkoZwNgOewHFVBD3xqD45uQDNm0ctm0e9HOXzpzXuAHo5xBE/26UNlhSkaKcXMJkJ0qYUooRxoB+Bfvk3ihR/ZwbiR7V4tqK5jeRO77tg3y+Xznu5P/d+8+w/9qWzQB9Mi2hc0B0eXf4D77Q2XrEgCkUdFwk4ZqO1ADsmlXHVPRo/HV66hNFq4Ms3X24Mf5iQvh4Ls9s0wKP88QocOBBvAMRLYnjG41jfUHWLdvj+oOHyrmTZ8TnP/5JR55cCPnCay+TpfXV0MgYtfy/RzF2rjjjrNPjyoceeTzU/Hmdbkf9xbe+EsmFPLQFGPJAPagpghhjEjYjJ9o3iWgRB/gG3rPvLt4Z+rXCKJWEEDw7VVQzk0Uy7jKPd8jLLJDhZqem+cXT5zyf/Vxw/uaNd+hLr78a3PrAWOxAQuNBFdZhQD/vCsYyTfnQxQe030Ugx/JWpeRZRroXTLPd5Jul7dDpMFhy4JR7cJFW6DzSLWsv/UGUom1pyk/qZeDhrMsbzSZrd9qRzc5RhJoWM4fNAIyRbHc6qtlqJkLRmLWzcKfUug4ihX/emUlPN4ElUioRctAqgGNVU0gahgn5L8IaMrJxAF1ofWsjUnhYr5OHO2g2k0UkZHXTAxcuozivCSFFYnI6u5E5yBlgox34aMYEI3T3Tp9CR7th4J46Cim1vrWFQ4P3xVggpcix+WTBBnDA+Lt3WhNjBb1OVx55NorV4TwQgqf3gZCFrxNpLWTSR2641ADsV+QDGX+PPyz8khREezfGXxgXLjpzxRnR6XYpeEslsUCutZyd5ZZpMowRRwjrfTEnkCngNfrkBz5Krpy96FBfbdTEt37wvVAOV6mULFXK2pXgCRRD7/uankG2ZR1KPkSMPXzpAdzPSKxz7l3O5bMv/Ygsrq3o7Hbk+to1+lLGdjyFkURouBRazXaLL66tjMx+CspRSogCJ/C56Rk8MzmN8pncUK/tk8U5efbkKc/79fr2pvjaM98O5UwBAQz4UFHlWgV3Q0KjyGVz/OrZwaKp+y2yzfJ2pJH4cKcsV6sYcmeGWTDGkhIafcSai0n3oCINNir5f/eyBBTjafHPAXBYKVcqnvdj/yO/1wOs44xlsyQ5XridP6QCkArQPuNbAPXAMiwShAE+avjnfVxPo4DvW4RHvRXju1oHpwzeF0sJe19QSkXWzoZ376VUnJ6dp25SSg0uicFbKjDkb29Q3SlgBqcomJbg4A2RwiY1OOT3IJiQHeho2MVCWw/BzC7QXnmpWmH1ZiPQQZzOj4F8djs4vDdMw5S5THZk9B5ueRNkPSklEjKZNogg+RJ035D7mmCS7l9BM1pD/6kB2A8TBzH+OmdKfxhlP2TpbntYboOjxsjYGT4xNs4araZuMiLpDwxpABFNKWUEY6FG+GJmmab6b7/wexhg3Ljg4pW3XqfvLtwJXC4AE1lr1NMDZYfTYCicL84iyzTv4z0lRFw+e4GCx2GY5ebiHf7cyy+kF1yPTAdZOjmEKBUYY+rkMhvevEFys1wi25Vw84d7FElg1XuGJ4INZqj54iwpTkz1hXQPjJiAOoa7wum5E/jU7LynEQD6+cvf+Rtca9Q9tfNVGcNDBSmMidt9i7fabVxr1EI7iybHJ/j5k2fc0ueFHbzWbLBmpPc0xbcqZdYIQ5GzlzMYc4oJ0wqD6oXzHurC95S1bZwEWj1Mq29VmLdlWiM3776M8VxByXqjQaJOn9IzAGeYoTn61DM7NDaAd3y725WNZiO082AQ8oH3hmFi27T009k7Q+mgaBqDzOeoNmke4Ps5Q4hjfIjU+UOnjN30dXPhNpIqOZ4Ave/TIOCg4WZ+fuvAO6Q4OeW8P+JYuOTy5sKdUHgRp/lDjD4YhCFK2DAMzgiFXMIYI8zTXML7JdXpdPh6aSuId9G+gY6FfN73pnAQ2o6FWRjPjztR4GkJngNwF+BSMDACpyVkDjh3QhyLO2HIM0/ccKkBeFCRDWj8RX2gIgYlJ6h2Xoy/ANs2OT5BAOKk1W4N1UkHF7MeRHRGAU9GESIajIsXTp9Tn/nok87Fq91tq69+79tBY0ul+X8P+bghqnCuOIsPRgaBk8KZE6fp/PRMUFvCof3CRfk/fvPLoY6Z5MGchx6lzkUJUNVH4YEHkDyrm+s0FM/dmC8OQrBACFPbssWJ6VlanJxCkI8+6QX2n7MnTlFwUHFbuBDq2Zeex7eW7rptoq+eAwkNaHhOObZfqaTaKm0Hfd7to2G+OKtOFOcCGVNIIbfKpcgUbZATbWN7k0YBTUsodYzA+hZSMD0RQlQukwlE/sFQrKfXHaU4YzT2ItIz4YB64VKIarUa+VsMYyKytk2HTZ6AXhBnJSMYewihKpcJJsIwDvDPBz6dvor4gD61WHbLKOVMN+Z3LGfaI0opxde3N1m1XosxlfeTtuvwFBZCQsbOiPMnT0d+LhzkBET/rm2t00rC5BfUYgNocCefMKWSMaYcwwrCYNWCPyN7OQIY6KW11WDuxT3IZ4CYhnzNrkSLMRJKHR+1zRjj47mxkZWZK0Zqq4QFF13qVn7ahk07uscB6qDcB/OJpmzWw4HUADwIHwc1/vYgkhUkqxlk2LDbeKWVMSpnJ4uy3e0yLsCmMZwFImCzmYzoeVSrkYKINg1DffJDH8cXT59DQkj+s1/9gr317juBCRpe8+VqvJUsgU2+T8cA9zxfnMUHoyrmpmbE+VNnQn3cdQUXz7/yEr25GHxEeFT89jvuTk5fjrEDKT8SRt+9PIPL+O3lBcgh7peVQ9WeEOLkD8pmcuJEcYYCTHRYiiDdjCSY8AunzzCYg5sCeX9/+vZb7JW3XndTPdA6fSChVaVWwWFG0mFC+OmZeVZ0ycsBmKO2K2Uc1V0NlDirG+uRjA8wVYywUM/IAeQD+eJ4xhqt/L+7fDIMQxrMiMxBYRB5xayNqtZrmPPo32IAQZyzsgSU2cNS4OyqNeqxVuj2HEhyfZ2bBpVJrOCfYRKgvJfDlTZlUNmAEw2jlA3TN+eGF+1Omy+sLsf6uzxsHk4+YDsbSq5QcCC/ev5S7PSQXdGVtxbvpmf+MQsdIoQd6GjGAJkQDMIYnCkhVBgpNCq8U6ubG/rfDhj8uaTknLvfP1wGdQEaQ87OEcMw3GxjaR0fHADbxbE5m330nTZ1xwFMMCcJcLJ2N5vhrJUagL3K1YfxN0nRv16Nv/DYGMvmWS6bRc12y8G4HvYCF/ZeVHBWMHB3gevXCFzAMrat/uUX/msMl1Dwfv/6c0+jdqcTiLgh6qpUqcTuoRLIZAfolDEwAs/hvdAy4/kx/uCFK+4vsAOMe1iTlY1V/tSPng19XE3kB9INGJUMyjgmmA05vHNf/oHn042F2+m3fNzjnlIupWRjubw4UZylMxPTzmM/KYUSyi+dOcemChOuSF7dXOffeO478dgzjoCEhu+21engaj3cSDqIUj03f5pNjI274uUAlWSj3cT1RiOyb3JxbTmyu2LcnSzgTm2Z5lDB5npZo4CQYQUBW+uFiATX7fIur9XjYaCESNRcJgepDhPM0f2kQ5Rh3HPM5bI5B1I0kBIj+Oe980uhoHvcwBg5DjSjlj4A5n5r8W7sv83DvklCiMhlcgF9sO+NCAbgcyfP4MPSSAWyV7joFKJ/ASGq2khW9LaLqQVaBfSQsMeDDsgAozC592AET+t4vK20c0Dx7WqFNZp6Uw2CM2yQiB6UElnIF4bnEqRdrvo67PKuvs7SnrxzIIWC9s6zkFukBmAvDPdj/E1Y9K8XtuzWnZueQZgQ0Ww1A7/ADkJfkG0gCjNj2zJrZ8AMLCGfZ5DjRdk3QEFfOX9JffKDH2Nwab+xeBv9+I2fBDLfbrfLqzH3so9SFjA2Y0yemJm7p1wzTVM9/sAjkSj1/+JbX0GdbjDOAFHz2e34Ozl9OSGO5g2gmgL5NtzSE5d67W6b311Jnmd+VPyjlHIhBJscL/D56VknqrYfTHFUtO6OC0abq2cv0IILo2WHd9WXn/4mbkSah3Y/x8DxDf5lLyQ0OC5slrZC308ppfLS6fMkl8kGJlYZ0dx2JqQWVpdC5+uOfBUlkKYokuFdyXNU8//uMgeiF23Ljq+AXEkxukrlaiVQZaaXmcFazmdzGCAth6HEPfoX+A3fTpBOLjGEf3aWluO8LpOBshb0t2BbyU8r4plHAANd2mKVWtVz06gb9FIfMGwZdqBvRkCXmZ8usomxQtRTvjd+l3fFraW7gc47NpMNmBBHB+EYhZkABPidVFMSIyTVkBiFW+0W3yyX/Bu4exG8xAvk8z7xYSRQH/jn3fqAPJS1MtQagnRPAS9hv907EcB+O0nb++dAkgIY/M82WT2kBmC38vJp/E1S9K9bluytZ5kWn5qYxN1uh3ZjADk2yBx0tYFcjvlMlhuGMbRQr4ZhQC5gfO7EaSSVRE8//31UrlV0sXC3H15vNFh7xA2KbphqGqaYn5mlBHCAMEYfeuRxN8201gFI8BffeIW9ffNXWvtNQmfw4ALjF3Xc7SFHTwpDd1Bu29Wy2gw5h2oS1o4bGsEYDJHBU4UJxxhcnJhy0yz0OmC0vHbhMhnL5o4dG2DAv/sPP0B3V5ZCp9HtgDuQ0KpSq+IonFoA4v/a+cvYNEy3JHuup5CS5WoVlB+e2/ptADmIl9dXo7EIYcwpISzOBqlRzf+7d11l7EzsnV78fgcBtOetTps2m81YKcDGc2PDIUuMHGhtEdNUFuCEbTIjcCVz7OCf93xIaRQwQoRgZRpmrPaAAPa6Q7tsdztiYWUpkcZEQEuwTIsE6bwBTAOksFOz8/4NaBqEKpWSqxtrpNasa+gt7eIwDkCEMEQKO1HCO9DRSU5FBeiAy+tr/va3QSCf954zGIMPrac3DNzrJ8YK/uhOl3g/Dogu7yZy/+83saT9nkJBx1diqQHYjWz8Gn+HPPqXECwKYwVqm5Zqddo4SAgNN+KKSx1QIPcgojOSkJ5pLi606aAjl82q/+6Lv+/MaXljjX//x3+v9TEBMOLlWpr/142sAO7LNEx1YmbOsUG+7+rDyIwg18hmuSS+8ey3R+LiBV80ZVRCJBlCCCIHPT0E3Mh1WOoopfjq1garNdIHvl+ZMkqFVIoWJ6b43PQMmxp3B7fsd1w37Sll8uFLV0jWzhxZvcu5+MkvfkZf+8XP3HQZVR2AT6MQfbuwGp2R+rEHHgncaNLudnilVtV6drsRGqB7rG6thz7uLm3grEBwfDFpDcPgtmlGxh83MgyyDsZYmKZJA4OwDZL4aPtWpUoZxy0NTyEfGJR9qNwWgscWlcjJ+8oMeHcGu2/EFP5530IY/ixUx657Sgk3mOOEPnIF9r47y4sIIF2TWnKZXKD5gA3G1OWzF2Khk+p0O+L28sJI6A3ish4hUACMwowyxSiTECW8g4CUCOho+MZXtzaQH0csv5DPoHdTHtP+wRltmxYD58a0BMMBqZQQgqf7STDs9dZrCgXtjV8h1k4NwP2YrcH4O+zRv5BPZHZ6xjGCNFrx8jrvJ96wfjeZgbKZjLBNi2KMOEI48Q8zRil/8OJV/Gvv/zBglaofvvIiXt1c18ZShZTaLpdj8UDRNqkAOyI9hSk6PXcCXT13iY7l8gGOdnjXcBn/6jNPIciPNoyll2+HOLDbaMejQymUrtE+woZv+c7yEo4i0nAY1+HunBijAiNMpiem5NzUDA0wX6wrNkLU6vUrDx6XW0wura/Kb/3gu7E6/xRCHO9AtXcFF91OhwklxLXzV0i92cA3F++4mr/OSj1ePhTG3qLWtzfDGGcfe5qtJt8sb0e2DsBxkRIWSyXBqOf/dRYKxsJgBoX0KmlxzQHeaDZZu9N23SCsikNiAFa1Rg0DgkUcC6VM5DLZwPe0uMI/78oE3thKDmv+SxcrD2PBKKVg4BnRwjdLW6xU1Y5KFho7g84HDG/ZK2cvAHJVaHM6bCCI/l3ZWIV7dqR0pIMjR7cB68GkBoecYuAgqRCCNyaod6NdKPcJSPHtSpk1Wi1vonMgnyXuck6jdJID+PVRzM/uTViD1YYgNCHjeUcbbEbJbxX1OZN8DuqfQWoAPo6nOoy/+mUWqx4BriaXzeGxbA4exaLT7cTskhArdjnEQFQwQERTRhlCWOwqnuNHaX+KwIv0cx//FAajY7laEU89/6w2+Xd5l1fr9VT7118M92oQ8C60bPrR9z2Bi5PTHlrqqSqUFK+99QZ9/Z239HQYg152jb4Q7UscF1kskYrbYygGjDqGBHho3Vi4HW8iE04dg4hGQvDsVFHNTBbJeAQOIPCtPPHQdcez/LDS6rTVXz79TRy1geIwgy94gwsJKbt7hTLGH7v6EDtRnEMvvv4K2ihthbpCANHh4UsPhGCYVaJSr9F2J8Tc7RjJcrVConQUgq2cURYCfwdbNvlsNvDo78EoC68VZUxYhqntThke5dGMJJWU5UoldkgkAHs4ls3H9ltzKy0hBa/Wa7F8k/Qg43Oh5DWPM/zzPVlipBC4aY5gAfQEg7FeRpoRLR3Oxd0ER5U6+YCZgSzTCmS/IYSKU7NzNN8nXUvQy6fdafM7K4uBzDFo2oe9fzD8guGGUoIMZnBGKFVIAZohhNZHLrNmu8W3vOQBxkhJKSXnmqJDIZhHeecDvD0MZoh8Nhc5D4dtDUP6By4FS5FI4yXZFAo6XvIAalID8FEy0WX89ZAgPn7Loz9FoPAtTk4BjIhod9p0rwK1f+vRrgEXqx2IaIURVhjjRL7WxnJj8l984XcJOAC8/LPX6O2lBR2C5fVmg4WqlNZBdcR9OLmvEGLwXf7xb/8zFAXkbq1Rl1/+zjcTuZZ3xQf8A+UJ7GsQ9LvL14jFm9jhO7wr7iwvpor8ECQIj0tA5YA0T3PTM3hmsggORyGM3Bviw48+fqjhCjxyn37+ObS4thIaLbsDuTH4HiSKMSY++PBjALWNuryrnn35hVBzAWczWfHAuUuhfDPgbFWqVkJURihHcdNoNUNfC3sHZIwBkEOkNBw2eJr/t8cVQoi0LTvRd4nwFpeS9UaDdLrh5/PuN8chMQCrWqOO4worC5CxoURZJAH+2dFuYYHk6DpqWpYVw5Ot306h73dAHVpYWcJx3A/dzhITLC0juHzAxckpNTM5HdkFSCmlltZXcNT3QLfySOshRHAvSpgxKgE+mmDIgaUkAsf4kI3CYMxd3lhzfT/0C/m8T/5OJLHy9WYaz4+BjildVlo5gAHDK9Lobq3TGZbOUijo2EkyNQAfJhJdxt/YiVs/QabBxPTENHiFoaZXKA795CS2R8swASKaW6bJsEIc4eRARDPK+PWrD9KPXH8CN1ot9Y3nntbxoFDlagWnDgUuljQoOnoRqVyh3oW0Uquif/sn/yvHGNNqvYpqjUZosHVccPW3P3wGb4YcMeeCU32rOA8bSoFvEBrmGNP7Nkor9OVApV4Ta1sboRiz+hIzQhUAoYMSgg1mqPniLAFj5nH5ef2yBhwnwAB8sACs8qtvvk5/GhIywCAG34M0G4zJjz32IbIDpa+2KiXxwmsvh7YfFMbGxcVT50L7ZiDCOSxINKWU2Cht0SgjwTFGghBKQaEVt2IahrDMNPIV5JIN0XklbuvACz2Q9CyKXN5uaBwGA7CQQlTrtdD2Yzd8hTrg8GVbNpzxbpv4qhd3+OcDkxNIodjJzJcAXDQmBCvTMHW8w12MFs8qAF27XS7R7UopngR6oCqofMC2ZYkLp85G9n1ABOfC6lJod2oPLE+reuAAJY7eBBmMcQqexwiQ0hA4zwMOQ2AXbEjzvrKxho6N9oR0AEphiPrV+b6BcxD69cCm+6oyxvh4bixd/36YeKAtyKXLuyAcjb2mXeniQChOirqIHfJ+UgPwQQHrNP5iJ3cCbD7keK8AACAASURBVESBHYBRrk9MCC/k8k4ye0DVaHXa6UHmUyCgQO9FBWchhw9xrk8BXqB8knuvOWzq//TXP4NmJov89XfeYm/fuuGr6zT/79HsA8MkwthxulAI7YMjhstPq90W7XYbfeHJT7OPXH8CvMCFRIq2u11eqVZZK/D8cEq99at31ItvvJqIfW8np69j9AUjetherL4+lAQ0Vkrx9e1NVhnSvNAJEIFDIuQ8RQhT27LFielZOjM5BfByWsmHvLUffPh9+x7FoAhYXFlSTz3/bGD3Ax0G34OMgH3hUx/+BLJM0/lJSMlvLd2hb914x9ej3y3DZ6eK8tTsiZD2UMWrjQZrtT3m03I7mfvrqZWNtUij6cA5AnKcxQ0mE6AfbdNkEJ086gVkZJlW7GQUQ7moag1y08L1JX4FIrnHsvmQ9jL981dIyUazQbo8XvzFmAjTMKjuc/w4DiYC/nlnAo6SXvpT0utfTcH3SCkB+OCRP0C45PL24kJi953dlQL7Zy6T0z4P0Dddu3A5+AV5yAhgPVtcW8bN8O6ckcxzFAftpc3qGYUBSYkRurt2ITGrxn0JkITK7Kg1hDFSQgrFuQji2/FtACYEy6ydJabRe2OmRQ8Hujx+KDh6Zpb8XlIo6PjIMDUA75WFTuNvfGQcGCVwyM8XZ6F/3ul2GBdp0nWdzAZokGzGllk7g5HCEu5UOvvX3VdhrCD/8PO/TYSU6qvPPAUedwMPkeb/Pcg6MN7sj/I9irlb5RISQqDpiUn5v/3xn+67+IIiSwipyrUqrTcbA8unX8N2p63+099+NRRDST9aDvvdMfpSxjFJjb6D8M9LG6WUXFhbJimcuxeuBVuXEOLAV2UzOXGiOENnJqchx5PvQQ3DUE88+Oi+777Raqq/fPobWKfyPAiD72GT/+KTn9n3z6BM+Mnbb+KlgGGsMcHi1Mw8BfjusIoQQmxVSqHdMRbXlkOLOD6Kh/AdUBI/DLY0/29PYk4eRAOyWWrUGYb1QYU0Dhi5Ot2OqNXrsWUSpUzkM9nQ9hbdrBdKimqtGiv64duA7yJjZ8KTe1Lgn/csAAfJZ4A8jbrXUGj9YQTQrASML6NewJF8cXUZJ/3t4XzrzEC25nzAlBJ5Zv4UgaCDsEuz3eQLq8vh7V1hTzAdbx8HnJRajlHYEIwRDM6XqAcdDaGaA29W9VZTlCrl+9qD8bfLOQ4sF6ym9I7wDRbyBe0G6hFefk4E8AjPP9ZTxxhJjAkB+1FaouVAagDe5b9m4y8scoQc/dbAB1u0S6P/6Bk7wyfGxp0LHMA/O/GIaQmEA7ZpoVwmw03DZAgpjlD8IKIB/uXxa4+y9z94nb9z+13y2i/eGPRSM/L5f+/BD/f2EdhIXPGy0+3wcrXqfJO2Zcl/+YXfI1fOXTxsTQIsDq3Ua7jWbDgGY52ly7l85sUfkaX18PN9HjWPXk7fHXhngM328ejQyath7wvOhRt3bw/7NBM7P0opl1KysVxenCjO0pmJ6YFzCVqWJR9/4OF7e5VUCn3rB991YLr8lLAMvntpZIypz33sk/e9UkCh8MNXX0TVACPawTB5dv40mxwv+GGbp7bwnW6D85B0jpxAy65iNtBBXHQOxjNGAe0/PqUX7ZNxdd7Hh+rgKDEMQxrMSPlxDIvL1crxMIjBicdVz5Qyns9kk6rsF/Vmg8YtqoQQKvLZXKj6hYTBP7+3NkdINYExFuAyEzdkC1cbhe5KGMlSpYw3S9uxOuMHmWYQ+YABxW92cppNFSYGIWngNlJJtLi6jIJHIxuYxLRhCBwAJxWIFN4LHe0VhU0IIVc219+7HwYE+byPHRry/+72B99gxrIZ6HjTooUDosu7od6LtFA9Yp2kUNDRCzw1AIMMNBt/oxdr8BSAkmpyfIKYhoGkUqLVbqUbbvBsR/Co60FEZyQBJxoULzcaoO93PvV5NDtVRH/zg++iWqM+CFcgQhXrNkoOQkhYbRyoMgT/OflS7uXy9TI+eJuUKhW0Fwbw6rlL/F/97j8/TvHmGEKbrZaoNGpUp6f0zYU7/LkfvxCp0g/WI6VU9LQhWO5EUXtha1rXJwe6oitvLy2mCnyffAyjORiDhRBgeOTz07MMIoO9eGpm7YyAfPBAK+T9/fEbP6E/+9UvPJMehcH3IJEZ21af/vAnDlUc1psN8ezLzwd256GUiIunztN8NueZdz4aOIaORqvpowt3TUFps7yxGos9QUfku7tZu6tlmYY0DTMWvHFHcbC1CKXCNq3AvrVgqQ+8d0i9Q5vNZqwNHIwZPBdmpKpGtkslZaVWjdX3CDmVs5ksRFFpnGn/rpIE/7w7m5GLAEbISVvh5d7WX/LJrQGIZLcW78R6f/TC3Wwm6xjNdJV8NsvPzJ8K9Z1ebzb40vpKqGPq4lfaT3AcAI0mGIYYZYoxJgnCFHRjkIHnOOjopfVVJ9oK6gopEOc8Ud87nOeF/DhO92z/awvsEUJwfRukf5LSHg5wwPmmMRIEk/QMiHB1pAbgAIy/PWMOEgCxGKFsAx2aMSpnJosEHlftbpfFNfdUoEyIuHNQXGYzGZG1bAIwqxjjWBx604VJ8Qef/RJdWF3mP3r1pUG+AbVVLiXqAjfIUjgQ5Qu5wn3NGWCzS5XKPn7DZfrP/uhfo+nCZF8SIaEJKObLdYCH9m8EAAP+f/zml/uOq7vCziNCUkqBn/B4CFdLpntCCe+v3qzz5Y31QfaBhM882eTvRgZPFSYcY3BxYqrvhPL5PH/k4lUGj7C7y4vqO3//fVdyj4PB9+DkxvNj4sknPnromSqV4isbq+iVt153Nb++jDtQAXIpP3DuMt7NP+y1/aD1pZRys7wd+H4JSBVrWxuB8M7L3DFGghIGSiYvzQKrCzk9bcukKXzneywG5Zht2fEQUGCSH7hjBRFuoPyMczEN04lyiTONh9EG7/hms0E7McspB0agsGHRIbIU9PNx2Su9rCWAA1USjcQegglWlmGOxFzdrAHQjSytr5BWu+2meuzr6M4HDHfNq+cuhrZe4Ky6u7KI2t1O7HmdEhg9B8DZgVICKYo4dTz5CYFzGaJfIGAC0pptlUqk1W0rMPwGBvm8lxWAzNcL1tBSAOLdtiySsVLkH78MBfmDE0Ba4s2BFAo6evmMtgE4AONv9CINngKMCR/L5Vguk3UGa7ZbkedyC37W8R4BooKzmawD/QTecjhCeFuTGfyJh66z6w88pJ57+QW8vr3liXldLni13oMxHqqyA+cMUdtga1VIq4OIowg8mGcTYOJ+7YkPkS/82qddP/Ac2hQilUYV1xqNgaEFIQLwR6+8SG8t3g1cjKCU6nmOUkcTCv/v16AeONGjMQBf395k5Vp1NGY7pLNklAqpFC1OTPG56Rk2NX44ZNzEeIFfO3+J1ZsN+Z+//XVy1GM8jgbfg6KbmZrmH3n0iSPPIciZ+/Obv6Q3F+9olzrsX9evPOQgfoRc1HaljIN26Gu0mmKrvB25wxoYgAnuqZXiUvK53GhYKjwwPGNn0oi2+/nFG80ma3fib9iwTCuRUdxxi/4F53LbtLFhGB6+Hn1VQRGfyAIpX6SK/LwJg3eUEm4wY/jezz6YV6nXxPrWxlDIH+4sjBmwD2iRMdw1L505BwY2Hxx237TWAIfgVS20ux81rTksHHB0PU4uYYoYY4higuA8/NWdm6HpoeEbDCK9Y2FsXGt0/7DI3O08IKiGS8FCcQJwS1Ra70gO9FKKQBxhWqLgwOgagIM0/mrMD+B3UTjRyD4jCw+jYW56xlFOgvdVs9VK6KvQL3fj1x6MYDsQ0Qpkj1HIGGE7LIEd/fc/+yWEEeZuo8B6TTFvNBtsWHLDvBfliwERgAaVJ5tzzrcr5UMfVZZpqv/jT/98kEOWA+xOs9ni5UaVdbpdzwt+eX2Ff/v55wJ57PUeAgQBGkFPO4wl8NgzkWmDwDgACtSl9dWh8b4PjFEJ6pgxKuBcmZ6YknNTM3RibPwe9cWJSXH57AX69WefRmtbG/f+PQkG34MiODN/ij/2wMPH7l0QzfDi66+gjZI3J6d+4gYUg/c98Ei/avp/x0g1W01VazSCvNPJcq1Cgsyh7IUxhGAnCthLm6DqgsNWLmPHgpag5ui1X4g8NA2Tpjmj9nMOztZypRLkd+pVVEfWt0wLJS3HnRP922rSTkwi1SBKyDRNahnWIHd537JMIvzz/kn33mC+GRHjDiCqhlJGUgSJ/UICJdi7C7cj+W6CWC6QD9hkJjEN03f3hBB+ojjLxvNjvvvq1wF4Z99ZvosG0SX06zv9fbg5QAgRkPVOcEkymYyYGi+gybEChXXbaDYDTcmzl7NBGX9hDMMw+Fg2H4i+bLhXx+7ssOCiS+OOiDMasug/S7ivQDwUwRpzGvQfNq2xw4HRNAAHafyN0dIKyvhrWRafGp9gCCPZ7XLSjRk8VoxEECkp8DjIZTLcMkyGMeII4VAvFrNTRfFbv/FZ/OLrr5K7q0sueaFUuVZLbv5f8DRHDpQz4MCHknMWnDAq1So56lFlmSb/4pOfYR9+9HGXMri/Gjygu4LLSq3mOUfkX3zrr7U9+MDOC44njDEnyv2egX3gmaUNg+bAuwu3IU980MOk/UfAAUapk4t+dqqoICXElbPn0eLqCnrz3XcgCdO9XMDdTsdJEyGkjIDKwYa8eu4SeuD8pb6Nu7yrnn35BazTUGAahnr40rVIFJaQi35jeyvAsRXfKpdYGLmG+woPDmqCJSMsckMaxlgajJGwYb/d8CjKOqAkYMwgYUUoRTlXt2PDna/eaJDuAE55bsfQVQ/kZ5k2sTQYK3TR5KYf2AfL1UqA+6AbKnp1wAmCUqayUeVRxliQhMI/73J5FGCgwUnAYIzFCdHC/SoPriY4y6xurJO43Dl0zTRrZx3kK79lYrwgThRn/Xd0LCFYVutVubK5Fqoeyi9v0vbRcIBRyqVSDFDdxrN5MTUxycZzY6iQH7sPDYYLrr72zLdjcVb74RYhWOUyeWyw9BMZhI9g8+jybuxTogwyt2Ftk0JBRyfZ0TMAB238xZD7t6f4jLIEZfyFaInCWIHueHPLVqd9JMxjlPNPx36PA2A060UFZwXrYXiFkhfVNAzxoUcep5fOnJff/P7fuVWwJi7/73tGSCwUkqF/+1wIsV0uHTtucXJK/vl//yduZXDk5wPw0FIpiN7CtUa9r2FPCMlffP0f2du3bgz8ScKtnvTgnQXkuU6NvgOzMvSGQgp1c/Fu4h9moTMuoQNePHkWrZU2eRINvntZDvechy9do+dPnnEjCbVVKYkXXntZ26s9Y2fEtfOXQz9LYLKOQ1HtaIciNww5ro5SSGxsb9A45YCLg3EREyIyZhrpetjaAWWgaVravi+/azjq9kIIXqklI02Kk9/OtJiOaLUQ+c4brSbT6dTjh3bI+5nP5n3f3/3QkFj45/2TjoV+xo8c+rUFB6Ik5mnuNy+/vwP08Orm+lCdIYQQlcvkfL+vTNOQl06fD3x/ubV0Bx1MU+VXrmn75HOAEsIxxkRISUBPOTU+gSfGxglE97pBDuFCoO+88BwKxcEjYB0/IGyN58YjefslfyUhlAakJU+KKRR0NDIbLQNw0MbfaGR436hBGX9hIEqImp2e2b1wqkar6fvyGRO2jQQZjDKUtW3wJAe/cgkoukFOHB6if/DZL4l3796mv7xzs+9QPAmKLezkWCZOTKNCunP59uXR3gq96N8a6aeoskxL/tGXfp9cPnPeU//HVOZKKdZotUSlXqPHXbo2y9viG88+7Xmd7eT0hYcBPNodOGpdxKf9hMOBZqvJF9fTfE/hcDuaUUDBD44ZtmFhTDCqN+rREKJxVMoYf+zqQ+zkzLyrXoWU/NbSHfrWjXe03IfG82P80unzke13nW6HlwMyMEFk3erGGgalTRwKRN5SQkkclOZjuVwcWBI7GkDRbVu2lm8rdpPzSBDA29XqdRR0nm6PZB1ZHc6HjGWzODhZeJiTKlXLsVhvsPazdhZHGdWZfPjnPZIfYjAaiCAzDTMW69bDtxZKVbh3vHt3eGCggWkAR0upoWB/9cvEaxcuB+k4IMq1KlrbWvesB/A7r7R9/DiwG91rUKbGc73o3kJuDA0KQ86l4C+//ipbXFsJdLIQragUCtRRghAss3ZWC7x7oMyIZ+dOBHA8SUupOvqRgCTGRJKerjctIXFgdAzAYRh/Y5D7F5RZSqlADijoO5/NYfgD6xO80NvdTvrBhvSx6h4G8nLlMxluGiZDSAUGEX1iZl5+4ROfxl/93lNYqmMhQEWj1aStdlv3VP33t+P1B3nBEIpPHikhpdgqbbt6VF07f4X/D7/z32j/XkGmXc4FwEM32637eC2EQF/53t8iiBjuV5ycvpRyTEhq9O3HrPj/LjZL23S7Wo4/pSmFA3MgY1lqNy+hVFJVatXEP8AAYv6DDz9GixNTrvkC0e4/eftNvKRBCTEzWRSn50642tddE+ihIhiZdOc13jv8guuUEB6IHrQqxpxiEjlsJqWUZ23/itxB2RD3dtlMNu4kBk6fA3HX7Yhqva79HhcU8T0DcIYlCNaQN9tN1u50gmKJp35h3YPjbmRlCOCf7/EOUvRAHuAhNQJDnkzTMCK7N0S2Rl0MLJUSa5vrtN5suKidnCqYYGEyk/pBWKCUitOzJ2g2A4EBwZSbi7dRXJz+gplh2uthHHCiewkmUiiSy2bFVGGCTOTHMUA5+1mz+8bCSIHz7Zu/ejtQIYRhAIYJgNPXxFgh8e/oQIVxeOeiy7vp+RcB4/0OCfYlQAGIgyO237kkpf1oGIBDMP4GGXXrdjEFfTjBh1mcnNp9jIp2p0OFjEcUh1sepfXu5wB4lmcsCyCiIRLGyV+rk0+mYYqPXH8/OCXgN375iyO7VgjJaq1K4vBIAJhhhDFVPU2BgGhXnTzR0RcYo6u1Gm133BnMwbj653/8p2hyvKBj+Pv6kEhKKRWu1mq41mwgMCJAkVLxV976KXvjlz8/dFwnp69j9MUMI8ihHGxUeiCTTzu9fz0oJVY21jznjE5ZGX8OwH2HUSYyprXPcAbffLlWgUgCSBuu9RwJkysGY/Jjj32IjOXynoaVUqIfvvoiqtZrntrtrQwPoZMzc2R2ambgPvw3VA6yQxBGEIjEWVxdjtXaIJQ6RmD/fBusB4jkMQ1Q4hqDdTDkreCbsEyLRBkFGRcWl6sVuGnFhZy+dACyY9a2aaRGzL5U7qsQi+hfyE1uGVYsIoGGBP7ZEbJzN5HJvZsct5QZY4pR5w2flkM4AIhES0OKSOQnHzCcr8XJKeLF4dHDAhOlaomsb2+l69ID05JYFfZWSqmUQsBdVo3nx8Hg60T3en1LeZ3/ZmlbPPvy80Nh/MME84xpM9uyvbJhpOuDk48QfCjWwCgKMoWCDlfqw28ADsH423tVII5UdBClQRt/YYqQ03V6Yure5hpKvoVwv4eRHw1g2rKZjMhaNlFKgUeOlsMUFHf//PO/g557+YUj83SA8WC7Emm0oGN8jFuU71GLEsytm6Vt19H+4OX75Ac+Sj73sd8I+iG2Aw/d3IGH5qhar8u/+rtv3qMV1gOlhFNI7osQaDO1rLOR/4BjxAD4nm8tLaDUSShGQvFJCnaigZyc8ocr9DFSlWoVg5HP2Udj6DjjhgXgLPOpj3wCWYbppvq+OvVmw5cighDCz8yfYlPjE57H1tmgy7u8VK1oN4pyweXKxprrc0vnnI7qC6JoGGGRnUGggM3YNoF1l5b7OQBRpIZhsAQZEYMQI2932rTRTFbaHTBk5qwsgZQeCSi82W4xt06VQc0H1rtpGMQy7cg3BNgbiaZ3YFD88tIv8FbJ+Dn0epnDYXVhXowxlp4hR3MSbqU3F+/cc072y/M4td+Fih80gipnZ/jZk6e13/d6PL+NRIKcluIk1zjTQgnlkEZOKgXIkGK6MEkhshf+hJ3ygQuuvvbMt4PVbYWo54fveGKsECQse5yX1kC0gWNkqm8aiHXxaISxcIzAKRR0KPIYbgNwSMbfqKNdwjD+YkJ4IZdnGSd3LEJKSd5st7VfFkNZ9ekgrjjQiwrOcQPcipGT99aXBufM/Cl1/co18fc/feXQdcNFD0bYFXEaKh2I8gXo9NDG9ks+yKNWr3mGy7YtW/27P/mzYC/JO5ODfUlKRTo9QwL9q7/7Fi5Vy3LHQx3CgyNXbvmVQ9r+aA7AB/XuwnDl3BpVee/m+bUME/cxiopao06d/JQYcYwwTWok8Bef/MxA4pZK8ZWNVfTKW68PdD+ilIgLJ8/RoD3m3Uxus7TlJL3SWTqdDl/b3hiINzrpONhX2AqrveODsiefTSGOj5MvY8aow5uq7XIplLubzu8MnBtymVxSnBsij/6FezMhTOYy2ej3yGGCf963qHegoHUu9Ij7Aj2UaRh4UANgxOSHMrxSiq9tbTA36YhCIUjjILBvUGrIQfMBU0rV1XMXtZ4vSiG+Xdlmm+VtjTNNu4qCA3COU0KVkIJapikn8uNycnyCgbE3n81FQdK+MQE58DsvPHdkgIlvAkNO8QioQJaZQYCe4pv2EegA9LlcCpYkdJwREIvnKcI9Bi4x6T3GM+s8NxheA3BIxl+H4yF6Bd0nYYwkCjgpvTNFjNF8cXZ3eN7pdlgcoHo9r/i0gWcOUEJ3IaIVJlhhhAcy3JmGIT/22AfJnZUltFUu7X+OIyTqrRZtHZJD1jPBxzYAiGHH0MsVSq4XOOTa3Nze9vxYs0yTf+k3Pss++PD79LK1T2/glfeDf3wRPf/ay4AkEOrY6WDRcKDVafOF1eXolZjRTH+oRrUtS1qGSXD/7AC82WqydreXPxFjJ9jC8z4VNfPA5+lzH/vkwHQLIcTPb/6SQrSJ1+Io4s5ewrZleW2qub7itUaDHZbX3c9A9VZTbJfd5a33M46Xtg50HaGRPTopZTxrW+leeYzQCKXCNq1RVYbxRhPy0rpL9+Fl7QddF76tfDYHaQCDHspv/7zVbrFWxDwmhDgG87gowIYJ/vneAgG9iRwuB1T4zizTHPjO4vfjSUr7VqfFF1dXhvKsBYSeXioJ78g1EEF8/uQZbJne2x4le3AevLlwS7sTYVLWWpLppJCWC5AflEK5bE4WC5N0fCe6N45ILFwK/vLrr7LFtZVA2B5VoFchP44Sgp4SCN/dd4oFF11wOHffJK0ZSw6kUNDhiGU4DcAhGn+jOhR62lWIysQA1Rv4pT9rZ3hhbPzepRmUgulGG85HGqdR4GGRy2S4ZZgMg+MDwp4eUnBx/M1PfJr/8JUX97Xr5f+tESdyTGMBrzCFEEPw4Hci11XstVD9p7+jmG+1+lc9pMbsVFH82R/961AVqWAQ+S9Pf4M+9+MXUHFyGk2MjQ9Ee9ooGRwAw99muYQPOnokg/qUSuAAIVgSQiXkIvICK9jpdkWj1Qh1f9EtsYxtq09/+BO+7lVwP3rx9VfQRmnLE3mg+H/08oOxePTDvr1VKWmUJRblaplWG4PnSPbETLeVMeaUEBaFkWoH7pWljlHHCwsU1LZl+/om3S6HuNWTSspypZLYu+t4biz2UIawX1fq1UjftbD35zI5FJdc18MG/7z3u3behhGm7dK9xxBCRh0hwTVLwTFvmCPFMnYWMY+Q+5B6ZG56hul6m0P071Z5i21V9jv7uxZSWjE0DjjRvZQqzjnN2LaczBfk5HiBgcE3l0kIMg1G6q0b7+A3f/V2IHyLStdvGAYfy+Y96VkDYUDMOwX5dHkXp3aJmAvKDXk9KGg0TKlH3Ew77DrDZwAO0fjrCAtDnjt/0LgDCb1n/IXNLnClACheJscn8K6CChKtt9otjUrBgTiQNoqQA7A5A0R0NpMTjDihM2Bg7bsW4ZA+f/I0ztpZtLS+em8GCim0Xfaf/9eJOEMIugNaEh3le5R4Ib/mxtbWwIpQy7TkH//WH5CLp8+FtoIgn+R/+Np/Zv/45k9BuQVeymhuukijhN0MbfIjOBBAra1srrN6szGCs0/2lDEmkNeJZEybGMz7u1NIwav12r6GYaSp0Mn18fyYePKJj/q+43R5Vz378gu4sxMR7YZGOFsfe+ARN1UDrwOP6e1KWWNeJcU3yyXWbDUDp93rAJQSSTDte4fx2m+/+nAnyto2jovRpx+9Uf0OfAIDcFwiI8Pig0JK1hsN0u12wxpS+zgQxRLzItrdNmm2WgPfq3XMD95FbIAzV8fY9/UxtPDPe2Y6RMFCjFHJKAv9/Apk7QXYKbxN1rc3WbUeMyc0jXMeNB9wYWyMn5yZ937pP4R2pZS6cfcWBmVMWuLFAUYpRFqA3g7gmyF3r2PsBThnQPxLatksbYtnX34+mAlEhPRJCFa5TA6nurL+q7LLk3tH7j+70aqRQkEHL+/hMgCHbPyNSqkJuQHA9KxCgH6GJQgPi5nJ4u7DQnR5l3a53kjN4Jd6OkJQHICo3qxtK8gPDYbgfrmCTdNUH73+AfT6O2/dU7ZApFG5Vh3o4nYgyhecIiJV4gTF551+eb3RYA2fCvSHL13lf/SlP9Dy0HMz33anLf7v/+8/0Ldv3bhXHR4fxYkpVEijgd2wMFF1wEnh9vIi5uk5kRi59e4VmNqmhfrk+T12TiD7crWyfw8O+W7ml+kzU9P8I48+oWN/VFuVknjhtZdd92Uwph65/GBczjBRbzao3/NmVx4KKbG+tUm9GMT9ytJte0KwoIQNdAdxO8Zh9UBZm8tk4iJvP1MJtO0uvOWoweFxIUR1wLtxoALx0HkCDMCoXKtEFv2LCZaWYZFBoFs9iMFz1aGEf97lAkSZgB5FBu9E75nxHhsAigRjzBNSi8chhqp6u9vmCyvDm56mB6FJRdbOuL53goDh7nn57AXfdxGI/t0sbbLtqn+n/qFaeBFMBhMiAMEJonuzmYycHCuoybGCA+ectTMRUBTckFxw9bVnvu17/d5HYcj5fw+OTykVGilDsQAAIABJREFUhfx46G+T4CQVSM9OBHAgPaedRsKBFAo6WLYPjwE4CgVjBNG/O8ZfCHMM5TDABDvwE/dgQDBSrVYLQ26PtKQcOMgByB/Tg4iGfHbqSIhoMDA8cuVB9O7CbfBlkM1Wk7jONbgD59yLgJfCgXgenaLWtzZ9X3IA6vLf/I//c2jG11anrf79//N/4b1R3yAyQomwDFPNTs2wQaINR0fsyZopGAFv3L3te50ma9bJptYyLWEbpuMV7reUDlP8RHBfGnQeZ+ZP8cceeFjLuSKk5LeW7lCAJ3NDj23Z4sELV0K537mhB+BnN0vbuiKL1PLGKhYCfBjjVeCxyShzJSOdlDPGeMZK8//24yk43DJmkFGKhIDoqVqtjnSnRunHa52/g4PDWDYf+nfleg4YyXano5qtZiR7LhjvDMPEcctvTTDmmHhL8eOa5zGp6MB6yuQ7DMM8TMMYOXQEP8vo1tJdFMd7iJ857W07SD5guPtfOXvBd/oRqaQT/atrLmk/7jkA0b0KIQqIMuPZnJgqTDKI7AWDbxQpTtxT7r8mFwJ954XnkC6HVf8U6ekBUjFkrSzVmZ9bD2Wx6sUJTosVRSkx/jgAd1CMcQoF7Y+NR7UeDgNwBMbfSKJ/HdhnyGMajvF3d9HMTc/szUkkG62mLmVgMKs67TVyDsBFEyCic5mcoJQQeFjsjcwFpdDFU2fxZtnJDyOq9dqxUeXvRflioZQc1UOe15sN1mj6h88Ej8JPfuhj9DMffTKUtQLQLH/2f/47VGvUDx3PiQaenHYgiNKSfA60ux1xd2VpVL/TxAjQyfOLqQQDlEboL1Wt17CQ8TPyuRXM1XOX0APnL7mt3reekEL95O038dLaSt+6Y7k8v3zmghbjc9/BXFTYjejWhfqysLrkYtTwq4ASnVKKMQpPbwnGH8s0U+cnl+IG5aZpjoaxHK7M3W5XVOv12OwFLsW0r1rsDcAIoUqtiqSCLDbhlp1IPZnLZON1VxoF+Gcng9fw5AG2LSvcxZvk0ZTiG6VtBlH/w14AmQ1Q2twUiBo+NTtH89mcm+qH1oHo343SBitVh5+3AzNJU0NIpwXaNSEkyWayYmq8gCby4xT0KLZlaxolOd1wKfjLr7/KFl28szzNCoJOQkLcPIouuEdNjBXCe5x4YlD0lSE1pRA8Xveo6NmSeApSKOjgRJh8A3AExl9HHGFHs0Q0T8uy+NT4hHN73EmyrjrdbmoADu6bHLqeIbITLqdZyyaQzwwj7BzSEMnx6JVr6ObiXbTVMwS/VzAWCO1AcykkFFLuXjBDx733JgT5GDdL29pg6jK2rf7t//RnoVwogfZ/9b//L8dKBx4zlmmpuakioJkNsSSHf2rlekWub22l50RMRQ2GJ4wxzZiW9txCCiHeaDbYUfl4nKibGMP0AxTww5eu0fMnz2iVnpQS/fDVF1G/3HPTE1Pi7PypWD1k2+22qDRqvmkCwS+uLYdy5ngVHnwThBAWZpREmv/Xm5RACQZ5gL21Sm7tcrWCYN9IcomzARiM7O1uVzaaDd972yAy6sG/52IZuTnU8M/7hRW5cn+QtbO3DbydTMOIZA37pT2q9h3eFXeXF4eeZ17zARcnp9TM5PTAZyw4O767kKI/BbGuwQFOKsUYpWo8l98X3Rum42IQc9PSJ0YKkJbe/NXbWrrb7QSQN8MOvDo4AXif2JbNMiNo2HcjTLgnJ9np3M0cR7VOCgUdjOSTbQCOyCg6KsZfUIROjBWoZd7zLJWtTpskXSERzKeU9uqGA+ClnLdz3DAYIwQrgxp4YrygVjbW4cEBIWNUOX+roX+YueHXnjqi2W7hWr2uzahmmxb/rU9+lj3x0HWPpHivDhDQf/rv/42rRyVEA89MTjuQRWlJHgeUUnxta4NVj4j2Tt6MhodiQC5BCBO/eX6P5QhGstlqkXanfXS1sB3oPIiQMsYfu/oQOzkz76GVu6r/P3tvAm3LdZYH7qnGM935TXp6T4NlGdkgx0SysbHAU9vQZuEFIYRAkm5mSBPGdEiThHFBQujQpJskJKtpAp2VhIAXCbRxGstpInV7ySAbYQlJ6ElvuPN87plP7aHXX/fe9+54Tg276lSdUyW/9SydPfz727t27f0P39/qtMXTzz1z7rcNLjoX5xbwxdmFYA2mVAqigDd3tgPt34NEgnymq5trmfy2+5dMTDBQ56X1FPl/wyPtOm74Svmrwbu9Lut0u/mT/ITEhBBZccvpvVQhEdtrNUZmZC+5JaSReSPkyM8vPgn0z3dHD2ciiTK7PoNMKmNMsElLjh4EmAFlwCn5zuoS0sVsElOcRKtTynjQfMCQguSBK1cjndGUUmJjZ5PWm41ExzMJjVNCgIKfQHQvMOnN1mq4Vq4SiO49opOdBChCjXFrd2fgHStUY37g0+iNv4cyg5G/Vq2OPZV36DlCiHMpWGGbCItcTsqDczZGBOMUL+c5gSaOmPk1AI/K+Atop0kHMcJxUkogN+dRpZ9qdzuxlYBxFmxRdzwQoAQoom00XZ1CD953P3rl1utcqSLKd9DsQvSv7gPOxdkF8UN//TsjXfbCrMSd+q78kX/yU4GVLODRblu2WoBoYJq4eGGGUpQdggAYi+6sLuO+5xVYZQwB07S4Y5hMR57fQUPzBOet9gDqUohARoqoEdNqnTUGUKY+8djjdHZqRvvsSaX46uYa+uOXXjiT4oAQwu+7cJnN1qa19x2zQVFv7tG473S/3+frO5uZpXcA/CkJyJcYE1CobhgGt00zs3hoGKLWJjDG0jItkqaRXusAgjemduq7Y3HXopSJctYojg/mgQvOm4O+U8HnK1RJcDaBSPZM5rOeEPrnoxOWZypoiAxjlBb231BvoF+Yb+3usN1GPXzNnNXw84wzgwUxHMLd4NEHHo40Qi65fGPxduB7fqROxrQSfCeVlNQw2PHo3lLhCB9myrng6uOf+sRYnJ1OjhvOv6ZpyZLtFHeGY+BgwYVHwamneMYXAbj3Ja27Gl/0To8snwbgERpFU/UG8sep4H+pb/YwzpJTopVS+e6qkULyrtdLXZZJeiEnaaywkbu2o1Y21vC1y1eRaRiTNPzgY8VIdns91WjGp+A82SlQLn/bx/4Kvn5FL93pyX7urC2Ln/hnvxDKkgtKMnC3WZiZQ0f3oeDAFSVHgQAcwm8s3hpF10WfZyCACRZ+TnbTBi1hKhhJJcVeszGws/208CkmXA04coMx+e7HnyBJ7TlCCPFnb/w5fWPp9imJKKX8+uWrrJpBpU/f6/N6sxHr/NfqtsVOfTedRRhwvo8WwwQrRlgqyqMi/2/4CTpUZI9zighgwOl0OnQgg0J46EZWA6LPyo4ba99ISnig40+bNhADXS8zjjJrJTW8yO1OEP3zPYxyqjuGe5JpGJmkEY+8AFOq6AlP3l5emgiD5aHTybB8wJQSef/FKyRsDlmI/l3f3qB7rWZKs5ffbg6je6VUh9G9pFauQoRvoQeLOa1cCPTJZz+N2t1OzJYOqmeQraparqK07vJ6QEy2lYP0lJBbKtmOitZHigAw2BFCJ+J7nQbQ+TMAj9D4609IWtG/Ix4nGOfmpmePfmREz+tTIYClt3gKBKIjQAiWlDBVchyysbON2502KpXK/Mr8hUwqiaKPVF/N7d3dxBRVb3v4Lfyvfc3XJ4r9F268wn/x138lUh9AIWjbjrwwPVt4uetbUom11Odc3F5ZzKyRJ7GBZ6zhwzy/tmlhk6XuXKN2G/VUDGm6YQd2ive/873IMkzdTd9tDy6qn3nhj9Hm7vaxPiil8k1XHySObSfWd9SGQeaT8oZsS+w26rSZcWr4NKPyyq5beDSHXESMGWOd71IqKet7e2Oj5GDM4FmMWBlF9K8frckMYD+KdBYO+apEKj5R9M+HOn6MpFIYyGtyeW6F1ErFEx4BmPDF1RXc9/rhK+ewRpB8wJgQvjA9y2ZqU6FGCMb0m0t3xua7FWrwAwqDcQrO9UIIahmmqlUqYqY6xSDFVcW9F2Cjq79Jb4dLwZ974Xm2tL4aGwowOGWUpYpXS5XMniFiAx+hAY8XjHMRYMtXFZ8KGtPC203PtOXLADxio2hquX9HPU6EwAtNzE7NHLsMafOo0rN2i1ZyhgDGWGCMiWs72DRM0Wq3FOQKhWFQQtTlC5cw0EIXz3EEgDYzbuTVIEzB2ePHvuP7UfVItL/uOfivz39G/Np//M3IypX9/Iy+UwpOKjJP95gntb1Gu8nXtrJL8zru8wLvilIKQ55f+DOqp97c80N8hz1ZvGR/9KkPDRM79u8e99TTzz17TPkIe9xjDz2KshnhqPheq8WiRyYqvlXfZR1dnvmxZ+B0A8B8QwmDC2YCrR9vEhybwAku8Y7GrANCqLAtK/JZIstwKKRkq90m3hilTzANk2fO4ImRarSaOG2HZqD5LGWUDhvei32nMZR4iojMvoPDjyuZEx3S5ZiGMZb7YQpgi+36Lt3Z202hq2x0ESQfcMUt8fsuXg5sYILo37WtDdpoF9G/wOKDEaLgUQI4ztamfWMvRPcaLDCk2VgseZQCI/XSjVfxi6+9Elv6LN5NYVAQRFNySiRNZ9XYYCbbgPK4l/ylLdkxFK0HRKCggg4I1JBi+TEAZ8AomgplYRbGSQivlSrsaBSKUpJ3egX9s57XbvJaIQQrg5kCIgFAuSqlVLdWFo9Rdji2za9evFKckI8sD4UU2q3XEdDaJPWAUuoDT76HfuCdX55IF+Bl/TtP/z7+3T/8g9jtAz2VbTmQG5hCpF7xZA0Bxde3t9leq5E1wSZCHjD+QoScY5oMaJ9H9yjZbLdIoH0LKLaQH32Tib2fMaY+8u73pXGZVNt7u+LZzz13d9zQ6eOPvm100zakZ84532nUI80TGLc2trdIlqNtwABMMHxakn93wMnSMs1CcR9htbuOG6FW9qtwIURjCHV+9kdxXELLtIRtZstgLwTnjZRz/0L0XckpZT54YSLpn33jN+JKpp9uK+77zBjljBaWpag4cinUraU7aZz3ooqotR44eZiGSU3DPHfMcAZ+0/0PBMbE4564uXxn4s4ykJOVUqogutc2LVmrVOVMtcaAorc8pmcUrYsxoca2dnfE0889M9brEXRhtXIt+YtKQnOkuVnhcW+s51szXrlurqCC1jN9+TAAZ8AoikCGpBWUI8z5e3Q5gYHu4tzC3f+EEeI9z2NccD2rrmhlYhA4pCEtOe5dGlLQ9K9tbfrUz0cfONBcmF0gZbc0MfgMG6ifd7ERL+/isD7gd9dx1E989w8HvvAFafOwjJCC/5vf+232//zxZ8JUO7csXLoIIXh+ehYXa0ULpNoaUUrJxfVVEj1KUJsoE9XQKPL8DgGYt7sdFtjYl6E8S45tqw88+d5E9sKTmAkp+c3l2xQ81uE3Rql625u+KJW+o74gW/UdcOAKXR2iwVc31xNLZRBaoHMqEEI4JTSSkTuoDGBoBqNYNiO9g45iNOUOcxmmEaWd5gjB2a/ZbCbq7JfmeA77skbMRHHGmFWz3cSBnJM0AlZySojSbOsoJ5H++cQUS6RQbpTqPqU4pUVqnBjvKdDlLK2v4km6s/jfUNPG550/4Nv60NXrgSJWpVJybXOdNDutGLOQj6qMUlCCUsgFWHJLcq42RSGyFyJ8i5ys2ZlDLrj6+Kc+Ef8ehRFHKptOQXDndy2Hwvlq0h+pwAeDZ/twNemTpHP8wFSDEEvDUVun2FlrK/sG4CwYf/e9Q0F/Ff+Dct4KyIjxF8RzbYfXKtVjCrBOrxuIzjFrC7yQZ7QIuLajHMu++94ohI5RP5+UDqJirl+5v/iQ7wOjdvbqmPPkHS8gSuPr3v9V9O1veav2BdP3PP4vf+v/ZJ97+U+1tg0OA47tSshXVBwEtEIbq7Ebi7eKb0UsBINXvpvn17CwaaSe53egoD2vpzrdbuAz0yF1dfDRJ1OyWq6Ip97xrtS+QUIK9flXXsTL66vIsiz5RQ88kmEFtOLNdpvBeTDKs7i2HKVaqnUwwZIRlvgcFPl/o00rGKkMwxwrowfcL/ueJ5qtVqKOB9EQj14LPPUt0yZJ5lMPKx04JDZazdRwPnRYyDxdI8aCYJQK/X3YOUutPEYSyVwZgKVhGARSRxRPNARg791tNNTmzlbi3/xoEiZTC4y8wKRxFlMQOMFdmlvwqYuHPX2vL26tLKZ2Xh4mj67fMSECWMY459SxbTldqcnpao2Bwde1HV3dFO0kgAA4d33y2U+jWGkL0wj6ijl2YBWZqtQmfvMHh2Qhk2NJjDlNRfWEECiooOMBm20DcEaMv4lH//oUiGDuAc+y0T7wQZmuTh1TJoPRrtPtjFy20SJT9B4UATBKQIRm2XEpOxFIcxb189F2IZ8R0PsGuXgElSev5Tzu8d29vdQUVZfnL4gf+Jbv0P6e9/o98U9+41/S126/oX0qIK80IYQU0cDaoY3UIBdc3lxenChFSiSgNFUadZ7fQcPgkvOwBo0sGIHnZ2b5O9/2jtT2XcAQLrB/+PxnkFSIP3L/A6n2HXYpSinFVn0n9HdCKqmW11dzoaxI2lhT5P8Nu+ruld+nuWc46TmKLmG0mvXGXqTI+mi9pVML7gK2aTHTMNPpcHgvqtlu4bTYrDDez8+alyidSaV/PrFsRBZ0McOX8n4J2yoiwIJidV450Eu8sXQ7F2eTuGM9Wp9SKlzbPfMsN12bEhdn5wee8yD6d3VzjbROsLnplDGttg6jezEmqOKWxExtyjf2gi6qSDeV1izo6YdLwZ974Xm2tL4aucEs3EWHCX94vnIm2CEBGEq5FCwKK9UwfIvfs43Agf43tC4i26NKT7rsGoCzYvz1o38hValK5nCYufx3VM5Pz91T4GMsPK9PvRSiENNb9kVPSSIA3pGOZZ/q4jzq55MFIf/Mg/ddS+Z9S3LgettWu3t72OOe3lYHtGaZpvr2r/ur+Nql+7T22ev31U/+i/8Zr21taG33aGP7+dVcMT8zxwpv+MRgHtpwu9Pmy5vrmTZgDR1Exgv4BhDKhGNamY58V0jKeqMR3hlgxHTQVy9e4Y+/+bHU13Cr01Kfe/lFcf3y1dT7DrnkIXcxFiHz0kN+09XNtcxf1vy8boSSJCmGLdOUpmGEfzdCTtS4FgdlrWlaWX9PgsLPu70u63SjRdUH7WQU5UBB6Vg2y4qxXkghGq1mKnsQjJ1Shl3bSaW/uPNb0D8fQVDFRTOd+oRgaRpm8R2JCTekrlnZWCNRmU1idj+y6rBHQQS5ZVin1pBlGvLB+64PXFu9fo/fXl3K3XcYAg0gbJ5zQVzHkTOVmpqqTtFaqYIc+7TuamQTVHQcDQGMFKTVefG1V6LVT4P1M7JkpytOVWpoclnwsODCo0DRWjwThgAEm2HMkryrjzOi2TQAZ8j4m2T0L+QB87esDET+ghiYYF5xy6zkuPfWPEaq2+1hqcLnfBvnF6cY23EEgC6H7RvhGCWn9R3DqJ+Ptgb0Q7NT02y6OjWxMENCi+36buoXqy9+5Iv4t/y3X6e1X6Cw/sF//OPx6HgCrATwBqOU+tHAx/awAHWLIvERgHd8a3eb7jb24jdWtHAKgX1vR4wc0z7FrJBVuHYb9fCi+fldFFYjOhc9cu0h9ObrD4WXO2aN/Ry5G6hSLqPdvQi4xew/aHWMkGh22jQsvVq/3+frO5tavy1BZQ5VDgw3mCTmXIEJ5P+FdzgXdqFQ0KVVGBy+7COpRdLqN6F+1E59dywdHvcNwA4z2Ohfe4WUbHfaJC1nZkKoKLulXLzk+6kkUKFIu/uCY4GUyvzcgSMMKxLJa9mW99pNsbG1mfk51zLYI42AQ6llWmcyajz6wMMQAHNmlxAVs7yxisOeA3XLH6Q9eE+kUpA2QlX96N4ZVitXEPwpjAdBEMxfma3dHfH0c89Ef59zQAENswLvr2EYouyURn/IGsEygfF73IMovRH0XnSZBQQKKuhos5A9A3CWjL8JRv9CbiQFpt8RKTnPWy4XZudPehKpdrczlsqJaK9MUesoAhAtgzHGrmXjQTRnw6ifT6JKCVEPXL2Gz8pPM+4zAIqqvUaD9L30on+PYvoPvusHUdktaYMZqFm+4yd/RFt7wxoC5XDZLYn56dlCoTUMLI2/S6XEysYanTQveo0QntnUvTy/Js4QlWaQYau9VgNHombC/tko9XMHIVg89tCj9Prlq0HGp62MQorXGw30hRsv07c/+lZ038IlcXP5Dmu0Wtr60NkQ0Dlv7e6Emp9muyV3G/VcRCsRSn0jsE7MjrZVKen7viYlY9bbdRwH4fS3CK2w+Ol1Oh3a6/e0tpuVxoAC2bWz4bAklBSNZiO6QjgEqHAGdW0X5ykqp6B/PjHBGdcnw7mQUfAjSmVJh1j9+SwKBs3XF2+FOtPkc6SnpfbzAdvuMd0fpUTed+EyOS/fbafX5Ytry4mdkaJiSwnhoDgSQhLXccVsdQrVKlU/uregS4+Kav7qccHVxz/1iWjvc06Mv0dnBajKT6bcy9+sRZM4TabEaBIWtZJEoKCCjoZutgzAGTP+JhX9m1Xjr2VZfKY6dexAB7R9fa9f3DCivV9jXQvopxhlEPVLBxlqg1I/HwULE8JnqjU6OzUT7QCXY+SFkGI7Qo5FHUM2GOMfePLL2fuefI+O5vw2Ot2O+h9+7sdSnUdMsAAazyIaWNs0Dm0I9GVvLN0euzyGQweecAHbsiRQtKX6AmkYExg32p1WrtJHUMb44498Ebs8f1EDAgGbUEg02i312Zc+75+9QBn34Xd/BZqfnlU79bq8vbKUOacKcFKqN/YCR9PBWqg36rTZzqZB++RMwfeDEZbIuXc/756dSNsBV1zui8EdyjJtkicD21mgSyVkfS8CTX5OZhATLEuWSzJgpBKtTpumpSh0HTdXytiC/vn4CwV5BZVCmTNuHbsjYyQNZuR+D8zKVgYOrGub66GZTbIif1w5gBa55NxjLADnnfnpGTo7NX2qaTCWL62v4Cw4+x5G9zKI7i1VxGxtmoExDKJ7i2dyEeBCoE8+++nEmeeygjBjVFRL1Um8V/gRwFmZh0KOESBQUEFHAj07BuCsGX8jwTm8kp9PGCmZtchfMOZNVWrkeBQnFr1+lwpZ0D8Pn9nJKXEYkVaynaERaWGon89C8IH7rqEs0MelNbuwNzSaTdLr99Pq8lQ/ZddV/+C7fkjbgWpzd0f+nV/86ZFEfkEkRsUty/mZ2Uk8GKe6hoSU6o2l29rWTarCZ6wzTLCiZD/PLyUjeXV0ICI6PYhui76X+c5yCqUGAGNMPPHY4+B4pGP8w9vASLXabfnZl/6EHo2Udh1Hfex9H8bg0Q3UVhtbm+L26nKmjOm9fl/stQJG1CnFt+o7LAsKw+GTsl8iibylsJ4hZ6NpGEHFKMqdgYCfuxCIhTNALRx9gpRsttvEGxHTS3S5g9cEhqCSUyKj/oZJJeVeM3lDO9zvbdPGRo7e74L++Zz1DCwkMtsUA0VEY/C9KEjJdqfNVzbXM234DzKOKGX28wEzbBn3nNNKjsPvv3TfKTw6vQ5fXFtJHafD6F4J0b1uCaJ7ca1SJRDda5lmlGEXdcYUAS4Ff+6F59nS+mr4EWIEOvrU7p3hBTxdA3T4rl2axLuF8LhX6Pd0LKKct1FQQYebwGwYgLNo/E2KAiKjHxZKiVqYmT+pvC/on8O9TxNR2rZsUbKdQB/csNTPRwEEZUqlVBEX5+ZTv2iMaiKFFHJ7d3ekB0/LtMTXf/Cr6eNvfkwLDDeX74if/pVfDLRetHR4ohGIJqeE0IXpOew6ThJdFG1CpHevy5fWVyfmXU1i0jEmkIuPOKZNxsHxpc893u60I68JjJFQCAOJROQ2wsyTwZh89+NPkEqpHKZa5LKdXk/+0UufPxVJC9EYl+cvqPc/+R5/3OBIBTkJF9dW0NLaqm8UzsCjNna2Ajl8KKXkxs7myNIahMUKzh6UUMhuEbbqwPJgEHMsKwsRkVrHNYrGgK3EMMxU9oUkxieE4HvNRm7lD4IJvEdltzTSVC77NNtt2ufJplQBA4ppmtQyLL2bRhCgY5Yp6J/PABBjgWR28wCDwh+ciWJOfVH9CAJwrnp98dbEYgLnE8u0yKHzG+TMfeTag8f2M6kkWlpbQd2E0xbAt4MQKpUU1DAMVS1X5Gx1mkJ0bzWl8/nELoRxGDhG6qUbr+IXX3sl9GjgPVBK5W5vBdr2WrmWO7lDT9CRCsDcIAQfmX4xjuxFXb0IAHMXwaRYCwFhHb0BOIvG34DghS6WUeMv8KcDje9JpaeQUvT6veJlCj3R41cBlBuEYFKyS4ENE1Gon08iBwrY+y9dQYPyC48L2qCoajabNOmLVRC8rixcFN//zd+u5d1/4dUX+S/9m/995IpOPxq4VJbz00U0cJA1ELKM3KrvkJ29eshqRXFAAAydGBNiGSa2jPHxZIczRCNolOh5SwGD8RNp2YuGrTaIVHv/O9+L0piDvtdXn33pBXxe/k/DMMQXv+kt9K0Pv/mu2EopLpWkt5eX8erm+rDhJP27qDcbtO8Nj/AGxerq5hrKC5vM/nmHsEGpLaKCW+T/jYrc8XqEUGFbVir7gh6J77UCCc6bzSYCmsJxf6qlik9rP6onjehfuENTypRrOyM/54bFuaB/HohYamePsPNGKeXAgRC2XlH+fATAmLC+tUFbnfZEw1RySn4+YLgzX79y9didpNVp8+UN/Y6+B9G9VEqFS25JzNemSbVUwWDwLRhTJno5Rh781u6OePq5Z8KdEVO8b0Ye2DkVIdjBsWxmm5bupjPbHjBnCTn+5+jMTkCWBCuooEPNxmgNwFk1/oIyFmGilNJ3a82o8fdA+YzmpucQo/e+k5ADp+v1mZgABUWoN2ZCC7u2gxzLDjz6uNTPRztyHZffd+HS2F90pZJqa2dH354TeLZOF7RMU33n138LvnrxcozSCLT/AAAgAElEQVRW9qv+l88+K37j93473CE8dq9nN3A3GnhmDsOaLh49CIDiZHWC82fFRRGi7m3DhJDDuE1lrb7abdRjD8pPnaHzPDYApY8+9aHEMeSCqz966QXc7nYG9gUG6fc98R50eeHCsXJSSs4Fp7eWl/Dmznbi8p7XQd/r83qAKEYwAC+tr4xMzigdgzc9wVSrNz0o7V3bHvuzTBS8o9SBXKu5ezCSnufJZqs1EeugVq6ObIr86N9uJ5CTShwhCSGy7Ja17hVx5Alat6B/HoyUf+6QGvVAQSdmWDmMhUH9Z1jJ4veQCAC98fL62kTszedBc5gPmBDCL8zOs6nK/h4O57g7q0uoF8DpbxDsBwwrUkhBQddQK1fFTHXKz91bcUshZ6woXiBwNgJwz/r4pz4R+/6ZJ3zBaaNWrmpnL8oiBmCn4FKwo+mTsihnIVO6CBRU0MHwHp0BOKvG32C4hSuVYeMvDMQ0DDE7NXPqJjFMORkOhKJ03hDAmAigBivZLj3qHBBkHHGon0+2Dweay/MXx5y+V/FGq826vW4QeFMp8/ZH38q/6as+FusiDDmNf/sP/i/yiWeeTkXmoJ2Aoa1Wrsi56dncKe2CjjHNcqAYuLWyOBERTbpwxQRLiilQwjI6xqw19cYegoi3PDyMMfWRd78vUYUBOPr88Usv4Ea7FQgSy7LU137Fh7B9hgOWUEr0+z10c2mR7o4g+h5mdWt3eyglNYx5eX01UVwDgRmiECFYUMK0adghyt80TFpEs4SYhAFFQYlsWdZI6YWjjgT2xElRWo3WAKxUvbGX6L4D9xPXdjEonfL4FPTPg2cNlMxKoVj3IN3rAnLJG8wgeV1zuvHQ2R7cZd5Yuj30TKOzz6y15ecDZgYwr7Fapcovz1/w13+z3eIrm+GN4+D4hjGmSCnkOiU5NzVNIW8vGHzHIdVN1uavkGcfAWBY+eSzn0ahdNk5jgCGMcO7a1s2dSw70XNPNtYYFlx4NCMpkbIBSSEFKqiggy2C0RiAM2z8BSUN7KFKUwJ4jP1zZGY3YoiIq5UqzLGPR3cC1WCn183UpSfYki5K6UAADGQQIRmFSkQH9fPJMViWJa5duk+bMlYHRjrbgPC2zZ3tTO0TsAZ+/Lt/yF8HUR8uOP+N3/0t9sznnovaRGL1wLuZEkIWZubJyf0vsU7HtGFYvzcWb2Vq/WYV6v2oGzw2eX6H4CwbrSbRRdHk5wROkA7asW31gSffm9g6lkqhz738BVRv7gVenmDoWpiZFR9+91eeex6TUsp2pyNvLt9hjVYww3JgAQYWBMelFhuWtsATXKxtrufq+w24M8q0rQU//69tE4jqLp74CPg5Vw2T5SwKjne63Uw5+sWfifNb8NNuuGVt71BIWXm722FBKOpDtnusOEShM5rPq3JB/xxw5jPov2Zbk0PzGXCWtBQD3dfG9hZrtJta2strI+CgahkWcW1HPnz/AwRegdsrd1DfG5xLHc45kDtYcEFty5JTlaqcrk6xWrmCSnlk7MjrBBZyIy4Ff+6F59nS+mogNJK+XwYSQlOhWqWGxv2uAXc0j3tAD6YJtaKZsUAAQy5gPI6MelqnJ30DcIaNv1qR3c/rl2njL4wXjDwX5xaODR08Xnuex7jguiEp2ss4AoRgyQiTJcdlUbyLdVI/H4WKUCIuzMyfylOdcTgDiqd4s91mnW52on9BcIMx/sF3PcW+8i9+WcBxnC4GFKH/4jd/nf3Jqy9FbiPpirAHTldraqY2PSpFZdJDTLz9br8nFtdWcmXgSRyUEx1A1AZCmIBTTRo5ZtMe31n9KYR4u9NmHh+sNAosq39+VDipnMDVckU89Y53JbaOP//Ki2h7bzfwcA8LGszgb3nwYfb2R986sC44YuzU6/L2yhLtpMQmwTnnO436QAtIr9/jGztbubKSHNAUaqNSA2NYyXGKb0zo1X9+BdMwFGNGnjBVO/XdPMkba7ZGbADWkn7gPAAODSSmYcbCaFSVC/rnYMhjjLiS2YoAJgQr0zAnZh8JNlP6SnX7Xb60pj/PrT4J02sJ8gE/+tDDqt3uiNWt9VNnOEYpKAp9ZTvk7p2tTTOI7gWDb86cs9IDtegpHQQwUi/deBW/+NorgfqDO7qu4K9AHSZYyDSYKLuVxO6yCYoeqmltuoVQvRaF84BA8f0ZPEvpGoAzbvzdV9D6RtvYm2YejL+wNFzHFbXy6Y8EKA8Lr5o8bHF6ZMQYC4hKc20HxzFO6KR+Pjkyw2DygSvXxjF8Rm1sb2XyMl8pldTf/84fjCxbt9+Tv/Br/5wApVaWHz8amFKyMDNHwuS6zvKY0pRtt1FXm7vZyF+d5rjD9GWZFrcNk41hnt9zYYBzUKfbxcMiRMPgiBJMqTE/M8vf+bZ3aDdUwlnqCzdeQRs7W6GGerSwwZh699ufwNcuXRnaBvS3sbUpbq8uU48n78i3Vd8ZSGnbaDcTp2IdCkrIAmAgIYQwgvUcOShl3LUt7Wsr5LDGqjgon00zH5j6+Wg7bdrr98dqDgYNZoQGYJ/BqtfvJYK1T5FqmNg2rdi6gkQEDNhoQf8cDChfnyOzw+RGKQGK3uJbEmz6IpW6uXQbCQkqwcl+4Pzz6INvQpu7W4hLKSjQBnBBHNuRM5WamqrWKBh74zCFTTbCxeiTRGBrd0c8/dwzgb7Tfs53lcGc7xEAAiehslPGjI31Z8KPAI4AT1FlAhAoqKAHT3J6BuCMG391vgt5+YjA5XymOoUNwzg2fMjb2el29Wi9dAJbtJUIAr43MTOFazuxjBNJUD8fHTAY6eamZ9lUpZoIDiNqlLc6bdbudEbU/eBuLdMS3/Chj9IvfuQtkeTre33193/55/Hmznak+mlXOogGRjO16bS7zm1/QJm2tr3JmgFzmuZ2oBEEhyghgql0TStvVKURRnt2FU9w3mq3cnELvXrxCn/8zY9plRWUiC/ffA2tbW3ExhRyFH/NUx/ElVJ5aFtgcEJK0cW1FbS0tpqkQx9vdlqDGCz4bqOeu/0BzvEEMsxqoGwGg5FlGOzkWXvoJBYFBiIAdxg7J7nOpJKyvrc3UfcqQoisuOVRjDmx6F9wFCcHLEl5fj0L+ucQs4exQFIFMiKEaDVaUYwFHCYZzYY40QaR7Vpwp9nc3WZ7zUa2BU1JurJbQguz82i2NqVqlQqqlapazkUpiV90M8EIcMHVxz/1iWBGQrBTKKX1/jdK6BmjolqqjvOHQnjcG+fxjXL55L7vg8C2ggr6nJlMxwCcA+Ovb7TdV5jF2vzzYvyF9cAYk/PTs8cv5xhJz/NIGlEjud9dcj6Ag1yUtOy42GDHnQDCDi0p6ueTckBumYeuXg92mAs7iBGUh0itrd2dJJXzsUd19cJl8X1/9VsjHbIg9+f3/dyPoTxFvYCjAfOjgedJkWdr+PIBl9nbq0u4+Gbcw+pwb7VNC5sx99bhM5DtEmD42Gs2tBsBkqDreuTaQ+jN1x/SBigwYrx6+3W8vLGmrc2Z2pT46FMfDLwfgzJTKklvLy/j1c11bXIcbUhKKbbqO+fIBMrUnVzmPd3PEx8/wSfcC1zbLpSmCaw+x3b8VDbZfpRsttvEG5I/MdtjCC8dpUyUHTfwXhW+hzNrJBr9C0btklMi2V9z56NZ0D9HWmkiqdQToaTBWJiMUR2OSaH6nbDCPa8vFleX0967MoUy7HHz03NodmoaEYxVn3PsWBYquyXY15Ft2cQwGKRkAe5cCSnEwGUOIaT9vJ8pYAphcoMAFwJ98tlPo3Z3SJDFmBl/YYIIwcK1XZrXNBXDFplUSgjBJ3qPHoZR8TsqUhGcswiSNwDnwPir6wXJk/EXE8IrbomVHPfk8GW33yOyoL7RtSwy245rO8rRFD2RJPXzUQBBITtTnWIzU/mP0DykBGxlNPr3EHfTNNX3fMNfw1cWLoVey3D4/q6f+tuh62Whwn408BSaqU1lQZzMygBODDcWb2VWvjQFOzwDQJ5f+FM8+zk16s097VBgjIRCGIgnYjntHQoGl+XHHnqUXr98VYusQgr1+uJtfGdtWUt7h40wxvjDV6/jJ9/29lAXXykl54LTW8tLSTAyqJ29XQz7/ckHGGXWtzZJHnM1YYIVIyy2dbHI/6v1FbjbGHh4m6ZJKQn1KiQjzIBWQUu112xo2adSFz5Gh0B7XnbctMedYPQvhrRJKOvrLciUFfTPQVC6V8Y/28ls0INappkDp5dw+GatNJxbb68sIS6ST6GRtbFTSqRt2vLC7AIzGIO1piAFyfZenTRazVPiQtowx7YRpE+CPxW3zEuujS3TJgZj/iFdSd9ArDAhFKns0KlnDftCHr0IcCn4cy88z5bWVwc2nCf9fRiE4O4xVanFvsOE6TOtsmCngCCT4ikQGIQAJpgTTNK+h2R+UpI1AOfJ+IsRRwpFXiB5/HhcmJtHZ+Q3U+1uZyw/Fpl/G1MQ8CCvHQavfBY/sMWXOGnq55OwgGHuwfuujYVXz9bODpIq+3mG3vFFX8K/8cNfE3p/bHba6vv/4d/L7X7iRwMzihdm5mlh0Dt7g+pxT9xZWcq2Bj6dvVUxZgjHNLXlDU1B7MS7UEihRrMBEQL6+8LA2oK0rD3KGH/8kcfY5fkLseUUUsqby3fIrZXF2G2d1YBhGPLJt76dPHT1Wuj2hVKi3++hm0uLdHevHrr+ORVkp9fBzXb71F4PitSVzbWBOYJ1CZFEO3HZUUAmMNo7Vj5y1SaBYWJt+tFwBs12njOF9ppNJM5wjkgMl4w0zJjBS7YT+twYQ3ze7XWZ1pzzR4RxbRfe5RjiZaNqQf8cbR4wQlzF0BNF6/V4LT9lk2Hm9k6lA4N02thnLqk39DsvpiN/+F4OciYC+xWunkgzYh6kitvY2R4eTXmia2DSOjQOg6G4Uqrwkm1jy7KIQRkWUoIaSYKxCmOc/w02PPRFjaQQwEi9dONV/OJrrwzswc/zPoaOCWD8ckyb2ZadFMIjaRe+xVwKVgSrjQT+fHWKsSAYF1TQJ2YtOQNwnoy/MZdyHo2/lmX5kZQnh86FEH2vr0WhGhPWonoCCLi24x/EdT1pUT8flReiPmqVKlqYmcvzOpWdXk81W81cjIFgjH78e3449NpZ396Uf/eXfnYs6KCABgsigovnOAJ7raZY397MxTpOYu4OlCbIMe0iL9sZAB98I2hSkRS6zl+MMfHEY4/T2amZWMtECCEW11fIjcVbiSppwRHqo099EE1Xa5HklVLKdqcDhmrWaLUitXG0klRSbe3unGkAXlpfid3+KBqAKHNKWKyLo5//1zT9SJri0Y+AwRg3DDOb4EJKnb4nmznJga57dkzD5I5lpzY3oMHdazW0p1TBBEvLsMg4UClijDgYWfJMYa17nYZqLwE/tjD9U0q4wYzU3qkwso1b2f4EObdSQlS5VJGgV4H7/rEHY2FQ6tOOwx67urmBel5fy3TDPnTUOAzMdBW3JCBlhmVahFCCgWEOKSQJJQqjwkCsBfgJamRrd0c8/dwzg3UUY0gBfTjF8I5NVWpjxhqBBRcehf2oeAoEgiBA6cSqKc+EB3+J/TGplGZam7wZf8d44z9r1iGH0VSlSqzTFJWi1+/TglIhyFaSnzKYEMEIUSXHZbqpy9Kifj4L7etX7keHXqn5mY17kkLu37x4r4GS9b/5sq9gT33pu0JBfWPxlvjZf/VLY/HVhWhgw48GXqBAwVY8Pr0vX9/ZYmfRgo07PkWe38AzzNvdDutrUhgF7jVkQYMx+e7HnyCVE5EPYZoRUoi1zQ308q0bqex51XJZfux9H4nlYAM5vHfqdXl7ZYl2et0wwz1WFqie643GKapnMAwvr68magyPLPSQimAAJnhf8Rn18fP/Og4+pVSN2mBR7xgCcJ+BXIRZhQUiyPJyztONoWVawjatVPZChJDoeT3S6Xa17jXwnTcME6c4Dt3TcKq9gv45IsQYCyRVWuv5tJAYSUYZYYUiM+IEhqsGxoU7q8soj+krgo7UZ7miFKJ+yRkp4fabgXVHKDlUoIPeZ2ljDafBagFnL99AfEAxXXJcWXZK0nFsYhsmhkdA9DBC0v8XjEf3fgYFvSiXKgJccPXxT33i/HPBmNsA4B5jmw68Q2PzbsC9yuMeLgzAqb5Kue6soII+Pn34S+yvFcpncdVDo4fyZvzN9XKOJjylVC3MzJ2O1EAKdbrRFYDRpClqJYUAxnAgJti1fE9K7d2kTf18cgClUplfmb+QO09oOLh0ez2Rt5xw1VJZ/b3v/IFQyrXn/+xP+S//u/8jd3M07GWBKMGokXfD2s7T75DZaXFthejyBs/T2Is8v8Fnq+f1ZKfbTdZIE5MOmhKC3v/O9yLIZxblEUryre1t9IXXX0l1vwOqvoevPsgXZmfZ3NR05NQIcJHe2NoUt1eXqcej5b3reT2+12weG7/HuVjbWs+t4gEUpJREz5dR5P+N8jaFqwN5WTP48E63y7oxnCoyOKZQIsG9I83UGZBrXqdCEM7qhFABzrOhBp7hwgX9c7zJGWUuYLB1GYzFckiKN/rJqg3sNTv1HbqjL1VG5gCEu+xcANYb6qdDukdj4gkultZWR36uA2eIo/mHy6WSKNklZVsWsQzDv3NIMBBjLAkmBGGU7D0kczNcCMSFQJ989tOhqcvHDblauRr5fphFLMbZMSeLeOdeJoz8b0DBfrM/kz4FNBiKlNLwUcyj8XfMPX9OvrDgCVR2y7Tslk69y0pK3un3xuaim/vNKsYAIE+QQQ3hOi5LIvJkFNTPJ+EAyqLLFy5hnZTWMSAPVXW7vpu7nHC2aYm//OGvoW99+NHAY/2Dz/yh/Le//ztjd+HajwY28IXZOToOtICBJ/REQVC23li8FbV67uqB8o9RKoHuOU5UYO4GHlNgLgVvto4bBmM2ebo6GIDhieHM+NGnPhRJLKkUhz39hT9/KY3zE1hnmZASYGVXL97ny0wpE0JwWi2XxcXZeZ/KulouhxoPfNeRUnRxbQUtra1GMaaojZ2tY05CnV5XbO1uj1xRGAqII4UxwYoRFsrx6WhfhmFw28woRXFUUDJUD/Zky7RwBvdjtVPfjbxuMgRxJFFAr2CZNonqUBOqU4xkr99XnW5H6z6z77xRgqiyUOJktfA+awkq6J9jTBBgqKRK4zt/ppTAPjQu6zHGNKRWlQsuby0vjtUdlhAi4N56YXaeBnXQgXOQyYyjG6Ho9npqdWtjZO9CkEVgMOOegdi2UdUpc7fkINuwqGEY+xGESgkYH8WUKKTGaq6DYDTuZeCi9NwLz7Ol9dWzh4qRRDpsIBkHEu4iFbec6fc1BIR+BHCI8kXRAoEDXYnWa0JuUb2bAzh2HrUcGn9jjzmH0w675fzM3CkvIEio3vP6DDyliie/CBzSkpZsFydJjzxK6uejs+PYNr968UquDjR9r8/rjUauZD7E/NqlK+Jv/pX/PtDXUyklfvP//l36n//f/5LfFyqA5OA9PRUxD2eA5jNdxBOevLW8NPYXZoi8IAQf5PnN5as70nUEbBH1xl7yl7UYF3nGmPrIu98XWkaFFOzn6PmX/zTphSERUrjveZhzftc4OzczK6ulKuRxubsvQ9oHSoB1mKDZ2rQ4jA4GZViQB6jdpZL09vIyXt1cD1LlsAwwW9CjjACNdjOduQ8jZciyQXE72WyR/zck0BGKA8amYbIs5XcCR4pOp017fT15EiPAMvIqMC+2abG0HOT2mg0kldQ67pJTGquIGQCnoH/WsUSw7yilo6UwbYBjt2mYoc8oYfooyh5HAM6uS6sreFxYjsB5YH56LhKD1cnUR3BObHY6OM8OfjCmozmIK26FlxwbQwQxowwMxPBIePcwJkmf8YvXLwkEMFIv3XgVv/jaK2e2Pim2AFjD4NAW9T6TxNTEaFN43Ev9GxxD3qJqRhAoqKD3J+KIARhJhXwvmPAfuBwaf/dHj3ik8WZkEUcRwzRMPjs1feYcQ/43nfRZUeQr6sRDwLFs4dpOoh/FUVM/H0WIUiIvzC6QsyLa4yGZTG14v3b39hAX0Sg2k5EqeKumYarv/ca/gS/PXxhaiXPOf+0//Sb7//7kj4aWzXMBQrDvTb0wM0+TdLrIIkbNdotn3QM8Dm538/waJk5LkR1H3izX3W3UsyweRAmoDzz53nDKVYVEo91Sn33p8+HPzUHQODijSil53+tDiO+pWmD4unbp6sCoIEYpF1KykuOKi3MQHTyNpirVoRJAv1xwemt5CW/ubA8tDwV8B6fmXQcnvrO3y1qddqC6WSyEMZaU0Mi0UWXXLSK2Ep5YwzAUMHIk3E3g5qUSsr7XGHvHqEGAwLfTsWyWtLIRY6R6nifbnba2ew8ohG3LHhdF6d1pKuifA7/CAwv6rHlSA2teSHEo9ZmHkjlrhJRlgorL3UYdb+3uZOb7EgV70JXYpg36EmbcY3IO3hTQj1N6ivlIKSl3Gg0CDjjj+Bw1DsP/rwDFtOMg07SIQRkWUkAKRQlsERjj4t3M6CLY2t0RTz/3zOkzQszUQRkd7rliUUpFrVzVdlYa1filUj7j1aj6L/rNLwIH6TEj3+nzO/Ljkt81AMN/jkQFnVPj76R4/BydbjBUVMtVehZlLmym3V632Exz+GaDooUQTEp2iUQ62IcYcxaon0+KaxqGuH7l/lysXY97fHdvL9eXhCfe+rj4Sx/66FC8e/2e+Gf//l/TL7z2cogVlu+ic9OzgQwr+R7lofSKb+xss/qYXvxhlLZlKduwcq34ychaU3utBpZSb4TWeWOLcr6rliviqXe8a+i+drdPjFSr3ZaffelPqP5xYYGQIn2vfyza97zxzk7NqFqlJo9GAQ/ARkIUGEYYT1dq4sLcPAOD8MnojqP1hVKi3++hm0uLdDdAPrzN3W3fmRBYILbqOzTXeVAx5hQTFoVimBAiS44z0YbANPYfQqmwTSv4u5usULLZapFJz0+2bwB2ohkbQs7PXquBdO3BwJ5gMoNC/uJxegr6Z72zCaxpKkrAREQx4ExDCcWMZWWbiziQHFYDI9/NpTu5vAdgggXkPVyYmcfVUriUIMemCmPBCKFnMW3ASW9zZwfn2dEvyrKEaGrfQGzb/t8lx1Flpyxcx8aWYRJCCJZKHhiI4cRNipc3CtAa6nDB1cc/9YlcvsMahn/v2kqwcC2XDrrv6ewvqbbgvCdkwViaFL7j3i6cp2B/HvdxDhrfMQMwFAylOMup8dcHZMJy/8KQwUPtwuz8qQXv0z9zjwGtYPHkDwHXdvzDZxpPVqifj44V8tkszMzRarmSBgRx+lC7e3Xs5fw9A0X4T37Pjww0GABIvX5P/qNf/WVya2UxDma5qnsvt9IcTTryZdTASCXl8voa6fZ7oxZFa/9+LijChGNajJLCdqMDXIUQb3faLC2jCERt7jPaBM/VNz8zy9/5tncEds7p9Hryj176PNG2n+N9WkmhJPf6Z0f7njcXlFB07fLgKODz6kJ0sJSK2bYlL87O4dmpGTxTmzqzuJRStjsdeXP5Dmu0Wuc0qXij3WLdXg8ppOT61mbujWGEUt8IHPZdMA1TWKZRKP3CAheyPNxtIGIzZLVEigvB+V4z4XzniUiut1GMiXBtmzIa+rUJJQgXnDfbLS2dgJGUQc5Iy9bSXqiBpFC4oH/WDLLS3N6A5mBtGoxFckRKT8rx7AkogJfXV3N316GEqHKpIkE/QjTkMaeEcMbODx9e3dxA43YfjLOi4f54aBwGHZ3rurLilKVtW8Q2gcr9gEsAIwmJ5jHGxVkxDuAD6kJ6w08++2nU7naOl5qwCGAYPJyXpyq1TJyXo0w32Cy4FEyX018UGYo6+UYAbJ0II3COGsuzfpDZOcMAjIRCGBy6BoOSY+NvpEjnIGhmvIzruKJWrpw6YACFVrvbhVwXGR9BId4hAqBcgct82XbP9MhMAqksUT+fHB/kb3zwvmuZPtAAJfLOXj33HxvTMPiH3/2V7Mv/wpMDl1mfe+rHfunn8PbebhLLMdNtgmcw5AauBaBZzfRAhgh3Y/HW2KQN8PP8YoxtywZqrzxPS/Zkx1h0uh3aS9NZIKST39WLV/jjb34s0MT3vb767EsvYE3jATfmwNG+501umCjg89rwo4woUVIqMl2d4hfn5vzo4JMOZpAUbadel7dXliikDjn5CCHE9t4uhdCHlY01bdF5o1rYmGDJCAvlDYIxErYFBrBCp5fGvDm2kwmqbaDCPIuqPQ0MstQHvDMly4WQsUTFarSa2iJBKGWi5LjJCpwoGuc3XtA/awYeY4ERIkqq1O6dELUFd4viSR+BvVZTbGxv5mJvIGCopRSifknJcbWBBc6x5oBUC3AuXN5Yy72TuzbAhjQEzlF3DcS2jcqOK0pOSTm2TUy2f96UQC+NfYpp+PdQZ9C0xpGHfrgU/LkXnmdL66v3xJ1A4y8MHpyJbMtmaQUO6V8fWHDh0cJmoR/ZSWpx0qmg8fsvfpvYazXIUUXW0CjgHBt//cU9gZs+ePzM1KbOyWmkZLvbLQ4WOdn54AIIUb92ihRlWaR+PjpdcOGB3NbT1bMjl0Y9tRAJtddokL7njVoULf3XKlX1Y9/+twZqIiBJ1vf8zI+iSWUWIJQIyzDVwsx8KjSIWiY2RCM8x7RoR4cJhhqMCbEME2i7QiBQFA2DgMc5b3X0RGoF7XfoWfZIQ49cewi9+fpDQ5sGKrE/eukFfMqTfGjNIwUOon2lH+3rMR054UE/dP3y/VoVxJBzEGguLdOEKBI0Pz1DwCB8+MAFfGNrU9xeXaZHI6HBlXCnvoPA635pfSUMMpktG4XRocj/m850gvOOaZoUIuFH9mAkvb4ndUWjjmwcmjoGFoaSUyJJsmjojP6FO3LJKUEUliYEstNMQf+czFz454uUDMBgfIMzajIjKVodhgAYN19fvJUL/GenZnwH5CSeYdSxXHC5tL5GCuNMfPRNwzUcdI0AACAASURBVGejuEszXXHLvOQ6yDItCoZ40LEoP/8wlmSfXjoX6zM+MhFawEi9dONV/OJrr9ytPKnBYAAAnHNqlRrSwQwQYTZiVYHvrse9ImgtFopF5YP3YGKpoPEHL38HZOqSnAvVaDXoIUXfuYqznBt/J3XDNxiTc9Ozp4y8EP0Liru+5xUHh4zvh3DIY4TJkuOmTgOVRernk9MFdEcPXL2GCc6eLwMXQuzUd0eondS7uG3LEt/44a+ljz30yLkNw77y3T/9P+rtOIet+dHA07Ooln2K8lDotrsdvryxFihiMlTDKRe2TQsM9XQcFb8pQzmwO6GkaDQbmdwDCcHisYcepdcvXx04Bsjn9ccvvYAb7fPoj4ci7kf7cu4hz+O+AkfnM1ObRtPVGkcIJ/JeMsaEFILWKjV+8SB3sOs4PnX14toKWlpbPWQE4K1OmzXbLbW8sZr7s+Vh/sUwewQhVJQcO5PrXeeay0RbYABmBh3ATpmKmPXGXu6j3XUBBe9M2S0ldx7HSDVaTawr2rrklFDS0cq6sI3STkH/HAW1wXXSzAMM9LuGYSTyXdePzPi1qJSUK5vrpNM9zXiShdHeSz80T5MKDgD9KWMGGWw0UrLneXJlY71YqwkvDMhTfzQHcaVU5iXHxrZpEcYYVhLcFhREDyuMk7kTJDxErc1v7e6Ip5975u6ZPIyDsFZBMtAYvMumaauS7eTyjpJWOqkMTFUhQoIIwHuAMJFkwvZHP/oZDMCH2ILHVs/r80arwaSC7NonqKBzbvz1xzmB0b+YEF5xS+wcKhjZ7fdIwaWf4A4Ts2mIbsAYE9d2RhKhlmXq56PQwjqfqdYo5DCMCbnW6vvRv02g+NTa7qgbu37lKv/ev/w3zr3k7bUa6gd//sczNRejwgwu55ZpqQszc4NSKI1KvND9AiPA1u423W3sha6bhQr7HtNUOhbk+c3l/ScLMIaVQe026qPZD4ac+yhj/PFHHmOX5y+cOyapFPrcy19A9WbINQ8XDIWIzmjf84QE56frV/RGAZ/XFyikIWcZGN3mpmfUwvQsmqpV8eLKKl7dXAdaVrW2tSnXttZz/4JBBB0hhIVxLrNMU5mGMZr1HvbNHIPyjDFuGuaolM680+2y7hl06GMAbeQhVEsVrYwERwWBXMuQazyycAcVQQkM+aOjRPjH7Tut+gX9c6JI+9/3RHtACEGaI0Zp8T1JGugB7TfbLb62tRF7z9E9BHBMm5+eA+c/3U0faw9jxCllbBirg1KKA0POxs525rBKFKCMNX7UOAz/v1oqCdfxI4gJowzDGR35EcSTYSAG9qaPf+oT9/bQkGmCMja9WsSplat5dHzzI4C1AFA0MvEIAFsR2FjCOHiPA2jHDMD+gDACnyHSardRu9sG76H9l2w8jL+pHNSzuDAuzC2cR/Wg2t1OsZFmcdIgVAhjZRqmcG2HjWJzyjr181nT9sB915DBsnPvEFKK7d2d3CvBT2INGH/fN30ruji3cObbs7a1If6nf/pzYzfuOFvF/kV9FlVzHg0slRIrm2s0q97w583RPhUiJo5pkyztEXHWVJ7qgvF0JNRwGEFULEJKnflhgMjWJx57HJyHzoXz86+8iELmM/ejfT3uKc55ak52kAZhpjaVWBTweQAxyoSQgtbKZbQwO68gwvnPXn9FLq2vJq4cT+MdoJQIgoMlNMWECNs0i/y/aUzMQR+EEAn521Ps8mhXaqe+W9yjToAPysWEHtVsNzFQzMd5MCbCNAwKkVTj+oDRBqK/RnF/HFdMj40LHLxksgZgOLeC5+gww9tE4D3CQYIz/Ot3skMDTSmRtmnLC7MLqaUZgrQgjA5XsCilRL3ZyK2T8AiXWSpdQxT33fzDlo1c11Vlpyxc2yKWaQJzBzAUKYz8ABR4cq/LgfPCJ5/9NPLT9xTGX3+dGYbBK245OwrTYKtfeNzL/XoMNtSiVBoIgCMoIWRi7nCO7YjTBuB7SHOlFG22m6jd6+7fss5RnqUxOVr6CBD9O46UELZl8+lq7cwNXgjJe14vb5u/luWQ5Ub8iBOMSclxySg90/NA/Xx0HuH9rZQqAugpszC/YEBvNJv0aI71LMilQwbA+sm3/QX5dR/4qjMPYq/eep3/o1/93zIxDzrGq6sNiAa2LVstQDRwMHuCrq61tQNGvJvLd5CQeilstQl4oiHI84sQ9qnRijy/SaE8rF0lG+0W0UXZOay3U78fROKeVQ9SZLz78SdIpVQ+9TOs9S/ceBmiGYZ26Z8fwaVeKul5fTqK/Oeg6H/wvuvA7DOyywwY48CRtNfrojtry0Nxy0MBoAmnhAVWOlRKpTwMa6xkdB039fHAGa/TadNef7wYXnQAmZQBWEjBG61mrLMl3LEoZdjNKQVimPkp6J/DoBW+bNJU0HCuADaJwogffm501gDH1/WtDdrqtHU2G7otTLAgmJCFmXlcPePMGrrBEBXALmgyI5CjFRjMt3Z3cTN6ypQQkhVFdSIA6RCO5R92XOE6JeXYNrFMn9kGS4geRgii53JhIOZS8OdeeJ4tra8CM8m9ADedwOWsLWBDKzmlkeqZw0IG+7AQPPBdLGz7RfkJRGCfaVVNAhU0MD7MTc9i/NXXvhdyAwiINMS+8ds/Y/r/g+hf+JfN3W3UaDXzndtoQo2/sLlPVabAo+usN1r0+n0qgO27eDKFgGs7yrHskSlwAYy8UD+fnDjYs+6/dAVobkY+p1JKubW7E+iyNHJhIwgAl4Sf+t4fQWc5KTz3hc/zX/kPvx5LSRdBpFxUgYMGfGwXZubQWUanrA8CHENeX7o90v0pDEaWaQm7yPMbBjLtZRVCvNNts77naW87boMQWfP+d773lHMAODi8fPM1tLa1MawLjhCiXHDpeR4ddUoNPwq4OsXRSPPaKP/bt9vc4xghepdNaBiSGf0d9mygzQsiHqVUuHaR/zcIVrrKAI0XUBsSku5xCxhe9hp7hTLqxESCkqHilgO9LyHXgGq2W5gL2HKjP5Cju+yWxn7efP0OyX/0VvSZTqnm3WRq+vuDbw9E5elvuWgxLAKtTkesbq6NbN+ghKhyqSIXZubo4Fy8YUcWvPw5+sRzG1jb2kSdIj1CcIBzUBIYtI4aiMtuSZRcV9mmRU1m+AqO/fzDkG7JP5SlezA7C0OM1Es3XsUvvvYKGDnAt7fYU+HiSomolWsj29PCLne4Xxd2i7CoFeWHIQDnrANnlmFFc/27aZriwsw8xR97+PsHHVtFv++p1a11hnwKPUSlkBhePohyyNUzIPoDxjGu3kCUUog0O/cj51NhFE8mEMCYcEIwLjsuZXS0drM8Uj8fnUTXcfl9Fy6NFETAsNlq0m6vl4n1lYQQpmHwj7znfew9b3/iVPOfeOZp9Vt/8HvFAXsA8D5tpe3IC9OzDIzpeXm6vS5fXF8d6fs1DCvwVKeQ59e0coXtsHHl7XcMZy9EQBdAIYdqvbUnwPVaSjmS9XPeWe+jT33oGLTg5PDq7dfx8sba+ZCDEkEq2R9RtO95goET1AP3XQP6thHuv4pv7GyxvWZjX8xDyrWcUq/BuqGEDo3CgvVuGiYxDSNvr2qu5YWITsMwWMpnZ9lstYDmPdfYJSF8UgZgIYVotJqxDksgm2u7OG1ngSRwHtTmfsoLVNA/Jw38vn4JvKYTMXIAaxBQlSc9jKL94QiA1ej1xVvDC2ouQQhQL1OI+gVmOM2tB28OHK0MxkLlSwTMVjbXURadP4OPvCgZBgHTMJFjWXdppituhZdcG9umBdGmGAJM4O6ECUTdEdjbUrmrbO3uiKefe4YWFND3ZhMYBVzLyUUqDGDb4FKwUTtZh3kXirL5QWDcqaDhLDlTnaKO7aDzDcAYqb7H5erGCU+3g0haqRSXUrCR5HMLuZaA/lEpdO7heVyNvzDuslumZfdsKjqlFO/0uiNRwoacwoko7tqO71GXhSdv1M8nMQMFz+X5i9h1nJHBCflTtnZ2UjnUjmyQCKHpak393W/7vmPjlFKKf/+f/yP9g8/811GKlou+D2hHEFBy5CIaGCO1vbuLQ+ZDTW0uDvL8Use08Cjp81MbcIY6OlA4EykVoZQoRpjwc9dRhgxG/RydYCzp9rqo2+uJVrej+v0e9TjHlFKgDQbShETPJPs0zUgcTWnCGFMfeff77u5hQgr1+uJtfA59MVdIMQ4kVBmI9j1v+qeqNTRTnfbzP45iicD5cn17k0EamTMfcCpVaCSyRcHDT8tBCAMnhkEPOJ44pkXy5NATBY8s1jEMQxoB6Sl1yC8E53vNeFTEOuTIYhtJGIAVUrLdaROPx4v+BarwlB0FRjZFBf1zitAnFBfBGJWMskSMyymiMxZdAf3oxvYmTZvWeHZqBs1NzYwcQ8gpTmn4fNRwpl5aX/MDiIqnQADSMR3NQVwplXnJsTGwuICBGHSQ+xHEBKLytN0TuODq40///rH7XzEbCAHOU5VaDvSVWHDhAaNUMW0FAvoRGHMqaMaoujR30X/PzzUAA5Xd6sYGker8jzVQKEhQ2AlJB5XTP0MhWxwQ/Tuuxt9DhIBi9BxFFO97fVBihgSzKK4TAVAWMkJlyXEZ9Z3gRv/klfr5JHKWZYlrl+4bEaiKN9tt1ul2Rz+hCUtgW5b8po98jLzlwTfd7cnjHv/V3/l37Lk//VzCvY9P85QSaVsOMDZQoKTN6gMKkLUM5ME6iQ94pkPeUbhYwp/iSQ4BwBpSQEFQJDhuQyQ7YwZihFLIa00ZRfgMh+5a+XSOXZASlELdfg+Mwv7frU6bd/s94nkeULoqhBSoA+DAqWc/x4hjhO/SEju2rT7w5Hv9Q7GQUt5cvkNurSyeBNCXoN8fTW7fKLMJuYCHhqxGaThAHTAAr22ts0H58iBaFiYXDXDQDNBVKkUO6aGGndMg5vo8p8tUBJ3gToB62zItPXtEABwhun1kOc0DyDfKIvBNqLhlrQcZoaRoNBuR5/eQJhyikybhKeif05tlMIwpqd+hCRyPfCe6DN8J0kM5Gz0BA9JSCgxI+5HfJrowO0+zdKdhlAoa0sMNzk9dry9X1kdHn52N1VNIEQSBo8Zh13FUxS0J13Z8AzGjFINDAYIcxCENxKDz/uSzn0YF++XxWYDvjG3ZLCtBSOetEdhHPO5BitIgy6goUyAQGoFxpYLGhPCpcpUd6ifONACD583K5joOfLHdjwomQorseXcNyP3rK58SouwJveISqGCaJp+tTZ/rOQU5OYpNNAHgAzQJaw9jgl3L93gLUCOdInmnfj6KEqHE57kfRVQlGNE3t7dz4E2nZ109dN/9/Lu+4a/f3Wt6/Z74X//tr9I/e/3P9XQwIa2AgpIQguenZ3FWjQjg7HV7ZRnFzcGne0oNw+RA9zyqvFi6x5OV9o5G9cJlG5Q/jAHVKkUQ2RtUMQnGmbLjhFbe944ahrsd3u31cN/rEyXhE0oi00kfzQFVLVfEU+94FxVCiMX1FXJj8dbh3g2hZuAoxz2vnzvaqalKDc3URhMFDI4iqxurNFDuN4wERhh4wjP9zQQaRkoG5+co8v+ObueC/cm27OTXEEbS63uy2W5pi0wZHWrJ9EwpE5DORmProtVp06h02/AdM02TWoaV/PrQOOioTRX0z1GRi1UPqKC1Oj2AMtI0jFH5ccUCY5wrv7F4GyUZ+AJpPOan54BhK3MwgmEabgDhBVO80+2hte3N4rsZHryixgECkLrhaP5h13FlxSlJx7YI5EonwCut/Og1eZDT8+5a5ULIz37heby4tjoR54CwiwbujFlPjRH1DBgWi6L85CIwjlTQcD++snDp7r53ygAMnAurm+s4EsXSAaWbVBKCKDIRon9eovdxN/6CoqparpzrzaOQEp1uN8IBbnI3BF0jJwQrgxrCddzMGSvyTv18co4Mg8kHrlzTeiEPsA54q91mk+RhyBhDP/DN346AcQCenteTP/uv/ilZXFsJAFdR5CQCEA3s2K5cmJ5lWTuMwxnhiIFspJMHuWuAktUxbT/ytHiiIwAHXgiAxRhRpRAmhAqDUcWA7o0yBPiCUirSg7GwDYNapr7IKzij7kcNx6eTnp+Z5X/xsccxnH1fufU6fC8kuJd7fS/3+T1HFQUM5EBL66sEDPiBn4P8wMPStgRuT3NBeEcYZee+BCC3aZi0yP+rGfgQzfm5jaLuUwH7gY1yb28vUQNAQFEyW4xSxsuOq03RL5WUe81GpLM8RMJSypRrO9rkySzwRwQr6J9TniVgm5N6DcAwAtvKjpN4yohmsjtgN9nY2WKN1jnpLWJI7TNBmba8MLsAbpYxWkq2atSzvFJK7LWbZKdej3iZSHZcRev5RwCC030DsW37f1eckig5rrJtm9imSd5YuoNeu/0Gqjf38j9YjSPw83sbhiw7pexuPAj5EcAah100VSBwGgGMIX0WJhiPhWIR7kCVcpnUStWzDcAQDbq+tYl6Xj/Wcjg0riqkIE3a6PIEHyiTTg5m3I2/MF6w9F+YnT97k8RYeF4f8u7FmueicjgEDnNTlmwXZ1FBOC7Uz0dnBRwh5qZn2VSlGm6y4pVWG9tbE3VAIQTLd33xl6qvfd+H/Y9l3/PQj/4vP4PqzUY8JCe49j59HyFZiwbuen2xuLo80kPR4V5qmxY2mTHBqyTa0AE/sJIoKendqN4jht6Q7G5DhYCLZcm2U8mLGpZOGmC4cuESvjx/Qb1441VgvuGe5zEhxyM9Rq1SQ7MjiAIGR5E7q0s4irf23dQs55zhhy64BAsMyisO69yBdV7QdSY4A+c3Dd9MMMDr3r9O9Mg73S4Dx5PiOR8Bxgxe0mRwBWaiTrdN4VwZ5QE66rJmOuoocqRZh4ACi+jLnZim7HnuCyPElcbc9vs0wMZIz9t5no+kZO/2e2JpbUXbvBw4s5KFmTlcLVWSEltLu3A+MxiLHJUO0Znbe3WShAFdywCLRsYWAXBsvnrhIgVa6b1GQ7yxfJtB6qHiuYdAtVxBbDDR0SjhEh73tO27oxxI0Xe2ERg3KujL8xePpYQ9FgG8vr3p52DT+uzn31VCiNTzBJ8V/TsJxl+YP9dxRa1cOXuTxEh1uz2cJH2N1jU0Jo05liNc287kh2ucqJ9PLhdKqXro6vW0DLK81WmzdqczJqs2+DDgwPhTf/Nv+5GC8HzHT/xIESETHL5zS4KBruS4Yn5mLhOMAfVGQ27sbkWKxNEAh99Ekec3OJIHVJAHUb1EGpRKekDhDO9s0tFyICn0US2VggudUMmz6KQ73Q6tuGU/mhhozccxLcYoooDBoez28h0MObfiPFnKEwwRvpQwet47s79XO2mdNeLAOpZ1wQAM6TIHGenjDhzW9W4RvTQURhNSMli2lkiSONG/8E66touzxqQyFMAYBSAfLcYYLDQxWimqRkZAY3pCxphgCXu0RB7nhFe8uXxHSw54SogqlypyYWaO5iGFDewvwAwUZ0+Fc/bGznaRi3XC36FRDP8tDzx8jOZ4ZX1V3VpdKvLKHkwGY1RUS9VM6qohtZAQPJOyjWItF30mi8C4UEGXbIfPTM0cu4/5BmD4EG/t7iT7IQZPfqQgx1o6eYLPihzYN0aPVHGd7FLdbx0uvDO1KTxACaLa3U5xM0xhMkD5TggmJbtEskznM27Uz0enFqKAZ6pTbGZqOvEZP9xLx9GIMAw8yzD4V335B9iXPf6lEAGsvudn/k6xxwwDLeDv+xSG1I8GLjluwFr6iwH1GeRvarZb+hsf0uIB/arw8/wWEXan0II1gsDr7SCqF6KeTMMglFAMht5R6hAZZbzk6DEG6F54cAB+8bVXMDDf3I081d3JiNurlatodmrGNwqkJQpQaN/UmCcPjK9wvAV68rTGcLIfkIFgClHzZ4rAGOOOZaWG8ahwyHK/MAemYSYyB34kaqdNe/14LFlZxk+XbJZpCdu0Yivq9qN/O7QfkZnMddwsR7PogvtUOwX9c2LQDmx4/wwBuiYVe+2D/gDyb4zy7DYaFLPfK9yFNne32V4MlivQTTBKycLMPBnlvS4K2pRSCbJHqXtYB16U1a0NVHxP46BY1A2DgGkY8k33P3Bs3SqFuFSC3lpexGtbG2GaG8uywOjn2iWSRaZKYPgaF3ausVw84zaoMaCCBpsg6I5N43gKNvy1D/8tub27i1uddjrTdmCYlUpxKZOjhz6lyMNIYISJUmpkyqN0AEbIYEzMTc+ee/nggsu+58U6uKU1lrz349qOn4Miy884Uj+fVtxi9OB915I2gohOr4ubrdbEvlsztZr80W/9PrLb2FM//As/MfZ7bdrvNXzIy25JzE/PjiS6A/aKO6vLOCoVYxS89qmw8UGe30T0+lHEGmmdg6heIqUikDMM8hsalME/iDKKIC9yVh6Q1TJNZhnZo+pWSoqVjQ26vbfrR/5yyYWSCjS42QFQ00Q+cOWaIvAipfjcuPOG/t5GnCcYlLaUnOZH89e5YTAjg+tc/yRkt0X4RtqWncg6F1KKvcZebMNOdtHTJ5llWj5TR9wHzhz1xl7o+cQES8uwyEmlR1x58lC/oH/OwCxpiAKGlALgxFdEcmdgPs8QoRczHc7s1Ayam5rJ5uCGSEUIFgaLT00OwQfLG2uxmWJyCWIhdOoIzFRr/NL8hTMVCVJK4Xkeen3pNt1t1FOXLUsdgl6hVq5l6h4M6RW4FAyMwMVTIJAWAnmngrZMiy/MzJ3a8/BXLPx3alR5GPwUdEoJKQTTSkd8Mvp33/g7lkq9ky8AJoRX3RIDr+dzHtnr94goNtDE9g6MiWCUqJLtZt5zd5ypn49OMBiRapUqAoqlxCYeIZ9JYZIPJ7ZlyW/+6q8jFbck/v4v/3yiWCc5j1luG3JFUTKaaGAwkt1YvJUKPHfz/BpWJnOmpwEC0N/6QY9qP1cvRPUazESMQjpdmovIJjjnAS1uFvOi9vp98ee33zi2T+17GHNY6kIpNTYeB2lHAQOAry/eTOw1uZvOJeU8wZhgxQg7ZZCCde7a9kRRzSY2uTEbHnD/idOyarZakXJax+k0j3Xh3bRMm1gnPM4jjIW3ux0WNvoXzg6GYWIdEcgRZB5plYL+eaTw+53rzANsW/GdKEaPyHhKAGec26tLiHMeeID7OZ1NdGF2nupwkAncseaCcN4xDSO0Y85ZYnDBxeLaaqEv0DxHRXPHEQDnzcvzF1itPDjHtlQS7CLi5tId1u5OXjo3/xtGiJ/CI1t7FBZceHQSGRaLd3m0COSVChp0hjO1aXJWICJ+R+kvafBTjDkx+9TMENZPdBhPjkb/HtDGIaXQxBwuLs4tDMrrV9A/x1yu51WHdQffTYj6zdZH8/wBjzP181mjvn7lfpQIrQlGstvrqUazOTH7zHmr6uH7H5BPveNJ+Y9/7Z+PjfEkoS0jVrNgEKy4ZTk/cz7bQ6wOzqjc5564vbKUyhq3LUvZhqVFwaAbhyTaOxHVC0YmyGcJDIB+Xu280l7vr1M3c/MIToc3lxbPTX0ipJCc80x5QMddd2lGAQO19uuLN1OZd//MjxTcI1LZm85Kr1Lk/427OvXUh6g5y7SI7v1SCM73ms3iTBNgmuBbZpsW0xB9q3Yb9VB7CBifCWGy5LgTO1cxmVkDzHBRZCgCGAERdKi1e7JNoOI0DXOsziBDcctXAb61u812G3uBpIZI7vnpOTRdrQUqn+VCcOYyGBBRxVrih0MUoD9Z3dqY2D07y3M9LrJBru2Hrl4blB7x2FDB0Li2vS5vLy+TSaQdhjtNrVzV9Y7HXkaw53jcK3I1x0ayaCA0ApDOEyOCcb7yzzHG5KW5C2eeIbNhAD6cibv00BIeCHsJPUfoaDSAH/mLJsr4a1u2mK7WzlWCSSl5t98rDlnhV9bAGnBRY5RJiPrVrXjSLOrd5iaB+vkkdqVSmV85h/4lLs7bu7tFbgqEfGPVR97zleJf/6f/kIoyPu685bk+eGlSQujC9Bx2HSfxoey1m2J9azOxeZ2EPL9goEAIS4whRxwGw65kzECM+MnefApnHE9vmPg6CNOBwRh37czl/xU7jTpaGhJ1oJREXAgBf4+DE2G1XEFzU7Op5AIWUqibS7e1aAeDrrc08gSDgYkSdoqWkzEmHCt+ztOgYy3KnY3AfvSnwYAOX+cDuR6FgDTUxTMMAZgDiB45y1FiWN0jv/NOr8t6/V6IKsj/npac0sTS5gL2hKSX6z3U5ExSYYwFkvHyADNKOTgBThJseRurx7m4vbI48E4EdKq2acsLswvMGJPpPMxPrUvfBTmVm90O3trZTux+mbe1VcirFwFGmXrz9QdD3UmUUkIhRG4t38Grm+t6Bcp4a74jn2VTJ6GUKlGG73EvSrWiToGAFgTge6fJ6UmLPIMaAf3wVLnKym7pzGLZMgAfioiRAE9+iRQHeuiohmCMIJdbOhEBic9kgA7g4jtVqRHLPJ7o+UhV0fP6tFBiBAAzYBGgFsYYE9d2sAa6s4C9xi82KdTPJ5ECD8DLFy5h3XmZ+16f1xuNib6owz4Ne7aSkt1/6T70Z6+/Cok6JOTTHMecmvHfQn0t+FGWpbKcH5D7PW5vcEHf2Nlie61m3KZO1ceY+N51tmUTQ7PiXruwIRo8GtULc8QoFQxUQGDohXy9+XImDDHy/aL7kWAmS4R1IbQ09ypAdOrLb9zAQb264czEBYfxQNVQCoQYYiZS9fqV+xUlNPExeMKTt5cXRxO9dDdPMPa/P1qBxJhTTI45+h3muR4X5a5WvEbQmGEYWvIT7m9iSPb7nmq1W4ViOuBc7huAnbjGjgjRvxgB/TclkzlVBf1zwAWaUrE4VNCHBjZI9VE82UUAHOkXV5dx3zttmIB0PQQTsjAzh6ulwbSz2R3h2ZLtU2JirNPRSiop640GqTcbeYOjkDcHCFTcEr//0pVIejopFfdEn9xcukO267s5GK0+EacqtawwkPkRwPpGVrRUIBAOgX2Gz8G7hwAAIABJREFUIapXpxBOhMClQed4ZeHSue9LNg3AR4cHNDoKSSEEHZon+DD6F/6GZ4zytwWZcUqpgoPmoLKTms8gCH5hyxACOVBM4VoO8OCErT7S8pNG/XwUbMe2+dWL0Q6BZ00abFC79TpEio10TtPuHAy+QLvp/w1K9oP9F/5bySkpiJHyuCBgOOlzzj3PA4MLEQJ8Jny6dKlgl5Yy0oE87fFmvb+70cAzcz4Nve4HJmpxfZX0+n1tTUPEHlCqWIaZKweakwAcrGeBMaJKQfocKgxGFaP3KJzz9o3QMcmAS9lxMpUXFTy6VzbXadhLPOxzXApwcMm1QwsoImenZwXBOFHNMtDF3xkSGaNjjQ1q416e4H2nUl39EUp9I/DR9kquC/xQuroo2omBAKFU6Mr/Cu/9XmMPPNliSDRZVTEmwrVtGsM4ECn617VdNOkBkwX9c3beNd9hTEZzGAOmGMMwwMaWnQEVkpxCAJzpd+q7dGfvuFEInM3LpYpcmJmj4zqHkFPV0LzhgjZhc2cHtzrtYrUVCGhDAPQjF2fm2ExtKlabQkrZ7rTkG0t32KSsUdMwedktZUFPJzzuabvHxVoIReXJRMCngsY0M7zo58wCBCdWSmVaK1fPnafsG4APRd+PCgYefjwwT/CEGn9BkV52y/S8UG+AUSolur1usXnG3LZ8ii2MSclxSUyKs5iSRKs+idTPR5ECOqYLswtk0LsSBtlJif49MPiC0VcooDYDijN1iuIMImUg7ApdvnBRWMwE7cUpbykwlnPO/ag6j8Mf/x8spPQNxOC5hBAC6h1UGIjDrEY/6hLVyhU5Nz2r3UvttTs3wwkzpLRtmtIyrFzRNcL+74eCSknvRvUeMfQWERv3Jj2L+X97/b7489tvRD4HwflTSK6kgjOpysKlOPQ7mUYUcLffE0try5FxDj2oIRV05gnGkPKDsLv7a5H/V/dsxWsPnDNty9FhOeGdbpd1e914Ak1YbXg/SpZLYnwLQ0X/YkKEZZhUQ87hXM8UKH0ISdaxJ9cAjUD4OFHAtmWNQOKiy7AIcMnlraV9thMwijJKycLMPOiIwjaVq/JwpjINQ8d39tS4Vzc3UDck/X+uwCuETRUB0Ptdv3SV6NpTQce1ubMtbq3coaDLGucHztNlp4w1+3qEhgxsGELwzNwpQw+gqDA2COSBCvrywsWBbEj5MQAfLpt7eYLBEYfepYf28/1iAsYJpFAulXJx34yFmTl03oUbLiE9z2NgcCmeeAi4tqOylBMhzGgmlfr5JEamYYjrV+7XcZBQO3t1PI4HQN/4CrkvEeIHhl6IgQH/gXNxA4aBQ4p5MEReWbgkgPA21BqFSDvBfQOxt28gln3OJeceGIf9S/Z+HtWCXvr/Z+89uBzHsSxhOFq58D4rq6q7Z2Zn9+z+ld3//c2e3d7p7qrqqszIDO+9HGG+c6mIyIjIkERKpERKQHdWmgCBhwcQBJ65t59eYYSAdxJGiMD306i/b91ISf0lA0hX8KUzxnXg+qLoEMiPEM6PWb1MO5xr/gjhjOymeczqTbOYXMeRgecV5jwG5+2Xo33y0GqlGca7dZXGntTbj8pWapUqWVlcyTULuNVuycOz48LM/fMcIZgUQUlmPKLtl8F/WOee6xZvrGVbmBnKG/jB2PszDjvXNze5GLgzHGrhmsL5DDy8I37fZbvTFkmN/4+cz8R3C8czP9F5sfDPE1V3us5GAA/AOdl13FKeL9Ipp/y18Z04ODmiQEdaXlgiKwtL5R9UwhGA3iWPexC4Vg7PTigCxG2xGhhXA1ij//7zX8Zt5u3zsR9i7/iQHJ4dZ912odoTgqt6pZ7Klpf1AHrB1/OFtJi1Dm172Wig6FDQlSCUS43FgTaJ8jmAH+fuiYsNzgmlZI8n+JE7OJvpLVcrruuo5cbSwM251WkDqrVcAyuItOCo5IzRShCMA2s29dHMM/TzS+UzxhSgmerV8Xh5kLd6fXs7M4bfxyxf9cjbS59gnRMsXN3udlj0hgcJBsCt9Y1X2VIJ2hpYBYdAOIafMogtvHR/deHSs1hvmKXG4thG7IdWUx6dn4681nvOVMoC12dF48pE5gyhFNnmcVYvY0y7jsPAlQpH7xiZTOMu99I+3+OB9Mblgcxy/Orm7tbsnRyNvIbfCgNaEqUk9ktiMoQYznLQ/dr6uP0h0335bT8PzQd5fDH6fpG7DrAfkR4sdFpeZ9w/sDdgf33iuZ52dHzu+ipRB9jPXcfl4+zbCJZstpq8myHlQYlUOJaoMfR/WKGMpvdfxZDbD3eJ7qo9HkquKkGY2Z4+1sCn/LCFf57yBLzTPRzzRqdPShCcS2E/KsWb0N55ofcLNwZ4KrXhkYyI53rEd+coa5tS5XCOO1Mu84TM6oOTE1Cu5NK+bXR+NFDxA/nj9odczgngB5Y64rsHe/Ti+momlYqApNAP2bRQVpDEJrUSAxFgZ1LzdlCF1EDPfiDy+vaNM2bYMFcXVyiCswaV0jqA3w6qFyU2n4cEyqhqVOs88PpnesGY0Wq3phq9M86CnvazFT8g/gD9Tlu+JP3PO/TzWx0JIczPOx/HcYyZ69tbiotfWcszrLMhyhjdD9Z52PBkJCXtBy8PB9r22gacauPoepgMzz+38NKvVRVnA8eQZCts0DdiiILl2dWluLm/TTwPTxVBT0AI5TCMeI6b+vmsH3jM6mVaGwZYKM6FcRDWA0ev4GQUo3XWMs5Ke7VKpTC8qLDT/bL7B31CKMhSx2izbOgqeWcB3z7cqbPL8+KfOZ8CRymQLpIZ6mMaEMbE015RDcNcsmCyXKPz1Bais4VwxqJoUVqr27vb4q/fgk4suMZHyAxTnajDWu12orNiD3q9UnQ6rsnMEKWKW/jnyeg6bS+UGKKTI07g+yI4F+MEsKQV0dZ/XwMvnL1SG8OMNqCs6VEUvaAAQfYv4GXHuGOVbwrwnUWYLM/tM6k7UVcfnRU4kLB8szZ3EgORZHVxma0u5puZj3TgdrtlPh185ffNh5nTM85bC7VGorNZ9oOnSqroG+pr9h3YFq0GUmugiFDQnuvFCW7DBlNuBzAlwCcFKDzXRAP6eeiAhymkjD/Hpry+vNp/U6ZURVGXWyiVdLMLXinBuEF0+YhQZuk6zLG2hX7+XrlwjC0vLIrF+sJImgcZxeXNdS4RhSMJlOChOGa5F7kMEksBQykeM+Z7nt4EzcVUqFIr1Ww2B+oBkUhbqxtm2pY6jH1e4aUfs4HJUmMxydS+qgPulaOzEw4UibQFhxHfcZEul/bRser31jaCx79l9TrCJSK2V3ACh68t+WkAWdS1MMwnNSCl2MZodXR+xi9vrlM+mbx6vLdoJY3WWHSFGPcw6T9ufdCCf+OyHVY/zc+vbq/J5U25ouF7PMHJuJ05Z4rROPtFV4KgFPOdZv7KXhcZdK47Mvy8uX94KHVw37Tnr1GtjyQCgsySZnxVgopF54gpUQjQVcSkz1gjTfA8PgSEGd2fOuetSnB2dYTDiphdMqvT17sX97J7iTFw9sLZgFdKE0KR6DvwwoDMtIubS/Vx88Nc2SE5OI9zzFQ3xkhQSyEAeVbXnh1XvhrgnKsP65t8Upzc2Asub6/ll8M90X2DipfvSPNtnTIqQd01jWQo3M0iGdGkZ8N8NWFbtxroaQBoU4yxwnzzYY9YaiwmSvYppwOYxtyPseN33jcDbIqBH+hGtTZoAZp2t0MtdEKyLQsHfkoZDb2Aeu70M9aSST24loV+fl8/nDHz04ePqaHqAP10e3fHynC4wx6piXni8cUlV5Ehl9kUa87cNx8SHcrwLm2urI+SFZJCnPGqzjq8NIIeBOd0bWmVI1o9Tfm0/5UA8jZJiXl+KQNXOucTOBu9yeo1ggkFowTnggjOiTWkJZm1bOt4rqN81yvEwbjbjdRvXz9NRJYeTxHiazLdZ7OdnMfWqmGVrC7lwQVs9MX1Fbu+u8lF7twb7fEEI2+rr2OXMWTcCe46rvJcZyJrK/dxz1AHCIz1PX+kqCOppLy7v7cG5zHWQ2oHMCW60+2aJEhVuPdibl/ycI8h6kw8auGfCz+NqZIU0p7PCz/6Agn4FsIZ3/mYBgKOemIGfvf7DQPu4+PzU7XcWOQLtUaBRpuvKJRR4wpnpO9sUslg7r25v+PXd+kRqJL2YevNtgbA/zvZACkEjWgGfuCD06OZUS7O1Y1qfSq5HGVGW5yZBWAH8loDQAMrUPClEEJvrqwnCkgvlQM4puhDKscAx+8TN/C8rFFsxkuNhWEXYdNst3I9oM2KvhmjxuFOzCk12cNCfhq00M/9dUsZk0v1Bl9eWEr1fiil1eXNVSGNvk/cRI+XXJaCxzf1Imy2WkRp2MqTFcBjbaysJatcwFqzAi/dywZeIEuNZNnvSivz+WBv6DvyyPPLA9cb9k0aaXYB5YRofFBwwj+DaDchHCJYjJcXQzjT5Eh7I8lgHxquAURFBp7Hi8D1jGDB3cN9+tBqDhc8wxpKw42kCvmNeDnMH7Z2tMOdRBeG5Oox8uzqQtze3yV/pIg1H3mC3+MIxl3DEa72PTfee2wpngbCIBxJKKzbPKDiRxKmhA/hXloLq0PPC2+HBr0PCzIDMpMrHA6+TVseNWDhnwu/FGLblDaJ3gnYIVzHTVS38AOfsoBJIZzHFRNOyvOrC3ABm592fqRlR41Lo49JJErAjnVxfU1nEVo3ja5t3fQaAArZnz98nMohHfzASiv+5XCPnl1dpBe+YE+A0gvBd4E3cdSjOAO4YOqw4lgNxBooAhQ0/BmLtboAMlKSUgoHMA7OgKBUSopEGb9PnF5JNFDyOo4QamVxeeCHTSqlulF3Kh+/sqj3yXFR8cOhxNllGRPktNDPyWbrp52PJKmzAtm/d/f3DJw/RSjPPL7EKAOYMUQxm+RwYyOOwbQ7bToKrHzoB2R9eXXEbov7WNngpeNsYMHp+tLqUGNqq9OWB6fHfTOiYpg0Q1jM85uRYfZlVi8MyoJzJYSDtF6CzN55MrAUd9X3l6xeqUw44vo9WYy+ubvXeyeHU8nmgzNDKamALjgMQnBac1wNK2R1aVUxSjM7IwK27/TyXNw376c1rGz7feYJpkDSiNcS7iWccQqe61kJFsxWadNtDcFCnuulhFGluCuRh+ZDZu/CdLUwnd7TOoAR3N2JIt1sNQfqPeZGFQ54Nqeyn09Hm4N7tfDPRZyV92WihEiTgGee8V6QQ3lGNn1Jx4VwzmAE6vruBtyfql6tmY3ltfnYoyhVDo+pMDJQ4fAmTi7OyShURMNbtjVmVQNLjUW1ubI61f1Ua63a3Q75vP+V3z6UPDCWENKo1ckk0N1erEkVyWiqczir74cd1/gaKAIUNBBNt9Y2EwdJFN4BDK5KpVQyx+/THFIq4z9mB3M6/urIoQV4++thVYRBMKh11el2uNLJoDtzELMUTQaer0N/4hFNuevGQj8PVzEMubVKTW2srCa6sCmt9OX19WRuO++I3+Mpgr+NPME6x6xFE3D6PkkTB5SM4wAHF8vq4vJcGc6LDC+9vLAYZwT3Kfri5opd3faHc3UdV/quJ9gIPL94/wghilLCjSGUMa4cwY3g3yCcrYNl+D5WpBpF4f+FA/bX3U9Tz+ZDNiG4x4taftj8oBBakZV8cACfXJyKSWddZyX/oHZ6PMEGcJ7CEY6pVSqJL1yTkM/20dMAnIUOAoZEomPd45XRkJu75By0VtfvayCtAxitwCg6jKaIcwF0psz2qVmZPwv/XKKZxGl38AdGCd5DtLHlfQ3kAeGcha5bnXacBYz7yof1LRL4A21zWXQ5/TYoVYIxzie0XjH3R+enpAz0W9OfHCsBAt231zZEvVIthDK00ebm9lZ9PtwTnW6nEDKNIoTjOLIWVpMfrkfp5MUzj0mA9qM4ph7t4zlpYMpQ0Ljv1is1Ua/WEg+wsA5gTTT8LKNz/D5mJCXWREkrAk51kHEcvCStdruko8tXbLwwjDFa8cNCQFVmPVoL/Zxco3iHftjcHpq9iIzq+4d73u5M9uD2mOWrjDFPXEXPmUjJR5lBTUqBxGCardbYB79apUqWFxZj4qUMJCt9E9OEl8YlyRHgBl7jb+G8cPA+Pj/lzXbrlY7pE8+v6yc2ViFKDtNttEbEeC+r94Wjd1JGhNIvloIPwHdd7bnu1IJkoB6whRyfn/OLm6tCaCtGCNBKGq2xh09VN28VAsigteXssoDjPePsmM9ypgbODOsrqzhfK6DOU0L504fMBqwU4pUjQjjKdRJn0slWuy3aHXtfGnf2egFA1cR7HMDy75sPA8+UOC+EQUgZTdzsuMMoxfO9zIPs0BtKMeiSCgmbg9E9BIl+BfOJYKxJZVQWXZWTgnDOQg8wWh6eHscbFGBnf9z6MBcOCx6jSaWItBpT2Uprc3h6TG1iy5iKnIPHcRb/l48/EcHHNlllpq0nqsr9k0Oyf3yE7I3M2p5UQ6ApqARVmhQ5cVy5EByYhm5u3P7s81YDo2hgmlDQ22ubMRR10lIYB/DThqiNkVqnzPhNOtoZq+d7vlysNwZ+1bTWst3tFOfLV6A5ABQtOElnsVjo5/SzGgah3FnfHPw+GW0urq5yd1g+wzoboozRk4J1Hqo0wF/fPzwk/8IMaRHRSkv1BU2pteoNUtUk4aWXF5bIYr3xLA763j3af86ifILL912PusIZZMiS37J6mXY41/wRwhmXMeskGfq6lbICDJihnzwoIK9BdruR+u3rp8IZ4HoXWQlIaG0MKYx8HzZ3MoOdNEbrg9NjVuYI937rkjGqGGVsZ2OLXt4AFaFnvAEMvgE/OSGxgz9GNqBEUxIjHIj40EAtQ3le7/t77QJNwve8RO8YAiavb25yP9tNcvzT6guZutUUmbp3D/dDjXsIUrEBYq9n1MI/T2uFj95vEi5g35s/fusCQDiPPqkvntw7Poj/xhhTq4vLfKH27S6VSQcFbISCs1o4E/t24h1qR119dHqS6NteQJVZkSakAUcI8y8ff57Y2kwzLCAlaa357uEePb08T/NoIepyzlWjWs/9HQR1gtRKDEOIKYRSrBBzrQHasw/k/k68VXI1COViYzGVr2/6DuDHTF1ttMJGmIjjN8XyenIsp3ikFFURYb1Qa7C32VpvhJfdqCuQWWZLTwOUMiU4MxU/BMrSzKrFQj+nn1pkGGytbtD+kOpG3j00c8kQQQTgo9M3jhCPOVXjLDaSmbM1vUZePwH5kAWa9SFsoVYnC7W6pjRF6NK4g5mx57OEl+5lAzt0fXmFu44bk5f+sf+FPn1LwfOLX0/lbVYvvk2u4zDwY8LRO8v77Iwto8yG06hOF24La3b3cJ8WGYJYaeS9qcIcQgDLv7a8quHcHHchQP97xwc0ktG4TRXqeQStrC2vqA/rW/yh3SJfDvdJIqhOIB/g/NlzDsd7KaFE4e+EUAbrlA2IyX6qgS0S+OHQhhEwCf7Zbrc7tK6tMFwDnAtZDcJExohh2b94V3zPp86AYLPhEs1uDQv/XLK5xbdAm77ffWRWuY5bSIdFVpouKoTzuONDUN/p5Rl7gifGN/1POz/OxR1oiC1yXNW+87yRzXYHjrPCnKFzGKRtckwN1Ks1+WFIYseYXYz9OPiBu1GXfDr4ykFBUpaCYNjAD7nnuDmLTJVUUeb+oZyFts3PowaAyENpTAMxqRKjkS2vkrR3pOk5gCkBhxaPHb+Aes4TAuGxr0lNxiT64ZybtaWVoSsM8M+56nYSg82gj0eeSYqs35fOiwyaLlwTFvp59CnxPE993Nx590IBvZ5fXg5955L2jkuwJuaJxxc7oCoybzn2krx4LJcaC+Bh1vhwJtWfrZdcA6PCS4MbOPADfXByxBzHMYHnK2DTaW0Y50xzLozDBf5HuODEwjMmn5NZrYmo4GoQTPM91rd3d/rryWEiB8Q05wEcxUpJBVJZYwZDQ05CzqyygDGcr4d7dFaCDznnOvB8/XFrR8BRDoPN54OvrNPt0jSQS+/OIaUgh6bE9JwCcfAXRSYx7WUNW+fwyEv/yXk47DKutFa3d7fT3LNGHmMRHxTCkRU/GL7/UmLuHu7BK9Ln1WAxhLf3IuCsiOOdmkyUKm7hn6em/tE7prjrvbvfcB4HYA5/d0bvfKJPlgnCeXzFGHl5cy2eAg8ppbpeqemNlbWZmc/3dIQzixAOYxM0ekMOY4y6bd6zK4vcMf7SncEWEMy+sbwqXiKaFXmYSNy5vb9Tu4d7oiz0OUicWag1MrOLvr+/UBPJiGadIFjktWBlK7cGJgkFHXieXFlcSX3GmLwDGMYOYwSI0JVCAPwESs/AgtNCagVNQLrUXVBKVDWs8mpYGfgseNjanfbcGzUYo1pwoZH1O7axLvVsTfYBC/08nr4ZZ2p9aZWDn/Z1MfK+2RTj8Gk/ZvjqxwsxI4974XgST+Rp1el2+FNUc149riwuAzYQ6VEzsU/npaes2x0AL83xjV5ZWiHtTttUg6oWnHFk9BaJTydrfdj2xtAAJdp33GHIJGN0MPxRrOdfd/8gZXI+wgGSV3DNcI19qwHn5vry6thoDAg63N3/SuDgLnOBAYkzxj9sbtOVhaXnoSilzH/8/a8UFAZ5lRhxgSBL2DAggVhI6fSaZpRKx3GHof2Y+4d7GsneNdGW8TXgOq4MPH/oOU4pKe/6cP8CWQQBZmESR/L4IpeuhR4VBxHDghtKN7A5EDimC9DvoDtRqrBZJUKVKJieZgXCeVy1PrRb6vL68tnuxoEstrYZJx/MagEUPecxcfXEh4is66vbG3b7cD/xvm2HxdYA3r2ftn+gk89OH18vR+cn5uvRAc0acW98yV63gHMIznp+znSKs4YmlfU82PaKpYFJQUEjH2e5schGef8m5wCmRBJDBEi8p7GhxQfuAsGpjrtU15ZWBsLKADO/E0WiCEbFccc66vMwIIBbtOIHFFCm81As9PP4s+w4Qv+0/fHtTcacXV6kClh55vElRhlAfgH6q0/U9/hS59aChCOl1W4NNeZlIcH60ooM/ABwmBPpLwuZZ7wNdXlzxZvtlt5c3WDzso/O+JzmNjxkPIS+z6ZlwDRGy+OLc3FxfZXbGPNqOA7E0EoarWMO2bz6Gdbuzua28oQ7duDgH3ufh3VV6J/DsbKxsmp21rcA2fxNVmPUwekxPzo/NdWwkupMkNmALaR0IlXCaS6EGAgfDAjiu/t7e95IpNFklTzXU747lHvZ3Dfv+6IEgL+5GlbG3oeSSVzOWhb+uZzzBqlhozGGvNp3YLNwYj/a1D7/iRQ6qxDOiQY/pFKkpDo+e81Ni/3wx60PM72XIXNdcDGV7yjW49nVZUxRZYvVwJMGgJT5bz/+aTpn9DGnIb4OGs2/HO7Rk4uzMVvL93Hcj8B1nmMwWpwBnO8obOtWAxlqYEJQ0PBXbCyvj3RgzN8BDMcvIXEm0TQcvxlOZ2Gacl1XLicgewaExLxCJsDw47qurnjBRLHYp7lILPRzNtpH1s/K4rIAN+1jkQ+tpmi2Bl8uvvH4ItglhvdCBg+mpbQXP6AIPDQfJir/5sqa9D1wzFoncDYrepxWjDy/uhR3zYf4cL+xsk6QJWiL1cB7GsANrT5F/t9uFKnfvnya6H6V9UrAOVlpCUhoBC1OfCyhH8LxOVYWMM6dn/Z3s1bNRNoD3HMYhPrj5rZ4L2sHY/u/v/6dSC1VNSigg6ofpLSh4smPnaOhZiJzlKYTwbl0Xa+vYfr2/o70gyBO04+t+00DgGweRrWjtJJ3D+873gErGPrh+PDqszwpFv65/LNrvh8CstWKtD/PF4Tz+EsK+to/OXzVEGNMrSws87JA0Y6iBcqodoUzkiF6lP7ePgO9H1+ckU63m0Vzto0Z0EA1COTHrQ9TCUrISn0xP7Ds0t2DPXZ1e5NVs5m2A1RSz/VJ6OdG/aQiGU38Lpypkmxjc6kBICbmVShjcrHWiGmpRin5OYBjI4QpnOM3hlUzprSRJCBdb1TrfFi6tyFGt9rtqR3GRlmMWTwDOAqGrN8gZGkJsbPof1ptWOjnbDWPyME/ffgx3idwsUBG2XvBFI9ZvgoZW/G+Uh5Y5yQKM/fNh6nwbmytrUvX8WCvzu/rmUQDc17HGCPPri5eclqRlYVl0vgWHDHnGrLDf6mBafL/4mD35XCf3reaMzEpcDBqFWcDT/y8urOxrTxn9CxgzMWn/d2Jyz3OxDPGJSDuf9jcpkuNxb5N3d7fyV8+/y7Acxr6w2Fux5Epy2ffhZQmMd8wFliPb5hSZKbNVIEz0ff8d4ZFVTfqkkkHuM2Uct8ZDNC2PNdn3mDUpfhs2Q+hKgxCSzMxYKEAchUoOUVyFM76us58fEAoI4QZ/e37zhg1ruNOZQu2EM7ZzDAivo/PTr/b2/Cu/mnnx4HIfdlIML1Wpg21C2rBw9OTvqgS09OM7XnSGqCUqbWlZb6y0P8sP2mZxulPa6Pvmvd69+CrKGqme6Naz2V/QyKKUtLaAsdZQPbZqWggTyho+Cm2VjdGPi9m7wDuOUC40gXO+KVEkSlkVmSx+mDMWF9eHTzhlOgokmweMfMDL45CykLVpWrDQj9nO13IAl6qL4jFhUXVajX5w2P27zOssyHKGF1WWOdEysIhc5qZMdvrm8p1HEpmCLo/keILVAkH79OLMw40iafCOdPVsEZWF5fnLsCoQFNTPFEoVb7rcs9xpiGbvr2/01+PD0sd7f1WcY/ZwMgEBnf8xMaGM9TGyroGhcYok6m0MrsHX0e+mIzS57jPbK9vku21jYHNwCP/+9dddnN3S3zPm5qxftyxfvd8D1IangiOgINHvmGFiDYgOOE/ZXY2BUH4nWMbZznM47yiJGW+hh4bRBCu73piEF2E0krdPdx/Z9BDFpnneJZqIsHkWPjnBEoqeJU4KOeFAxgwuo5wcv/OWwjnHBeGMfL85kq03sARgx6lVqnqzZX6d0qnAAAgAElEQVT13Oc3x9H1bRrjc4Rg0z4nSCXV/smxdRZNYxEUqE/YKX7Y2GazZg/G3n1yea6+Hu0jwa5AGifEcRxZC6uZ72+9e3CxxlooxVthCquBRyrSzJFocc+qV2uiXqmNPPbsHMA9pyortOP3SU2USkoMnQa83sgz1TPAmCAIdaNSHXa40e1uh80L5DYivThjpBIEXPDMvz3jTNlEnrXQz/moGReZn3c+ksvbaxw+pNEGEIoavc0Sn/g72tPtTmfqASTgwdpa29AOFyM5IfJZFfPVKmBoj85OWCd6DauFAAnAPG6tbtgslPlaEgMNQJUgYPgWT7rgUvzr7ifSL6Ns0vJk3R8u+pMe287GlvSc/tC5g8YYqUh/Pdyf/EJIqXjAPVfDiv64uSN6tAODS1dG5v/84z/hII2dXM50gh2GiZntzx8hpeNstdg5HGcNa2rI894/baPvoAHDMO25HnvDqylb7bZovwhsylZp89sa3o3A80U/BCagUzVbTRZJsEN9K3jOdV0GB/D8ai/ZyGFUYowOswMka8zWmpoGkMltdI8HGPsq54KJjCEDLYTzZKcXdrqbu1t6c3/7XcecszhjBzQbs1awljmPCaynPTTV7nTM8cXZ/BkDp635AvWPM+m///yXAkmUoSjGKEMIA+LV0flJhg2P1xQQLCpBhWaJvkkJkVIrMS/+jPFmwD5dVA1kDQWNoOyttU3y5l6bfPiU6PEdwD3HL1VKMW1i30gpCg7bZXPiIPt3qbFIHTH0XGOa7Vapsi/GWTQVPyDDILHHab/Iz1ro53xnBwcZ3/eBajD0pctXkom1LiMZMTiAJ9bjgI7w0dxe2zCcxUlItkxYAwguOTg5om+NtRADRkghBN1c2WDuPDhCJqz7snWH80ktDCf+nhqj5fHFuQBM/ywXGHJlHIik2CTOroEfkM2V9TgdNK1euzJSe0f7hXVQcA64Z85+2NxhSXn5sM72jo/E8flpvPcFPgIOCzvEtFM2Wv1eMG28HuOs4beQ0uQxh3i01jN5Co5FZNWJF/cmfNeub25Sr+tMBJrxRnoO4AAaf3ekymh1d3/36sWJHZpcmIofzMs5e+RVYOGfR1ZdUR/USJ7AO+DE/rPRrl4Wwrk409uNuvKkjwPSdRz90/bH0Sa5OEN8VxLBueJZW7pHGDOoi+5bTXpxfTXnB7QRlDcjj/iep/6083Gm519rIyPVZbsH++zyphj3X86ZalQbGeqdKqkiIBPNyMq0w5hHDVAGelKWyf0Gd+0wCPVSfWGk94wSIJgaM7oDuOf4BUQoL5Pjt8wLzxFCrSwuD51wgOV3om4mC62o+mKMasGEDoOwCBGHU1OThX7OT/WhHxiEZWOfnAtDLyVaaa2bzWah9g4YErfWNgyjzBps81vu77aMQ/fe8eFA+B04/jaW1yh4+2yZXw04QkyFE7UbdfVvXz7PpEHtvdUEKCyt4/M7ghiHngfHWZHb61vKd73UfbS7HXVwcpj6uXFkTfLso5OS7qxvks3V9SSPvKrzv//+VyKVitF4KkFIRzXWp+64bA/ESClUFwVSGnuT47jxuQbX1marybvd16gWZVNxUeUFIlPo+/3QmNRDq8nf0hMxBlqJ6tzs4ePOnYV/HleDBXoee6Um8doHh2qSeCsL4Vyg+XtHFBzO9k8O372vAj1pZWFJLNYXij2IEaRjjMVBDCM8mvkj2mh9c3fHbu7vMm/bNlh8DawsLpn1pZW5sBnBbtdqN/Xngz1x33yY6uSA8zT0Ag6EuCwK7lqRjKh1AGehTdvG1DSAIFdKM4GCxhlxfXmVjJppj2x6YzRJ7wDGYdUQMHLPhOO359/5jh5qamukX8eUMVkPqyIMhvLbqk63Cw7mwo0hC4GQuU0po6EXUFyW5rlY6OfsZx8cZJxxHXqBwEWt3e0IwG8iw3HWjb1YTw/NZiEPWuCT21pbN9PPJ8p+zRW9xd3DvaE8iTiQrCwuk0a1XvThWPly0EAPEtcVk84Eh6Hty9EBnfalNweVDm0S2cBaqZizdWjlESsEnk821zZS77utdksenh0XKpCIc27q1Zr+uLnNB/GT9lPV1e21/OeXz89jqldH594ZcTpm47E4azi+c72GlCYUMB/xWk7iBEmjDMa48r1eIIPSWt3e3RbCSJ1mDGWpizN0xQvZe4lgMMrf3t+9cvQigCz0bTBF0vm18M9JNVWmelRRSpjnuN99yy2Ec5nmsSerIYYcnh6TfrClT/RSs0hZViS7HGwa51dX9KHVLN8ishKPrAGc93bWN3gtrIzcRhkfRDLexfWV+nK4x99DbZvUmHCmW6g1MruXvg0YnNQ4bD9WA1lrIAuAjMDz5cricjr7Ss93S7VWzzb+5A7gGDLZxI7fmYvEAMdVwSFesZOur6wlMow0262s12wh2gO/gMMdVQnCueedtNDP2S5J8MQB6tJ3PfrCOKxbnXbMpR2vPeGMgoaZraA5ttZsNWEczbGH8Zr2XY9sJNwDx+vJPv2kAXzr4QBOUjhnuhbW4Ai2mTxJFDZDdRClWw2CSWdE6tuHO/316DDdQXiG9I5vk9ISmcA4n+eih+31Tem7fqq2H5oP8vjiNNUzeU0L4J4dIdjHzR3WqI0WoKKNNr9+/oPePdzHYsLAUQ0rmRk48hp76dodCik9unP4EaHC3D/cv0tpUDpdFVRgnKUrQeU7LnjcWVrtJu9G0SvJwYf5Ep67oMMqhFgItKL0G/d2IYSyQmSiAUapFsJBUAwhxuCjHgd3xZzrhOb2fc9EeNvIKw3AVHp+dcHb3c67mokRRMKq2l5dL8QZKavpw7gcAfNcsY5GxxdnpN15fy6yGrttpzgawPr71x9/JpzNZZyfwrdj7/ggDkKZRokDwj1fIIA4gxJnAGfQjm3CamDqGhgXChpoScsLSwz28KTlCfJZafXqvDHUAYwMWW2MnknH75P2ekYHmjecXtLJeq8eeEgXa42hh0XwlLU6naH1xpFl0s/2Lr2UV/yQTjrDaNJjTdqfhX5Oqqnh9QAnzhlHFsJ38AwIpngKeGGcKVc4s3eipMS02+1SGEVxoIQT2JbJaABBX7uHe4kP38iaBx/75sr63AfpTGaGitHLNPh/sS//+uUTkVIWQwlTlAIoFVLlowe8z4DgT4O+cPtwp84uz6f6rYyDughhOxtbY38z2t22/uuv/3gObMFZoBpUpjq+KS63iXcNJwiClzGfxpge3zDQgHoJw8gchme4L5QT6vueT5VW8u7+fqbuRxOfjCEdxsFAYYUy+joO7G32LzKFPcdjo2TjF23Mk5THwj9PUtv59oUzTLPdJggsqleqpFqpKkIMBSdwvj3b1nPWgLq+u+FPAWPv9YUz89bqBq3MEHUO+MkFF0BPy1m96ZpHJvDh6UkpbBzpRmZrv6cB1xH6Lz/8XKxFOOGpAj+w1JJ/Odij59eXE+69191CrZEFcqKKZGTvWlOZQdtp5hoYEwracRy1sbyW6n14gnx+O5a+DmBc4nSc8CvFzGX8vjOjsYGhoIduePwX6g3AAw1bi7IbdQU4ymapBJ6vQz+Y64/5y/m00M/ZrG5KiaKUscDzaT8s/VfQQZRKwTn4gFNtvtlIm1srMWR8NyoPHx4uzKtLy6S/uTc3Xc1dw0+BJmkGDohCIQTdXNlgNmAnjebKW3fS/L8IdDu5OBfn11flVVrGkuOcDlhooxXL+iybNgv46vaaXN5Mb24A97xYa6gPm9sCHPLjFK21/Hp0IE4vz5+bEcKZCt/1OOOY2WcpVY8RSt9BSvfcwnHGtnIdl+M8h2AJW/LVQL1Se4VW1cv+bT2fMxHU6zguEHdm6Sydr1J70OiKMWp1lrum8+0AWfDNdku2221BGNWMMvphYyuGX5JRxE2+3dvWJ6CBVqcdZwEP6sp1HP3T9seZsm1xzrUoYJSK1EofnhwzGHptmW0NLNbqcmttY7yD/4yoCPzA7U7bfD74OjAgJevhIgDXcVxdDcKx5uHRD2XPPFlPkG1vqhoYxY2Ae+xCrcGTBI090tuSl5DPbwf8rgPYECOVUnPh+J3qCkjYOYxZawnJ7Fud9lC+xoTdTrUaDASMMVrxQz6uAW+qA8m4cwv9nI1CEeDiOi544cQAR6J5aDVfZT/iUIPLzSibdzaSZ9kKVUpL02y1xjqgZSlR0raqYYWsLCwlgsRP2qat970GIiX1/vHhSAYKzphZX1mjgHi0ZXY10IN78oQ7pqMtjYa6UaR/+/JppHWZpp8y1lVaEaUV4sRg68rk4ux7Htla3QQeZQI0AKMvrq/Y9d3NxNXHOVOe45GPWzu8Vqlm0j94tf7jb399da72PM+8x9eYSYe2kew0QKnkjLKFaiM2/ArOCWdMR0qZbtTlQA/Ar0hJ6xjOTuukUX0NtY7N6Obu9ilRWzMmNKh8Muxy5puy8M/ln2IgSjVbbaW0ArXQM9/5+vIKeQGXaSIpn3nayj/q+RyBgsPx9HjgGRWIScsLS2KpvjAzSmKMKqeYSGm6HXXN8dlpJmfimZmwGRsI3qnNlTWxMCLdy4yp43k4yAK8ur2Wu4f7YpIJH/VqjYzDdd6jObJBm7O6LudxXI8IVopRluoOBF8gUEOG6awf5PPb5145gDXROLPMHsfvMG29+Pmj13yoglM0OVZVXPqqYUXA4TGsIFKm3WnPxOEm9IOXF6JhQ5+bn1vo5/Gm+glOPPACOiywwBCjm63Wuxc4ZDYWDeYorWaM0fq+2SytEwWQaUsLi6mgSdPqaN7rd2RXHZ4cj/xNwYd0ZWnlO4PwvOt11sZfq1QIS+IbzGDgIMP7enRA75sPGbQ2u01IpaTWKuYRzGKUW2sbMvCCBBcWI8+uLsTt/V0W3SZqgzKKyxT7sLFF15ZWEj2TtNLZ1aX6vP/leQ/EGcJzPWHRDZJqcHr1gJpUr9aQ8gOHim53OwzQm3gnPNcznusYGKco6eEVg+s5AnCejEynGwnAqkePTuK8INanp538en7jAJbNduvZ6Aj9V4JKsliS/EQsZcsFTKwrpR4nKTT2j2a7HWfAE0ql0fr5G0oZk41qlS/WGq+/0ZQYGUkQ/05SVNtXxhoAD+ewgpi6n7c/zgwPei+43snkzDlMd2l/bozBt4icXV0mOMembd3WL4IGOGfm5+2Pli7w3cnAJ0Wz/ZNDsn9yNJHpEkLIeqU20vtGCZFSKwEnsC1WA7OkAaAOA4E0UUx9D/1HNqp1kSSwvR/k81v9xQ5gbQwMRTbjt6dkY4hRxJCRNqw8Fuja8koSMvsYJx+XjbIWypjijJGqH/LZyLDMdiYs9PP4+vQ9X/uul8jpqcGnDYiudwpj1DjCTbp3jy949i3E2c1lP1jB0LhYb2hK3xDOZa+vuWyx3e3Io7OTsb6FnDNdq9bISmM50Xs3l4ou8aAnyv9Libm7v1dfjg7GWpMlVncq0XvR0xJ2ZPjNx9KZ53pke31zaMANjGynl+fivnmfStZRKyPwYHlxWf2wsZX5uRFK+/sfv9Jmq/UsHmBYA9/n40S1jzpW+1xyDVTC0IRegAeejdFASHpZwEMLbmtXCNVz6r+i2cH0a0NizmG0EfMiSSV1FEnTiTriKXv4KZPYumtiuG1TC6svHQDm+u6ml+1ICAnDSpL7bPKJnpOaFv65XBONveah1VJKgZIBt/fvA7Ecx1U7a+t9AyxB51X2O1q5Zi07afHtOL08Y4D7HlRgc6yEFb29ujFyoG12Uo/fEsbjCFHYAB9jjLq5v+PXd7fjD9a2UDgNIEvu3378UyEDEIqirEefD9892KNnVxe5isUY1aFfGZEOjCqporlOSsx1cmzjU9UAvpVAuk0iBK6gW2ubfRMtYt8lDD1aJUaPof/D/1/xQ7a80AClkhKCQ/vUDdae68qlxuJwwx0lpt1ulzJiNE6HJ4Qi69d3PbsU39GAhX4efVlQRiUseIEXpDLaIoOq0+28++71Nu4Y6mj4uzm66Lk92Wq3yaxktCzUGmShVleUWm60rBdMs9WUJ5fnY69xwDL5nk82V9ZhGchaTNveFDXgOU4MAT0JEXBW/e3Lpzgrz5bkGgDvaRb7fZIsYDiATy5OBfhW8yycc4XzIuCekyDkjCJLq91S/++fv7wyzMYG2yCkZUcAGUUfZXiGM46sXyV4TKX5cl/SnW6XAdL7vUIpU4QY7grnOcN70LcK60DrGJsOLCIMjmR4jJF4HyGDOIp4FEU0dg4/ZhLPw137jQNYtjpt0el2YpUHfkAc4ZRhGRVKRgv/XKjp6CsMHLbgW3xotQgQpIw2A516W6vrxHNfBZ181za+3cpmQJVjAbyS0sjLm+tE5yDsmYB2TMLtV3RFYK8SnIsin48QjnF5fU3vLIpQ0ZdTavlqYUX+sLk9kftoauEK9gDOrzibfTr4yvNEbEISQKPaSO1PwRk7klFih1bB1GvFsRoYqAFkARP4EigbeE4E9WQlqJjFeqNfPSStGqVlqn2P/nfvf1rv7ztT9OhNn6qlGg6mRrXOYThPUHSz/T5cbYJnp1YF0UGCC13xw0IfGKemoMeOLfTz6DOA9ydtYAHe/063SyPZP3oXFx2kHAnOp7pPpNSM7nQ7Q6OSU7Y59erLC4u6GlaRqjMTUdRTV+ijAHfNB3V+dZGJTpHBgsjwzdUNZo3ARZnh8eRgj/y/w+D0x+ul97QxWp5cXIjz68ssmpu7NuB8QlCTMYgQHY0bOM4CXtsggwAXQEVyfHbM32ZbZqVwBJMwxjjgnlcXl7Nq9rt2YBz5fLDHL95Zb+C1sqV4GoAzpRZWgeT0nXCAk+tKwDoP5xPDvqaNEbEzGPzmjjsaxL0x0vQSX+MsYkRbSyXjLOJuFOEcxuIs4kcn8Sxk+71xAMfZv8i09hyPvcmwLt4CKrBEFv65uJPT7nRIs92SnW5XUErUsO8rbDsLtQZvJPuOaG00lVKV6Z5Z3MmaoGQP7Za6vL5MdH9yHUf/tP0xtZNkgsNJ1NVjcDwtOkIKDN+nl+cEwfC2zIYGAKm/vrQilhuzw6k9iZlBpNL13a3+crDH24/Beln2C4qe0As47o9pyyAbbNq2bH2rgaJpIAkUNA5+GyvrfWkikkI+vx27dQAXbTW8kAcX6fXl1aGH/scoGQNjQoGH80o0OAMA21rxA2qNAoNnzUI/p1/VPbg0RkI/4MgIGaHITtSNIf4GFbx7cACXBLJcSqlIq9NKFSU0gu6m8sjq0rKs+CGMvzM5vkkrFWv78uaaXt/dZNo1IJrWl9dixAdbyq+BeqXyrsMl65FFMtK/7n4qzRkn6/Fn1Z7SiiilDFzqxpDU+txa3ZCB358LGNzyB6fH7CnrLyu50Q4ce+vLq3pnY5OxnFH/YRT5//7z/353/sa5vBpWhp7Lsxy3bWu4BqphVQVeTO/Rd26M1rIddVOdD56cwY4QcWYweIUzzG5SjxBckJsRcH8qZZSUuiMjGnUj/pKHGO9u0QtjTNfCKsYTZ/92o650HIf4rp9K70Uf5yTls/DPk9R2sr6Qldtqt+D4xSuMGO3EF03P9eTW6lqa90HheySlSvNMsoHYWrlpIFJSHZ+dJFoXCGxbbiyKpcZibvJMqmGMxRGi8GsVB+Cj81MyDKZ7Unqz/YynAWSaftzcYUGypKnxOpvRp8ENDI7grNFqcG9aeMt1P1yHcQbw8Gq2htVAeTUwDAo68H25srD86ns6CuTzWw1ZB/CQNUNpvA9OfAN6hJkztUp8kR5WdLvbYWWJHsfYXNfTFc/nFg508NRa6OdhS//9nwdeMBRaa0jLqt3tcMBvJSmuO2KGSJLGM6qjjVYPzWaiy2hGXU68mfXlVRV6viHWCTy27rH3XN5c5QYNtLa0QurV+thy2gamp4GesT9MckYZS0hYWL8eHVjItrG0+PLhXjaw1hr8SqnOt3CAba9v9XX6Y672jg8GomekHQbnXAd+YH7c3OFhkH/giCFEn1yc0q+HB+85gFU1rMz0dzTt/EyzPoLvGtW64gxUMkODv0yr00613l+O7ckZLLhQvutynPtGDDBMqrJHBzHoiHoRD8poE0mpZRSZbtQVT9nDPajpZOfVpJ2PUo9zoapBiPfD3NzfEsa4rvT+bssIGrDwzyMoLcdHOt0ueUC2b6cDOhNpjEnl6ILNAygaaVFTgGAAtjagGOQ4PNt0hhqA8RDOlKQFa+On7Y+p10bS9idVL7bxOc7I39lJyRl/T7U2h6fH1MKsT1Lr+fSF9+fff/5LPo3PSasAqdFG893DfXp6cZbZqPGtDDwfiKZp9gUVycieHTObBdtQITVAiaaUafaO3RqBEysLS/Rl9vzTWTAt5PPbsVsH8JDVgPRsGIOIecUllfsawqQvNRZpwkuCabZbaTbV3OV/rwN8ABiyfoPQQoAmnAEL/ZxQUUj7YFRzxnXoBVnAietWp504qAJQ5q7j5u4ISa6N72qa++bDXHBpbK6uy0fIb2soGWPBEGLk2dWluM+JJ4kzphu1BsV3biwx7cNT04DnOtp346y73AqMSTf3d/rr0YG9CGasZQQNKg20WwL60sT75cbKuurn1AFiydfDPZqFMwqZJKBZ+GFjmy4vTC4zBjyx//nPXwigPd8WIRwZ+jabMeOlOFJz+M6D/zlpICkCeludTibnINxniDGCcR7vgUAyEnziWxTeW20IHMQxDzFBpqBSSkeRNJ2o03MQA2Za9X7Pu3AuZDUIwYUqujIylaAC9Ou8u53p9i3883SnF468JrJ9Wy3AMROt4/ctdWGMqaV6g9cq1dTPxg9QqogxNJKSZZ2hNZpA9qlBGsBZ6PjslALFIWmphhW5vbaZ+CyWtN1J13MdJ/F3edKyve0vkpE6OE2WqT1tWW3//TUQ+L76efuHiR/CZnFOQIGDzPjPB1/49d1tZkNcqDUSI+iATkgpaeczM+3bhoqqAfD8AhX37V3JcVy1sbz66h0YFfL57ditAzjJaqBUUkJSZ0okabpfHccRamVhOdHGpxVgzTqFPzAClsPCfiZfFRb6OZmuHjdO6rtepnDiuPAnvWSD94kxbooKe4SxJM1mTqb1YtfaXtuQruPC6phoDy32aKYjHSJBTy/PBdZOXgUOHnB0b61uFP77lZcOytouYClDz+N5I71hD/7ty2diuYDyWykKzqEU2YNwdu30yQI2xJDd/a9wRI0t8NbaetzPpMt9817+/Y9/vrsneZ6nvWIHe01aXVPpr1apKc91KH3MjE0ohOxGkcgaSrlHaRM7YA0yHFzh0Lz3xUTjBYKVNkgLfuYhRlApHMRdGZFOtxtDTL/kIU565u3XvxAOUFj47cMdCf2QlIQeJZE6p1HJwj9PQ+u9PmEAB7dvq90WlFFpdPIgqe+MbZQa3/fVxtJKFmddoABkEsgyPe3OQc/GyPObKwGo8KSFM2Y2VtYpAptKWyhVDuc8Q6qEnFVhZKvdISeX51m8mznLapt/TwMIFF5dXKKri8tWQRlqAAGFd/f36vPhVzEuXzbmyBEOEJQSvWe9AOXpo9pkqE7blNVAXw28hYJGwOBifYG/8JsZrVVm5z7rAE64GB/xticSxgwi+3qlKhI6S1Un6iaGqk043MyqUcoUZ4wgW2QK0fGZjWPSDVno52QaR+YtZ9yEfpg5nPhDq5lMiMdacAJzLoq2znW702Hz5jxBFNXW2qbyHAeR8hPZt1MtlhJURvTlycUZb3fauUoLAyeQLjZXN7gjnFz7so1nq4G8+X+N0fLk8kKcX11mK7ht7TsNwPEDWGhjcMEYHjizubIuwyB89yL/x97nkTUsONdhWNEfN7fFNLi8EPn+x94uv7r9nvscWZ/ggUV2iy3T0YDggtSr1RjthZD0yExSKxVF+cHKATWqF8VNAdulPccp9HcNgV6xg7jnwIZxwUgldSSliaIu60aSPWUPw1E8LLADfL/g54YO7Pd8vHfEwj+Pp79Rn+5l+7aV0gooUJncH+DY217fpLCHZFV676PJqjnbTsYaiNFr7m4poPDTFMcR+uftH7NbKGk6z6IuJVowzsoU/IPP3l3znl3e3JRX71nMXUnb4JyrnbVNXg3Dko6g2GIjsPf4/FTvHR2wceDSsSfWKlWKc/ygAphbqZUoC7VlsWfPSlcKDcSBxNQ8QUELzs3m6gZukzH9x7iQz291YB3ABVwVuDivL68mhk/JM0NrXPVU/JD4njduM3P3vIV+HjzlcLZSyljg+TQnI5N5aDVTX/yxeQshMr3kj7H4ZVdGrNPpzOWFBoaWrfUNLZiYy/GPsW7iRwEteXh2wrpRd9ymEj3POTfry2s0YeBTojZtpfw0wBhXtTDINcM+kpH+dfeTfX/zm8bvWkbEtVLKxDuAIX11Dyfozvr2d+dUPPRpfze1xIxzKTjnHze36WJ9IfXzWT0glTL/++9/fffbj2CVwPcR5pVVd7adFBrAXaIWjgif+tiPISYOikvR7VhVEaQIZ7ArHFXO4AETGx+ApgIsZyATSSWNlEpHMqLdbpe/5CGO3w1KCVACbBlfAxb+eXwdJmkBa7jZbqlWu80JuH21zmyT7/G4LdJKkL1zAsgd1kieZIanU6cbdeXJxVmqtQRkpKXGolhuTI72ImvtcMakKAQMRvKR4c57dXvDbh/ukz9kaxZGA//lpz8nhhcujNAlEgQxwoZo/uVwnx6fn44suRBc1Sv1IbYDqqSKgLw6cj/2QauBsmkAVyzcsxhnslGpC9CFZAX5/FYX1gGcdnVQgkCY1I6hNN34vi8Xa41EB0ZkyLQ6xYJ/Bherw4RGdkiW0a5pdFjmuhb6efDsYYN0HVf5nieQtpBHQbBNs9Uc2bnhuW7iAI485AcVnFJaN1vNRPtILjIUoFEYI7fXNgxjLJ+FUoAx5iUC9qH9kyM6Cd7Al2NYW1ol9Wotr2HZdjPQALg0XccB7H4Grb3fBNyPX48P6N3DQ2592Ib76J4YOIGl1o13KzUAACAASURBVHog9cnGypqsBK/hvDBvn/Z3U++3O+ubZGttY6pTAgPHwemRODw9flcOyqip+CEtD7ThVNWZaeeNak06joMs1bGdt62cUS36DZwypighzBEidgZ7s+EkVXjnwUPMKGNnVxeAlrbZvxmsfgv/nIEShzQBWEs4fqXKLtv3ZZeYw0oYmtWFpXzuYpQYJRUdJysrfy3Pbw/YGvdPDlOfh6Cxn3c+lnYfxVkJVAhlm3l8yc6uLmPOb1vKowHPdfSfP/w09tmwPCOenqRaGxnJLvt8sMeubq9TC4KgyNAP2aAgQdh5EWBoHcCp1WsfKLkGsPY553R7bRMxSbm9A9YBnHKhAN7LEKKJSQ89lqQrxpherDcGboxP7SAtvBNFAhxORSg9HizKQi+gcIDZkl4DFvq5v856cGiUB15AARmbZ9EIrGi3R+4E2P2u44zsQB53bMhyeWg2AX88blOlfx4Z4nACI6qq9IOZ4ACwdr4eH0w8uwDZEgu1BllqLNr5muB8p+kK56DQD1ietA53zXv55fBg5D04zXhs3fc10ONgktgK4OT5bi6wt37Y3I7xY5+K0srsHnxN9O4i679WqaqPmzuiCGdGfC3/zy//SaIo6rskEJFrPyWTe2OQRNSo1jSjbCTI53ckjWlzpp01B3ocQgx3hJB+DCs+5aDBDKYUzo6//f5L7IyqhhVTDauJ9oEMup65Jiz8c35TiqzZVqdtmi04eQwAt3K7qwkhzM46YPxyfRW0AmeLkrmNI7/ZmO2WkTGCgLJRvjeVIJQ761ulPQMX4Uw3yurCgff44iwOZLKlHBpYrC+ordU1u/9NcLqUNvqhda93D/ZEWso8+DoWao2BDvt5o66b4NTZrnLWAGwESIBEsDhj/MWfe/8muNCCMc14/DMElfd+9ehz6NnlBalWKpoSo8HOY0j2Z1TrAB5lEVAqyTvGsFGaevsMML9Xl1YS3xQQyV4EJw9jPXL3ih8KaxwbfSVY6Of+uvM9X/uuN5EIP6mU6nQ7ox8mKZXY/J0pQSDhMDbKhXP0lVvsJ3ER3VxZt4b7lNO0e/CVTCOEgDGqfD80WyvrpTV+pFR16ao3quNBsQ4aMM40v335TOwFsBjLAkGGSql3hVlfXpW1SpWbR2ScSEX66+H+wO80B9yzEOzj5g5bqNWLMUhCyM3drfx194++ew6CU6phJfH5vDADK6kg4ICuhpVspadER5FkRQmcxeAYpVIbI1zh9Dim3R6PbpmK0VodnB3zi+urWGxKmWSM8lqllitSRJl0lFZWC/+cVmOD67c7HfLQbsmo2xWEUm2MyfUl69F5rZBJcNkjIQB8wJGU9syc7bIZqzVjjDq/uuDtbid1O5wzvbG8zjL/BqaWZIQHKFUO57ysaCkIZjo4PaYIFrGl2BoAZPrW6rpoWOSwqUxUnDV/ea6+HB3wpOdqypgMXF8MoIiMM4CnMiDb6dxrgFEaO257Dlz2yoEL2z4XXAsqNM7oz87bRwdufP2Js0U1guOBjmTwO6INe5GAcTJS37NnJKXZPz6M6XYqQUiRaCG4kIwz0EsCBSt+L5B0CaouXLbIALqufpNpHcAjLnOkaBvMaYYFEb/VsCKSHvaQLdpqt0Z3UmUg+1NWJmDxwAlny+gasNDP3+uOMioZpTTwgonx7mHf7nQjNq7zATzFHFLzCb6ilJhWuz1x2N7RV/3knvQ9n2yk4FafnGTF7AmH+t3DvakJRxkMCIJsrm7wnHi+pza2snfMOVfVIB/+X2OMPL08F4Bhs6U4GsB+IJVUxmhcOZ4/ang3f9jceRa0KyO1d7T/7kcvphAlhH7Y2CIbK2vFGRwhRGmlf//ymd3c3/WVC1Hr1bCSq9OgUEqZkjC4PCMzHDDzWUA+vx0GkuXGCvDLUS9PzmAhhPJdjwMmugxG9Fano37b/f279x7vjOu4ulapCs4meBbOcY4m0TTuIawMEz8JZYzRB7LRW+0WIF1hs8k12/elmDBwN6pVvlhrZGonGqSKnhOY0EhG9kUbY81k/Ki6vrvhdyPyyjpCmJ93fpzYGsps7JQqwRjnk7R/ZCZ8ryGcdw9Ojvk0gqAzHspMN4fz4l9++AkJFzM9zkIPzhAkBHOgxh2dnSQSFQG1jWq9Hzifst+xRGq0ld7RAAJo+zlv4wxcIbSgXDMO5y6nlNHnDFzYKHo+Vvhu4xyYp189zy4lcLjm8k1Gd799/oPAn4b8sa6MjMOd796Rl05p3KscwSVjnCLk6kl4ArTinuzvbozWAVywV2dteQWLcbhUlKoo6vJIThf+OfD8GApyuMC2xiANWOjn97UDp12ePJN95kR2ut3MoNWxkU/IjqM63S7vRha2qN+7FvoBWV9etZtRAg3AWrZ7uJfLISdB989VABO7sbxGAz9I85itm5cGKFW+4/C84N0iKfWvu3/YM0Ve8zdmu0orAl5w+iKDanV5VdUrVYoo1Ha3ow5ODr87xOI9XqjV1YeNbVHEYMGu7Or/84+/DVx3Qjgy9H1rZRpzDQ16HAEF9WrVPEI+J7gMpRcGl2xkAxa9PDuDOTiD3dgZXESDOiLdP+19If1gAJ8CP2phlYRBWHS1T18+ShWjhFs0rdGnAvCtyPbtdDpAJQOPwUT3bcdx1c7aei7710Ct0JiiDJnAlgJo9OWT6ZOtTjvOAh6lUWQ3LtUXxPLC0iiPT/UZzhiQXib63mU8YNXudszx+VmZx5CxSorXHGD2//Xjz1O3VRRPM5OXCPzAUkdsd3+PXdz00GD6FXyXfc9jgfe9DyFmNLCUBpOfwIL0+Oy8feHI/eb05HCOKs6YQQbuswOXcgr3Z+zA7RWYMZ+zb+Mf5OzAHUd9Wmt1eHbMTy/OyUKjYRqVmrq6vcH51Qgu4KBO3HwPfroHPQ0dIYMYvMIIKkUKcpyN/N+9/2mDmxKr9J2KvcN28lkZ0JfnunKpsZjsoEGJabc7FBfvSRds2lhDVT/k5T7bTVpz/fuz0M/fdANYA2x0oR/wRMEQ2U+janc6HIbuLMojPHreFLQy5rVqt5LtH1kMrKRtVIKQrC4uWzjoIfMHLs+vRweFuVStLa2SuoV4mvpbB8dfxfcR2p+5LNpos3d8REfNlshcINvguxqISYG1klprjvsVzoEfNz/EdVvtljw8O37+DnHOlOt45OPmNi/q+2uMlnvHh+L4/GzgjHuuq70J0VDM49JDkE91Mg5C3el22TTuTyPPK87FQItm1Piuz+IIcV6I4566uLkm+8cHQz8IQPUAIk69UreoHgMWAgw+DBh0tqTSACCQ42zfVkvj3dY6X4jnQcJtra6TvILkEirFRFICqi5hdVstLw0AXeTw9HgsO+FP2x/jrKAyFXyrXOGUeh8DItF9q0Uvri+Hft/KNDezJGu9UpUfNsrLlT1Lc/E0FqW1brWb5vPBHr9vPgwcYqNW/y7xDRR2WdlgZ1G/RR/Tu9m39BukMhy4gjHzxIGLDFxO40zcOP328dzyCj4ZY4YhHejMT5RTRddDCvn0/cO9/u3Lp/hS16jV9eriMju/vnymc0RwdBoncL++4xRmzoh1AKeYnXerUqIIsL3HjC4F52Gj2uAD8PDfdm+a7dZUDlbIopsEp824U1OW5y308+uZCrxg2hdn3eq0WZYcugxGcOHkdoFAtNxD8yG39svyLiWVE5koy4uLiAybyh6aVM5p1ouUVPvH32fyTUsmwAUt1Btkqb5o52xak9A7gJN6JWNezsfx3DUf5JfD/UJ4Naao4tJ03bukI7mKqJXFFVqvVPlD80EeX5wKOHsooRxwz0VHXcAA/vc//l9fnuPHi2ePn7VkRtgyLCbsKY1qTQoByOdv8OJ5yQ6o1K6MRFn5/RAkCSMILvKe5xlXuGxa8IeIsP/b779QQO2mKdWwoqthdSynSJr+ylTXwj+nm61uFMXZvu12G98dafRks31fSgtbzkKtwYvCR4k9Lsu7bLqZsbWfNLB3fDCWMsIglB/Wy+fkmnIQxFg6f3oYPM7Xd7d8ED1IJh3ZRlJrAFD7m8urYrHeSP2sfSB/DeDbc3l7JXcP9kU/Wj3HcWQtrD7f+3E+l1oJ+93Kf3769fCa97aXSfrk1AW8cs+By00PQhn4yT0HLgxEiF0c7MClQCexdrwXykfCzd/++csz53yjVleri8vmvvkgmu3Wc00E/WaVfGEdwFm8X3ACv+BEG6VJGLfXl1cTvxBSKdWNuhNz+FDGkG6P6PxpZWWOotbCP2Ohn3tTRBnVnHEdeoHIIsJl3InHhptp5DSlUnAOMvc83lnz0GpSe1hKN+vIRltqLFgncB+1daOuPDj9lsmXTrv51GaMqcAPzObKunUS5qPioa0CSqYS5AOD+9uXTwTGXFvKpQFcXsCJ83HrA7lvPpizq3O63FiQHza3RUGyFAcq9PLmSv7+dXfgnkIpk4HnlRzRsHjrCg71erVmYpjgjNCUkoxSay07Ubf03xHoDfYWhOa4rqcBz49I8UkUo7U6ODvmF9eDof7ek+URSYrXwioF1Ystjxqw8M+JlgLuZ612mzy0mwDQwv0nsf0kUQcjVvJcT26trhVqX7FO4BEnM6PHwD19ennGxjnbcs70+vIaQ/ByWQoCWYRwZgLMAIkaF1dX9L7VLIv650JOzpn5cesDnQJV3FzoN4tBGnCRGsMQBHNwevxdk0BJrARV+i2IkSqpIqBLZdH9XLbxzWHby7p96cDtwQILBXM0snBfcuDGHtwhDlwygSDdeZo0BNF+2tulLwOMGtW6Wl1aBhKpvri+eg6UBQIfY5wBSWncYh3A42rw+c6GjPXRIhpiSMUgJLVK0mhoqjrdNk8bcT3KUJ+4m5D1az+wo2hw8DPzDv2MtY+vje961HXc7BU8Yov9uMxGbC5+DGMVCJ/IYON+KQcgz8qayTKOPrN4dqFWJwu1BtagzUR5o9B2py2Pzk8LZciK3yPGpCM43VzZ5NPKespi7ZWxjZizx3Uzz4IEzNrp5YU4u7ooo1qszD2yHbK2tEJwZ69Xq6SWU5Z41soG7Pgvn36nw2DKEKRW8UNQ6GQtwty2h3tFGASA/JqGDkyr055Kx3kOFusURhxXOOANFnmeq1udjvpt9/exLBGMMe04jq5XamJKlC95Tkfqti3882CVRVKSZrulWu02J+D21bowZ1QYTrfXNkjhzqWUGCVV6iz91IvXPtBPA/Ly5kqMa1cA1+mfdn4szTeLUiI5FwIOh1kpxxdnpN3pzMpwSj8Ozrj5t5/+VJp3ovQKH2MA4AdWWvLdwz16fnX5qiUhuAI1yKOt1EQymmv6ApyF34VRfszETeTAjRNx3+HAtQ7cMVZxto9qo+XZ5Tk/ODl+tYfVqzW5trSCs625ur2mOPc+lUeaTPACj3X2tQ7gbOdypNaQ/bvcWIx51BKWicA/MwaHlYBzWiDl35ZsNTDv0M9YXzi8hX7IcXEuUIkzavOSBxkvGRmRdafbGSuqOK8xlqldZAHXKjUNBJMyyZ23rA+tpjy9PE/8Ucpbnrftc87NxvIaBW+kLZPRAIzTlSCgWRt0pJT6l90/7CFjMtOYbS8U0d2EaWOkUjKG7fof//pfp03jkHiMnU5H/d/f/p5o769VqpY7PrFm+1fEfaJerU4M8rmfJO1uJ1uklwx0k2UTQG4ixnBXOD34ctfNzNUOjtVPe1/IuE6NF0YNUg2rBMHQ81ws/PP7s9/L9m0ppRToeXK7n4269oBOs1RvcHwjClqU1oZIJRN96wo6htKKhbV7OSaPLGNMLtUXxPLCUmn0wDmT4xqqizRY2O0OT09eGeSLJN+8yVIJAvnj1ofC2inmbT6SjFdrrdqdNvl08JXfPdzHj4A6Abbgp4DFfnDRSdqfdp2YpJb2IJNfQSc//h22K8a4duLfGYWzF7jJjHFYwr9l4FoH7rSnMvf+W52W+scf//zuTFar1uR6zwFM2t2Our2/e12HUskYJcB7GlVI6wAeVXP9nns0hqVp1nGEWllYTnwoV1qrTreTuH4aWVAXWT6UUl7xg0JlZaYdR5HrzzP0M6VE4VMXeD6dFFRdmrWAuWm2mrm9X4A7cRx3XJe3jKSk7U47NznT6KzsdVcWl1U1CAFDOfLHtOw6eCv/7cO9vri+LLxTbm15ldQrtVlTfyHHg2C1WhhmanzVRuu94yP2dBEs5MCtUN9rgBKEpHKlFLhzn6O1ESSw3FhUP3/4WPi9FDDAX472xdnl8MxzrP1qWMl07c/jsoKBp16tGhhIRkVNykhvshtFQmmVUXPFboZSpozR3HV6zmDPcccJZlAXN9dk//gg0/Mn0D0EY7RWqUPOYis0D+ks/PMrrQLZqNVp6WarTXEvK1K270tB8c3zfV9tPBrs8lgaWbQJbkVtDImkLPy3OYvxFqmNSEl1fHaSyX750/YPJE9khyz1BkQKVziFv0emGbPUSh+eHCPoMc1jtm7GGsCZZm1xia8slicgImMVlLo5ZKde3V6r3cM90el24TA1C7UG7lhxBvC0Bhc7cJ8ybfH7K2cuJ4AdFzGEcuzkfXLgMt7LIekLoRwPiBIGHLtpjc32WxwNADXt73/8Rjrd7xElapWqXF9efTqnmdPL8+/fh/i+QIngYqQkOusAznotgA+YgMvKJDpg48Jbr1QFoNCSFBzg21FXwOiWR8FFxnM9Hfo+2Lzz6MK2SQiZV+hnrC/XcZXveaKo60tpLduddqL3d5TF/AjxphwxeuSOMlo2m83cZBxlXGV/Zm1pRWIftk7g+JBqrm6u6fXdbeGn9enSsNRYLLysZRfQEUKGfrb8v/fNB7l7uG/3srIsjl6Qo5FSgp/mXalxgf5vf/43EvjF5vZEtvJ//P2vibJAAVVbDSv24j7GOkV2Z+D54zgex+j9+0elUiqSUSZG+UwFy7kxRikcQUIIRwWuG2ddpEGlgeHub7//khukLKIjg6CiamFlru6hFv65t/ABsYqMySjqckKoNsYUet/ljJnt9c3MkVHy2AZ6TmBCpYy4dV/loeH324Sxd//kMJMOwyCQH9a3S3Nm9tzi0HtlMgGE6E7U1UdnxaNIymh8pWiGc64+rG/xSpDMfl6KQc2bkMhy1YbunxyBH1gGnid8zx/rXP7kwH3Ne8u/OXJfOHAfoZaRk8R4zy9rHbjztganMF4kPnw9PGCXN1fv9l6tVOXGowMYwY9393cciFXvFYqkMu7E6zZNsQ7gNNpKWBcZjsaQREYFTNj68moqg0iz3UooSfJqyPpljDJwnBUxKzP5SIpfcx6hn5+yygMvoIXjR3qzZGAUzDPD/vGEITnnXHCebsfuyWrumw9zzY+R11u+ubImfc/DGbA0l+s8dIEDx+X1Fb99uMuj+czbBPweoKA3V9YTfXczF2AOGsyL//e3L59IN4rmQIMlHiKlMZTsS5jnYaNZbCyov/zwU3HfR0rM6cWF3j34mkhGEQc/BHP9XRg25/1+DudivVpTgDwr0rfVEKPbnU6hnUuj6jzpc9+cwUL5rhc7gwdB/But1cHZMb+4ft9wkbTfYfXiOymlvFapUd8rdiDJsLEk/fk8wz8jmAgwz812C/EFiJFOtC8n1W1e9RCAuLKwSEsIXW6AIgXHpC35awB2n+OzUyrVNy6/UXvlnOn1pTVWYLjx56FRSrUjBEtrnB5VN5N6zhgjW+0WOb26tGfCSSn9nX7+/ee/pLKfT1FU2/UADeBuqbXmXw73aFdGihIcQ5Fh2+PCfenMFYxrzuNfj//OKfwXj1SVsSMM2fmUEIN9lyIpjxDTy8CNvbxzfea3C3G6GsC34+rmmiDzvZ8klbCiNlfWns/AkZTq6va675kYwaOCC8QxJB6cdQAnVlW6ipiMJPBmge/LhVoj8QEiPnTkkJ2IqPykWcjpNGFrv9TAvEI/+56vfddLvjNNa9lQorvdiE2Cf6K3YXOKQ0yaggCQvBAA0sgxq3W31tal63iIpUo3MbOkEGPk2fWluG8+lGZUQNNwBKdbK5tciMSf1NKMb9qCYr+qBkGqA+YgmXGWOb28EGdXw+F3pz32ue0fiDaGMEA8w0CfxliMi8h/+fkvheX07GUx/kqTBlR6rqc8153fb8KILwGghuvVGgwwowS7jdhr8sdanXbyyjNe88kZzDmcwS7H3L09n7Y6HfXb7u8Tew+Qee8IR9crNZH2rFyq6ZpT+GdAPz60mrLT7Yo0wfNFmFtKqaqEoVldWCrngZMSIyOJFOsiqHO2ZTBGnt9cCTgNsyhCCPOnnR8L+U19OT5KieRciEFBRVnoYxptGGPUzf0dLwNS1jT0k3efvuupP334OLGzSN7jse33NHBycUbqtRqB4/aVA7fnwbUOXLtQSq0BoEf87Z+/DPSHVMKK3FxZe3WuvLi+JErrgWNHAmdSJ7B1AE9xGeFiu1hvsKRcHoDu6USRyCKCMN5GKVM4lFWCEJmIU9TE/HQ9T9DPlMUR/DTwAi54ae7HsSEiq3csycp2XZcAxz9BMe1Oh07COZ1Alpmusr2+qVzHoXB+zPRA+wyu55w7F0mdI0XSEefcbKysUwQ12ZKdBrLm/5VKml8+/5Fo48tuFLalRBrAzmeIHgTznKSdeq0u/+3HPxXy499sN9V//vPXRAdfOCa8x+zIJOO2dXoaqIYV87gPF/U9V52oywEFbstrDcC5BSq0mBbI8RhgPGFY+LT3BQ67qairVqkVNqBkXIXE8M9IXSnqmzLuAF88j/ftKdtXG4DhFRviud/Q4YTbWd8o/aSBa9nugRku8Heawvt9c3dLb+6zodVhjMnFekOsLCznK3gGrQvOFRDPMmiqcE3AQXV5fU3vShQsXTgljijQ8sKi3lhenUsbzYgqK+xj2B+11hQBmZc31+b2/lb96YefCnl3LKwSrWCl0MCvn38feocKg1Bura4/r38kDzZbTZ7k7gV/S5LPrXUA571cenxp736gBOd6dWkl1ccLm2OaLIx+w8MdMwxC4ruAO7VlEhqYN+hnwLaVcH2pdqfTl9swj3XCGNWu4w7bByS46uAAzkMG2+ZrDQBKZmt9QzlczOSlddh8a2PUycUp1tuwqoX9OagVYDC2JRsNuI4T8/Nk0RpMvvvHR+z24T6L5mwbWWiAUkmMEdpoqaTC72O3imCMf/n4My0aVKHWWn0++JoYxhZwtIHnC4sskGxJgFcLkM+Cs0JBPn8nPSU6iiSbZMBfMg0Wq9YTohUChveOs+GxHGWEQPkQjNFapRZDVc9SmQf4Z1A9PLSbst3uCOypxphMzhPTWAc9+q6VmNN8FgpQpYZll8zCOKc5hm7UlScXZ5mu+R+3fyBAaihyAUWPI2b3Lo1oydPLizioxZbJaABramdtgxftbjGZ0c9WL4Yg2DjSzXZbIBApkpH+fPBVV8MK+bN1As/WZM/xaGB3ODw95qeX50O1EASh3H7hAMYDCJY8v7oc6gMA7QJjnA1L7LQO4KHTMGYFGNWIwf9fHfpw+amGFYENLmkBX1Wr3R7mKBrYHJxNggldCUKRNE08qXy2Xn8NzAv0M7IGsK5CP+AwApawmFa7TbMwficdO7KLGOPG6WddplQppUyz1cz04phUvnmthwiq7bUNzRkfa88to/7AwXZ4dsK6UbeM4scyI2N1odagS43F0o6hKIL3HGCeyIq//aH5ID8f7tv9rAgT3OP3hROM4vKdRYDhy2FVK1X17z//pVCHAaWV+Y+//XXoReppHJRRHfohm0UYw6yXoOd6pBZWSsPLhmCnTrdTqPWZ9ZyM0x5gLrXR9Pb+jnW6XQOIsR4KzfR4WuF8C7xA1SpVPhPckjMM/4zvCRwjD+0mALCQaVr68zQCERrVKl+sNRJ/Q8Z5Byf0rMZ7LiXoF23JQwOgndg/OcxUv6EfyA8b24U/SwNBYpYL9rmj81OCIBdb8tcAvvv/8vFnMszJkb8ktofRNUClIZo3Wy368r3Bu/Tr7u+w4chKWCF/sU7g0VVsnyyIBoy+u3/Q//z6KdG3OvADub228aoufIA3d7csyTfm0RcDXuC+/VkH8CSWRo9H7TsDw9ryakxgnqjEkergJpWJqr+t1IPzoiz0A1r0aMGRBljwh+YF+jnwAlL2gz5gb7M2gg9bnnACcwBlv4OShE3//uEh4UYxrCf78zQagMNra3XDMMYyvbSnkWEadYFWsH98RMueGYUo4cAPzVsujWnotOx91ivZOXV++/KZlDm4oOxzCfkphQeHaKmiXCFwOef6zx9+ZI1avShqU0dnJ2zvOJ0hFpkGM+FsynEWamFV+Z6Hs0qZvpem1WmXSd4cZ/Bl00ZqY/jt3d0rnmzOmVlZWKbYv1udtux0uoIwKo3WiQwbWQmPoCRKKa9VaqWne0CGNY1LVtqZfjuwVTy0WrLdaQuCbN8Jr488NeA4rtpZW5/FoBEEexgp1UTf5TznqkhtI1P08PQ4U7htUMltLK+xImdCYn9zBJL+Z2iDe2dhwc53cHpMbSZ9/m+dI0SMLpR/T7aHPDSAvbDbjVSz3fruO4oEHFCNwP5kncB5aN+2OWkNIOj8P//5C7K5EnUd+L7cXtv87hzWibry5u422fmMUgnTtcOdd+tbB3Ciqci+EpxkKTOTdLvbYaPwtDCGw5ejKn6IE1j2g7EtDtTArEM/IzuGM65DLyh9VjkOJc1WayorGpckIQR9GRQCRzQc0qO891MZxAx2CqjBrbV1Q+EymZOCdff1+GAm1h2yNVzh0M3V9TJxkRdqpcHIVAvDsYNQwC19dnUhAJdmyxQ08AjzrGKYZykmFegUBqH6b3/+10IYzDHmv/72D9LpJoe3B5pANazMzf6fdmUicK1erSvOAPn8Gu0obVtTqG863Q7VBqLbQoiRhpDY8fse3xSCFX3PN41qPTYq4H1qdzvI8pTdqDtxaF98mxzh6FqlJsqaDTRL8M+9bN8WUItgr5jJPXNrdb30gc79h7+xfAAAIABJREFUdjpKiMRW2JVRMiOj3TITawBoCudXFxz7ZZYFXNR/2vmxsO8apUQiE2keUAcjGamD05NCnHWzXGNFa6tRq8udNxlyRZPRyvOuBiTOBQ+tFu+XYABUnv3jAw7bJwqcwKCs/JePP9tvkl1UpdMA7Pef9r+Q2/u7xLL7ni931r93AOO+dX59mTxJLUYXogTpZW/9f/R/+P9LxxDFuMg9/eHb7wjkfvznp7OFob1/Q4g3/hz/iRpjxjYOJtZMSSs+8SgxRlWj2uC+l4p/1zTbrVQHvKcI6UoQUlc4JdVaucWeZehn4MwjpNN3PTpDfFzmodVM9Z5lvUIRHIKNGs5ocLDKEbP+s5ZrntsDl/XGytpcZYB9Pvg6U1MOPtKNlfXSZwtNY1I811W+645t1JBKml8+/zHV/XUa+pt+n1QR0oN5ThqBmqXMyAL+eecHtlhfyLLZkdq6a97Lf/zxz1SGBDiZqmHF3nHe0Ti+jaCyKWtwKRwecHbIhJHZIy26cjwEeCl+e39H75sPAyVGQES9WsPZ/1U9ZD61O23S6rSQDAW7AMrE3htkwVWC5LRKhZiWGYB/hiG31W6Dww/GITVL2b4v1whsNwu1Bm9Ua4VYOrkJ0aOFIJGUfFJBYrmNpVgNq+u7G373cJ+pVAhyXaov8JWFpcKerXEGFHwu6JQkgmBOLs9TnTEzXRAz3hgcgkD1WigOqtCMazy74eHdGBYAg0Dxk4tTcX13+9yxdQJnNwe2pclpQGstTy7OxNHZSapO+zmACSHy7uFetDrp+OYpEkG58wqFI9MMYDg4EQ+MUfa8xj1H8ffFxKlUTz+ER7lXJ/7t+QBjzJOD+f1Wev09lUFO7EeJYnmeHdlxVy+d2LG3e0ifqWbwncqI9KWEsvWVtVRNSaVUN+qmMsAGvo+szIldvlMNaE4qzyr0M7ikOeMm9MPZ4OB6XI+GGNVsfQ9JMsnlCtha13FIp9vlFiZ1kpof3Ffg+bETeB4KjD67h3szOdT15TVSZLi0oikd9BGB9/+z9x7ccePYtjACWWRl5ezcYWbu3Pfu/f8/4Vsv3Tsz7W7nIFlZlVkB4VubJbllW1IxpyJmefXYRQAHByAInLC3xcPy/yqt1OeTY+YnCjJrusiTPDcBh1oTGTfMsxe9VC1b/vsvf/V1hvXSrp9nlFLy9af3vNPr+qlGODdEvVotDXrfaa1Vb4pKxWS40/hSaMYexiV9Mpsu6/xKrTWH0xd/vDp8kO29sbp+L6wnAhfHs4l2XEoVlzA49jUCRwhnjLXqTZaXoNQ8wz8jQHU4dsTMfXeQRJ+csz+NLcSqWGJvc2uZ9gk9EwJ2sTTUXcg+ncnYzQKOY3BP9x5nNjMdwROmYcYy7jh0GaZNOLAGoyG76HZi/+aFkTOvdRGA9vzgcUlnmJMJ1IQoKaUaOiPDK5rhVb+jTs7Pvnl/4ASuVmvk1zITOCczX4oJNJzf377y/d2zLUsebO/dWQ/+wMvule82XZRRbtAbJI5IHcBFmeobR/afGdGLHdl/OrGhhT+hQu9zKO9ubvtRl4QzSKrF2OHI+gVfZaNaK+Eu/Wg4hmeLCP0M+DdKGataNjULmFUulZpzVqVcOOekZtukPxySmZilLE3Z/Y0GatUq2V7bLLxCkLbz/uhTZqPJw0wALo8rzTb1ScEQpsvc142C/3foDMW7w8+p7625n4xFA6BEEE0MpaQUUmYmg4dzLp/uPeLrK6uLRhDb70II/b9/+2/f+1qlYkWSAR/bwBJu2OAGaTUaLvVHDiGf79LW8vEAU6KIJmzkjFRvOPBNL4S7gGXZeuUaCvqhJfiVL3g65fAFa6V9Gy/8LHF8462KpVr1ZuYDVPMG/wwEidF4TJyxc+3Xj3cu/cx7nM8C4WB/a4eEDYSLU8a42kYwRwmRH412pZLq6PQ4Fsdg1a6Kxzv7mTxjw65aMU3fZ69otJ58K1prddXrsl7E2d7JjyR7PQLN6y9PXyzNWsreDHiTiAINhBAGVMXpzJ8d0xk74sOXH+0Fcydwlf765EWsZ0hvIyyfKjVwvwYQ7PCvN3+QIIlcVsWSj3budgAjIO+q1yFBUavgu4ETuHQAJ7R6b7IxrrOWtWFwvdZe5cxD4DygYAGb4KXU7CpBplpZ0tVAEaGf5wf4irQty0DufBELImsm00l6BwtKkI3BVptt2mq2AMPFp2Ime/0e74+GheBkzfu6AdzlxspabiEvvehfKqk/fjks5ks+55SRtWpN76wvVTaHl6n/4RnGuGzWqqH3xFcf3pHJbBpIhrKSBw3MHTpESMHSgHn2ICGyU9T//PXfYjF+LupfayI+nxz5hmJyHV0Vi+clo3CRHsL+bls2adZyBrPrYdCApVumTLfRZCz6g74RZq9woaDrTeqHzmjOF+yIyXSKUHQRF1zwTbBqs97MLu1DjuCfJ9MpGTqj+by59xQS+kzg4bXMxCM4L6612nyZkWNgbPSavZWJScuwEJ+OD2ORjnOmttY2gYAQS/thGoX9yDRAEV/Ya+UP6rnhaxw6cy7TskSjgUa1Jp7sHWQy0CGaERaiFQ0+7KHjGEHO1aCLev3x3Z2bhesEtqvk16cvyjVQiKVSvEEgyvXD0Wd61e0EGtxDDmBCiAIl7GA0DPwxRRB36QAONDX+KrnOX0LgzPm6WeHfOGd6tbXKDP7wPUorJZzp5N6NjjImDcZ0vVozOFuaO5m/SUj46SJBP99wSVetKi109DOlcjqd8rQybkH7qzSQ8pTeWtsw4Gi8KYAUopQazsQR3X7fWMTRlvByX7ruYAhaX1nV9BbaQ5GUMBNCfj45KvTHBMbnimHS3c3tEi3jnsWLc4plmnDcBT5oYu86u7owTi8vivSKZGIsyB7TmjDoWEjhGV4rLeE5Z/LxzgHfXFtPRYT/89t/g9fQV984/1Qt2zCM0tbQbjSFaeYf8vmOBSCms5nhBWXJ1+LJ2MMwxI1nE9EfDAxk9UVR4ATefAAK+r4+IAt4rJyJI8VMcEKp0LfuyFHIhjbA320YBrKBDRg9slSyDv8Mhx+yfUfI9kXitio2xPNdawNzZNu23FnbyNbiSXgh434qhKTg+S5LcA3gRTq9PGN+M+K89mgYhn6+/yRzjlacowzOjRv4Sa/jyftzAE8/Pj8FpVfeh5IJ+SllcnttPVUkoUwoIrtCCKU1kGWY37vW7SHhfPj7+9f3jpIyKmt2Tf/y9IUR2DiRXR2WkuVYA7DHXHav6Iejz4FtqJWK6dpK7r0/Ea3PLi8CL31KqSodwHEuMkoFIZoTfZ0uib9/d8HF5XmttUJN07xTEkqIy011V6r3dTYxRdavXbHiHEnZtg8NFA362bZsZVesVLJ2fKg9ikfd6HYhozGMBRBIzcSMIdp8Z2OL472+qyitJaWE9YdD1Rv0+dgnGXwAucoqd2ig3WiS1daKotQDjEPONDieTeWX0+PAh5c8Ddfght7Z2KLIbCvLtxoA/2/NtvmiILWH9IZI3pfv3gQ+qJZzcqcGhCYaDl9wK8EBnBs1VUxT/8df/p74euj2e+L39298G/Epo6pm1xhny3AEunsZIfCv1WgqSpmmpJiZf0IKNROiqJOsp7OpRPBg1AGO8wx5W680W77frZvVhizk68xgpbR2OUfvo08Ks9E1aw1Sz1D2elbhnwFZN3QcOZ5MAKEdi2M+zDwmWRdc1/vbu3SZ9/9b+lZwAOPMkeQcFKwvGIeNoTOKZVgIbF1ttdjmykam5gj2SsYozVoQTiyT8F2joFQ6PD2mQSE7k5AxL30gy/3JzgGr2uV9PYtzhqC+8WQSWjS8M28/f6APnVfhBK7aLidw5qk+QiukbCA3GpjMJuqfr34P9f2tmKZ8vPuQA5jIbr/Hg8BL3yiydADHuKRuYJ8XdQFIlNVWm1j3OHGxoX5v4GOMKhiu69WaJxjpRTKUv0ejgaJAP1NGBaOUVq3qMmXHuQaPlLJAtBCCAu4dB9y9zV1mVSoLFyWiiZVWtNvvUUBEz3zybCzsoHzgQQ2sNNuk3WxJRmmhnKXjyVh8OT8NbNDN47LZXt8iywzxd9+ctRuNwNOJnKHPJ8esN+gHbqOseEsDNzDPQrCUvlOhp4NzLg62d43t9eS41OEo/+PD28DrEPvCMkEX3p5kUMrcRiMJvQAy2gDO7uPJuFDfcfDtzmZCI1AwjKFg0ZQhy7ZVbzI/UND3tYmskcl0rJzxGOfhSLNO4RzBhblVb7HUId0zBv/sZmSPx2Q4HgGECHC/oQxYi9ZMHn5HgP7GyiqtV2t5EDcRGZGUILWmQohC7ZWJKO+6k+HYkZedy9j0B4quJ3sH99oUkxzr7b4A3WouKZSKkEIenp7wPAVrprVOHuoX5/C/Pf85i6Its0xSSqWH41EoSpHbCkSiy+HJEV8UKOM6gS0XDrp0Ai/zCszQ2F++fQXUnFASVUxTPd49ePAMPp1NRaffC2ynLR3Aoabox8ouNw7++S5+nDsygG+3AGfC91FN2ARvGyVu4HjrdpWmfoGNWHdFaK4o0M/Ihlu6rHJKtOOMqdIJQ1y50FrCzXpAgdHh8e6+r0hZGC+11lwI4UYF9UeDkq8poQ1lvb2qGvWGLpITeOgMxenlReCDRUKqj7QbvHcrzTZda69G2m6eG+Ocy0Y1OP/vyBmJt4eflmodRT7flLpc8EprIXMA8+xl/KZh6P/8678nlgWMiNz/9/JfgRwaMDgtY2AIxt2qN4RpVsDaF5ux2st6SeoZBNsWocDxK4XS3UGPT6bhszG86MR1lq2uUxYhxyNgM53JWExAgYRMVKUi+ZZAVnBsARY6rcCOrMA/I8Nm6DhiPIlWx17WTJafAfpJvVbTmytrkay5LI/Vr2xwAuO6OhWzUjd+lUcImUkhj89OYv2mVm37QQjJAGKHroI9r2KaiZ37QgscbQNyPJ3o4/Oz8p0JodeqZcvnB49jfXdCiLdcVSnMpYrh3Bw9xLkWJxdnxlWvu1CnN07gX56+4FGePxd2XD5QauCWBqSS6uj0mJ1FQHdmmqZ6ssABjK7Pry5cHrAgpXQAB9HaHXVuuNjubY6CA/hhIwoupY1a/Zto06mYkRuuJpePr2Kpuh3cIBvRcMtm7tBA3qGfceEFP0vNrvJl5ZIeOQ5BFm6SBZDT30eFvnj0NHDGUckXnOTszfvaWFuXDbumwdOcfO/R99gd9NRltxPIYRK9NMm1CPj1WrWmd9a3CjGPoTRHibLNiickgvv6efXxXQwXw1Cjyk9lSgTOjEpJIqT8GiCUnwHcLynjXOxvbhu7m9uxD0cpJT4dHxknF2eB+kJ2Y6NWX6q90DRM0mogqIkhGm5ZjG1qMpsy8J7mtWitpVKKdgd9ljQ1CDilrEpFrTTbsXw7MZ7RZCym06kBhCKtdKh+EKxNKWPNWoNW76FbiXMdpA3/PM/2dSTgfLFm4hxrHtsGl+rB1k7muFQzo8trNBLA5pdZjf5mBfr6fHLkr5LPp4EktrW6yVqNps+a8T5eMc3Ato14JYu/ddhmBo5DL2LM/o5/FOn1ABv4xuoa2VpdL79X6U3DTc96JmZy5DhGUAfUoiF0Bj3PgTKwX9t21YWDXjae8UV6LH9PRAOyN+jp1x/fh7qX3EhqGoZ6svdokd1B9EdDwwmYbVw6gCNYFy7UM4GD9/4LqVc4aBib6tUahSOYUqJH4zE+dIIxyup2nYGLqyzZ00ARoJ8Bo+EFdjh72o9GIlzKwsI2+JXkLucvXnw4gKMoN3zBg+FQ9gZ9oygZLlHoJuo2dtY3hW3bhJKcO4EpUVfdDuv0e1GrKBftASayYph0d3MnFPdtLgb7gJAw6NdsmwXh/4Wh4+zq0ji9PM+7GpKXf25YBSpEWnQEiYyZc67/8y9/p3Ff1vFd/1//+q/AiBicG6JerS7NwbtmV8lSQp5SKmezGceZLG8Fjl9w5sLxG9QYEMWY51DQDQYEobgKHPTXfMFSSMkJwdiDBykwRqXBTd1qNI3E+CkpUZRg60vWjo1g8tHkBl6byKgyquOa67TaxR1se32DAP6+LAs1oGe3EKwWPl0+gOOdPj47pXF/a3DGenHwNDtBDJRKk/OldtCA1KDT77NuSYvjeydgjMtH2zt8GShJfCsnsQpUaK340HEe5OeNQpzxZCLfH330HIAKm4VtV3XpBI5C+2UbfjQgpND/ePWSRhVA7NEBTKRSMmhAUekA9jPD3z8LSGeiOdHkwVscnL8EOX6aLPLmuz3gQmpVbLrSbNHR2KEwyJQXkTATFX/dvEI/U0YVZ1zVrKoRtyE2/lkI3YMeOqPELDJSSnIX3DQubc/2H0cuBy4eCkbCfo8ORkMyLfmCQy+Y7xvY3dwSdsU1GuXZYSAuOpdGbziIXD95ahAZIDvrWzROY3aW9QEkz1Y9GP8vDsMv372JfA/Lsr5CyXYb5lkII3EaglDCB6sMPrjdjS1jf3s3WAMea110r8SbEFG5lYop7Yrt2QjhUazMPQanR7vRFIZhLg3k8/eTgMCVMeCGc1O0UFrz3mBAR84oE1LPoaDXKKOerruhZBZSEmQGO5MxLtg44YbqtFFrJMJ3nTT883gycWGeZ3PIXqW1DqWnUJOW8coIAGw3Gny12S7PLz7mCu9iVMZPH93m81GtxXn3KnDmjtdBYy2vNFpsa20jG+87JcpgnHFe+OPUg1OEAICLqys6yMg32+t6ysJzf3n2E+EsG8s5C/pIWobJdKJG43EiEyCV1K8+vPX1HXadwJatAQddrpOkV8dy9gd7zZuP70k/Qpsp7I9P9x55Wfv6stehN0jBfmagdAD70VbAZ5HJqxc4ie9q2jAMsrO+RQCZUpbsaiCP0M/4SCIs1K5YJZf09dJCtqwzdmK/mcD4I6S4N1LINA31ZHch9EOYF0IqrbgQ0uULHowGiCIK015Z95YG9rd2RMWs4MMd+1qKR/Hz7E0ECZSFkO31raXkADXczEfbtzMEpECHJ8dlhLuXl2dODcJuvgfLBqUIp+N//vXvJK7MO6WVfvn2FR2MgjnHABNrVSxeMSteZjO3z+CO0Wo0QWEABoxEjDsZVZZ2Ji7qUtaL0GTu+B1m7Dt9DQWtV5rtRM8/s9kMjmDwLDJC3GhH3/3DYcIpZc16KxT1waLFkwT8MwJMR+MxccaOBid0EH0sGkcRfzfNijzY2va9doqoC79jKp3A3jSG7ywCsbuD+FGWcMZ6vHNAbMvyJlzMT3HGhAHjZlnI8cUZQXBOWbxpoGKa6ufHz5b5fOpNUVE/BWoRrcnQGXHs8UmWl+9e+e7uTyfw86WlM/SttLJCIA2AYur4/NQ4Pj8NVP++Sl4dwDhLjMZj1R/2fZ9ZSwew3ymDwY7ASOKDf2gO6ef7o1Wr1giyMpGFY1eycXjzq66iP59H6Gc2z/rVNbvGcTkoy1wDUikxnozjvZhQoq45t+5Vu21Z8mB7z/dmHmQe/+QLHotuv1c6/YIo8bs6eKf2tnakZZosSOBPBCKEagJr4vTy3EgaDj2U0DFW5ozpldYKXW2txNhLxpoGn06lwq0AwWcjxxFvDz/Gu49mTF2+xUFQoMK3oNgwz4v0QhmV22ub9PHuvu/z8aK28ft4Mpb/9cdvgb+llFJhW7ZRZOoVIAzVqlVQF3hRabGfoUSPJ5Ms820LrbXRHw3IYJjdAC1AQTfrDZYWctVkOoEzWEwmU4O4fMHK1/cIWcyViiVb9YYReSZzzPDPGDuyfSfgSqYkFDx2sV/2u0e3t7m91FRIoeacEi2FpGVA8WItTmdTcXJx5mtfWtzq3U9ULVs+3j0IfA4K2u9d9SijGhQ7UbaZ17ZgSD46PaEzkT/aiTR0vtZqi93N7UTemTTGl9U+EUiGc0XSBagu7w4/0uls6rtrNxDRsl046GVHHPCtvLKCZw0MnJH8493ryL+tXh3A14Lq08tz39/U0gHscZoRsUsIyH61PyXPMzx8Lw7TNJFF5n7oGKPaMi1wK/lux+PwyscCaiBP0M8wBlDKYJShplFmlX8/5TM5U9PpLBZDtNuXB+cvHqvV6mJvYyvxQ+6cL5iywWgge/2SLzjgluBWQ+DO/taOMrgR33oKI+ADdbEOTs5POXj2yjLXAONM1u2a3l5P/r1MYw4QVVivVmkQCKVXH9+ncllMQ0+++gRliNaAdxZSyKWAefaqn//4y7+RqLNsEZn74eizcXZ14VWMH54DRUbNrgK0MHAbWa2Ib1S73hTcgJ/I/x0lq+MKKZeYipmB7MlsFSqR8TscDXV/OMiyg/qr2lwo6JW12Dm+H5onICrM+YLHYjqDQxT8dd6Ct29Qkpq1Bq3a1ciWQxzwz4DehZF2NB5dQ2GXEM9+JwzUW8habzeafquWz3+jAfh/FRFSFO+jGeFM40X9fHLkz54YsH/Omdxc3eDtRitgC9FWsyrFRlTxoy2hpDo6OWHLQPviRy/fPwvKmL3NbaPcn8No0XtdTdxkFTV0RkZa0P5IRjg8/RI4MQVnLcuy1S9PnnNjyWHnvc98+aRXDeAb/s/XL2kcdIp+HMBIROwN+txvkEbpAPYw09hEoGBfWb8e2n3oEVw4b3Oy4uLKGWOtepMVORshpNoSrZ4n6Ges4YpZkbZlGWWmxx3LhFI5nU54bJGYFAnGiiL7d9EibTdacnNtPdXLs0unphXt9vsUENFxfOAW6SHvv+PAub+1qxljiVzyo9IX5v7o7JiVc/6tRgEPicj1vc2dwkeUwnjfrNV8rVtc1i46l/z4wn8kYlRrN5PtzPl95zDPEmAwOpNipiUUHC0bq+v62f6jSL95uJz9f//4v77W8F06aNYbpGhIKXC2txtNLMTQ+klr3cTVLwIHJrNp4gF4d43nhj5oNHbcC35ahrggur6GglYrzXYmdImsxDlfsIO4XTjRURaex+EYNLipW/VmJMilmNOozoTIjEG273gy8eXcDjKfRa9jVSyxt7kcAX5xzyUlBNzkZCZEJt79uMcbpH2cA49OjxPjTeac6+cHTylLG/WNUmly0HMu3HqDqDWPddR0NlVHZ6flu/LA7AGJ68WjJ2XySvwrXGpC2MgZxeLY8iM+/C5nl+f8snvlp9o3z7pO4IqlfnkKJ3D5igVWZFnxGw2AXurD4Sd61evGohl8r5/tP/Z8PxdCiMtex9cCLx3AD00dMjaIZkHgm782e5314WeFGIYhrIp170Q2a3UC2LaypKeBvEA/I3CAUsqrVpWWgQMPrhcxmU6MWPgtKBFKaSLl4sswDiurrRW61s4M3CwyT9hMCOXyBQ+HRKqsZcektw8s6hmZ9vtbO+BW9PwhX9Rm3L8jsOXz8RGN5V2IW/gE2kdk3s76Ns0Kp1YcQzYNQ9Rsf/y/Qkn98u3r3KzzOPR2u00Y+pUiSshZrhw3cevlrvaxPf77z3+NkqdOn1yeqw+Hn0I5lSEXHMBFKvVqDfeH0vl7/6RmggcYDoLxZCJ6g34GM5K9vRFpQ0HfJ6UQgoxnE+2MHXJNkOvJG9Go1UmjFmI/cOGfEdvtqbs7xUdW83W2LxzZcCAFb8zbNBb+Kezz+1s7pLwjRzfVcycwoTMxC/UNjk6ibLWktZbnVxeJIS2BbqPdaJPttY1054NSaTBW+CBaP6sNwbP4Fp1eXfoy4PvpI+/PGtzQvz59Xt4v451IPZ3N1MhxeFYClfvDvjg8PQ71XrgJUJWK/vXJC1bSj8e7gJahda2VOO906Kcvn2P7lvp1AEPv551LXwFlpQM4ztUaAP4ZG5Vt2Q/CZjHGJD6G7UYM/ERx6qNAbecF+tm2bGVXrNJAsHjtyfFkzCPnLnIh5xQRHiOhkWW4sbJqZAWq6Ru1aS0IpQa41Uq+4MUL6uYJy6yAEzg3Bncc/D8eHZISkurhOd7Z2ApnDPa+hBJ90uU9rVSMig/+X6WVOjw5Zt1BP1FZM9cZJYJoYkgX5lkYMNaXxZsG1ldWxYtHT0Nd9G96QqbkP9/8DuhXb53f8xQcWI1avRDnJ8C5txstcc2HFYmeQyk3w5UBG5zWu4t+wQ8Jx29siDQJ6j4LUNAPDRdZtC5f8HQKoycC++816uB8zinlzXqTWhXLtxbDwD/PZjMyHM+zfQnuFT55jX0LuyQVYE9Za7V50QJ9MjR9eiZELmDrE9aZ7PS7vD8cJNYtAh0e7+wT27IT6/OujjhjIhI4hVRHEW3nCAjoDvq80+9F23BBWmvW6uLx7n55bo1nPoXUio0chyE4LktlMp3Kd4cfInG0WZalSidwlmY3n7JMphP5z9e/R7Im79NAAAewGIyGxmjseFZq6QD+XlVw2hIXpS+VDw3nhgBM76IZvL5Ikla9QeFgKEtyGsg69DNlVDBKadWqlpAXXpcFJdpxHArYqsgKJRLGPCG8cyGB52RrbcNApkGWi8sXTAgfOkPRHfSNsIb2LI81CtmQLbqzvpUbKNF3hx+jGHah24BhG9n6q63MZOtHom+cLRrVqi/uxpHjiLeHHxeeWyIRMJONUAm0GMA8Z48/NJMK+0EoQBP+7adfI0G3GToj8c/Xv4dej5xzWa/WYr3oJTE74Nxr1UvIZy+6BrrPbDaNPhhwced6NpvJ7qBnFIl+4Tr7Qq5mBAr6oWmY8wU7cAYbcPbe52TFtx+UOoCF9pPNGwT+2c32dRwplWSgkVm8jMonvGrADbi3bbmzthH6W+G1zyV9Tgshor1fF0CRzmTsZgEnORTbsuWT3YNE+/zBzMqoBp1OkuPOQ1+wLV52OrQ/GuZB3MRkxLcYe3SGkPESG3sSHTmTMdBmkujKdx+IyPvj/ZvI9go4gX958qKk0vQ9E2WFGw389vaP0MHli7QZwAGMpB11fnXpOWC9dADfzAIlkhLKtNaRbTTUdQARzwetOWeSBWyURWvj6++MUQ2+4Ibtj6/Pcwflg99oIA/Qz4jutANEpy/7VA+dUdQqkH7hrxCNvruxxfFO56VykWCIAAAgAElEQVSALhhQX91+jw5GQ2Sv5EX0ROUEbP/2+maifQbpDEEL748+Bam6dHUYZ7Jerevttc3CGBCD8P++/viewHi+TAXGY5wXtVZSSFnCPEcw+e1WW/z65Hmod0kpJd9+/sAvu53QElUqprQrtvcDeegeo2+gUaurqmXjXhPZ3SZ6KbPVIuDsZ7NZIvpC1qkUUsHxO5kW8+zEGFXNepNVU84887rKcAaCUdSZOFLMBHczbrX+Zl/CfZ0Qwpr1pqegFQr45+uySA5k4QwnY+k4zrzvMtt3kcoC/Q5eyf3tXQp0hLLErwHQyuSJxzxujUgl1dHpcaKLj3MmN1c3eNooYwhKK8uPGsC35+zqwoX5L8tcA5wz9XT3ESsy7VIKc417qx45IyNy5MOIB/PH+zeRItLNncDPGSjaylJqwKsGlFLq88kXdn514bVK4OdwNn128MTXHRR3yU6vx2Zi5qnf0gEMqwgMeYRI8t0Fz5MG73kIkb5a+zO44GBmW1XfxiZANnLOabve5IYP53GY8S1r3axCP1NKJSLRa3aVc+Z7CS3rdN4etx46I1+b7QKlqZmY+b7Y4aC7t7XLcprVrzTR9Ctf8GhIymy4b1cJ+Bc3V9cznQkMr9b7o09RvguF3l+QtW+aJt3b2CkEr1XFNETV8sb/C+6qi+4VPz4/W571cg3zrJR0Hb9pQcUW8aVC1OuvT1/QMAgYUkn9v/75X6HXIxw2CMis5BRhB+fAVqMpDc4BaxLKqV7EtfbQmADHOJ5OYj1I486J81Gv30uMBzLNeQT8KM4+fjJm05T3pm/M0XVmsFJuwA/ytP4MFGeMgpKJNOst/hCHrBf4Zzidke0rpEQw+jf9ZEEXRZJhDk2+SnEmL0tyGsD7lHWHQ3LaIOTT8WGS3bl94Zz1fP+JL5SfKIXE2cowTAbUl7L8qAHs/V/OT0mRkEDCzDPODn97/nOYJsq6XzWAwDVNR45DJzlI1kBW44ejz2wScYB5pVJx4aBNH1RX5SJaag2AskG//fQhkbs09rwXj576VvhkOnFROb1UXG4HMKUCsH1EE9+OmkXKxQFH+2g3SPbvXTK06g2SlyjrRTrM2u9Zhn6uWlVSRlSGWTFaDx0nqtuIBhRoEMcAjBKPdw9o3gM54BiilBrj6Vh0ej0DmcFlmWsAzo2N1TVNSTZvv0JJ9enLYeTfxKLPv2EYemdjm+YZfcHl/7Uso2J4Oj8SONt+e/s6qn0z20uEEkU0IUIKVga2xDdVzUZT/PXZT94W4I9iyMPTY3548iW0gPN3wTYecuqE7iSmBsBP2qzVMx1oFNPQI2sWzrg4Chy/SkraG/RZXH3EIXfYNudQ0KZcba4EfbfDihC6PjiZJ9OxcsZjivugUvqbc1Kz3tD1av3O7+F98M/4ljiTMe4fYJ9CjHGsgQehlVCABhAwXa/V9ObKWm7XYm6ngSIJWFEhwCK03EVrrU4vz1jSjj7KqGzXW0CkSmWvoZQIzg2jzLy/f/3jQ3B4ekKlAivhcpe6XRVP9x+Ve3X4ZaBnYiaHjmMEsU+G795/C7AlHp0dG3FwpcMJDDjoSukE9j8xS1ZDCKH/8eolVRrAP/GXoA7gGwQJLxIutwPYi4aCPHOdIeKnKmNMVe1qaKM7oLYqRkW16g0DC6gs0Wggi9DPlFHFGVc1q+qLhyoajRSrFXDaOmMn/GWIEpfrKMzhClE/RXp3b/iCR85IdFy+YO8k9cVaZX+OplVvkrWVlUw6gadCyMOTo/DvQlEn74Fx4b0FzHej1sjt6Jv1OvESmY/I3MPTE9bt93I71kWC3wTy4RIqpDBK+MJFGgv/O7JTfn78jLYaTd+N4bv7X3/8i0QBpYvzVc2q+qJk8S1wDBWa9Ya0KxUGbKMYml+SJrWazGbgXI1wvFrAudcb9OloSc9ALhR0rcmqth2hXtNpCnuMMxmLyXRi3MA0g6uQUcpb9SZFEMZNuQv+GVnFI+eab9gnXVQ6Iy5OrwjWO9jaASB3cQaVr5FIcDsKIZfdqSMuu1dGDPRTC1cD1v6jnf3UEkY4Z8LgHiNNF46mmA/AWXd4erLUd3EkR22urrPN1bViTnIyoxJKazZyRgxBbDkr6uzqgl10LmMRu1Kp6F+ePKd5RXqKRSllo99oAHaF1x/fkTiCEO5TdVAHMCFa9IYDwwun9/I5gJHFQdxMjswcPBGNWjEr3IjoLDSHA6asVWvSMrIlmp0sS9DPOBDh5mpXrPKjFc30ApJKjifj0AdtIYWL/R60BN/0g/aYbD03Z0IT2hv2SW8woMvMF9xutshqs413OXTgT5SzOJlNxNHpSWa+j1GOLYm2kMW/2lqhq62VJLqLtA8//L/OeCzefE4GDifSQXprTBBKuJRSy2s4Tm/Vyqei0EC9Vpf/9uIX39/j3nAgXr59Fdne1aw3chOMBdSQVqMlwR1UQj6HXoVyJgTHeS580UJpwvuDPk3D0B9e/mhbwBl3Y3WdFCn7awzo5slYTKdTA4EjlBBaMS3Zqjfd4Nwb+GetlcvtOBqPwLRRZvtGu7Q8tTYP0ttIzfHlScjleEgAUWUqZpF9r/OotuHYkZedS99nnSjGaluWfLL7KJW+sU9WDDNTd98odBpxG2I8HpPjy/OlfUc45/LR9i4vofqDr6zxdKKBWhK8hXRrDkZD8fnkKLZ3oGKa+penL0p7errTnMnelVLi+PzUOD4/TVS+ML4AIaW87F4t/K4vjwOYEkkJBa9O/JsgoKV98AnD6Fq1q7HI1ajWSPnhDPfezqGfz8CZEK6hCGojgp4zrmt2jZfRyxEo9LqJmRR6Op2GegfDOn8himFw/XTvcSg5otNKrC0p7MUzKRQ48PpLyhe82mq7RntkjcSqbR+Nw7F3fHEa22Hbhyi5fZQxJuu1ut5e28yVHi3TlLZlLVyLmmjy5tMH4iXKMFeTeAPzLAQrodfSmzmDc/X80RO20mx7FkIqqd58fM86EWWkIzmsWfefhexZ4AgfBOw8nNVliU4DWisxnk7D7N/wHrsZvyUFxrfzYlUqYrWVXyjo+1YZMsav+YLdAAI8h/t3s9HUvUFfjicTIHMJ7cM+EN2KLltChna70eCrzfYy3LGyP+GUSgRMCyF4mMDp7A/0fglnUsjjs3SyPHFP2Vzd4CvNVioqLGnLFqsd6EOD0ZBddDtL6ywH/29p71y8Vr57QoJeYjh2EMjsu3KWKkxnM/n28/uFdokwMsMJ/POTF7Tck8JosXh1h6Oh+P39mzD3wEBKCeMAxlnqstchi977pXAAI/pWE42s31g3EHeWKZF++sFlsGJWjKiyf79fabjwIDOgXW+WfBsBXsOsQD9TBDBQxqqWTU3DDDCSssq9GqBUTqcTHgYaBRttFNwApmmqJ7sHy3XQ11qQa77gbq9v9EeDpVqsG6vrEkbCrDiBB85QnF1eJH7gKdqkM8bwbae7m9ucs/iPHmH1x675fxdxnsIgcdnt8C/np8UwolIqidZcaS1kCfMcdhlFVr9mV+Xff/6L5xdnJmb6//z2j8jWJAIzG7W7+TwjG2QEDbUbTWGaJkOAawTNlU38qQHtTAJlTcCpweH0xZ9ldWw8tJDmUNANVrWrhV1vQkoyckaAiSY1u0qcyaSwY83LwEyzIg+2tj1/U/IyrgLIqWchqZPyqgN8Hz6fHKUmPig3nu8/oUAqSLIAyc40DFY69hZrHWgRV70u6w2XyzYCzVgVS/706Em5Zy9eJnMXBKWAFqE4d0RBheOx21gfA1zK7+9fR3a3u0/YuRP4+Tf0HbEOrGw80xpAltI/X72kMzFLRc6fHj8L2q8cOiO+CHGq2A5gZOISzYgmyZ5sfExZnNm/t8XAIatVbxBkCpTFuwayAP2MD3rFrCAzy6Ak9m+gd+UU50mXxwsGG7+FgvNXShoVV5xtWeJge29pnW9wLiERGtxo3UHPWBauvK21DQEjIaU09bnvDnr6stspNxq/m8Edz2Pv5pyT3Y3tXFwqWvX6wkhrqaR++fYNRRZwrgslgCDkSkmCPbx01GRrNgH99mz/MV9rL4ZSRxLR55ND48tZdDBNnBuiXq2mvh/fNysGN0ir0QAiDGhtMitntlaVD2ko0ePJxPu+MEcPYANnqAaDIYsiINCHtLl7dA4FvUbyEBwVRrkIPu/0uoC61ZTkIBIszGAzXndvc5uUGT7ZnSQhBAFH0DIVIMwdn53SaOgG/GsOlHGtRovsrG8m6mSjlAjOjTIxxeOU4X5y3rkkwwwgEXoUOZLH1tqrcncj2bUZieApNKIJUULM1Gg8NqKySaYwjB+6vOFgTQKVq3QCZ2HG05dBaaXff/5EO/1uasKEcAAjIU2fX10+aMcttgM4jWnzkQGM7F/TMA3TTCajkzGqLdNSrXoj0YNeGtMQRZ9pQz9jfVBKedWq0kVZWVGMd3nboNKZONz3gYkSBX5I3/UeUHS9Vhe7G1ulMRdE7VrBoEq7wz4ZDAZ0MpsWeonurG+Jqo0AnVSdwOqy22HdQa/Quk56cHPeuS3SqNWT7tpzf4wx1azVHgyWwzt5dHoSGcyuZ+GifJAS+K4VYAeTuFBGKfqytWVblvofv/zNUwDn//7tvwElGZmKKpWKsCtWJr/FVcvO9F4S2SSk25AAP+UiGK0bEUeTsez3++We4mPO8I6tFRAK+rYKYLw8uThz0cEooZyWifo+Vkg0jzJG5UqzzduNfED6RzPqfLaCQOwo79SZ14LW4rx7ZTjj9CjGcD95tL1HkkZkMDiXHBGyZfGsgS/np4XJ7Fw0aKBo7W/tGEheKstDGqBCE8VHjkOns3SyFeOcH9gdPn05ZMhqTqKYxjwT2LbKhLkk9J21PkD/c965ZJ++HHmyPcQl/4vHT0nQpD8Ennb7fTZ9wG5eOAcwpUQhCobo5CPikQ2otfcUzaSyf28vTjgVOWOsVW+y0ql4/2ubBehn27KVXbFS3YDi2tgy1S4lGgcnXxlglIByMHJjX7vZkpur6+WF6NsF4vIFCylVt9/jg9EAGXuZWkJRCbO3uS0qFQv0k2mtARx8jP4SQk1FNYf3tYPv/Wprha62Fmc0xi3LXe1blYqyK5UHvzfOeCzffP6Q1toMrhagwWhtKK2kFJKX2XnBVZlkTc6ZfLL7iCNT8KHS6XXFHx/eRuasxT2iYlosi9liJeRzcitQKimms9m96wpnxvF0IvqDgZFWBldy2oi+JzjmGrUGB/pJUctMCHnRuXS/mYA9JYSWsKcJT7ZVscTeZhlYm7DaA3UH1BwhBJUKwBbFLxhvt9+jaQfdAmr36d6jRM/24CA2DSPRPvO+ogCHe3h6klrGeJL6Q2DCL0+eEaDdlOVuDSCaeTqdydHYKex7BGTAL+cnRm/QT2wZmIZx7QS2E+uz7CgbGhhPJ/Jfr39P/X168ejpQkS+hzQ2nU1Fp9+7d/MsjgMY2ZKEcDgK0lpCrvPZI9w0HLEg/q2YlbTEJc1a3eUmKsuPGkgL+pkyKmAdqFpVXh56kluZi7Dyv5GEUqGUpFLKSD8QuAiuwUHkAfIyOc1krKfbfMH9vjEYDvIORPuDgve2d6VlmPiOJR78gYP22dWF4et9yNgSybI4MHg0anW9tbaZqRstYOBqts2NB4Lx4ex48/kDGeeJy3COyMKEFC5Mv68gnywvpCWSrVKp6P/49d/uPdcrpdTv79+wKINWcD63LdvIUpAkZGk1mopRBozMSM8eS7ScfA5VK2cyues7rCfTiewN+sYswqxzn8IV4nEXCnpljRQ0EUz0h4NvzlM457uuYIT5lSV2DUDP+1s7JEt7eeyDzn8H+Kwj0DfxO1AaqoOh9uTiLNU7Ae4mCD5fabYTVUEWg+wSVUCAzmZSuEhMRb/PwAn3y5Pn5Yfy7jUiwPU7dBy+DMGHgD8/v7oI8LYEr1I6gYPrLq81sae+fPuKJJVt/pCewjqA0fbZ1cW9dq/COIApJVLrFI0i1xkmfhZ9rVoL5d3309ddz+LAZ3BDtxsNg5WwVF9VlCb0s23ZJU9z2IXtv74eOiNvh0xKhFKaSCkiv6xRxsTGyppRwpR5m8Ci8gUzSgmcwCZPPjJaaS1PL895mnBk3mY/v08B1gqBX7ubO5niv2o1GvfCl+Bdu+x12Jez01wY5IDGohRRQs78Q/vnd2kVUnLOuXi0s2dsrW3cOb7JbKL+38t/RbouKaOqZlVZVpxSJeRzeksbAS83fOe4G4iZkN1Bzygi1F5aWi4wFLQ+71zSu6DpAQVdOoHjXXGwcay12rxZQojGq+gYWqeECKmA/CQKH+yErM7PJ0febBAx6PqmSc6YfnbwhCbFy45gGNMwymAY/3MqJ9OJ/nKebtCAf7H91Wg1muLR9m7ktjZ/UmTzaWc8BvpMNoWLQaqhMxKfjg8TXwvGdSYw7mBlKbYGEHX26fiIXXQuUx8o7gbP9h8TxkKZNtwA1Puc2fl2AMPpSjQY3XJ1QESmsGma2jQqqcsNSCqcvlr1BrVSzEZO/W27FiAN6GdkX+Elr9lVntTBOyv6zoIcwMofOc7iXZZSgeggIe6HBAwzHjiGttY2jCzzhIYZX5x1b/iC+8O+7g0HbDLNN18w9oG97R1lML54XUaoWK2V+nJ+xiZLdLGIUH2em4LhA86l3Y1talXS55lhjMtmrXrveURqpV++fe0PJt+zNiJ6kBIB6g+plVBCAu45oobLZtLWADiZ/vOvf//BQKqUEh+PD43Ti/PIRYTTIG0HDfpvNRrCNCpp0gJErtscNSinsykXSiohpO4NejzvZ4ss6r6oUNBuMPH52b2OndIJHN9qxBnLtm25s7aRuNE4vlEtV8twAitN6EzMUreVxal5BBgdnR6nzn0MW1Sr0dQ768nApVNKhMENI6SRO86pyWzbCModjh16fjWnFyhagT1sZ33TWG0lm5GeZT2C3lJKqYbOyFgqnnRCyEzM1JtP7xO1h92sBdcJ/Pg5rdqlEzjL70co2bSWnUFPv/30IRPnxYgcwEQq9ZWC5nv95NsBHGq2I67sMwM47ezf70fPGNVVu0oadi31KMSIZ8ZXc2lAP1etKilhcHxNU6QPK62FM3Ye3PQRtAEiWiHii0ZmnMnd9W1eHjJCTK8Lw+9Gjetur8/yzBdsGAbZ39zRjLHE9mSttTo8PWYzMQsxCWVVrxrAIW97fYukGfQx5zutMLtyNx0FgisAN9bp97wOK+HnqCREz2GepfqarZewEGV3MWoAWcD7WzvGzsbWN70gIOt//eu/YjGcthrNGEe0uGnTMOH81YxyRYgupJFvsRaSfQLrCdyTSkkiXZ+vMACLf9nr5Av6Plm1RdJbEaGgwQ/d6XUfvFvMnR+JHfEimas8NIJsxv3tXcrDZVDkYajFlpESHOrITIjCQt5qreX51QXPQkYf3pu9rV2aFD0c51wZPNlA56K8MFg3nX6PdxPkRk1Kd242+v5jWtpG3dOB1IQwIBUuK/IMzua/v3+d1PL7oR+Dc5cTGH6SshRPAzMx0/949TIzSQ64Dz3df0wiOL/qy27nTs743DmAXZ5dQkHmlgkvvfsa+HT+mqYJCMjsyH/9LoP3jHNO2/Xmg1yAxXv15yNKEvoZEIOcccAMltGPKS8oqZQYT8aL3kcZdxQyZ0ztb++yNHnBU56KiLvXQhNijKdT2ev3+GA0zB0HaMU0yd7mjk4KIwt74KfjI/BbRzwXZXP3aQAHvfX2GllJKdIZZ6qaXWX38f8647F48zkbUZG3dYgMH6V0CfO8JK8WLuD/+dd//2YrvOhcijcxROwyxnSjVk/NKwPja71aW5KZTW+Y+M5dO3yFVApw8VhfCCihWhN45tRVr8tmUgh6zbuMALP0JC52zwWDghbdfu9e+LWbmcR3jNLkgvyKvYLmo8P+vbGySss9tFCzrWdCZMZAG7FmZaff5f3hIOJmgzVnVSz5dO9RIkFnQH8wDTORvoJpI9u1cGe/6FzRwWiUbUF9Ssc51395+qI8axGiZ2Imh45jFJ3z+aElAkSvt58+kDT5jnEH/enJ88SCY3y+MuXjATWA9+rVh7cENuKsFNcBvPeIhKahokSPxo4eDIc/ZM/nxwFMqaBEc63zHyqLCJKsQ5606g2yTJj3SUE/30Bu2xWLlo6+bGy1yBadTKcPHTRxAIv9IBrZhp8NtWZKihu+YGfsiE6/Z4zGTqbke0gYQATvbmwlAkeqCSEfjz4hjTo3+imCoOCqa9QaGhDwaYyn3Wjc2S0Oxm8/fyT3cYgkLusNzLNSAjzsy3whTlz3KXcISLi9zW1jb2vHlURppX9784oOnegNX5xzWa/WEjdKgv8dvGeGYZaQzxGvt5vMXsCGCymZUopRyqTL76vvzrDG/nJ2dfGnJJRIl3Lo5r8Ry7jszRUJChrr6uzywhM6wfxeWKaqRrH+EcBRr9X05spaKmepKMZQtnG/BoSUnt6pvOnQmYzdLOAsyM0YFxsra4nA7yIApmKasdtXsqDXOGU4uTgjzqQ4nLCNalU82Xu0zHu4UFqzkTNiMyHiXDq5aFtpLT8fH/K0bXcITAAcdK1aZgLnYuEsEFIpJb+cnXDsn1kqCGJ8vHtA70vM8CmrPr08/+EbmxsHMKVE6qxy/fowBhiGIayKlfmPGmNUVYyKatUbRto8aD4XeqDHk4B+hk4547pm1/gy6DTQRCRdiRIxnU6New9YlAD2ObGo4xePnibi6EtazVnqDwdJQMb2BwPdG/ZzwReMYJzv4U/j0um7w49xNV22+4AG4OCqmBW6t7nDkwwQMzgX9Wr1hzMJgiYuex325ew0Fd6d71QFQl/A2JTZ6Uv8FjHKyH/+9e9uVKwzduR/v3oZi8HUNCuiaiV7TgfaA/j3YBAl8+zTsgTUAPjR5g5fJecOA4kzN/YQUER4vn9NxexeCF/MkyYa8KSxrMGAQ899NVgp1lfXSUSGj9T0oZRSp5fnnt9jOC4pZeVaCjlj4Os72NpJCjQnpLRl9SAaKKITWCqpjk6PPe8XQfTmpw5sVC8OnobPQFrQKb6jpgEzY+kD9jM/3z+LMLaj0xPwZYdpJhN1EZi3tbbON1ZWMyFPGkIg6HpcIId+WB3CHnFycWpkgYpq7gR+RkHlWZb8aoBSovuDofzjwxvPd8KkRjt3AO9Tg4cXDQmOvUGPT6bTb8TPtgMY0MpE00xfsCGdx6xkHHRsy6ZJGnfDLFZcSBmjrFVrUhinilrihn5G8AKiu6uWTcHrVpZMaUCMpxPjPshbwI0klWXmXrgePc2UcgotDMXUakDK6G6/zwbDYarwMot0DVjQ7fXNRY+F+h2XyPeHH8ubeCgtBq+MMwKcW7sb2xSZ37EXSqVtmvwuniU3w/Lt68SCX74fq+tg0YBi1S4XJ5w6ZVluDSBIYmdzi+9tbMv3R5+M86vLyBUCRyE4sZPkHsPejj+lEdT/dM55e92sMC2khIPX5YoEb5ry4ey9o2fRHw48QPgS8CWwIqBT+dd+PDUqpinX2qu5doY647HsDnqex4B7IrRJKfdcJx7t57dV7J/b6xtLhV6W39kKITklWgpJEeRTpPLp+DAzw8E5qFlvqN2N7fAW6AdGBeo5g/OSCi2CmRduEMEJ0E0iaC29Jjhn6vHOPkuKhzq9kf7Qs8QRdjge3WuTzJCsiYty1e+ok/OzTATJwAn80+NnJc1E4qsgug5h4wLvr8hghj040B/t7FPDiObzOxMzcdXrftNYth3A0c1zbC25nMQeo/U5N4SdcFZBVANvVGuF5CSLG/p5Dm9TkZh3mn/08qiWU5baUc5kfOeBOUnnLxSCyPWne49K51sqq0MLrYkxnU1diOis8gU3anWysbIWm6PgBgkhlSkoO/2qARgyd9a3SL1Wj1UrMPLUbZt9zzOitZaHpye80+/G2v+djX+FeZYoPKkAnOQHWvYYRAN4N/7nr/+m/+/Lf8TyrYRBEue1JIL1EAzaBuSz6/Oh0dz0gig1J3Xmzl5k9koipRJKz3l7GaWAy4tUf+jrsttxncueCgKWtTYyjVblaSDpP+RCQVcbPK8we7hXdnqdHyLuF2oWVFcUN8VyL1ioq+8eoIyJdqPBV5vtWL4LfuUpn49bA/D/KgTtFiJgQmutTi/P2HSWnQxOGKH3tnZj5byEjYwxGkmmU9wrLvPtU6Km06k6OjuN9CyU9LjxDfzb85+T7ja9/ihVWimGrN/vs/TSEyp7PYPC7cOXz5lZ26UTOHtrxKtEyC54+/kD7fZ7Xqsk+hwygOEANiNyAEP4887lN/QZmXMAuw5VQhUu0olqO0hn1xd+L1VhaLUq1g+GVi91s/AMLlcG57Rdb3JeIKqiuKCfYUSklPKqVY30Bc7CWiiSDICAGDrOD1luyAhWOtkoyoppqse7B5mIbivSHPsdyzd8wYOeMXKyxRfcrDfIensVUKGRG7qEEurTl6NyDfpdNDE8j+ldX1kjK812DK3Pm8Qhs1mr/bCOxpOJeP3pfbJnMEoApwqDHrsPkSE2RZQNZ1YD88w4ipRO4O0gu5NWzAqZzr6FM4pqAJRRVbOqsZ/VMYZ2owmy9cj38ah0kXY7cL5K6Tp8hVRzZy+QiYAM5TXwNugYEB1+fnXpe25ukAvIdSBL0P7LeoRs5BgK+uT8zIUH811KJ7BvlaGCaVbkwdZ2IZyBgRSwhJUoIQj8ITMhkj2rxqNrcdm9MobOKJ7WA7ZqVUz5dO9JrO8VkF3MqFKdAo6zMNW0FqPJmJxeXuT2nbAtS744iHfNZWi+9UzM5MhxDOxlZblfA0Dre/3xne8zeZw6RRDvz4+fxR6sH+cYlq1trZU4u7rkn4+PMrWWbs/D3AG8FyVqrBiMhsZtDu3sOIBx6SGaFxVGi3Mmbasa6yEqiZcYRulWvUHsJOApYx5QnNDPtmUru2KVjpSY5zCK5r+/cKXh/MU4bMsWB9u7uT20RzEXWWsDYZmUUD3U53oAACAASURBVNob9nVvMGCT6SQTIrYbTbLaWoE1PNI9Zipm8vDkS+6/U5mYpAiEYIypRq2ht9Y2YpkTgxuiXrW/2XOQ+fb280eCaOTYy9zpC6deCfMcu7Kz04HLc0tcxy58u0wr7e5juPQQePcow95GGKMc+6+bFXfzhyBKVMEhSKbTSSzfSwTZxBBf83UCGrWarlpV/D2zF9CkV8uct9eFchZCSqCysCC8vVHJPZ5MZG/YD7XvzgOasaJLTucg81IxK2KtvRLLOx5EHq91hJTy/Ooi8Npxg14oY9j1vPa57M/tbW6TJGH7l13fWRn/3AlMwH0a+H3LyliGY0dedi4zNQ7GuNhYWTVWWyuxqWmOlGeWe11EGgaCU3fQ51ngSw0ypI3VNb29tlHw9UCF1oojAaUIvM1B5tlvHdgmfn//2m+12J9nlJGfnjwjQOgrS/Y1MJ6M5b/e/JGp7+z3WoMt5GB7L1L6VaWUOu9cfrUZZ8YBjIs+uJuyv3RuSegxAzjv2b8/LkyqLdNSrXoj0y/QQ2spDuhnyqiAxapqVXkUxN25ehfyK6weOqP5QRO8QlLStPhT6rW63N3Yyu07ld8l4EHyDPIFIzO03WwqRqODZJjMJuLo9CR3BlcPM5jbRxAdj2zBvc2dSHmyXKjbSsWomLd46bUWl/0uPTo9iXsfEoQSLqXEnutydpYl/xq4K1sXo7p27CpKmQv3RwnlNw5dXJ5v/v9CDVAilFLG9XoRUgk6nUZv+G01mgtFCfIA0HNajZY0OBzdywvzijOW6/DVrrdXKyWxHtygAJ0B9CfcD7r9Ho8sy9wNcCbunooM9iBrZxnrUBcKus7r1Vqehi/7wwEPm8mH4AHsnHEGouRJqffJCrjwlWabIyiyLMupgWvUBT0TItdnyZkU8vgs9rO370WCPej5wVMyp6qIp+AeUu510ekWkOKXvQ7rD4fRNZpAS4xxebC9w5sFd6ZNphM1Go/z5fNIYP4f6uIGtjeLDnNGKfnpyfPSCZzyGlnUPWwHv739g4wn2UjmuU9ezpja395lsP1FVZD02On1vgacpOsAdqHd3Ojo+E4VUWnu+3Ygu0e5kcVTtauF2uhhPOaMsVa9yaLEKI9rur5vNw7oZ9uyC5EZndQcZKEfTbQaOQ5DUhEcEWk5f6GLdrMlN1fX87cXZmEiE5UhO3zBa+0V3azDCUwjWTejsSNPLs4iaSvRKSl4Zwgi45zT3Y0dGlWWC4xm9WqV3qZ0AOzpy7evEY0Xj0bdjF9NhJDMM7dmPJKUrXrUwJ/Zum6QFCOagDKB/pmtSwFHDycvHLtz9+6cx9K7Y9ezLEQLKW870KSQgs5ms8jO1xhXo1aP3EmH97ZVXz7I5zlv7xzKWSoJB++NkT4Tzt77lt7p5bnHVenjsZt7o4/7o4/WC/voxuoayUtQLe4Ul50Oi8JIOd975wgIZblbA1bFEnubW2XQYrlAXGviTIgfKJ3yohp8Kz+fHGVOXNw/GvWG2tvYjuc9o1SaHOxykR3jMqfDNATCejq7uiCjcQJoThENEN+6X588JzzGYIOIRPXfjNYSd+uhM+JCzt0fZfGuAaW1PDw5Ch1c571Hf09i7f5cOoH9KS3Bp5EB++n4kF10rhLsNVhXnDO1t7XLrAgdwJBkMp2I7qDvfsdTcQB/5UgKppdc1QJfVcWs8CLTWyBSq2a7cHa5KFFCP2N+cWit2VXOWek3ycUCuCUkDhTOxEE2CngnU7Oy4IK11l5hccIs5W1u8iDvDV8wHKeAXBqlwN+0sbouG9UanDChL+f90TAUdGEe5izPMuKCsbOxRerV8FBD3/P/Ajbs6OyEX/W60aoInJ1ac6XhuxNGmkE20Q4s3615y9ZFbBQxAmXrRq2eb7N/b7VOpRAzHoXDBY1yzmW9Wov0MNeo1VTVquJ8kdoZI+rpuKs9GBxvQzl/y9s7529OQo6wfUgpxUX3KvT39CE53Hsw0YDAj3SthR17FutXTEOutdfyoid9fH4a6ToH00fpBP5xZUIn+1s7JI9B6Fl8z4oiE5wreTxnwjZ1fHZKhRSZmwrcF/Y2d2gsaAyUKINxVkinX8oziTPZl/MzEhmaSczjqZiG+vnx80JGAsARnxUasZinMabmtTi5ODMit1FEKC3OJD89fkZAI1SW7GgAttpOv0veff4Y670uqhG7DuDNXRZVwseNXDdBQfh74g5gF+qZuFkguZiEeyfTI/wzDk1V2zX8FLYwxqTBDd1uNAzA+WW5RA39DB63qF/QLOuvaLIJIYgznbiOiTTHRhkTmytrRlzQk2mObVn6RjABJYT1hgPVG/R5kgf9nfVNUbVsJIuEWsc4IGX5cL0sa2mB44Csr6wRQICHKaZhyJptfzWqg/Py9af30RnZ52ckwDxTZACWMM9hZstb3UDZurcydTPtZLimaLhHE2omZgzf87DFNCuialmh9tEbGWDQbNWb0uAcKfWRtBl2fFHWdzl73cxecDJ/5e2Vc95bHd1eEqXQi9uSg9GQj8bO4icjeGIeiAHneLGDA8KoKk9Q0JPZVFx1O5G/66UT+NsVBLvDWqvNS0NrmDeruHWllPgu5WuAWovz7pXhJPTt8aucimmqZ/tPYjHyccaEUeRMGb/KjvB5IB4enp6497Csl9VmS+xt7UT+/Uxr3PB3SCnV0BmVwc8RTEJn0MskTP7toZVO4AgmOuImpmKm/vHHb7F8uyIW1W0OyMH7WzvMqlhRNy96g74xnk4SdAC7HEiaF+KS68IYkoULCTDJFbOyFGcaOPaBU9WqN2jUKetRrv4ooJ8po4ozrmpWNVJOxijHWbZ1twZuGciRjcKQkNPpd1JXF3g+t9Y2jEbBeU9SV3QCAmCNIfpcKKl7/R7rj4YkCsfEItF3N7aEbeGwENgJrC67HdYd9BZ1Vf6esgZwOGzWG3pzdSOQk+V7/l84Z98efiROFFBhlGiiiRJC8DwYHFKeSk/df83WnWeQfs2k/JZb99tsXReWuSiZY5RK8MQ+GERAiQIUdJi9Fnt3xaxEArNuVyyXDyrTTnVPq2/+0Dyzdw7jDDjna95eWNhVFnh7fQxl0aP6sttJPgvrOqgY77ous4LvnKMcQEG78GpxOXDmEKmFjidf9G66v2Oftm1b7qxtFMZR4Gng5UPeNeDSOrnIXt7rpPwk1nW336NZvYPBTrGxsmbEgVRGGdUVwyw3t5jW4EwIeXh6HOi+GJNIPzSL9bW7sWWsNFtJdRlnPwiEZCNnRKezWZz9LFXbCFR/f/Qx0+v4+oxSZgJnZGXCIPXHuzeAXs+IRIvFQIDj3tYOhx0h6iKkEJfdjpFYBnCRYJ/dLGbXefRwWYbs3+81wBhFxjNp2LXMHeTCQj/fOLntikWjJOZetI7K3/1pALDcLrP43FDO5kZycGgyzSg1EEnP2Nw4juc+nxylvlYZZ3J3Y5u7WZxlKZIGBIzjEzGVvV6f90eDWDMhd7d2JAJwKAkCK6nFeefK6A8HRdJ/YceCyzLQJ3Y3dgIFIjVrNUQZYguUl70eOQpjHLh2XiithBTSUDpnmRcprRI44q+7di37t7h1YeRWlDLNGExjt7h1bzh2l4sXUiHDdOE0UaJn01lg550bGGFZhmmYC7t66IFmvSGtSsXlRA7VUEqVwVOmAKOpkdorEdAEgwvOVJnm7Y1CXbgnnF1epHYm/HpXpkQQXbys8TBzZJqGXM8wFDQCVM47lyQupxPWBqUstbUZZu6irMsZ0/vbu5SXnKFRqrWAbVGptNRCyNwECkxnUxfmNKuTgYC25wdPYuFkL9H0Yp11MR6PyfHleWbXFmx0z/ef0IoZ7vwdqxa9Na6ns5kaOQ6H86ks0WlAKqlffXibizMQ9soXj56SEtkxuvn325JSSh6dHfPTi3O/VVN93nUAb25zOwafAPaky04n3gxgN5LZdbEEMUanqvt7O/canQ1DkgkzUv4/ZL4nAmPnnNN2vckNno1AnbDQz2ye9atrdo0XJaPD98RmqYKLKPBnNhScvDCYwzBAKTNuHLywleB/9xXwXl50r3hcEfteVYaMvoPtPVaAg6/XIS/dczd8wc5kLLr9nhFHNBr2pr2tHVkxTUZ8QkpCvrOri1jkWrrJTmjA2PPwjd3d3GF+gpJu8/8imu3lu9c0EGfanN+XCSnc+iXMM7KTiELA0XWqFpy6rhPwOlsX3yeF7xMlCEaiboZoobJ1o177FMmnCsFcnlsG31kQJwygZmtWlQflosO72Gq0JM4heYF8hl6R2auUJFIqobRyM60pIVLlnarH84r588HxbCp6/V4mjKTYS67v0LkMJAig/gerZB0KWmmlTy/OYzVOLrsTGN/RjZXVeLhIo16wZXtZ0ACoSMhUpEvz5FURWutMBKXfJy/2n3qtIfc3t6P9RlIqTc75PCi1LHFoAHf8gTNkF51OJpXMOdd/efoi1u9nHHq91aaQWrGR44RCIopZxtw3//Ldq9yMoXQCpzpVajAcqD8+vI32W5XAkGJOCpNDZ8RjyQAuUrbv9/PsdWzLmP171zvRqjdIFrIag0I/w+FPKWNVy6Zhs0IS2DOK1cUdTl5GmWRuShTllDHCAHMZ8sIwnU7FyWW6Ebc4JDzde0SCGp6LNfHFH81XvuDRQPX7fQ4+hqgK3of9rR1lcMPXJQ8ynV6ccWcyjkqUsp2ENID9Y2djm9SrNU89VkzT5TnVGtGRp9wv7zOlRMNnJOSMB3Ice5IyWw99zdalxA2u+DFblwJhAl8kN0js+z/ZGk1+pEHwHuCG/UocxAk8N27Wcb7w2x0B/H6z1vBdL+kKN9yISkkhlcL7i1UrCdFUe6C2SVrehPtzIXwnEX6PI5F/fhZ23wHsO5G0meNGNlbWSBbpIp3pWHZ7Pd97ld+pwPtKKYu9H79yxf08xl2v1fTmylruDHpx66Zs/0ENuMkooCXxE0iWhk6RnXN0euxSLmS1wL65t7kTbRAGpdJgLHDwXVZ1lTW5tNbqqtdlvQwifTVrdfF4dz+3eztsJ+NJdLacrK2dLMiDAJl3hx8p7nd5Kj89flZmAic8YcgW/+erl1TkiAbiRkXIAHZRQe14UEERrBq5A9h1kBKCrJDcbuIPrlGKsT2c0QxDIYh//WTkJPxeJNYdMmcrRkW16g032yWNEhT6+ZoPTgIS8KEs0jTGVIQ+v+fjvTaYI4tXMeYa0SlgmuHQinvtHJ0dB8oYinIecEAoy/JpAAdaHFS6/T4bjAZkJm5QYYPrAploe1s7mjPuedMF3Ofx+SmbTPN1sA6upWLVxB65vrJGVprth48wlLrOX9MwcFmVrz+992ZIvoYklS7MszCybkjzMrtBs3VvMna99FE+E1wDCDSQSsHZHqiR6XQKzlpfdYPAdbUbTWGaJvK6fQXd+BIswMM3mb1KKSGkZMikppRJF5ZOa2/vfYB+81zl7Ooiu0gGN/dPD/fQPM/BItmzCAUNu0e31400mO8+Pdx8t4B2tEhXRfrdMAx9sLXjhlmVpdRAAA3omRCBzxMB+vNdBdfB86uLRPYR38LdqlAxTfVs/0mk5x3OmGs7DSNXWXexBm6oCoaOs/jhhJ6gjInttQ1jvb2SUI+RdSNBkzJyRgbO22WJVwPIYj88/WIMRsN4O4qh9RePn5J2oxD81jFoJ9omYVd9++kD7Q560TacUGtzB/AWB6VqHEUTraJzALtcZpr7hZ2MY2CxtemDk6lWrcXutIptnBE3jKhdJG22as3EuR2CQD/DgU8p5VWrSmEkL0twDfjh403xUu9C8vaG/eADDVkTEbXPD56UVo2Qesx59Wu+4Jns9Xt8MBwQcDEGLUAs2N/aATS6p3WFQJnDk2M6E7OgXZb1UtYAoOSb9abeXF1/0LnTqtddZqL3h5/IaLzICOBmB7owz1Light8TSalHiB3gFLXxf/XLhe8+xrM4TPBrTvP1iWEcgQZldm6Sc2Mv340IUKpcPx9yOb0mk2D73CjVve0X2IkBjdIu9FEwBpejFQPixjj3OGL1F4JSGcE0UEuoLynKpu/WU/vaSmVvOhe5sIxPg+21mpRQHJ62oyvZxiLG9Wa4RXxIj5Jvm355OIsueAB954KHpzlcALjG729vpEJRLGk1lPZTzwaEEKEulvFI9XXVmWn3+X9DGZo3h43Y0yst9eMtQgddpRRXTFMz+evmOeh8M0fn5+RKNHHwiiMc6ae7B4AbTFMMwnWxdla05Hj0EnOslETVFLkXcGmf3Z5zi+7V5G3nUSD4ARuN0sncJy6VloJrBHYM+PsJ862GaNyZ2Ob12JyAEP2yBzAXqGR41RYFtpGZK5pmto0KrkwIiSts0a15hmmMgrZgkA/25at7IoVaWRjFGPJbBsR8fGmOT6sk8PTL6l9LBDZ/nTvUWr9p6n7su8fNeDyBVNqOGMnFF8wUCiQCXzNl/2gqhEV/OnkKPVM+HI9hNMADDNWxQIvsHEXlK3rJK7V9GWvC6i5e88pONMppaWQM8OrAy2c5A/XXpytS7XLBf8dt26ZrRvnrMTbtssrHUHAgVcnMOdc1qs1T2d3GKoatXq8Crin9TlvL5y8SgsJql7tciQvK29vJJNAiRqORmzojCJpLqlG5sEuCHLB9C9XAeJFVoJ0ETxwdnXuae+IbJbmwcoun3xkbWawITj8240GX222l26NZ3A6CiHSPEgqmxl7zmTsZgFnXdHYe57tP4l0D7YqlawPuzDyIUvu8PSEChkedSysUrCW/vb857DNJFVfz8RMDh2nEEhYSSktqn76w744PD3O7ZmndAJHtRLubseZOPK3N68y//18SAuw4+2sbxm1ajwZwOg7lAMYF083F2QBJHK8U51g68hy9hBJX2b/3j8nuMgZnNN2vcl5SO7WRTPvB/qZMiqQEVS1qhxZHWX5TgMJ8fGmpXfwopxfXbC0oiErpikf7x7k+oOV1twVvd8bvuD+aKh6gx73yzFjVyyys7HlCZHi/dGn5DJYij5xKY4PmX+AAd/d3GHfU1FYFVNZZoX+9u41/cEAdo1yopREFmEifGkPZesie9F16s7zd8ts3RTXVNJda6KFUiqSwxico+CMWmTwNV1ubPvBPuGBaCUI+QzZ59m9kkiphNJz3l5GqVAe7iNJz1te+0M2bafXZVFQMKSig+v7qXsvX5I7eWagoClRg+GQpQFL6H4/XdbybMHPR/kOmGZFHmxtl/ejKJW65G0hwFEIQbMI2yqVVEenx5lPQoAO67W62t/cieTdRJCnYZjsrsDVJV+usQ1/JoU6Oj1xAwjTLFXbls/3H0eyjmIcB87cbOSM8ntOjFE5STU9mU7lu8MPWV8rD6rj+aMnC+m6ktJnkfrBPvavN38QBH3nucABvL2+GSvKUSAHMD7SWpPMH04inXxKkIqwcMwwIFXMSiRGq0jlz1hjMOe26g0C50QcxS/0s23ZsckSx/iibjNLfLxRj81re87EEedXl6m8u7Zli4Pt3VT69qqf8rn0NeDyBWupuz1/fMHgkdhZ33xwADg4wQFcluJoAN/ZnY3tr6gbgOSvWhY7vTynV73urYHehnn2x5l6l7ZuoGcRZIg/yFDEc3DmImRwDsXMNGeUE4QmzOGZ3T+AZC5LqQG/3L0eNKYnkwlV+u6sH6zJilmhD2WgINuw1WhqRl3I51gMENeOXkA4C6nmzt45lYYG5m/5cniY6ICPaOyLAetmptpXNC4flEWZEd6nIC4UtF0z6rWaz5rRPo7ggatuh01n6dBnzNEx4DfJ/fK9c2L2NrdJmRkY7ZotW3M1oHAeEEJm7rv66fgwF1PEGdO7m9u0Xg2PhkIpEZwbRtzJIblQbEJCAjVmPJ3oL+dnqdmfcGbZXF2jm6vrCY06WDfQkzMeF/MjG0wlqdRSWuk/3r/J/Tw8P3hCVlrtVHRYxE6VVurj0SHLKzz47TnJpAN4zjtEpJdM2CItMK8Q1zC0s5gzW4uiV8aotkxLteqNyA1pXqCf59zEjNTsKucschEyN0054eNNTW+Amjw8+ZJKBmSj3hA765upHcBTU3rZcSANXH+D+VTMZBd8waPhwuw28OXhgnWfkRCICe8PP+X+UB1IoQWuhPneWFn/yjtjVyry1cd3/CaQD3DjQgpPMM9+snVvnLm3nbsFVnM5tKg0QKmcZ73KOA5lejwZIyDhB2kppcK2LAPc6XeVOCCfbzJ7lVJCSMmUUnDilLy9Ua0lH+1MxUx0et1CncHcPR46KHjgQNpQ0NhPwP+bZpkH8c6DqYpSwIO20mzzdqNZlCGV48ieBqTWSs+EzMzeD0Sy08uz1AJK/E6RaZrq+f6TSJzonAMl0MjMXPjVRR6fxx1wNHbIWUoJEKBeOdja5Y2UA7numTsppSTDscPx37JkQwN/vH9D7gvmzYaEi6XASe1Z6QRerCgPT2APu+p2kMRSiG8HHMBbaxtGnDRT3jOAAS9FNCdLyDPkFVLLMAxw7xVi8Xl43yJ5BEY3zhhr1ZssKi4nr9DPVatavKjiAvDxRrKwAjWixVWva6QB49ZuttTm6nokF6hAQy8r5VYDOPjQa77gTr9nPMRhiMPExuoaeFJ/sBLeBM3kVhGl4PdqgHPw/jbp1vomPbs6VyPHYUpJ8IdiHbgOp0XZuoxR7ubo3srWveYfLDVfaiBSDcSQ/XtbvjudwJRRWbOqnPNv/c5Y4+1GUxiGiU0zsFMazl7X4atdb6+Gg/sGeUWXUM6Rrp8AjYnecGCMJ+MAVXNQZX4vcNeu1ro4HsJr1ZuGIddX1gK/m2FncCZm4qJzlYm7P6XME91H2DEnUd+qWGJvcysTek1ivGUf6WiAEiKUJnQmZqntId+NXFx2rx68y6Wjqbt7hbF6vb1qrLVXQ4tFGVUVwyxtIaE16a8BgIt1+j3eHfT9VYzo6b8++ylTyVM4mwN9x5mMyWQ6jWiUZTNRaACZnh+OPrO8w/xCF7hfPt1/TFbLTOBQS2Mym6p/vnpZmO9GthzAoaYm35W9ZP/iGduyaZn9G3yum7U6snGDN+AGuhM5HA0B5XbnpRGHS864qllVI7dzVXA+3lALIGRlIaX8cnac6CUQGT9r7VVWHgBCTl5ZHdwM8Oixh/iCAb2/trL6gxNYSKE+HR8V5gCVx+Vw41D908k6vyB884fcgktmTDPGFKFUI6UX/8PDgFG+/us8I0i7nltCGSOnF2e42CpAMM9BIykcUS70cpmtm8dVUyCZwWurpBE/H5lW48nkG94zl8+uWvvmDI9s4Haj6UKWA8Hcq6Yh/20oZ6X1DZ82sptLh4ZXRSb0HNBfLjpXC1E0EhInvm7AFwt+4Jv/xtdToi0DCrpuV2ONln9gQKI36BvIoMpKKYITGGeR/a0dElVgeFbmppQjoxqY07yRmRCp86FCQ8OxIy87l4naIsLMzE02230IKn7aLuHe/WgrumeRPHPRuaKD0Si6Rj20ZFVM9dOjZ57P1x6aDPWIJkQJMVOj8dgTMlaozsrKvjWApIejs2OjPxz4rpvFCnMn8COy2lrJoni5kOn3d6/JQ8kvuRjELSHTdwDjkkgovglLbbDwkgHMueHCx+VtkWVJXsaYNLih242GEZQH8D7oZzjZYAG3KxatmJUsDfsHWUo+3lSnR59cnNIkubxgvNpcWTNaJcxZqhNftM4BIya1JHO+4CGZiT/56dqNFiIOsSd+vXQBTvrw5EtuDA5pzNd9jtgfHLbXTlo4Z8F7iz2d3fDbzl2xtxy0DGlZX6Eb4YygoM2FNcqNaXKdT4QS4NbeJG+5j8NQ5SubqzccuvC6jIJ7tyylBrKlAUrJTVZ67IIhWHA8dr55D25/gxGMCNj8RWUOV61chy+gnL/l7fX/ji7qr/w9eg0gIOa8c5kZA2T0I/yxxTmdk4bTozDfgvWVVRKFA8Kn/vX51SUVUvisFu/j8wBnX8eDeAXy0TpsAWutNm/WGz5qlY+WGohEA3omxJ00EZG07rGRmRTy+OwkV3tzvVYXB1u7oeygsNWZhlFYPnOP05/qYycX5wSZr0mV1daK3NvcysBap0ITxUeOk6gNMCk9F6gfdXZ1wS46l4UZkusE3ntEVtulE9jPpCql5NHpMT+9PPdTLfPPwgG8ubpuxHkGvhMCGrxBSCPxa1zMvEaDCEiJIJo8eKDBgcWqWOx76Lgg3S17nRtHbaveoJZPR+190M9snvWra3bNzXTKQin5eLMwC3cbxQajobrsXiV2GE2C7D2b2i6lSkID9/EFI+O81WjJG2fgeDoRX85OQl3ekxjPQ308lC37428EkFNw0MIRDqeomwX7FeX4FtwxzkI33w44fK6N5xBl7qC9/rdbssGAkaEzFJWT2YQ64zHkkm6S8B0w4GnPX9n/Emsgsezfax2DH1VpwEG733oEajRqdYp9oPUA5LPr6JVw+MLZ+5W3V87DNXRi54YlXimRD300cdRgOFwqB/CNEue87ghUyKm38NZqSAMKWmutTy7OsnGxvKULHD/mh5bMifbg++uiqdm23FnbyPVZNPJNqmwwUQ0I6QZ0Jdrn7c5wz/h8cpRa/0E65pzpnfVtGoa3kFIiODcM7gawlCUNDWhC9NHpCSDRY+8e9q+9zW0jbZ53BFxPpzM5+i4oNHYFlB0E0sBgNBSfT44KdUbAce3J3iOyVjqBPa4JrfqDoXr18W2h1sG1PSJ5B/DcsAmYqOXO+vW4+tzHOGfStqql4ceP0hY8yxjV4OhtVGuebq93QT/DsEEpY1XLpilEhcORAN4tyO9mal1nginuZoQxg7Fr2E2Y4nN2SY9wqjPXFA6/n48PPa27KIRHtPve5ja3LTuK5so2Sg3cq4GvfMETR3R6PaNq26perSM7lTtjRxxfnMV6kPrBCXuNUwyny12/McYlsgJhyOTUzaT900H7NZMWubF3OmhdnwwctC4I8p9lvuFq75CuRVhS4Ha6gdZFkB8lcwavDAAAIABJREFUcwDospQayIQGKNFyzkmdXKFUwsg7mYw5zvGrrRXeajTdbH04xOaZvW52r5QSHL4ub6/LmV1COSc3TXH2hLtDt9/lSaK+xDmewG1TKnDv94J4FbiPmCumAQWNwLlOrxvruSmo2uZOYJbsnhpU2Ot6uB/vb+/S0gEUUpFl9dAaSNMJjKjS47PTzCELLFKqaRjq+cHTUN5bg3PJy4yaRaqO9XeppDo8PWFxB0HgDvrz42dpQv0LMCINHYdnDcUj1gnOeePT2Uy+/fy+cH6XuRP4gETBp57zKV4ovlRS/+PVSyolYliLVVxk0NU1o1VvxjawPzOAcfkjmi2bUXShZq8vxfc9V2b/LtRg4AcopYJzTtv1Jjf4w/v899DPuPhWzIoELHesztWSjzfw/Ga1otZaIgM4KU4vBAYcbO/RimlmVSWlXAXUwA1f8EwIgv21NxwocE7d56T9/t8RpEMZR/asi0PMv2bPutm0c5Tjawfv/Q7a2/DGULJrq1xKB22MS0xOZlPmjMffGILn84YpypV9OEY1lU2npgHXEStveHKTFYMSoZVyM/a3Vjco0oKFhF9Y4dCJwJGStzfZGUm0NwTFnF1dJNpnljubA1fg07AY/Sqr40gQClp0+j1jnCBcpl+dz1G18pFOh7vQxsoq9QK971cP5fOlBnxrAEFpQuJw4rtq6Apai/PuleFkiFvcy5iQ0bnWXjXW26teHr/zGQTFm4ZROOdOYIWkUZESPZlO1Zez01jnwTAM/euT56ldQp3xmIynkzQ0XPYZQgM4pP7+/nVq6yaE6Auruk7g3QOythJ8D13YSc4fQGDK2/+fvTddchxJs8V8A0AyGHtEZuReWdUz996RaWTSmCSTSX9kpge4P/QKeuM7d7q7qquruiqzMmPnTgC+yA5IRjIjySAAYqejuzqrkw5fjjt8O993vt9/Jf3hoOYtWV39IkJDrpSAbiSaaRoFKewNXkKQj2y32ltZu6Wp2q69c7DXJe01HpLL0s8gjeEs1vba1BHbG2XbeLy7NtJm7YV12eebfDe+C2Sj2A+v3hDOct1n72ZH2lbHRmA0GZNQSeJwMQ8+G8Wcncef/caDFsZijdx8xwasJgkhbdUfDh+8fx9XG7LXlgSuSWc2t5oacsplNk9KSTzXNa7jUMG33zuW2RZbdnwEQinlXf/edvgKyKAUMd8MlPptxu/NWUohhDo7OilkQ43YY3l7SSVt/3L6KKQXVFTIBivqbQrJ4F2EptjrdMz50Yn9FjPA02aRGQJaaQ11kkLmk6V7AdMb9Glv2M+sIUVm9P2rd8TZwqjdc90iq2vLWoWAMRKxgD/f3uQ2Jx/sdeWbi5e55b+yWYRA00ePJmNR5bXbDsr1CMBw86d//B3qTI2ECSpUb168JjBmtM/XCGit5eebK/HH1efGQgMC+OzoJFdpfPqvrf8abopx21iENzTswRJ6TTocWFzH5SIDonFXMY7bbsTxdYWrD/a6Yvmy+rH0c8tr6ZbrJbqssPF44/bC7qTD5uLT9SUpShLmT2/f7w64tqWVQGDhATwYD8lgNCRT34+klBGLp9PuVKKOthLbIUAJkdMw4I+9fx/nakng7XC2b2+BAAV/ohEmY4tMtnsV1uRBGOCPyCeeIQ6l12K4hLSGWdthW/G35WA8FPACsc8TCMyUjiICJPIOrvhTlBQ0ZDKvbm8SnTdLgW7WfwShh0opP0ah8AR7/ezCKpLEwMomKRwBib1BKGWh308QBtFFd+GtzaDAvXZHvn6ejtjD3asjcNVX+aUmA6SqnQUU8fqjIbvr9zLvDKzTL07PxfHBYSEgUKj5EMJGkzHd+ZAfhSCeXyHaaP3bHx8YDBSa+sxI4Ffk9OikqU1M1a7RdKL+8vOPhRpkparoFi9RRiMj1sPuwRa5PP2q9QBegw/iIBFCo9it6yCEXFG71c58Ucytt2ueMYhaxig76Ow/yOVC+vkfnz8gcBxte22+1nPDxuOtee8XXn3VG/Z5EfISiHn1/vU7O48U3sW7VyBiAMNBBvF+74d9MZ5MQHjMJB/nD2NUOcIxh/sHwpIf9R4juLTqj9Z7/y63jjFmY9HXu7trWXsY8UH+ucTKg/zFJIhYYA+XrdEZwBDOBVdtt8U91yP4RuzTKATMTe+ukTGkcuml+TdBFn/mUkh2mUKGdBsvtE01GU3HejAc1mNSmKljYY2vHKGEej0/PVur8rWpH+zvFoG8EYAxpTaEhjIsbK+Cg9nvnz/W8m6Ac6YvTp+zbmcvcddQSqTgQtj9VmLocnnBGKNv+/dsMBplmj/nzHz38g1tuV6m+a7JzIQyVKPJRJRpbFpEQ3ehDJzX/rj+LIq4oy0TT8yBby5eWhJ43gnw2P+Pv/2V+GFQZrfkXjb4rogA3rcEcO5gPy4ghvevdB1XWO/fwrsmKrDb7pB2q00ub6+I1oZEGwgbj7eczmhoqYgF+OHzH7kfvmD5jk1wQ2G0zSoZAWyUKaViGkxlrz8Q8PhdPHOJR4Q6EJg/iTFLBAglB/AGbrVLboEtPiUCcur7Im58oygm8Dxqc8ry7GsWgUQIYMwppShkyst6wjAk2kQx/r4igJfrQxmVRhvhOI5su54AGWy9U8rqsezKxR7v+u7W7r1SQBqdkYnB3qEwQiRpNYXg+uzoNBeCFoYr9717XquLKErUbI2vjiULvMAOu11+vH9ov8OkA9ymLxSB+b2gCaUsRLEE+6KPl58qLTH/VAc4QpjvX3+X6rvmnGvBeS5zd6GDpiGFgTS9ursl4wxjUnPGzX9+/0Oq8ZEAVqmNYePJmIUS9u/2aQoC1/e35PrupinNWdsOkMCvn78kZ8e77QmM89qvH3+nd737xvc5CODTo2N+tJ+fOoL1AF4zjGD9b5442Frv3/K/P1iCOFwQ1/UUZ1Dtg3Qfi7w07OVc+f1T9xrgcuv67pZNc5YYcR1HvX3xurKXaHXvx12sPy4niTE8kKHqDwZ8OB6tjJXyjaETJXI5JARi3DuOo4+6B9Yau2YDKYn376JpGA9YSmvWVFvdmiJgyNdet4U2gxIjQ0mXYkgprfXGdRiEhdFauK4rW64nCvJeKBSaXSlsGviqPxxs7PNdwSNNO2dqWYRBPT3N+3m+M5OCbolup5t5MSBnPl9fZZ5v3hlGMYEJw3k576Ji5e84rnr97Ln9BmOhZRNVBAGQwFANybU6kN+9vrvhcY04c61MiswZY/Lk4EikkTCdK1HZeSEF7nm9MguNdpWZ991euy2/e/kmV0UKSAQjvJV9mofAaDKWv336kOv4qQpqnHPz6tkFPTs+rUqVCq0HHFlue3f014+/78SaQCnVp4fH7ChHeXxLAK8awo88oR4noZRKRzjwBij0A7CFRUGMQGwwpVRE/nqeR11HaPwAiwnIW1XlYGv7q/4I+IEvL2+vc91gtFst+erZi1zLqH9P2BZsRIAiPJ8hSinTGwwYSN9Qhmtfi7x/DdloYY2NCCbXg+4+bXutjdWwCSqBQCLv3+UaY1wwai3vK9GLDa8EjPhK8f6lRCmpuFRLHgGUGK10IlYEcXrgAek6rmp5Hvcct+E91pzmwUiqP+xzP2i2lFhhPTY/N28yni6sPksFnRweEzfj87qUUl7f39Zy3449HUJcVeGs/PL8OUGsdftYBOqGgFQqb+9cdT/o8cHoi2pT3TBCfd+/epd4/oUxqus4ifZjdcSmbnVG2L0PV5+3DptBKVPPjk94Tl6NSiltRtOxwF2xfZqJQChD/bffftl4h9WU1u8yCeyHvv73H/+yM32NPfrJ4THLMz66JYBTzAzW+zcFaBm9orVWYRhyfBxtr8UimRghmOBzo5AZQcxZFO+IWTI4I9x3OZsPl3/kesjr7nXlxel5LS+SdnlcVKXt2kQsCh2Mh6Y/HDI/2GztOpNvjLyEvxp3T13ewhvYc1192D2w82pVOn99PUxv0Kdp/BMwNggBCcx2wtKy+l3ZvBpijGnQrUsxdwtrJaWQeiZhGDya+2Zy1GnrAY8VkCoRGex6ImvCKW297HvrEbi6u4HVlIUoQwQeVEUeqYlkWETirHKQglaD0ZCPJuPEdanKC7N1fiYIXcaD+fJo/5AfdvfLKN6WaRHIBIG8SeCJP428gDOpbEmZdNod+eb5y0R3HJifHIGjZjnzU0lQ1aLYUEr14fLTVmOSc67ePH/J99oZhpiiFNchDF6/1rCvFkNpq0pi7/6XX37aKo+6vQwS+OWzC3q+Y57Af/75x0zl56ve71j/Tg6P6PHBUW5VtQTwKmif8ACG9y8C/7rW0j+3QflNxpQqow2RMuS4uFs8e50OoXPVMVy28QUJPE+AvjLGCJDBhFIBeWj7WASSIWDkfb//VdzUZO9vTn10cJBbnLLNpdsUdURAGwOmAheQsjcciEmGcXmeIoHxG2OMHXQPqJU+rezISe39+9CiSE2DQA460aVNZRGxFascAkvSy0XXTfmBv/Lyanl/uU2lGIs87GjLa2nPcbkj7Ge0DZ55vCuVUre9u60uMfOoV5PyjFRG0KAYSiN5tjuSgm63ebe9lwmbYIgxt/d3tAkxBSktJ2SS53ry5fkzOzHmOfBt3vkjQIlWSkeqdHk8Siv98fJTrS+vOGf6+ekztp9Aij+6a+Xchh7KY1BtnyfOmOTTzdVW8/e/fP9PWYbrM6EM1XgyEZA2s0/zEdBGk59/+5V8peTU/GaD6zAvzy/o+Unz5aAX69/VbfNjPS8PXRDAxwdH9OTQEsDFfdKIZ/RE7F9UpNPuZLloFde2upU0l3uWUn4jNwIv7E6r/dVhHjJSiP+76lmQwZFMNKXwIH4gj+sGi61vsQhIJfUfV59zOYAVofNfLFq2tLwQQAwMSqmY+BPZGwwEJJ5TPYgB98SFLI2kpJ+O54f5F+TGYXffXqCn6oRcXzL3g/72F91Q0SCUMEq3OuTn2lKbef0QgEGf0VRrncuaugEQE4TB2th9WRHAy3UAGQw3lpbbotijCm4/pwoMWjUcj/g4Q8OpCrSpulWI1hIS7RWMMduvTSlaikKPM5KCNoSYz9eXpbQjRdM3vjI7NxfXHJy/Xz27INYwZmPX2AS1QIAqbZSRUuWyuP/26UMtUHiqkkII88Pr72JPMrgAR6Ryu1+qZtfjPmI4GdOb+3RGdC3XUz+8eZfB/QEcfTQfTSb0qZBX1UTR1mobBOAI8funDzu5j5+RwM/p+cnZNhBW/V2E6TE//eOXXNbVqjceoWssAVxgLz3IV60oE9bMjuMYR7gZLFoFNqqmRS3knldVH/Ihba/1VT8whpgh7kbJmCUyGBdzLKKCrcxMTUdJ/tWGtf/lzTUNwuxjxcEz4fz4RBzsWRm0/HuyjiUYaQwRvgxVf9DnIH23Jik2SDM+tQYuI4h5lDPG4Q1sY7hVZmzJiT8VmclfRaEUIh8hu+epTBfXvyJlef/igmjd/Il5bxsJ6E29soilziiF8QzDnMmtyvom2PL63dz27umueQ7kBWbsfBcG1jEMrWPnmSBhVlLQfhjIu959Yy6lMPfNDs6x+ZkEqH+dlDGmTg4O+f5eN3Ue9kWLQNUQoIRAcY4EUmY6Lxhj9OXtFQvCsGpNTlQfxpg8PjgSZ0cnsd/DO46w8imxASs4Icbm3aDH+sPkMapPj471xen51kagfuDr8XS6dT4FQ2eLywABGCF8vrkU94N+BrnVLwuQwC/On9NnDSWBpZLmv/34ZxiL169zMqgxyF+QwHk9VgJ6CVlc0MAM9ikLZev9m9dQnOe7Ru75camO40jPcb/ZaMPbwnO9+JuBmdRllD46BBPKLBmccx/XMPvxdCJv7m8zPdgBBhxwnp+ei712p4ao2CrnhIDGGiS1NL3BgA1Ho2IlbhJezmK+3Ot09H6nG3/ezQk4my3Jxvt3GUhKFZsZSuV/O2w7sNkIUIL4u6LwuKuUaBlK9iTxTInWqhivZEjpQ2mIC67abot7rrdWvabZA6Kc1sGo7+r2xs5n5cAflRoZmhEDNZLCjIsoo3Kv1WHdzt42exXZG/bFZDotEb3si56RwCzXbwJltFotdXFylvlZKntEbI4WgcQIKIjPyjDkGYrQytvenahzvPFlFN+/ekvihtDDfOE6Tq5zUuIeti98hQDUMK7vbmmS8QkjoNfPLtIbARmjIPM8mow5YnDbZ3cRuBvc68/XV9vs52oNXkQCnz2nz06b5QkMee+//eMXMhglNy6pdYcuVf7k8MicHB7ntv5ZAngJ7E2eTyAd3RWkY1MGW6nteELu+XG9cHnmRnHVnG+rTKkSjBnHcVIdMOHlHV1NRMQwFZYMLnVUVKZwXFj//vlj5vVhjOmX5xes5XmZ520zrBcC2uiI+O0PB2QwGmXucf5UbN9vkEpKAjMGb2B22D1giMdun1IQyNb796u9EdGUQJAtt71oKYDZQgtGgJJcvWxXtoYShHvlCCXyZGspUUYbXjQ5DVLKaCNwvmi7ngAZbL+zfMclPDh7g36qM0K+Ndu93CNjCELYprATWSGDJez44Cg2CfG4XMwP13e3pCwVg6xwWJXPTKVgTRylDArmjJlXz19Qnl8RGdTSZmER2BoBE0q5NtRE0txH04m6vb8tzFAmaf2SpO+02/LN81ex116cJ+1+KAnC5aT9dH1FpoEfq3D05z+/+54Inm5Ij6dT4scsK1aFbKLaIjCZTuSvf/weez6pbUOfqPiMBH5Gn52eN6J5Wmv56fpSfLq+bER70jbi6PBQnx2e5GbcYAng5Z7ZcOndbrWtlX7akbzhvafknh+/CnK25Xqcr9s8UCodzonYVjpmRkpzRlkUe9NuQnPq/Dpka4y87d9nboWLWKpvLl7SlcYMdcDF1nErBBDDBAoEg/FID4YDPvFz9CqhVBJjct8oQ9qv29nbChf7cioEsvf+XarGXCFjY4iFVDW3LzUfgTK8fylVWmsThsHmeY+CiC3BO3n5G2MsqoPrurLleqLlWsOwHD4M2R8ORNzLyhzKt1muQmC+P0lkqJYSScG5Pjs+TXWxorXWl7fXqd5NWd3CXsMaT6jRlKS8mX+ipjjrnB0dU6t2VFh32oJKRMAQQ5RUBJ6K2z6hkurT1ed0bNm2hWf8PudMPz95xmJJwFOqHM5hW5xxLWx2WSNgjDEfrj5TKeXGrB0hzD+/+z6RNbEhRCul9GgyFrsqCbsR2B1MAJngn/7x90RjqYkwgQS+OHtGnzeABB5Oxuqvf/+pEevdNmPtcP9An6c8p8Qp1xLAC5Q2XI4LIaTnepsvkeKgbtPMEIgp9/wYLhxS2602tJrXIgmSWHDOt+WAvwwPivgugmGcUCoYtRvSXRvGgQzV5+vLTBclGBV89+otsRbxuzOaELeEECIm/jTyQkoinVQYSluQxYhrLTijh91D7tjwTUV1WW7ev48bgLXPGkMV1a0NKqcM719itB8E8TZrFSCAl3ubMhggEu46rmp5Hvcct0GDodymwIMTEmP2qR4CD0pclEhiSC5n7pkUdJt1U4StmPi+6g16mZ4DKtULlED9CnLQmWFPKZN7nTY5PzrJLM9KYWYrYxFYgwAkarclrPJSICur04QQ5ofX320mbSjRgnG21tmjrAbYclciECqpP15+ZptUdA73D+TrZxdx1wLIqrPxZEzrHgfbDpvsEcBY+8svP2WfcQ1z5Jzri7NnrM4kMAxJ/v2nP9tvnRByuH+gzo9PcztrWAI4xkcexa3xWtRaocUAK06SBHLP67KL42GGfhNC0LQyI+vKprgoNAYewYpSynEZjv/Yp9kIYKPx+eaShDEsHJMg8ae375Mkt2nriABIX0rFJPBVf9Dnw/GIbDokZdbMtGRu2veWKn6wt4/4wJk1xWa0FoFcvX8fl2pJYDsSEyEQeeKqYuWVKTFBEMSWYcR+UWsdO32i9m+ZmIEMJpRFZLDrCSuznx5QDMSbhshppkehHm8iJE/kP2dIPCOOBM3Cue344DCRFLQhRN33e7zx8pOUQvUK59q4l/RPIg/C5/WzC6sekmB82qTNQAD7CoSfUDq9wRFi1n+6uqRSbfaurANqjDF5fHjEzw5PNl6ccRgUZ+XJUQdwalxHSoiahoH54+py7bqBvn9x9kwc7R/EaakJwlCPJxMOj3r7WAQeIwDC8Offf6WhDC04hJCIBD49Z8/PntUOD220+fXDb/Su36td3fOo8GH3QJ2fWAI4D2y/zvOJy27OhWx51vs3q05IIve8qkzETe202rEvBFzXzc3D8gsZTKLYSdGR2cZJzGqoVC0fPRgP6X2/t/HQErfiiIn1/vW7zPKLW65Nlz8CuCw0RnMEoOzNSV+lEO6u4CdhPN9F7R48cbaoLogLwR1zuL8vBM/kLnGL2jT2VTmZToUfBoU2EAZx1vCpUMhrXBhVSsvcLFlXAYMLgeSeN0ZpbQqtZ9JOZYxqyOe0vJb2HNeqLCQBkBI9Go9ZJVU3krRj19KCkCQk+i6NMZntlwXn5uz4NFF+n2+uijPeK7OfIxKYUErYVvMhzsPPT89I22uV2RpbtkWgTAS0NppKiYg/KR5j5HXvTkymkxQvV/eV716+JZ77tLIJZdS4wkmHW3Wb3tiaQeFsPJ2Qq7vblQd+hAL4/vVbukHRRiqj2XgyYXEkpRsLpm3YRgQQRu3D54/c7um/QAUS+PnpObuoEQlsjJbX9/f0tz9+32q/uXHA1CjBQXdfPjs5y+3i1HoAYzA8cUFOKdWe61kJkm0/mpRyz6uKFSkIeWwyc/fghkcwmVmqz+MlMksGbztwqvU+rM1+//wxs8MILOO/e/kms/yqhdZu1gZjRBlF+oMBhadvXWWLIu+bDD1vDrv7pNO23sBZfxXwDugNBoXPIdEaF/n0FF501hDa/PJEgIKH1Rtl4TKrAiVahpIpndzYxhASxeDNrC45ZwQyGJ9gy21R7HGtkc3TgBti9H2/z6y3QM4DM6/sF2f1lEZtj6sFA95Ou0P3O3uxLp1gzHd9dxMrbV4QFJkv4jETwiKVqzQPwoEcdrv8eP8wXQZpCrXvWASqiQAMgk0oVeL9BfbavUGf9ob9arYsZa06rbZ8c/FqIx6bSOKUxdvXckIAVyD3wz7vDQbflIBYpf/5ux+eXA8m/pRMfT+n2tlsm4WAkZ9vroT1Gv26V+tGAvuBr/79p7/szN46zje4392Xzy0BHAeq9Gme8nTinKmW17aDMi28Gcg9Py7ac13jJLQIZLAidNzCJKgwpmCrHlHBETFMIRmdFkX7XkUQwMYW8oHYoGbxuK6j3l68tvNLFmCWmIc2WsNZoj8e6sFwwCtxeNlSwnk2h2XncQNvYEfAG/hA8O2cSkrs6coVLcfTqQgK9v5doIAxwiizC1vlhkV1KgRSVevkl54pWyCVVvAaiK0Qs1xO3Qjgpe8wIoLZLFwNw4WpnWNXjiBzeXtt56uUH1eVXovO7cRoxMnepl7wSDrcP9jkkQRDcT0cjRiM+nbpgRE85OfTnF8dx1Wvnz3fqn92CWvb1mYjQLEXMgRypYm/iSAMIqKjSQhBzQ+eaggVtPahVDmc89wdOJoEbAXaAsPkm/v7yAh++em2O/Ldy9erxrGSSpnxZCy2kUuvQNNtFQpG4H7YV5+uPieeUwuuZuHFRSTwyTm7OK++HPR//PwjaZrCxbYdvr/Xlc9Pz3Nb83feA3hB1K3ydLLev9sOXwLXDxWGyTe760qGxbbnuKlCgjDGlec65SwSMyIcm1hpyeDtx1WZOfhBIC9vszmItVtt+erZRW4TfJk4Nb1sSM9AlnA8mcjesC8ge1SpJwsvGUpwwZqKTHliDicH8AZutSsFVx0rU5b37zJW8BRnlGc6RurYF7bO3yKA/bVSihYSvytSmdEmCINt1lOltS5nj5jRAIq89gzhXHDVdlvcc7381W8yqnve2QQylPf93jbjI+8q2vwTIjDzUiXMmPRSFPBKOt8gBQ2y+bZ3z8Jw92LNze5JZnofSZ6X5883Srwmyc+mtQjUHoHoTGVIKFUiVZSs1ceqgiNU0H54/d36iYVSJRhEGGu9LasK3IXX4/PNNVk4TFDK1POTU356dLxUDxgYGTqeTGjRYYwKB8MWmAsCU99Xv3z8h50gVqALEvjZyRl7cf48F+y3zRTyYL9//oNd391sm1Xj3u/udeWFJYDz69envH9hndZOEGs2v1rWLOcM5Z4ftxykPDwcOEtx30ypFIwRx3FKvQBaxA1m8NCjVDCaoi01GxJNq+7Hy08kjcTkYxzytvBpGu5ltwfxbSilYuJPZW/QF7vmDZIV/lhbHcfRR90DYS27U6OKWEuibIlxEMCERJ7A9gCWuiub+aIhRuriJJW1H/jbbaYoMVrpZCxHhbuOMiqNNsJxHNl2PQEyOCmJU+HmJa2aHIyGWLuTvmfT1wGBueIJCGGT0CsYZ7J2q00P9rpPrWHm0/VlY+aGNF1KKYs1f0Dt5Wj/kCPsh30sAhaBlQiYUEpqIBQX44ERHe4dtNYxUtcnCWTiTw6O+NnRydq5lTMmU3l91AeGJtfUfLz8TAMZEs6ZfnfxmrVbD/HgTShDNZpMRNzvoMlA2balQ0BpZX789eed3ps9hVyFSWB1P+iZn3/7tVROJt2oy/+tvc6eenH2LLd7tZ33AIas0yoPJ8j2uo7LhbDjMvYwz0HueVXZe+1OrEPoynqDBOaCOqIa5oQLMjiSiaY0irVkYyrGHnFlJZT3g54YjIZbl39yeGRODo/txmVrJHPNQBpjRCBD1R/0OUjfSksUUSrhmWyM2X5cbSkj/VSvwJgHLiUH3X3a9h4OhLl2ZJMyr4L37wOeUZgDAhLYbpiaNMi2bAsuKwvx/iUmirW+7SXSwmN5y2ZX8nVctCK+seu6suV6ouV6laxnXpXC2Ljt3VV77c6r8TuU74NRNyWSGBJ7PYqkoLsHUSztVU8YhvKmdxc7v6ZCHofWncItAAAgAElEQVQE9lxPvjx/tvNYNXUM2HZlh4CUkugYJDDCTyH++DRoXmxUHFTfvXxDYKC26qEI4ZYw7Ft2PWRz2hYBEHQfLj9Hxg7/8v0/ITupjWHjyZiFUm6bvX3fIkD+/PcfLQpPIDAjgU/Zi/OLyuAkpTT/7cc/U22aZdSUFcB7nT354iy/ffRuE8BPXG7jMAiL4Kw6chfyyVrueRVm6JfOlv0C4kFwzqpG7n8hg4mmlLGICk4oubUL46wKbVRa6Y+Xn7byNgLpf3p0zI/2D6vQJFuHZQQouARDEJOmP+hHcd9qc1DJWrY54UVq0oEEb2DPdfVh98DGSY8JniFETaYTXrb371fVjQwPKGGU2ovfmP3Y1GQgYTR8aQvy/g1lmJlnTNM8bNZcqEYy0a7jqpbncc9ZTXo1aXxqo/X13e1We7Ym4bELbYE6ReRfFzOMxRNS0LI/HFQvzEdJnThTbVl9PYIz66tnF8SxxvMl9Y4ttm4ISKXi7F/gLcWzMDyvIj7tVlu9vXi11ttpnWFOFdti6/QIAUpMEIbmrt8j3796y6aBbybTqb1ftwMlEwRwWff3D/+gQRhkkl9TM+Gcq7kcdOnfHu5Xf/rH30lT17MsxlCn3ZEvz5/ndp+22wTwmh4CEeemjDObRafXKo8c5Z5X4YAJrO21tnaJxwWlIwStbFyRmUdVdFmFulJCmSWDq/NlGGP01d0N87ewxkU86PPjU7G/161Ow3a8JgZBJA2hg9HQ9EcD5gd2Q1nEkIBsI2OMHXQP6K55pqXBF2RGfzisHpkBEphGPkJbr9FpcLHvVAeBLEIkbGwNJVpKyZRCGNBsnl0ggJeRglwrIZRFZLDrCddxsgGyYrlM/IkejEbVmzMrhlMjqzNXRUHbnlJGiaSgvRZUSR6vX+b67oaCqLHP/ExK2TeXiIwxdXJwyO2Zxo4Si0ACBCgxSiq6SVlq4k8jL+AEOdcmKeNMPT8+5wcrZONhyCOEw5h1iKhFf+JeDHcn+HM0nUgYK0ul6LOTc8I4NUEQas6Y4ZxTjvDOjBHGOJn9OfvHPhaBuAggNNuHyz9sSLYYgMET+OzkjL46f14aCay1lp+uL8Wn68sYNd7dJO12R76yBHBOA2CNB7D1/o2Bd0Fyz49rglhmnuNmZhEBq8KqbzZAAOPaIjp2R8QwtZ5yMYZo3kkm/kRe392mHosggJ+fngtImtunPAS0MYpSwkbjkeoNh2IynZRXmW1Kji45DU0a/25TkWli6m3Kc93vWHtbXksffnsBmzbLxr1XSe/fZZRnxkvcxrZv3NCL1yAYBRpNtdb53uJQIhGvN5RhZheiTZaAjtN5jFHE86aYgz3H5U3x4sOc2Rv0ufUQiDMKGpyGksjznSz+XNHUVVLQ2mhzeXNd2oVZFXtkFsLjy0095s5Wq6UuTs5Sn4mq2E5bJ4tAMQhQBaM5pdTa/UwWymPFtCVdKVBg+OH1d7jn+ioDSonkXAgQhPapBgIwhloQvdNgqqe+r/0w4GEYUs4ZHPzgmAnZZyoEV0YTjr/qdva+6lyQ+4RQHV1vEkINzg24kKHUMMY1Z9RwxgnjXODPBUkc/Z0dD9UYDCXXAvv7q9trjhAv9tmMABzpzo5O2KvnL0rZ047GI/mXX/5m94kbuqrdastXzy5yw2l3PYDXHABhAewIRzgNtYLfPDXES1GE3PPjmoCIQFxmR2TnocAQW8Rxv9lwxkOhpFQz8p1TxhQ8raxncDn9gB3uh8s/UscdhPTty/ML1vJ2KxZfOb31damwGKSUCpD4vcGgEZaDNJKtXqPLtyXoRZLAWIM5YxzewFb269uOq6z371JVcainBAb7pZwvthzt9vVtEcjb+xfjS2ujgzDI9HCEfJXKmbjeFtyC3gcZjI1xy21F87DgmUJdUCtmxWBhvLq7KbRMW1i1EYhiBRODIOXfEC6PpaAngS97/V59P4AcumJmmByFK4rwg0cXLhQtSZMD2DbLnUCAIjaqNiRUcu1c89unD43FgjImj7sH7Pzk7Buml3MmBbe68kV3/sKT1w8DMp5OpB8EMLpkWmsEqlPRIvoo1Mu60AuUUd3x2vD5TdyM+XqjHohiYyKWGQZbuMflEVkMgpgLxhn+/IosTlygfaFWCAxGA/nh8pPdo8XsNZDAp0fH9PXzl4Va1WhjzL//+GfMITFrurvJ2q2WfPXsRW5jencJ4DVjynr/PvGxFSz3/LgmICFaboun2Tw8NYXgost1vW/1rOow78zJYAZvdkqF9boqsNOMkXeDXmryEHPNm4uXNEuDhgJbX8OijDSGiEAGstefkb7a6Bq249sqR5eZxuTGtuVJLq/rAJCHe52O3u90C92gVnlAVN77dwm8eeiCehlXVbnz61A3eOVqLXAxk/Nj/MDPfr6jRBlteAH1zxme7LKfefpRxCCBOgMDGYzLtTo9oZLqrndfr0rXCeAa1xXnSkIIWzaegxFay2vRuRKJvB/0xNT3a9zKnKpOicI6z5ngZ0fH1KoZ5YSzzXZnEIhIYENWKpsg9NTl7RULwuZenuPc9/bFa/I4FBDIQ1c49iyYw5eAECoR0Rv6ZB6fVwXw5pUSJC+WRmW0xiXD+j3UQlFzjbLmotqu60T3uDk04yFLrN/wIqbEMCjazMjqOVFMuYbnsIBDOWWRwdKy/LQ1Ws6zZ/LL2w8C9fcPv+Y6rvKrfTk5F00CQ0nnlw+/0ft+r5wG16zUlteSr59bAjjzblvl0YRFQwghXMfNvLxaZ1iS3PNjzHDQbLdaNGuSE9ZqkBpxHSc3S4si+h/j1xgDeWgcyiPPYPzHPvkhgIvFT1efU2060D/vX721Mjb5dQ9yhsEZYrdpSECC9JVK5lti0blHF5gU6kq5zV95E8zrIINFOGeMHXYPWFNjUyYZLnXw/n3cHqzX9lCdpJdrnBax7BQUwPN9IOWbC0mLPVQxBHa+AOWUe0SWGQIxPtV2W9xzvTrsX+RwPBLjuoZ2yKkvbbaPEJhfXC/uBmZS0PsUY/zy5roxxoLLrf4SXoggxNAjqx0YFGIqx18/SHlEc/tjY0Os8eenZ1EqStlyPvN/pyb6bZbZLFcYlUSxjR5sxEDuRPk/nFvnNZj/9bwWs+XlYZGJzrlfHrvXsF923RGYG9yaUMrIy3Hpkbe9OzGajOvexCfrD8+ntxevvznPWkWo7bodXrwLj96JP5XTwKdh+ODNq42Bso5OdI8w9/alJKb6GNbVxzLQ27Uq/du4KyWUmmWiGOsH6sgZg0cx4hQzPI89iu06kx73PN4EufjXX/6W+9kzj7qXmSfnTJ0enZDXz1+museOW3djtLy+v2W//fHRGvHEBM0SwDGBSpLsKW+mTrtjLysfgVmG3PO6/ux29pJ0dfy0IP85J45ohsTMN2QwjtRWjjP+eIiZEqzb5+urVHIW6I8f3nwXsySbLAkCBqJExtDeYEBB+jY59l8h3rlPxMxL0i/bpN3f65Lc5v9tKlbQu/D+HU8mvI7SOZYELmiQlFlMQd6/GP9a56TcYAng2COIMpDlBuFyZNv1BIiyiu4xzW3vDkZgsdtmE+4uAgtjtyiMAWX05OjYXN/eZHJpNYt3uIpsBd4LBZc5BzrrgpWE66J34J31JVlE1OJ/DP47+xa/kLoLmnTOl8Kti305Ei6Rql+Y1SWSdVaVr4M3Rn+DuKXwSKTPTs8z+f5nhMKs3gvCeAEEWOpZexfk9NMYRQhEGH1V869I6UU5M9RnbZyT0tHrq0npL/nNMHyM3xJWjwjq3f2ybMtTIAASGJ6XD6+OphN1e3+b62V9inpm+gpIifPjc37Y3X/IF0okjhA2rMwGpBF+ZUbyBrj3MKPJGN68DMYEUHEhCJ8S6TY/4c27qTdjevuuygae3G2vxeoUUiQiiklkxISJPpK/XhDFjIIoZiCKKYe49SOPYhuneNNgyu73v/7yEzw+sstwR3LCfHtyeELeXORHAk8DX/33n/7S6HUr6+HS8jyVJzG/kxLQ0QHDkK8OdPg7x3GMI1w7QGcHIUjhESlDnttlW8KvBTFTO612JgfxlRsTShVUQQQXzbIigkcwmY33uVewleVMOPbWJqfEDMcjc9e7TzwuEWfs/au3zRprWeGaIh9tTDTOB+OR7g8HfOpPU+RSr1cK9cwtmQSGNzBEmw67h9xphp1OosGG8Y1xneilCiXGQdgqUlSoQ7KvilE6V+9fLZVkkKvL65nHFn7sdZNXcY3JF3MzPKdd15Ut1xOP5RvLbCgkQK7vbuw+q8xOqEHZMynoiHiMpJOMhnwkIfA6w2U6ni+Ea3Sawv+AbIUz61dka+TfShh4zAX99+DdOoNivhKuIlvnWT9eKytoXKGlliYMZbQngYEeDOib9iy8pKPOnHswL9o4949e9OLjP7/xlF6MGsq+8pKej6M56b3sKb3kD41BFv2Eu6voX9KT0BUcS00bNpm2B8ZLi3u4bVTHMq1UzpnhfuSH19893FVRSiTnuKFLfNWSc03LyR5G7QuidxJM5dT3KYjeeWzeVN68m1oyN2CKNKE3pX3qd8dxZdvzEnkab1NeUe/O8KH6IU6x1pC/gqWVgcokn8UqJgwaOo9iFFuieLtegjrarx9/Z35gQ3WkQTJPEhgGTH/++Ucy2YE72TTYr3vHcz2VJym/ewTwE/EJrPfvjPglxjApJc3zoi3NR8K5yH3TACtDIQSDN3ATny+SX9hXU03JTCraPukRgBfw758+JgZRCGG+e/km8Xvpa9q8N40x0HOGvGNEjjVdGmu5B+fSS5oY0riD1KaRerC3j/jAm5I16HejR5MJrLhr2yasPYi5VNsG2IqvR4BSpbXKL3YuJVJpTWQYFjHXQQbP3jKmHO+U4QxBuOu4quV53Cs5pM40DGR/0C9i3KREzL6WBwKPCV24dUK6ODKChezjzMPXQIgYIo8wHpz9xiLX2Hm66E97qfiohyjRYSjZcjgVzpk5Oz6z63seg/kx/BQcDFydviWll9Wxl/59Zq1gFl7mX2dopbsL6LQti1iQwLhM//3zxy1zq/7rMCo76h7QZydnD5dxgnPFeUMv51Z0CUh/rD2L+Lzj6VT6gT/z5o2MSMz23rybhsIW3r7rsq6SDPSm5ufx++welkB+Opp6jTGR0elDnOKILOaEMy4Yx/4E/45YxbN/t8+3COAu8OPVJzEYDS08KREACXx8eEzeXrzKbJDhMP37p4/s+v42Za129zVLABfU95Axcx135y8JqiT3/LjrXdc1rnAKOWAi3uRO7DPn3sFR3GBCET+4oC+uOcUYY9Rt744njTHnuY56c/E6s4W2OYg+3RJs9CilYhpMZW8wEJB4ziUeZMUBLdT7F1g8YTxVNFSMUSW4Yw7390WdpKTS4qSMVoPhsPZzhSWB046Aqr8HKdCZJ1jWD8aM1kYHoZ9L/o/rawiJvFmzbscu5od5GiKsERnseqLoOO6Qze8P+3zhwbmLfdCENj9cmEb7kJkMo9EzMmt2ER6p90aELi5JWXSWmcWeB7W7IHMRiiDxQ4mUUoqqGUQnbkdGLyDkCCSfH0uqw/DjYG+ft7xWRiXZbOqEgJXuzrm3KDFKKiq1Mp+uLumy8UXOJZeWPebttxevyGJOYYwpR4hC9oFFNjoIwxnRC69e35djf0rDMGBKaco4g4hJ4ti8W9cf62lETm7n7buqHrhvbHst3pCIe1tD/VQGCOc3C00ARRJKZx7e2OdQwynX2O8IOMZTRh/LT+/Yfa6+urthN5Zo3Go8ggQ+Ojgm715kQAIbo+6HffPzb7/a83SKXnFdR73NkSOwHsDzTmm32pF1zU4+FZR7ftwPWAQ9xxVFbhgg/bVTY2Lm/c0ZpZJSZsngBJNBEAby881VokWu3WrLV88uEr2ToEqNSoqLXGM0l0qp3qDPQfru8oXcqjAGhXR4hUjgRXsRJ6qJ0oOL9iFa07jm3r/LYxNjF0fVQsarLSR/BBBTTOs8ZZNNEATUQG21gMcSwPmAzBiFPB5teS3tOW5hMv5Xdzc7aSCWTy9mkyvUhwiJ5BJxxRzJIz8idOGqC+9cwxG5kM6UipY9cwuOK2/8wLfWsYSQQIZr995CCHV6dNI4giabUW9zKRKBhkp3K+y1Pt1c0cl0UiScpZXV8lrq3YsvhvK4l6vjE3nzRrLNM4/e8XQiIdkchGFx3rybgMvB23ddkUI4stNq2fuvTX0S8/coTjH2TEtE8SJOMWeIU8wRpxhjjT32KG4KUTwcj+Tvnz/aMRVzzKxLFnkCHxybty9ebYVlKEPz337881cx7Les2k697jqOeru09mXd+N0igNfEMBRCSM9tXjyCjYOlwnLPj+uOC4OW12JFxv+AhZXruDsZLxeEuzEGJLDC5Usqy/mNA7A5CXA5/enqM3lsFf9UC/e7+/L5ydlWC2xzEPy2JTPPL02UUaY3GDCQvmEYNrnJsdoWef5CPsiYwsdO4V7HMRCBl5kj4A18EMXVadoDbd3BqP7ev4t+mcdJghx08zqraYMvRntAmGqtcpuLEOusWIUHo7Q2dmzG6Pu0SUAGY2PdclsUF7p5qTjAYAzqLGnrad+Lh8AmuWWoz1LKNJxxOY+mChiazj1zv5Zcjldi4almXsA6v/jjhbcoRYHwVHsKA8aYPuweMLemJE0KSOwrFoHYCMzObhlIdxtDLm+vkRcMaXD9kNv+K3bjckoIMuL8+Iwfdg8i6X5H4FqqurY4oYQ374zonQS+mvo+CQKfSaUo5zzy5jXGIFxKdRqRo7fvumGBxu9393MaNTbbtbjj3h+hA+ZKKvAoXhDFjIIoZiCKKWcRXUzYkvx01R2igjBUP//+i93vZzD8OefyaP+AvHv5JtXagjP7j7/+THBva590CLiOo9++eJ2bs8RuEcAr+gAbipbXgqRCuh6q8VtVlnteBeteuxNdGBT5QHLGc92dXlAek8HYNxTdD0X2eZqyFlKD/eEg9usnh0fm5PC42AEdu3blJdTGKMRj64+GejAc8Gngl1cZW/JXCJTmeRyjHzAnHcAbuNWOkbouSeof+3cl0lCZgHwnZakOF3XpvabXE/tnpVQu3rnIOwgDSJ4VCyM8mpWNAVwE6DDsxO0Tm53DGMjg7Ix4qBpORnw8GRfRlEaVsYnQTRI/t0HAaMRfbFB7YjcFDBPI3zhzseu68vjgyK7rsdG1CS0C8RDAPUMYhnww7H9rbA7vTdjZzGR7o3kKcu1mprQAtrFapGO8JkepOOfm+9fvIHErBRei7PtabcyX2Lwgev1ZbN6vvXkJhJurOw8uHKJKUvWilMmW5wlHVBeiBEO0cUnnhtr6IU6x1oipARUWw6IYxdRgr844jwzvl2MUl/V9GmPMX375yd6pZjQaIxK4e0DevUpGAoNb+uPqM/98c5VRTXYzG8dx9DtLAGfU+Ss8gDkX0SKUUQnVz6YGcs+rQETMg06rXfzETqkSjBnHcXZnjDw1iucxg2eHizkVXDApX9WPTGttPlz+EWuMwrP69OiYH+0fVrU5hdYLcX0JIWI8mcjesC+SxlMutLJlFkaJJvPDfRnVmMfig0derHFedB3hgYJN01H3oPRLgiza3jTv368wiUjg6EBp19YsBksJeRhipM7lkosqqUJehsw/Lk0Re60EOHe6yIh0NATXSarttrjneluFYIF31H2/x0KJrcXuPqXGz20W7DqUIYtDgjar2cT4QUB15Gy4+cFZ/fjgiBYZrmlzrWwKi0DtEdBT32dTfxo1BPOQ1BL+pPH3KlhjIzLYsNUk8Ze/rxJaiC9+2D0kz0/OOLxoBS8mhAz2DgvJ5mngq4k/hVEil1LOvHkJ0UbrehHrlEQG9nnE9k06ZqC+2Wm17fkvKXAVSv+wv5z55UPuNwoH9BCnOCKLQRBzwTiLDDyXyeIsm4Jyf/rH359UKcmyvF3ICyQwHCvev3ob6zvF+XkwHKm//vq3WOl3AcO0bXSE0O9evsnN6HRnPIAjS7hHwexhfe65HoQO0vZPfd6rkdzzKlAZ46rTapXTUZRKwTl1hCin/IqOMnxTWO9nXDDVUHfbZc9gXDhe390wSP5sehhj8vz4VOzvdTclbezvIH0ppQLWs71BX1ipkBhdTYksXe6rZBJ6E0oLr7KD7j5te61Nyav8ux5Oxkw2mcCgVEYRHgm1a2uVR+KauuESMvPYvJRIhcvNMCztALmDJE+lRh9lVBpthOM4su16AmRwir2luby9jn85XikE1lemhvFza4Ls5moaQ1QQ+ru0Vplp4CeO4dZqteRh96C0+XtzT9oUFoH6IIA91nQ6jaSFlx9cakolFTzfELIrkxYtkcS42oGx71y6eu5JbOBhXPgciPX/zcUrstduI+RPZuUDw4VkM2L0IjYvvHnDMJx5UTOqIq3tXAwdM+mxzZk8ePtW4P7gUW1xB5Zib7e5zTZF5RCAmiS8iJfjFD8QxZRreA4LIRByEN7+X8lPxxkjsMb47Y8PbDI3kqkcADWtUBISWBsdxf1t9L1VQf1oCeCMgF4lXYnYEi2vndlGIqOq5pJN3eSeH4OAiyDPcbPZ4KZAGB6bgnNurZqfAC+KI4KzAlWUUARqSYF0vV+Z+lN5dXezcZwibunF6XPeaTdJrjZW30WxpQMZqt6gz0H62sv2WLjZRAkRgDew57qISVfLuajR3r/LfTlbL6KYkPapBwIw/tKGYIhuXOuStqgKJItdk5L2Wn7pKWMSUoqQlm25nmi5XqzC/DCI9hixEpeYaJPccgPi55aIbsZFU2LCIIztDZtx6cVlRwlUTo0f+PBuS1Xu+cnZVh78qQq1L1kEGojAaDImYRiubZlUEudokMCFbKKxZpnI+N8grPsySYzJAvIpuZDELc/T3718S13HSdxOEBIgeOHRO/Ujb14ShAEUQpa9eeG9mJvHVeFDs0LevqvaDkIQezrHcQqHxhZYXQRwh4xpZZkoXsQp5gxxijniFDM8yx7FjDL56eZSJAnFV10UqlUzxrk83OuS96/frT3zYwH6+fdfaW/Qr1bla1obIYT57uWbxGtd3ObuhgfwihgHO+H9W1O558eDF5tNV7i87E0CrCAdIbBZjPt97W66mcc5LvUlpayWBEzazvvw+Q/oAj35Osipl88uWNzLzLR1qcR70WWSoVJJ0x8MGEjfXZdlTNov0YG7BKvrlfUsKWZQUsyQHrjhkHDQPaA1+9bMcDzGN5Om2bV7Z64gAWfg2tV9VyustMqj6VHc37SkQ1YVsgRwVkhmmw+8cSAT7Tquanke9xx3XQGyPxqIOGos2dZwtuYslHFI5OwQyeLNdA5wqQVDScoMpZDDYwxyjLPfGP5lFlpl/k/WdbP5bY+ANkaGYZC54cv2NcsoB0rgfU+mgZ+6jfgG9jp7bK+9Zxf0jLrFZrOTCJjheBTLmyqVJHSOkEZON4TqWVxiCmJ14UkckcSEUEISei0zxtSz4zN+fnK60ms08uaNSN4Z0TuZTtQ0DEgYhBxe1DC8r70376Y+q7C376qqc87VXrtjL1U39av9/RsEIqIYkvbYZxOC8BwUakFXt9fRXnv2QnSanP/7w999FSvdQhsPAZDAB3td8v0KEtgYLa/ubvnvnz7aPV88ODemsgTwRojSJQAB0261m2PptQxDzeWeH/corMQ81xOiIsSr67pRDAP7xEMA/QevT5DBhFLBaJOxM/Ku39soZwzZkzcXryArHg/EGqYyBibJhPZGAzIcDelj+aoaNqm8KleNdK2CFHWC3sD31vJa+rC7X4uDptRKDUejWtQ1QTc8mTQiR2YKElllafPJAwEYFhpNtdaZL+TwctlkPJVHk77ePhOtVPZty7veu5Y/LnMh0BiRwa4n3EdeJNf3t1uri9j4ubs2quK1NwiD2bVi0x5KpNaQRE1P/i4gwZ7r/OTMLuZNGyO2PYUgYIgxw+GIJjG0y0USOsfWzqSlEZMWnstfkcQw351ZGD4iiSET+09v3xOpVET0ToOpnvi+DgKfz715ozyN1s3y5t3UDxX39n2q+lYGelPn2t/jIID5hDNOR9Mx8WOE4kOey4YqmG0iw5RoPsJP+D9R/NCv9jG7TC7PSWD6/et3X91PTf2p+u9/++tO3VnFGZPbpLEE8DboLd59dHkOqxHXcRsr51t3uefHXY7Jtt1q0SoRh57nRdb69kmGwIIMjmSiKeUw3Grahb9UUv9x9fnJy3G0+/3rt42TSNPGKEoJvHxVfzgQk+k02QCxqS0COSGAuYczxuEN7LlrPcdyKj1Rtjvl/fsYGazzTVsTEvV+DRInuZSM0xxISoehTHTZGSffVGkoUVppe5BNBV45LzEGTyNKYeTjOS7H/7+5v/tmD2bj55bTP00qFXMVgpRLGTZtjlBKaygwZGKVCun2bntP7GCYmyYNd9uW4hHAd0hGoyGHBXWap2hJ6DR1jPvOgiSeexJDTYPBy0+qsPnevJtAqpm376rmLBx8HhvwbWq6/d0isIzAwoB8FlOY0fv+fWQkUubTVHKZMSb3u/vkh7knMAyP/uPnv0Jav0y4G1e2JYC37dLFArmUDyaIdqvdLPauIXLP67q729nbdiRk+j5j1LiOa72VtkE1iv1IcEkXaQM1xfsLlruXN9cUXgLrHrT2hzffbYNeZd41xkSe3VN/Iu/7fYF4RfbJCIGqef7Om1UpSeqEUOPb2+t09H6nm7kHY8KqrEyutJKD0SiTS9gs6lNGHpYELgP1GGVGHmJaZOr9RqkCmaJKPqw/tB6KJVm3MQa0Nkl2CMDAJwhDGNhhbwnzfcN5NKVGscZXSS5nV7rNaRcQmCnapCNoKoiPllrCCCdTUptzbs6OT5t111LBzrNVagwCEvugwWi49f6/apLQWfVQRAgXFOs4qzpnnc88zEQkq5113mXkZ2Wgy0C9QWVSKhFHhRIa7V84Z8Zoom96t5nuZ6qEWNnkMhSY9vf2zRUmXFUAACAASURBVPtXb9lvnz6wm/u7KsHTiLpg//z+1dvc5vjdiAG8NBRgbeQ6rhBNkV5tmNzzqq8WlzidChL2jHPlOU5jF5giZ1AsZjPpjUgDVGMhr7MX2Gg6Ubf36zcfeU/sufedMdJQIoIgkL1BP5K8TmutnHtd61zACgOmqjSn1iQwY/AGZofdA1Yxy+NZzK+qkGElDjZIvc1C+9inMghQYpSC3VZGz0xylIZhUJ19lCWAM+rccrKJLkYMYfudPXJ8dGx831ehnBFbc2nIrS/Xy2mZLbUyCFAipZSiMkYr2wBDiQ5DyeA1mPUzuyQ84C3Pyzprm59FoFEIYG1SUmL/n9n6VDdJ6FgdWuEzcaz6p0z0cN6uWfiluM3t7u2RKqk8xq23TVc+AtjzM8ofDPphJCI4VxN/SgejYXXOluVDFasGScjlg+4+GY3HkM2KlbdNFB+BvHmC5hPAjzYLTfP+bZrc86pPg3Mh256X2aY4/ue3ISWlUnBGHOFUr26ZNbKkjCgBCYxHUUJF3chgHLx+//xxLXiOEPrdyzeV9EB8oseVIYaFUur+YMCH42HpEisljU5b7CxACoZ5dmRQSagi/lBVFCaUUnKQ4QVQSZBmUiwOcYyy2o+vTMCoQiaUSq1Vtt6/hCg/8Kt1QKeIH2d4pl7OVei/HazD2xevCC4o8MCoBjGmQxmaaRBoKWW0/7Kk8A4OjGyabPzAr/X6hD1cEIa5Gpw5jlAnhyfVmuOz6X+bi0UgIwSM9oOATqbTXOaTxkhCV1QRK6NBsDKbhbdvtFdpiMfv44bOZKBd4TqVDs2UZzfbvLdA4LFiGO6NEe4Ldwi94YD6gZUm3gLeJ1/lnOu212JSaekH06zvB/Kqdi3ytQTwFt30+IIaiwzIOsdxtsi1Aq82XO75McKu62pXOJUkyzCmBOdMCFHJ+lVgtG5fhZmXO6T7JKWsHmSwMfKmfy/Ga+SQPddTby5e1uJSxBijtdG0NxhQePo+JW29fWfbHCIEanDQbYoUF2LVCc7oYfeQO+Uqg1jv30efvyWBKzUfaqVVlvscxJuEnl+lGjmvjNFa53IZW8XGNqFOj9cj/H+spAi1sc4DERfjkIqGUZsfBCYMw+jSyBADIwBr2NmEgZFfG2ZewDX2fAhkSPL2YobR/eH+Ia2Y0kp+o8LmbBFIgIAhhkynUzKTlM/vaaokdH6IlZfzQsWkDvcAWaHEGFPdzl4t7sSyarPNZ0sEZtLPHM5Cj3PijEnGGPbw5ub+liKuun2yR2Cm0NqBWJs22jDcD4cyzL6gHczREsBbdPrDIjrPo/bevzsg9/y4uxeS3SVfzD85CiFZPCeBtxit9tU4CGA8GGMEyGDEna2yZEwgQ/X5+nLlhrbd7shX588re8GojYniMw/GI90fDvjUn8bpHpsmKwTqIHNVhzom7I+DvX3EB074VjbJrffvahxhzcsosxcD2QyzdLlQnJ9Vpl6xOCTiUrKKjyEkigNcxbrZOq1AYM1aBDLXEcL86d17FnevKKUkIMaCIFQzcnhBCsMz3I4JO/6+QqC2XsAY20WR167ryuODIzuf2o/HIvAIARiJ41ss4qm9JHQNDKO36cdd8PZdhw/2anvtDkXoH/tYBOIg8Fj6efmduQx0RAzjbuWmd2f3H3FATZFmr70Hvc7Fm9IQzaa+z/I2LkxR1Vq9whkz71+/y80QvbkS0I82CpGnphC1lpjYBbnnx18nZVS3XI/xGtz/wsKZc3tPXdQMuyCDI5loWIFRGCHlNlcmbhYOW59uLhEs7Jt3D7r78tnJWaU2JMYYVFSMpxMF0ne0xns5MRD2heYi0DASGDHrBHfM4f6+ELzAz5MSMxiNqN0wf/upzOPDQw7aLq6lzSRUKT2Lo7r1Q4mRoaRFkQ9p6msJ4DSolfNOFBuPUEPMtx67iwvVvXZHfffqTeoJPZQyko/2Q5DCAfZ01lO4nO6uWKlUhTLgVTVkWQUWPA5BOBVd59PjE1LonqpiI8VWxyKwjADuB3DGXnU/kDdStZSEbthZc9HHu+jtu2p8Y6/mOh73XCsDnff335T8YSyw7s43MhxnDMqRaK4cTcbC3mlm3/Mz+XZv1X2ZUVrpqT/N1HA8+xZUN0dwGlCwyutpLgG8ArFOu7NspZAXptnmu2Nyz6vA26tRv2HzYi3Ysv0EYuUWxQomMB00lFAWkcHfqoLEyirDRBGR2hv2v8ny5PCInBweZ1hUuqxA+lJKxTSYyt5gICDxXFFJznQNrNtbkDknBBum6lgy1A3DjOp72N0n2DMU8Ugl5XA8Tk1QFFHHUsuYfReE0UjSyT5FIkDBFWiWybqAOMJK8lBG3VnhxyitTTaEd4Vb2YiqUQJOa+14gicAZUydHByyi7NnmbmXgBQGkRaEQeQpPCeFtSEGUmh2nmrE4NrcCGOICsKKxTFfX22DWKPaFKu8gG+w5bX0QXffzqmbh5RN0XAEYK00LNngs26S0E0JOfQwtClRuKuahfY1me1L6vzpMMZ0t7NnsahzJxZRd0g/E7oxHOCSDHR0r9kbDmwIu4z7Z6ay5NBV8bsXczaMZm3owOTAWwI4OWazN5Y8gGFh5TiOcYRbn8PHDso9r+rqmb58u+KXhV9qzhg1ruPSCpCPab+c+r9HiV7EhIA8NyUz7+AyHtwEfvj8x1eFwzLt9OiEH+0flFElYgiJYiqHUqresM+Ho1FhUnClNLhOhVKiiYkMGerxNFiSC97AjoA38IHIU4EC7MVwPM49Fl89BtQTtYxIYEoYpZZcKbAzsV5A/nnrIiMZaW3CMKh+/4H0Vro+8/DWndPgDOZrFOdMX5w9Z8cHh7k1Fl7Cc/loGciAhSHCkDFtjME/1R/3uSHT4IwpMWEQFk6qpkDUTAO/1Jjr56dnMOJKUXX7ikWgCQhQpY0iw+GIF22EsQq9ukhCz1WAQOLUevL44u2LOxiy/Z66CZ/EUhtAGHXabZrnebthkO1kc5KEhVoOHwnDm5u7uzrs1WrVr5wL2fZaT51vpCGG+b7PoD5hn3gIWAI4Hk5fp1pxKV03799dlHte1dWMcdVptWq1UWKMas/1ar1RTfPZVfWd+eEBpDwsLjdajWXZDngH3Nzf8MlSDF3GmDw/PhX7e90si3oyL0qJ0dqA6DW9wYDB0xcxGO1jEdgagYZKcy1wwSbsAN7ArfbWUK3KwHr/JoA1igccSf3Xak+QoIWVSooLGaUU9HUzqJfRfhDUY1+E9VLpcqzGMkB6F7KAcV+aC+H3r98SqAoV9URxhGeewjIIQxZKSwoXhX1R5WhjZGUNWyjRxhDEKi5Vig9SgXvtjtjr7BXVLbYci0CVEJAI8TIYDStnCFR1Sejae/9ab99Y3yH2dK7rUs9x7d47FmK7megp6eevEKFUcsbEXAaaEEpMEIbqvt+r3Bxc556cOep14nyzGrLQfuCLokOQ1BFfSwBn0GuO40jXcav/wVu55296G33n1aHvlmoOwpEybjzHsZfUGXy/mWYx86xHXAhJKSuEDPYDX17eXj/MP/AsvDh7zvMilJbx0kZD640ORkPTHw6ZH/iZwmkzywiByLvRUFNDq+DaH85jdCG8uBzH0UfdA5G1xP/AeuDH6IEvSeaGPKWpOiSqbM0TG2Kk1jqLvbMJwqBU77OkXWEPqEkRKzD9bL1kJqZaRrRGzZRPhODc/OnteypEFsM6XZtn0tELUjhgUiJcGQhtkHXWUzgdquW+BYm7TGTys2wGJdJoQ6aBX95gX2oPLgrPT87iXBRmiYLNyyJQKgJYe5QMTZXDvFRaErqGRsbYc2DQISSE9faN//lhjeh29uwaER+y3UkJA/CEio6MgQTmD/sfzMWj8YiPp5Pdwa2Alu619xKFXbSy0Js7xRLAmzH6NsUjD+B2q13tuKxW7nllL0fS3cJlruOkGQXlvkOpFJwTp8xbpnIRqHzpsEjHZRvIYEKpyFOa7OPlH9DRjDCBFOHL8wvmuV4uGGljEA+Zjydj2RsOhN3o5AJzppnCQ9s8Eccw08IyzuxB1irjfKuWXSQnTyk96O7TttfKpHrW+zcdjHNp/yjWu33yQwCXgll4/0Jtom6Eat3qm98oqGDOW4YeaLda6oc331XGQBOLP76RiBQOwkg+eokURozAytS1gqOhElVSWkspw0oQrREglEio/sDbohIAoUqMyf3OnsCdjH0sAruBQKR8QifTaeU3q5WUhN5yrS98jEXGaZB3xrJdo3BOhQO1ukDKqO54bca53fJUpEsqUw3c2TLKEu9nlmWgF4256/esCmJGPQujfM/1uPjCs8fJGVrQfBpMqZRWFnodYH96+z4OlqnS0H/1/msW2m6pCs/lJRrdVz1stIQQ0nO9xBNGLnVbk6mVe16zEaA06jsQqXV8MClyzvmqxaeO7WlynRdkcORdRmcxg/GfjB55P+iJwWgYZccZM28uXmXqgWKMkZRSMfEnsjcYCEg826ceCNTdg/bB0tmYzD6YKvccvIE919WH3YOtFQQwJywMQ6rc5irWDeMOsd4tCZx978CoQxtwtmq7vTMlWoaSKa2yr2TOOVoCOGeAU2a/1Xo5v0xGGA7I+r9+/mK78Z2yDXFew+1xJB8tQ+IHgQplCFKYMsYUfrOkcBwUi01TIS9gpbSG6kLlxrcQXJ8endYjFECxw8eW1jwEDIjfuilvVV0SumrDxHr7ZtsjruupluvW8+I3WyhsbksIpIoNDRloOPiwr7cc2ugoHnAWBs673kmY/xzhUNdx00Ch0RdTf8rtmftb+CwBnGBILXsjYVC2vBYOzAlyKCiplXveCDT6r13V/ttY+1kCtEEIQetKYsdsZrOSRbGCI8tNEAyRl9m2JAPiHny8/PQwEX3/5jvyEJciPXqRB3MgQ9Ub9DlIX7uApgezlDchbUWwB6257CMlcBWs4EKbT69SSqDZyQ66B7SV0pPfev9m0zdQbth2fs6mJs3KZWvSlhLEvGNSytrNC4vYx83qUdua5fMhlFjOj8/Y2fFJbYB5IIXDkPhhIMMw5FJZUrgSHUipUlJykCclP1pqacJQVvICHVLnB92D3BSQSsbeFm8ReEBgPBlHRjx1fCojCV1lD+Av3r4I31DJ+baOY8/KQNex13Kscwrp5+XaUEaVYN94kik/DExv0K+ckVyOSOaWNedCtr3WVliGSirf96GekFs965bxD2+/y9IZ7avmN8sD+NFGAQOy5VXM+9fKPSf6/rqdvUTpq5rYdV14fla1erZe6xBAPGcy0xmdy46mij2JODBXt9fMD4KIrPjhzXdpMdeGGCqVNL3BgIH0tfIZaaEs/706Sz+Xj175NcBBteW19GF3P/Hhvz8aWoONjLrQksAZATlb6KQxGta46T36IwPHanqgxUKKEthsJf6mY+VtE6VDIKs4gEvGStiLvX3xiuzvddPVqQJvaaNJGMqlmMIhVw+ksEbwY3vwKKqfKDG+76efN7etJyU6DCWrAAn9ZEscx5Unh0dbXRZuC5V93yKQFwIw1BlNxrU/m5cuCZ3Vmp9hR1tv3wzBXJMVZKDbXptZx5n8sa5DCWmln5fbtkqJE/eyw9GITfxpHWCodB1xF9Zpdbbb+1IiES/dD3wK5SP7kIgryMvBoVkE8NJoAVnjuV7l4ghYuef4n/RsQmlvN6HELy73lJ7rVjsWde4I1L8AeJBEVHDkJUwTScCOpxN5c38rOOfm/au3ica1MbhON3QwGpDBaEhBJNun3ghsJWVZtaZX2Uo7Z6xwOOGMcXgDY47f9KDfwzBUw8nYXoBuAivB71B6yVC2P0HJzUu6tfcvIdoP/PoSTyDBtRa4ALVPBRDA+oInC6WMR2sVlFhgZe2lVHKoADrfVAHeW4EMSRjFFA5kICXXSlEayUdbUji3PqPgfKRQqnjJexgTBmFIZQllJ8UTZ/ujg0PqCCfpqza9RaDSCEDOaTga0TLmgLyAKUsSulJn5Pm+AepP1ts3r5H2JV/XcavnwJV/s20JKxBIJf28nM8aGehFktvePam60VwdBsZeey8rslJBUsH3pzyDu4g6QLe2jpYAjtt9S9ZinDPV8trVsOC3cs9xe/CrdDNJgYp5cKdqyewlxqhxHdfGLNwCw0q9OvPm5wwyQJRtJINxmfzh8g8iONfvXr7ZeDmujVGUEjYcjVR/OBDWSq1Svb9VZSIpShLJJjeHBJxZ7zWnPQl7GFZ6e52O3u90N37b1vs3IbgxkuOyiFGWyLAmRra7lYQSqbckPhFTCcRTrclTSwBXa9xn7An0+GIZMd3/9PZ9FO6jqU9ECiOm8EI+WoZc6yiMOvax1Bizcd1qKjYZt8vAgyHjPDdmB8K/TqST53nqaP+wGnc0G9G1CSwCmxCgCmoMw9GwkbEMi5aEnhvbYx9Z6roU7RWIwVndzlWbPoEMf7cy0BmCWdOsMAdQ3JxnsC9fIwMdIQO5p5v7u1LnmZp20UO14RTluR4XPMsrQEOk0tIPpjtpjI1x//7V29wcB5vjAbx0+VwZ718r97zVnOa6jnaF26hJmTGmPNe1G8mtRkb1XoYXIOLxRp7BlHJIkn77GHnbuxcIjPjm4uXKMWCMgaeLmPpTeT/oC8hI2ad5CFTKsrl58JbWIsoYvIHZYfeAuc4K7xZKEJtPjaz3by59ZEngLWGlxEA+dptcIN1U+1j08PLQhteaxN6mE5v+LiUY5A/yyLgc6rb3zLuXr7O8vag8ikpDPjp8kI9GTGEozcxJYWbw7/ZJhgClKgyDQkkgEPt19JQ4Oz4l/JvQfMngtqktAhVAAMd6kL+iyZohRUpCl3pGtt6+pX9S2JO13RYXYqe2ZKXjXpUKzA1ANKMsswEASfE1ZLKcBgHtD/v2bj7lAADv5giHuc5mFbxERcBZRhsWhAHZNVloSwAnGimzxIwx3W61SycOrdxzis6bvwJCzXVcsUq3P32uFXiTIhg9M47jZLaoVaBVtgpLCDwmgzGJL6RJQyl1fzTQL8+fL/W/kYZQEQR+RPoirq+9eG7ukIq8fxsYl89KY309ZhFXclUMe+v9m++3DSMcRpk9yCWFmVKptUpvaUuJllKyOnmhPQUR1mC7DicdRNmmL/ISGKpRp4fH/NnpebaNqFlu+H4X8tF+EKhQyhkRPPeKr1lzyqqu8gM/9zUIagsgf+tocIN9cKfdId0YiilldaIt1yKwCQFDiFJSmuF4tDN3OoVIQmes+rGpH/G79faNg1JxaYQQqtOqiJJncc22Jc2/xUwVvTbIQBNidH84ZNPAt/inRGCm2trKax2Uhmg29f3G3DFsghncwXev3hLO8qEz6f/S+X9NI7TPHyy2qHIdtzyrISv3vGlMx/od1iQtz2Nba//HKq3gRJRKwTl1hMj9gqDgltniHiEAMpiQSDoIN2gIUkmG45E+Pz7F9TKLCOFBn4P0rUPsLtvB2yEwO2ASSC7mtUnaroJbvm1J4C8AwhtYcEYPu4c8MmSiRAdBaMbTiZ33txxnT74eyUbRTC2H86xuhfLWSqu0Jw2ptKZShg0a20ZpbRrUngqNtDhVKeIC+FE8YM6ZeXH2nB4dHMap4c6kiUhhyEcraXzfBykcfRfYyyBW9s4AEbehlOgwDFnOxKzxg4BCdrauDy64zk/OsoobV1cYbL1rigCkgYMgJJPpJO2+qaYtJ5HRidTSGIQRyPp5tC5nnf1X+Vlv31zh3SZzKP/u7+1vk4V9t4YI4P4f96VZSD8vN58yqgXja+dqGPze9u9rFUqjSt0L2fZOq5P9evB1Iw0ku6f+tPEKXREB/PJNbio59P95+f/Bco2M6yw1SqNYitFHjQHYbrXzHoDffnNW7jnzeWiv3WnswRBeSoLz8gwVMu8tm+FGBObzFIhepSSI4OhSzT4WgaYgQGnkNFf8+ltxAA/29hEfmPSHQ+jZVLy2Dage4rJjP5ihfFQDUFnfBEqV1irdgWom0aSDMGgaERTFQ250v1e0cZEhEaFwwc4V/3Uext+/eUc6rXZF0alGtbCPhXx0KEMzDYLI+x81s6TwrH8QziXHOdFMAx9xm6sxGFLWgjIqu+09AU9g+1gEaoaAmUyn1N9hj7EiJaGzHhvW2zdrRLPPD/ekLa81M6C2z24ggDB6hBpGaeadjm+eRyGF119RQcv/tndnDX9Tjra99l7uvM3i3AZZaPzT1Ad85tsXrymky/N4IgKYEDifadob9riUcFir17MYDAvZ4DJiBli552zHzMySpAQiP9tmPJkbxq0jBLUxkAoEveSicGC6vLtWkWeAiTyD7bMrCCwZKjW1yUVKdtYNw3arTb5//Y58ur4k4+mkbtWvX30jEpiSPA6S9QNjU42pUnrm1Zfi0X7gN9EDxhLAKQZDJq8UuVau8DR2hDA/vH2f28E7E4wqmAnUxIJQghTWfhAYxBSeX7QjpnbmF3oVhOCrKuFyKlOSdhY+xEBeOtN8SwQSXvdnx2fWaLDEPrBFJ0dgPJk0+vI5CSKZS0Ln5QG8yDev/JOAZtPGQkAIR3ZaucnKxqqDTVQcAtgvZir9vFx1ShWnlLOnJXUlVNqG45HdkyTs9shgw23xAjkNCSVN3/dZI5SMH+E9I4BfUcHzOTotCOCHYkfjERnVyBt4WXKycO9fK/eccHqIn5wxrjqtVtoLyfgFVSCl57rwXK9ATWwVckZADkcjMRgPo2Kst2TOaFcte0okMSSflbwqbS1CtrMqbU1QD1ic/u//47+RZyenShvNJ9OJ+senjxxksJV+TwBk0qRRPGBMtXaBXQsdhZqfRpzPpOhG6TMnOVLVIpeXYKi1E3vQXNCrS6Yr1ixcQrVbLfX963fNXq8L6CMYlSOmcBCEKpKRlgtSuPny0UrDMTrMZgxRIo02ZBr42eRXQN/HKYIyqg729nnLa8VJbtNYBEpFAPskKCaGNXSWyRO4zCShczhDWm/fPHs+/7z397q5exXm3wpbwiYE8J3iuJ619PNyuZCXFny9DPQ8rekN+9QPmutduqkv0vwObB3hMNdx07y+zTsIXwVDdJFz2JVt6pj4Xc6YeXPxiubl1PoNAbzwBu4P+zyU1ZcnXfb+dYQjHMdJDHLiF6zcc2LIkr4Aq6+W6zbqoLsOA8aocRwXAQ+SwmTT1wsB8+n6svaybfWC3Na2cARyOMAX3oYMC0TcmbbbYv/3//p/kuWNnDJacsrEzf2d/O3zR3F5e51hqTarBQKwSqWEwhPNgrICAUOI1Fql2mvhjNCkA9dX8FBitNJ20BT41ZSlILHKGI8xJo/2D+jLZxfWCCDjMQDyBPLRfghSOCBSysZ6CmdiIEMxRxuCC66Mu6IS2Qkh1OnRif3OKtEbthJPIGAGoyFFTHT7fItAFpLQme0BrLdvI4YolD1bnofb/Ua0xzZiDQIzxS7cg+e6D4gjAz2vobm+v6WNPd/mNBA5F7Ltleex3yRZaDi1ggDOSwJ/FQH8MCzgCQyP4Co/Cw/gIr1/rdxzviOCUqId4TK3CDI/36bEzp0xql3HzTzofewK2IR5IyD7w4Gok7pC3oDsSv7LKhW70mbbzi8ICCH0yeEx+T/+9d/Wyjwo3ChRwj5dX+oPl5/4/aBvIcwQAVimUoKzpeXzlmHFYVgphWCrCdGmSqqQN/kidIFNQmBs8rQIRBdAhhlDipfDWSMJyTnTz07O2enRcdpW2fdiIvCFFA4iT+E5KawNQYTxmspHU3BFkkkZhaRP+yiltckxnnDaemX2HmNMH+4flOE5klkbbEYNRmCmkkKGoxGzhMDmfk4rCY27P0IoZPNT7wHm3r7Y0qbOY3MLbYoiEeCcq712J1disMj22LK+RSBX6eel4jDHMAaRabZxTxZKKe/69400ustrDM7Cd3Y2YptX+XBiJYTwaTCldQxpu4zLjAB+SfMyfnmSAI68gbVi/eGAwVq3cs9cUhMWQkIIkavbuZV7Lqz70Z+e64m8Al8X1pAEBUXSF4xpz3HsJicBbnVJihusz9dXaxfFzKxe6wLILtVz1+IN7Vp7N4zlbqdLXp4/l//l+3+KdZCA7mwoQ/r7p4/0082VjRec0VxRhLxURlUtLBtDTPI4txSq5ZpkJm1aWGuTF2Qve5NjlvqNiipHwGjk7YvXZH9vL3XT7IvpEMC9w1w+WgYyYGEoGchCYwz+ibWepis5y7fguZtaSlBLLU0Ypo7PnmVDcs3LdV15fHBUkz7NFQqbebUQkFIrOhqNGhN3uwh400hCp74Hsd6+RXRpqWVYGehS4c+18KLP5ihPcL6RpDSEqPFkzK3jTrLu32vvVUGyXePefepPeV3P8SCAXz9/SfNyhtxEAEe9DlmPiT81w9Fw4weTbJhkl7rT7uQz4Kzcc3adFDOnKP6W16I7FxeXUsk5o66wJHDMoVKLZNhE9Ad9Pp5Onq4vJQoTrDHEGgHUomdtJdciUNHL/CJ7jFImPdcV7VZb/vPb9+Li7Fmi4o0xShvDx9Ox+scfH/mnm0vSZI/LROBskZhRls9ecYs6lfWq0horTuzisTfDqSoI/Z1Yo+p6cIzdoRVJmPriN8P6wzPAEKrJCmKRc25+ePOO5mpknGFbmpxVFEcYxHAYyCAMWSgrTwpLqaRIvHZTokF4w5tuFx4YWkApJa94Z7uAoW1j5ghIeBENxyNrmJAC2sSS0AnPjVD2idRrrLdvit6pzysLp6C8iJD6INHAmlIqGSX4b2Ee+5g3ONyAYyiCYX7pDfoE+077bEYAIbdabotzXp0rglBJ5fvT6lRoM4xRCs6YfvX8RW7KOLEI4Hld4SkQeQNDY7sSz1wyzHEc4wg3l861cs/l9HS3s5vW9pg8heBMcFFZY4tyRkR9S0Vw+sub63ibG1iy4qmNd0N9+yX3mu+wJ2wVLvRz798NBTDOVLfd5YJz82//8q+002qnrhLiBTNCxU3vXv726YO4urtJnZd9kZBdJ4FBdkVudFonhdm6tQAAIABJREFU3TebIAhSSEbXb9RZCej69VmeNW55nvrT2/dJv5c8q2TzniOwIIX9iBQOmJQK13vaGFIVT2HjB37sMx1iUgdhSOWOxRpttVrysHtgyTb7ZVcAAaP9MCCTyTTe2b0CNa5qFWJJQsc9L1tv36p2c671sjLQucJbWuaRJDPlhc+xjDHFGYu1n8cm8ub+lsKgxT5PI/AlhKdbHahmasEce/BQ1ofIRwiil89eMM/JB8skBPCclzBk6vtqMBrE+nByGwGIFTG3+src+9fKPefWbXEynmnIt2MfluPkWac0sE4SQrBdksCuU/8kqSvil933e2zq+/FfgxUsHusJHB+zKqZMaM1cxSakrVPkTbXjVtmQwYEVpCOE+b/+5/8ts/UsihdMZvGCf7/8xHtDGy84zTiFwgglmXVLmiqU+o7Ss2UmyQPjz505BIMkV7rwi4kk/VH3tJVcJ+ahhR5jSxmT+50Offvidbln37p3egH1xxyFix4Qw0EQRvLRS6SwMcYU24eUKBlKHnfOhex1Yo/hAnAtoojzkzOyc+pfRQBry0iCgJlMp9QPEpzbk+S+g2nTSEIvwzRT6IjuReyebAfHD5rc3duLjHft0xwEyjqHx5WBjpCmBMZAutfvW+O0GEOPcyHbXquKWEFVj8AbOO5ePEZzc0sSEcDnL5jnVoQAnrdUaqN5fzCgZXkDLzyMHMeRruNmM9Cs3HNuAzlJxrPJw8umT5MUXLG0kDupkoxCxeCpRXWkVOrq7jrVZRO8AIzZYYaiFj1sK7kKAazP0VndmJ1j2CBX5bou8xwvOqmeHBzK/+k//Q+5rGdKK8QHNL99/ghCGKE67ICMiQDGKKNs58YniTwoNFdax247sArCgO6UJDIlymhj4/7F/J4SJ6uo2slTpDTnTJ0enfBnJ2eJm2tfKBcBbKYjT2EZIiavCmUIUhihhhR+y58UNtoPgo2316hjHS6n8uhNSonqtPf4riqA5YGpzTM5AuPJBBLzyV+0bzyJwJOS0Ks8gB+8fSMPrlzOULbL6oHATAbaFTYMRz36a2MtIwVXIsoi9KG2CQ/gODLQ0V0WIWo4HvHJplB+Gxve/AQzJ75O7PuF4hExRCot/WAqqmzQziAB/eyCea6XC0SJPYAf1cJMA18jvmUutVuTKQ4JiziZ7VY7M2tRK/dcZC+uL8t1XWXj4M7wgeWHtYauxrhMXgtjbnv31A/sQTI5djV+I66UVY2bGKvqSyodsdI3JBE2v91ON9r8UsbU96/e8rcXL3NtHeIF4wJ7NBmpf3z6yD9dX+3sJXISoKG2wWhxsYeS1C2vtCBzpcLZO+5DlVQh3zmPNEql0brSB8S4PVjJdFVWyHhi7UI84Jfnz+nh/kElYbWVio/AAykchgTy0WEYcqlyI4U1SOd1RjSINQfyd6eMbFZ0FfZP5ydnCdan+P1tU1oEnkIA88F4Miah3I2422WNhm8koR/tBay3b1k9U+1yZ2GV9grlG6qNSH1rBwKW0XgSzHm1kjMmGWOJDEvu+vd2fYjRIVDAi0uux8gu+yRQlNAmCmlbVVloGKe+fHbBWxUlgNEpkTfwYDgojOhYeP8KIaTnbukpauWes/+wtsgx8p5yXOGIRHPyFiVW+1XGqHEdl1Z6Iq02hKXVLgxDeX1/awdyaT1QUsFVvtguCZJdKZYyatpum4r5+iUE1//6T/+FHXaLIwse4gXf38nfPn+08YI3DL4qHEQL+z4okToJqUlhKKuJDMPdW8csAZzbsKx8jPgNRlzYj3//+h1pt1q5YWQzLgcBSMSFkI6O/kFM4cj4Ze4prP9/9t6sO5Ljyh+LLZdasAO9qdlki9RopBlRI2o0ksZjyT7/efHbfAaf46/pF/vFfvF3GIlsNFBA7VW5xOJzs1DdaCxVuURmRmZGsnFINjIibvwiMpa7/C4uktoCHLWiOHpKga3CKMJSyXo6bVCrQLU+7A9Y3+8ZJJUVpQMIqPlygTvn6FbTwN6nhP7iPPBMCoaaxLTNGoYAsEPYoBjDBiWHOHVRP98XNRMN9F1BqaQcjW/3MrnkgKQ1RUCn4rs+bQiDKVdIQppGYtrenxiAL15S3yvnnlk0Avj+hIVoYDFfzEv3mIcIYIit8T0fLmX5PhpL95wPt5JLJQuH51Far2NQyb3MVj0hWHruhk7UPs1AADyJbyZjbZ5FxitMmzEsVsoqEehYJPQmd7sj7+c+AUPBX3//p9o8ISFfsLrLF/zj1Qc6XcyrnAHNaAtjAeFGdXsjVwIWRgqMGWnbUgqJKA476XEPe66UYPBJ2Ozt0zEE9p25HIep7979HNO8d9CO4dnk7oKxAvLyJobhKOIR51QKgYHhQ6n0RmFI6wKG3gdrCuhO7Dpzb4JAlP35yVnqfarJc8vKXjMCGILuJVosl89G59csYWub3+ZqB30fMCCYpoBvLfAN7Rjo/l3Ho2XlxGwoLM0SG2NOEGYmBDUlzt+EUIIzHTV4EEdoNrf5gJ+beMDg4DCXNIyuXQkpZBAGxqR9AsaD1+cvaa8BBmCYC0IhRSA3cBiF5SxKd0plyBPrF8gTa+meyxkeHbUOev3aFOY65Nddx12uAuU4TveicHSDWVF9QRTy8XSid7wwSjT3W/r7irpim0mLwCanCRweMp0m01bfyPc65M0NF5phf/jF3jXoD8S//dNvjTCgQb7gKObq7x9/JEARbfMF3/uiNt8uGIH1rtkmfbQYCylFlstNkve32wZQJaRURny/Jk2lvLLcT9+Tt47Kyu3Zz8Hhp+/35Pu379q7ZlQGdvMaSozCkFN4Sx/NYyqlwmjjXA7r5pNOu0JKznnMEFDQKTAIh1nW5OYBlUNiQrA4GBxS3ysn91kOkWyRdiLApRRovlyWHrjSTvjy9ypJv0Ko8lyH+K6f2IOW65Wczmc22CE/rK0vCXkxh/2BnSMNHWnTGLfy0EArpOR8uSRBGDR0FMoXG2x094Mhym+xeAtbp1+ghYafuh+IAE4MwCUxTemMAL6HlVJhHAvwkChDeQSD5Lkezhxebume657Pe9vfJA/vWQPKQ6Qw5oxS5Gy5RfciaV+oE4Hr2xHiQugXARxg4FHKKh31o1usxo7mvC0GWjtKY4KF53j0ocfjV69ey+++em/UZVUhxZVUbHGXL/jj6AoBzW/nn8TggxHBuK1rqxRSpJ6LYNjoOiWpQijJA9z5b0MHABvmJtWmswshlJ8cHuHXFy+sk4COOdLwOmAfvU8fDTmFJTgE3jGObZ0DIx4LKQRE/tq15ZkxdxwmTo9O7XfV8G/CYPF5LDheLpd2jlU4SKC/JYRK13Eo6LTg/13mbHV+SUrByWyKrYNqhYPSoKZgvvR7fcu80qAxuy+qCdTPD6HLk3ISeKHG03E5et6Gju2DcVZ9v99UWw6HYNYwDAnkq6/r2RiAX9BeSelQSjIAA1xYAK/2fD7HgcZoYAgtByOh7/XSH9os3XNd8zdzu4RQ0ff99GObuYXmFgDPKUYptTZgk8cQi3W4RpPZtLw5nBiBFUYKldeGyRBb2RqDQKMivgqgCt6Og17/C2UupZT/6v0v2MXJaYGayy26zRc8mtyIv338QEfj23IbNLx22GMxqOtRy3hdNzSHJI1DJtCUxjHHQpbgwGT4+D8UzxqANQ5YUx2kwHC946xFKZUvzy7I6dGxRrBsVW1BAGhNt/TRYRQJyCkMFJaXo6u2dLGUfoCe5+jgCLuOU0r9ttIuI6BkGMdqvV7bO3SF04Axxl3mgBrrU6uMUk4J/eLuBBF2URTJ8XzKLC10hQPUgKbABgABYK7jNtW41ACUSxAR6JYRpiZQP3/RO4w5JYRlpIFOqhBCipvprd1Dnpkug96g6Wyu4DQvwyhkwPhT9QNMOK/OX9J+8wzAG6iSjTyO1Xw+p4WjCTCSoJvLGv1r6Z6rnrb522PMEb7r2gX1GQiTpPWMYfCctI95CICC/ep2BNr20oUDRb1SyB6CS0d6TwNJ5CBQ/lmD/FNIdcEIDNTP4Nl6/yGYoD//9veoKQrMbb7gD9cf1I/XV2TW0XzBoGAAA7BxF9Vi6xzcVfcfGjAWnMfUKt0+gS2klPtxKzY2trTBCOzLBQyiA3PA1z97i4b9gcE9saKZgMDmjnCjRuMRpHOx5/cdg+J5Hj8+OLJR0iZM3PbIoIIwwEFYUpq69uBUuCfbvRP0ehDxSx/ckZKgBgJ//TQxDayVs+UcLVbLwrLYCtqDADgHDfsDu3c2aEhNo37+QldDwAj8pRNKSmj5OgzwfLmwd8QHgMF4+65PMzP1pgS+6tfqoIUmhPBXZy9Yv9crpbslRgDfk3fj+Y1nizkuypkO/P89v7efxs7SPZcyYcqsFHKCOMwhTVGYl4nFvrpd10UPD9P7ytjfl44AXyyXbL5alN7QtoE0ysnKhOloQ9YQv3vg24wPxpi7jss893GuOs911b//9l+bd0nFSCVRSzFXf7v8kVzeXKGuKctgXQVnwzYYgeH7E1Luz+WLEQfHpTiOrcL90waLlBSyed+wQXtxK84oe6KAAW5Kqfruq2+wYyMWDZp95okipVT//eFHbI0a6cbm7OQMWYfndFjZt/YjsFqvjcjvt1/S5r4BTpRKIdDlcYc57DkDL/TQc9w9HVWcC4nHswk1IS9jc0elPZJjgmXf65G2GJfaMzLP94QSs22keWig73qrpos5DjUy3bZhPsAe4DCXPEyL1uC+ARc0DaIAc14NLTQYgF+eXbBBr18KbNUYgLdfCVIyjmM5W8wzh1PDZEIIJ7QPOylwLd1zKROlikpBme65LmO5HHGqkNCsNoBGbNfB2ixpOyGNuhxd7Ve0dwKKbnSyFcrtkoeqzRiBQ9qwP3zSIe3i9Iz/87e/bLQxTSoFdPNssVzx/778O7u8ua6E3aDkKZmq+rYYgYHGWEqRZh6KMArNvqWnGjl9L8EcEEJYA3BeSBN2DATU4/uddvO2UUW5FAZgEMP3fPHdu2/sN1TFmDSzDb4OAgr3hOV6lfRgo9tI2HzsvHkwprD++p4vD4cHFptmznejpF6uVijmsVEytUkY0OEppZjresJhjO6jVaWEcEZZmrNpskCuwkBM51OaJpVJm3C1fXmMgOd6wrNskeZPDVOpn+8jBzTQGO90VNkDtLqZ3GJRAfOj+QP+WUKg/PddP9X63qB+SakksIjQspk+W2UAvrvsJHt31mjgRBmHMer5vZ3KGEv33KDP6InLXs/zsTVqphtDQrACh4g2RCml67HRb3FwbNkqdaqWtM1GtqqxTN0eKIURVkipth1wUkOQ6sWUyvNUdRn0EnxzcB55ymEJDm6/ePeevbl4aZDExUQRUnKCMbse34i/Q77gSTfyBQOVd1P32K0BUyG1b/BVFEfWeekJlMq+5O0bmKb+PjmTIAXsT60w3qRhsoB1/2AwRF+9emPPBE2duCXLPZnN+O10zFbB+nNLGIOjFW7Lt6ITQth7L07PG7sH68TC1pUbAbVYLjAXIncFtuDzCIDhFyHEHOYkKW/SnJehDNCuZmSyAwMzHc+neH1//bSD0zkELA10M4YcvnOCifHnYUw2dPR5URVC8Jvp2Ph+5u1fnnLwjfb9fmsdqGPORRgFuefMPkzhPvni9JyVlVqo0gjg+50FxUDMuZzPZyyt1wTQLD4Z/WvpnvfNo8b8vqyJ3hgAMgpKCLFecBkxK+N18Aj6OLqudaOzkQRljOyuS6/NwZwa8ZYZgSGvseN4yHe9Jw9/jFL1u1/9Bg9Lom5JjXtJL3IhJCisf7y+VB+uPpLZsjra+5K6tLPaphqBVcL+vD+HbRzHSKry89bXMXZF27QG4HwIpjGY5qu5plKg5E7h7EUpEecnZ/Ti5KwmQW2zpiLAOefz5QLdTqdsHd4zAN8JbB05H48cKJAHvQEb9MuhwTN1rli5NCCAgbBGosVySew+rgHPB1XAt4kxpg5j2HHczAnNE2Nx5lIJXYKMeSzHsynjoho6Tv3o2RqLIAA00D2vR2x6gCIollsWzjMEk1r1oll6WIAGGprhy/WqtiCgLP2s8t1Bb5DKIahKmbS1tdFrkjAKcRnMIq01AG8HAMKBF6sFWgfB82Nypzwe9AdfvmPpnrXNYxMq2niL7I7wNkFOo2TAmDNCkOM41vOopoFRCInZfEa/8OivSRa08cSFG5KdDyWOgVXUlQhuA6qGvWrQGzzLvgD5IP/ywx8bc/EpALkSUqAwjtXfIV/w6BoFLcyFc8dAg/MoqwpgW7gojM3OByPFY473vldYkmZWYCmgmzludUtNKVE/e/EaHw4P6hbFtm8OAmKxWtE4jvjNdMKCcIfOwxyZjZAEzlsXp+ddOE8ZgXdLhOBCSrxYLixlsOYB/Wz4dTAYcfM8ELzgUFY4emq6mCc6ZPt0DwHXdbnvelbXZeDQQ0AKRoSkYQMwQvziNNBJRAisRzZX+WZEIarad3zagVzdApLeh2FAdepSWm8ATmwVCImYx2q+mDPxDEVLQi3iul+sE5bu2YhlU5sQlFLR8/zCB0JtAjWlIjACU4oh50pTRG6TnEIKeXUzMifHnaWTK3V6wcFWIQTUlvbikRbplNFTaaur8z3wPPZdn8CZ5LnnaHjAf/jVbzo1Pzb5ghGbL+fib5c/QZ5DBIfitjyN8maGNQrCJHZF/2LEBRc2gmLHBIW1Xghpzt7egI8p2R8VaiVmwPyQ3FlT0FqD4uvbr75Bvuc1YNSsiBUgoMbTKdDsi5vpmIa7HKU28wyY+zt1hnhuDDBQq/cHrOf3Khgm20QLEOAQGbpYLu33o3EwMSYCvCBdx9l5/9nX5Ib+mTBKdKisFBASkfF8QsIo2te0/X2LELA00GYO5oaNMIn+1fGBV9bJojTQyd0AKXUzHmPLqIVQwpTHXOo6X9ruKhvQyhtSiAvJwyhgOvLUgwH44uSMQVqhMp7aKKCf6swmGniJnsrt8Cn619I9lzEPjKjTcVzhOU6jNgwjgANPG4wko4w8SZFuipAtlAOo7CezKQnC0Kje3eXfg9OI9ZrXPDI2+jcnoC2hgWaM8b7ff1axhDGW7998Rb5+8zYnUM0vBvmCcZIv+Jb//eOP7GYybn6nkn0WS4JJI4xbOz1RMQZqaBXHkVWQ7pqZGAkllY0gSvv1WgaSL5ByHUd+9+49Ic1YMtKOsn0vIwJwZlyHgVqvA5IYgCe3NIz3GCusI+cXKDNG5dnxWSP23ozTw76uEYEkoCSO0Wq9srokTbiC0yuw37iOSwrSpCYSwXroUPYsg1JOsdUqXIM+xp7XcgLYtGJgsOu5PrV6T7NGrlHO0g+gA0rxQlHLGKkojsVkNrV3a4gIYIz7rt8dLMABWioCUeBFaaE7ZQCG7xAOb5xzNFvM6DYaGLzE/F5PIKUI5xw/FyVs1hJopcmCAHgEuo7LdBwus7TbpneTQzVjuAN0C8YMG+dCXI9Hxl40rbFS71Rpc3STXqQe19aWuTjsD9EuhT6jTPzzd7+kJ4dHZUPaiPqFgITBivx0dal+uv5IIAdikx+MsTDaszmJtpcU6A934CzCKDR23zJmfmDMlZRavHmN6VOZgrTEyWcvRBjxNNGZ4DAy6PXlNz/7qjsKkL3gdfIFNVssEt0FOI2OxjckiuNOApG304RgeTg8JJ5rI+rzYtiBcioIA2yaQ3ZTcU8cHglVrsMoo/q2MPiWHeqU4cwhFFJkMptiI1JyNXXgGyS3wxze8ztkYDJ8bJJ0SWBCxQ2MPdFAA721Yy1XSzPSAtY8XzapPfsNnAyFgeMKSQgOI3ltlsB8c3Fyyg4H5aQSMioC+CHci+UCwSbe7/WBWx28+qzCqvCcNLMCUKr6rtcFrvjSB8Bz3Z0GitIF6EwDSt1OJ9jSDnVjwDdR1QgckfTdhLsBXdLLphvPMSbcc12Whs7mL7//E6I26uvB7MZSSAHrpfob5Au+uUY7aTBN/TYwFnCbMdUIDOsUF3zXhUtFcQRUpKYibI5c1gCceiza4uCTpsOgGFdKpVJgE0r56eEReXX+ItX7adq37zQLAaBbmM3nyfiDAfj69oZkiQ7o0re1a2RdxxEnRydWD9Ss6V+ZtKAvjCwNcGG8kwg+QqXrQJZevZ8b1E0JUZTQ0vbDJJAojtXtfMIgoMg+7UUADI1lUaS2F7WSepbcjYH6GTdWRwZsB0zT2jSeTQtHgZY0UpVWO+gNikVVVyqt9sYUpIkMwiAzM0ViAD4+ZYfD7hmAJejYJrMJqI6RlPC/9mkzAoNev8uLhLahJQQr13Gb6YGlDYXyK4rjmI8mt4046FgFUvnzwbawGwGYg4kCVKlGegMSSsSwN9yrDen7vvzjb34oTbnRhnkG+YIxQmy6uMsXfHMF86I5XcM4sbASTMxa/zHmUoqdEatgeLDn6XRTDZxWpFRA25qugH2rOwhAnrOUuY4pJfLV+UtiWSG6Mz3u9ZSvgoCFd2liIEfc1c0IQ47STE+SFxhDcbP2nEydKPYyRJMcHx5hhznFKrKlW4fAcrWyynYNowqUncDFVxaT3CZdmUNIRRGCs+UcNZ11SMOwtraKJHjI86llj6x/iJtM/bxF785BRYv+HLiAIR+wAm7bjj5A0+47fqeD+7b6d6CFhp+0DxiAz49P2VFHDMBwI2JCSBFEaxKGEe75PgIPrth6caWdM418D86C4CViHz0IAMWO63qkkZYWPRCUWgsohCGvZRYv/lIFSlE5XLzAmSZt5EqKKrvzSgZlb3dAydHTBuMI+1Mapcjri5fiH7/5dq+hOAd6rSyyyReMNvmCL39iN9OG5AtOjMAYGeXtjJESIglQfvxgJHnMyc7cwK2cYYU7JaWU1qHjGRgx5ElWqHPrXZ5+v3/7DoGjq326hcB0NkPyzokELLgfb65zpbJK5hxCBCnU2aud73n86OCos0bwbn05qXqrFstldoeKVFW3/6WtcpoxR0DEb9nMRdCey5wK1y/FhZRAC02CKGz/gHawh4w5vG9poGsd+UZTP99HDmNBMaa70nxlAFqEcaSm81lnzytwZnWZRx3HOu0hhDikKAjDkKRxAAXj+fnxKT0aHmaYculfrZ0CGuiQgC8+jCMRhiED+haJZKLBAmqHw8EhZYzKyWxmFTDpx7VxbxJCZN/v2THWNHJg7Luj8OnsxqMJyierCaKQj6eT5mEL+SHh6XAUQa55kTLnX666bSGjEUjy07su8Rxv7/5EKeX/+M237MXpudF9MlU4LoVUUuIfrz+iD1cf8Xxldr5g8D7fZDvCe+dG6ZhjLKQUT9MMYcSFEIRzXr+cpQOhtwEFlzYpm7fX64Xh6do6HpWYlVmFUaq+e/ceM2anUxXT04Q2OOd8vlx+GnBwHr28ubIsDAUG5/z0DFHSOZ+TAoi1ryisvVIKNV8uiWU0yT6+25Q8ruNwhzlMk8FjryCMUk6JxoTCe1v89IJahYGYzqfMzpf0oDXlzYPhEIFDrn1qQGDjDI0Jxq3YlCHFC6N6KOrBxrVYLsk6DGoYGDOaBFYJ37V5uu+NBqRDk2EU7tyLQL+UGIAP2mMABgMEhdD4IAxRFIUkiuNPuNzPEwh0PyeHx+CKwYMopKv12q7uZnzP2qXYLBCe1YroRBZjzihBcLjXWa2tC6Hr2xFo1JsJRWIEVhh1MGqnmQPWIqlh7jXM+QDOIcP+MNXZA5Qof/zN75Dvei0atFq6AlGXOIhC9bfLnwgozE3NtQ5nVoyA0S7VFCkTTLhUPDbwJoZhqeI4sueAHOhbA/AO0BrM6JBjKjwukmM/6/m++Parb1qhKNOCYbsrEcvVit7XcUB3f7q+LJzy4C6lhuoaow9ElPR7fTzsD60zU7u/nWd7hxHiXEq8WC4y59XrKGT3dKyYK6WY63rCYYxWRcUMAoBCmxEIMq7t04Vcgngyn+LletX1qdCa/oOTtu95zKYGqGdIMUaKYFr7BVhX73XSQG9lup1OUJqoT119MKke0KH1/X5r5odObHfRQsN+eXZ8Qo8PjnQ2+fks8J9v/o/SyckVQhDRS4UQfBWsGXRYPGE8ecqb+n4kzWwxb67RpZTha0el4G3jMIe4liJA+4AmB25GCaPMLr5a0MViHa7RZDZttAIvWWsR/EG13cS0DEfJleSheSxZpOZX36Boakyw6rm91BFbjuOo//iXP9i1VuMs/ZQveD7nf/v4I7u8uS6sPNcoXlJV7fRXSa5a+VyuWvA0tet87kFXQkrV6P0+d9dtQe0IEEL44fAAvX352jpkaEfXuArVeDp9dB746eoSackL11FnTnC2ujg9T1ji7NM5BDgo0hf3ouo7h0CODoORDFLsgZEMdG11fTue4+aQXm8RpZTggqvxbMqalMZLLwrtqo1Sxge9nj1T1TCsBJPa1pMyurth0CQY/tFVP0R83kzGnb2HQwq1uvYcXWNYUj1JUGwQBRjS3d5/wDZ2dnRCjg+bZADGkO4msSvjKI5FEASJ0ffu71JjSAlRZ8ennz5A4LebzmdWEZMawWa8CAdTz3UZq4UVphkYFZEyobNgjDBqP50iOEJZWMOubketoW/LSmFYFL/Glc8R4dO4PlqBn0Rgs246suelp645Ozrm3//Dr+0ltKQ5leQLRohd397yv1+Zly+4roswOFkC/fMj2DFSURThrGfvkoavmdWCcV3YHMAPLqYQeahNOdLMibGReuNMh0QWZgtKibw4OSfnJ6dN7rqVfQ8CURSL5Xr1aF3+8eqDNuw2kcCJO2dnvkdMCB/2+qxv82lrm0dNqAjW2TiO0eqJb6oJ8tchI+jXMMbUYQw7jlvrIgFsjoyalf9gvlyg2XJex9DYNjUjcDAYWiOTZkx3VocxJ8D8bEIKJM39hnMVo1qjmnkQRXi26J4NC3LZ+o5PqbVB7JqlcsOMHNBtigLQQZ4enZCTBhiAIbkx8FnLIAwJ5PIt6lnlMCZODo/vX56SCGKgjrZPexAdIoZhAAAgAElEQVSASd7zfFIjLUx7wNzRE/D6tAtwoaHm4HVsel7KQj20hS0CJSPQlKhq8FYc9tNfKCGy69u3X7O3L1+XjKCtHhDgQkilIF/wJfrp6iNerJZGAFO1ERjot4SUTxp54Qxu850VmxYJvkJ2xriyF60k3xcC6k2LyR1YeRzpYH959/pnCJSW9mklAmq+WOCHqWLAGQcooO1TDAFKiTo/ObdrUDEYm1QalKPY6v/SDdlnw6+DTWDXA3kg9y+tj/75GeAUB4aX8XyKgw7n6Uw3q8x9axNI5DET5rq5KOmVLImUxXpy5eqVrHhtYJcArnq9UatKzhYLEkTdsmGBzs9lHnUsy2uqiRlzLsIooHCvPD06xieHx6nKZX0JF6GAvvN6prHgPAwDBjnadCqbPM/jR4ODR9E00/kcCdnQ/JtZR6gj7w/7g470tN5ueq6LrKE99xioy9GVjabKDV+DCtrI31IHy3QjMHgseo5H3Qx0ZYxR+S//8E/EKvRLnTqPKlcISZXkCw7kf1/+RC9H1wgYZ+p8YI/FFcVaQI5aKcWX52SMJOecPJVqpU5cmtq2zntNUzEAue9SRwikkGU5eDiQGKKAUSaaHci/+O27b5Bnc8Y3+bN4UnbYlKaz+VOUf+rHqw+lGC5BIasQllmi0ZsKPJzRDgcH1Pf8pnbByp0BgXWwRqBjtM9uBDAmAmMERl9iWk7UhHq6onNx1nkCHAphFIrJbMqEhFTB9mkaApRSMej1M53BmtZHk+St8p5bR78JIYISonU+gQPg7WzyZBrUOvpYVZuMMe676dn0qpLLyHY2d0kSRiEGfeLpkRkGYLC6EqkkiuJYBkFAiyjadnlNw+/6fg8PnqD4gVzC08XcKiCMnLnZhdokCO+VciHOLk27SxCCleu4WK9XU7sxu+sdny3mbLletbazoDxCCAPNdWfzVHwa3BzK3NZOjBI6BlF1JlMWbvIJ9TOdMUCZ/9d//XMJaNkq0yKwzRc82eYLHl2lLar1vSQncLLLln+sAePkg3ySHCKCOY+1Xly1AtSwyqwBeDNgpq/bdU6rxPimUOazk+e68rt37zVHGtSJhG0bCCrWQfAkWxkYGn66uixvY+hQXmDGmDg7PrX7XMs/Obh3A/WzfZ5HABMs4bzpOi5xzGJZ3pwdCBEuZWZ/q3AvlQpPFzPUZl1Pm7+j4WCI4C5unxIRAOpnhFnb9cgl0EAng8KFELfTsdlroebps7Hz9O2HmRFXLjjyXFcMe33a83sZS+9+PU0EMGQlZkJIsQ7XFKidQaCizz5FAsaEHwwGzH/CMxoijyEHiPUGLDoKZpSnlPIseRbNkLq5UoBXk+e6ndp8io4WcPN/HF23f/MCw2eSUMxG+BSdM7b8DmUF5E00mEIUqJ+zMiUMB0Pxh19/b9dVQya+EEJA7rOr25skX/DtdFKpZHB5JJAeqcRHIaCvk58dFcAIJZWM4iiT80KJIraiamsAbsUwlt8JnJydMn3zEMk47A3U12/e2m+2/BGqrAVgKntq3YAF+sP1x0xzJI/QeWjJ87RTZxlCiDw6OCRZmFrqlNe2nRkBtVgusQ6dY+aWG1IAqEoJocp1GGXU0C0EY8EIoVRvMF1pI6SQEpwLNJlPaGQdD0rDWXfFGxpol9n9QDeyX9aHMRYEN+RjLgAF9BMigEswdEM6U7pYLUs/Bxbovvaig97A5ujOiCoXsYpjjhVSkIcK93p9MAYzCI4tOi+fNABvGsI4jCMRhiEDoy9E/Wp7INJsj6c0IVgcDQ/pcxQmED6UXLB0yqWtg7aiLAg4jiM8xxoks2BW6N3NYVw5jmPobaFQ77QXBoeT2XxGV8Fae91GVphEEIAZWHVvfljq52qmpKER1nCBdB2XZaXkBGXr12/eovdvvurUgb6ayVK8FcgXLCFf8McP6MPoqrJ8wWXnSHoiFYoMozBzFGJxhNtbA4yhELLTmOaNbm3vrHimZznPD5QScXZ0Ql+cXXQOsjZ2GFjKZovFk+dnKaX6MCrfANxGXJ/qk+u6/OTwuHt3lRYPMJynwXlisVxgS8f79EAnDoaEStdxKKNm+52CrA6FgMFmXY/Am2u5XsnpfNbp81+TlhpCCTjUmf1BNAnQJ2RtO/Xz/S5TQjghpIzzhZouZrgrgYzg6Oq7fmOcgOr+RGHPjHmM4RwE+yawLYPdEx6wj0Le+p7v84P+kPV7fZTnDLA1AIPCn4JnahCGKIpCUobXU5L3LzEs7M+TBOeEs6PTZ6NwIII4jLlYLJ++ZNU9eLb9dAhsFO4OMy1XSTrpG/wWxtyhFDFmIFeQYbAKKeTVzahTF4BNLrFkre5Uv5GhhknDPgk94hiINUSUDPvDzHOeUSZ+/e0v6NnRiR5sbC2lIJDkC1YSB8FdvuCbK0hnUkpbUCkc4hFCUru3NMZCKQkRZl8oOu5fEkrrVNcqxgiOAN1VKHXZIazCuU4pUa/PX+Ljw6MKW7VNlYCAWK5Wz0aOwWJyObrKfMbILeeG1SeV3iV3GzUWBOXY6dEJ3GVrlMI2rQsBjBDnUuLFckG3Ck9ddbelHsin6DKHUcMNv1u84RzsMqdZ1t/Pk4VLJelkNsXrMGjLFGp1P4b9QWYGr1YDoqtzEPmLcBkRsbok1F5PWTTQd4Kq0eQ2MfK1/QH7n+t4zwZ1tr3/efoXhAG6t8eLMAof6SEIIVwpxVyHiWH/gEJksOs4qZrD/+vL/z1eBWsGiiMhNveEUp6MeWngUH9xcrZHFCUXq1UpxupSMLCVPkIAKBZ816NNOci2aQgBe7hB2Ivz86MKbAiT2ZSAY0wXny7QyHVxXG2fHyMAc73n93AeGjU4r/zHv/zBKiEbNLGkkhxjzCbTGf/bxx/Z5c11OdJjLDBCQAetVUP9MPo35vGTlKPldKpDtWLMlZSss8poAx11jJ59GMH3jlQKR+en+vHzr75Gfc25nozGq33CqfF0+qyxA/K/fby5qtahZGMEBoLy6gzPFY4rREIcDg+17q8Vim+b+owAF4Kj+XJpx/LerNjewxlzBET8UtKsz5hRKimhzRL6wVcJuqAoiuR4PmWl6srtalAIga2hyXPdQvXYwk/qSDpB/Xy/5wndNSG0rLzSMed8PJt0Yr9jzOG+63Wir0XXDyGliOOIUEo3dwmMuRQcx5w/e3eAKGuCMMGEqIPBEA/8HvY9/1lR8Pfef21iist8cniQgzf02dFpGo8xNZ5NIaFgmT2wdZeIgA4u8xLFa3XVCTUPY9ga4J8eZs6FuB6PqlXWtHrGGdo5jDlGCDzO0+w5hnaiYWLlpMsso5dwaXQcD4EzUp76fc+Tf/7+941WcOTpd1vKQL5ghDG9vrnLFzzTnC94s74gLUbgO4Pkp/QnGEnOObFKqZJmY4cNwNYBrKQ5taNahzH17bv3OA+lV/XS2hYfIhDFcRIB/BwyMefi6vY61znDov08Ahen5zbqq8ETBFItxXGsVuuVVRDfjeM29YLrOBx48oB6tWkP9IFRh5RlQKkaD9A1z5ZztFgtq27atpcSgQ2T16B5H0vK/tX1WlNyeOvGp0QaaAT73mq9osv1SrfYxtVHCFF9v291rClGJgxDpLASlNyj+QBdT8zJE6m/HtW4SREBDHQY9+/lDb7/YvkG4BzGXxDQcRx+cnCU5iAogMJvsVraC1WKSWXaK0D1DYnB7VMvAq7roqZ5lZaPmFK300lncjSUj6fBLaTIS2+w9M0VzZDoMjiYDnqD3DmqXp1d8F/9/BdpzivNHauOSM6llOBp+bePH/DH0RVa6LqYJUZgjAjGheYJHOy5SOzJENPFpZA45rE9/5Y1PyF1jVSWjrIsfNtab04Hpw0ThS9+/vbrQutEW2E1vF9yvlgQvoNNDQzEdTqVttGpAxz4+r0BBepP+zQSARmEQWeZth6OGKRGS2gdXU84jJUWfVbFTGk4/fMzECnOhcTj2YQCe6Z9zEIA5ly/18dWp6lnXCAKFneM+vkhck6JKSYg1/h0Pis1HZWemVC8lkF/gEAPYp/nEZBS8jAKGaFYEPw4z0OeVF+EEKGUor7f44f9QZI3uFwDcAEqLN/z+eFgmPYCrObLBYRG2znVMATAU6vv96ynlgHj5nkeKKcNkMQMEeI45qPJbdo1yAyhS5QCPHnBm8hGyZYIcseqNkEZiQmWvuuTvHnoKaX8H969Z6/OX3Rs9FreXYWERJKsk3zBP9LL0TUCmuUiT3KRxphglHOjBYPvHR0xxkhJqWQUR9b4W2RQ0pVVUsrOHI7AoJKXwjgdnO1/q8jeBnmdjg8O8ZsXr+y33aCpIpWU09l85302iiN+Pb6p916xSckFf+qVQ+PYghPfxel5Z9ZojdDVXJVC6yBAYWQNaWD4RQgxuItAHj9ILdP0h1HCKSnRelIjQBANvA4DMZlPrYNgjePwsGnQVbmOSzzXM0iq5ooC65IW9qqmQoAxp4SwMvXjUil1M7ltNZvtVtfW1UjyNNMf9DpBGGKpFIdggSdZPxQSYfw4H3Ca+uEduF+CHqk0A/CWuiStQPffwxjLQa9PsuRBgovXZDazhsQ8gNdYhjFmOeFrxP9+00AX4Dpu7ig4Q7qhRQw42N9MxoUV/lqEMamSTS4xcFhrh+IoicpT2Cq765lkRc4JuiSGPajv93PPZ0ap+v2vv8dZziu6ZLf1VIMA5AuGC/DtdJrkC/5YIF8wzHmMgBEvh3IPIyVEkmIUHhVGYY5KqsGsTa0ohJI8wG3q07N9SfZ4rJBS3ehvmYNagOGCUiJfnF6Qs+OTMiW0detDgK+DgAVhuLPGMAqNcCzdOHQiOPu2Yg/BhPCD/oD1bP5sfTO6gpqA+jKOiznWVSBmqU2AgQVjTCEdl+O47fggATGMhUMgZXGrVbMQrU3H8yleB+tS54mtPD0C4BA07A9asbel73U5b1qDHRjNwAhMy7sTYSTDOJLT2ay8NsqZHqlr3ebnzhtskbqhBr8IuqYwDBnCKKF/flJPhBEXQhBI/VWkq6UYgIt4PidnBkKSEOWM3js8iEK6Wq/tgl9kRlRYdpN/1sHg6WgfMxAglAjPcTsfdRBEIR9PJ63diAvNtpy0/oXaLKkweFu1RQFWEkSlVgt7ADRQZ1T5sD8slDsOcjb+x+/+zZ47Sp0p5lQO+YIxweTjaCT+fvUTG8+mmYWDeQ9RwJmMwBgLKcWnSIM8NECZBbUFEgQ6ZgCWSKFCF0s7bTYIFI2khvXh3eu36GBgqW2bMKem8zmSEuyqzz9BGPCb6djeLUoYUEqpPD85s2tXCdiWUKVarJaYd5i577Pht716MM9xS5g65lWpkJJxHMvxbMq4sGyUdY8QRBv2vR6hjxlU6xatOe1jLEjHqZ/vD1aZNNB390wB6Uzb7EjCGBO+63fexvDkIoCRCiH69+4OwXYRZ2Ck4jj+9G6eRaUUA3AeQe6XIQTLo+ERyfOxzRZzMI0XFcGWrwABOPx6rstYiU41FXSjXU1gzBkhkIO70wqK69uRXUd2zOwkcnNzYmmssqWoo1K7Pvwae1NT/mWMSbL/uAUVFKeHR/y3v/ynTq+XNc6eWpsWkKxFcPz3jx/w5egKQTRLlodgkoXmTwopIHJYRXFU6OCfRUb7brLRCSmVvbTayZAZgaJOZpRS9e1XX+Oi+1RmwW2BTAiAY9Bssdi7RqzCtRhPJ3vfy9R4wZfvooHBGdIoubJ2ixAsDoeHNGPwQNZm7PsFEQB6icViiYXspq4OYyIwRhD8kDv1TMEhqKQ4JYQz2k76510Agh56vlpUgrFt5GkEktzTjqM812usjqrOsb1zzhedpn6+PwBAA/0cJa/mgRrPJqitKU0hMr/v923AxBNzBmifwzD4pEvcaQC+o+IE9hQ4uOd5jDQAQ0fOT04RKMeyPhAiMZ3PGn2Jydrnpr4PVN89zyctp4dp3PCAYZ5RyNrCsn+AjevtQ4GxWIdrNJlN7RqSYiwba0S1NJcpRrfdrwDbwbA3LPSdY0LEz3/2jr579abdYNne7UZAKSGUpEEYiP++/ImCMTjtBS6VERhDYJkkSiHBRUyFdXKsdkYC/kK2+jzU2L282pmQvTVgTClIp+17nvju3ftCe1V2wW2JDAjw5WrFohRUtsv1Sk7mU/PWkk1eYIwabgR2HCZOj07tt5Jh8lb4qhBSosVy0cmcqRCViBFGkJ80T4BLheNUuCnQIwFlKm03/fMzOCkuhCTj+ZSE0e6UAIWBthU8i4Clgc4/OeA+QDCxhrp7EGKCBSPlh5RDStPR+Na8M2L+6fRFyUF/gGAftM8XCMgwCsk2+hfOCpTQvXMAdEJRznzARhqAgfbq4uQs79zgq2C9Nw9P3sptOb0IDPuW2kwvonpqA+P8nRFYT4UNqQU8aa5uR3tp3BrSHSvmMwgUjcqxwGpEQIOCPI80g94AFaWHYozK73/xK3I0PMwjgi3TQgQ+5wue8L99/ClVvmBwgtt1IVIICakEhKEiHsc22rzqeYORkkK298YKOQgRAqV8e/tY9ZzR2N4mv2kfv3v91hq2NOKqqyq4N0xms1TVzZcLNFvOU71bx0tNdwQBpf/xwRF2bGqpOqbPrja5EBzNl8vOnV9An0IIVa7DaJcY71zmZGG4MW2+6pBHAePDZDZleaO0dAjR1TrAiNLzeoSVb7NrFcTACIIh6y2214GHA1uR4w4P4gjN5u3LBwxGdKCAtnmlv5xZSikRhMGn+x3c+Sghac5KHFKDxRyu8NkeLQZg3RcGyONydnSy1/K9q6uQi6er9DLZpkB9b2+oAHqZJ219Ener5U2OZoaLGkkahBpfLJfMUvc0aMRyiKp7v8ohgi3yEAGMOFIozWGnMHbgme66LvGc4tRQcEH66+//1HUlR+ExaWsF23zBl6Nr8ePVh2fzBSc5gZOMwI+PQ+CsIqTEUqrcnp5txbfKfu3L7VmlLDrbSvZDpERV669O2ZtS1yZlBpZFIoEpJeLs+JS+OD1vSrc7I2fMY75YrvaeX2Atny7mGIzA9ikPAc/z+PHB0d7xKE8CW/N9BMCBTXAOOX87NSZJFB2h0nUc2jUjFLAjuZRZhyWEhEKKTGZTvArWdmGoGAHXdbnvep1adwpBjLHACKJ/scXskZ6qOhpoyCk+Xy5JEAaFhtO0whgj4ToedZhjmmh1yiOjKCJbm2XigIGBHDedGRTuFVGOfMCFDcBlRFK5jlP48C6E4NPF3C5gdU7pPW1TSkXPs8nADR6iRDTPdVHahcj0vuyRT12OrrD11Mw3ips8YqBNNjeK6C53sbTK7nxj3IZSG1qooRbHo0F/IP7tn35rlRxtmBgl94FLKQWHfME/4cub60f5gp+n3ILgU4kh76/dm0oepB3Vt9cAnKQQ0rIe1jc63WgZ8gG/uXiJjw4s44QpIw6KusVyRTjnKUTCYrqY0sVqmeLdml9peJqU85OzwgwvNY9AW5qXQRi2TpG9b3AYY9xlDuuQA/1nSDBQpRIb5XVvksA+wWMux/MJS5seZt8cs7/fj4Clgd6P0f03LPXzbryqooEGKSCz63g6RrxlKZ8YY0kUcLaZ2d63wUEuCNaf8UjSJxCWMQJfZdURFTMAg8JfoXQm6gxj1/N74qA/KDQ5ANDVekXDKMrQsn21SgQcxxGe4xYa5yrl7WpbhGDlOm4Sn9Tih88Wc7Zcr1rcxfK7Bt5dCmFVJNKlTClt9G+Z6OavO5k3FeSewwSrntvDjOnxDfvq1Wv53VfvtZ+B8iNpS5qOAFD9SKXoOlgn+YI/3nzOF5xQBeIv3T7B8BjFEZJKmt61VsvXVgNwqwfNtM5hiLTGhe48cA7/+duvUc/3TetdJ+VRSqnJbJbqcgR6iel8Shtzz2hoXmDYR32/pw4Hw0LfWicntMZOK6RQEASoC3q47d2SMUdAxG83c99uJk/CHkdBf51qWdQ445pRFaQAsCwQ1YwVGOwg0KhL1Ot5kU2YqODrtd/tTgiBzaEqjISQ4mZ626pzDCFE9v2+1ZttZpmI4oiKe0b+DXMIMLBn2z+VkiKK49RzJZcBeKPkT9wTUjeUdkGCuge9Ae37vbRFnn0P3NqBCtoqzgpDqb2ChIbTcZilAdAObSkVEoKl5xanTC1FOA2VSiXVx9F1ttVWQ7utrGKjNII/eqxsmkBKon9LcFjSJF7nqynbCJzkNWeO7Hm+lnlJKeW/ev8LdnFy2vmxswDkQ0AoySkm7GYC+YJ/ZNfjGzhagxE4OVvDGTaMQ5uTPh+82krBhUwI0arzgd0PtU2P1BXpwtxxmPru3c9xl40MqUEv90WxDgIahGHaVvh4NmWrwDqapgUs73ugPLs4Pa9MUZtXzjaXW61XKIrjNncRbdd0YC4EjVZH2NJ2jimcl1zmtOq8pHcSKy6kBFpoEkSp9w69InSoNsdxuK57f2ths9TP6YYWojMxrnKd5+swgLQh2u1t6TpczlvD/rCcihtXq5LrIHhkDM8VpIIR55yz+8bkXXBkNwCX7BEKiY8P+0MGtLNFH6CnDmMuFsuFFoVvUXls+c8IYAyJwD3aSXqcBk6EhJOeUOU5Tqs2oUTJjpCYzWfU5mfRNzHvqJYBXCO8vDZ5DpEwNTJZH/LNramMdBL30QCFIBw6s3rVPYcowQT9+be/R65jc5k0d9aZIznkC0YYkQ+jK/zh+qOcLRYk5jGCH/vUjABGQgrZnrMPxhwjBZtie/pU8xRJ3bwG5ixwZur7Pfn+7Tt7t00NfDkvJk7mMi07g+K3sylb21yQ5QzGvVrByXzQH7BBr196W7aBRwhAvl+cjha9mejB/FJKMdf1hMMYJRmjdZrZ63RSU8oSCuh0b3f6LRWEgRjPpyz9HtJpvHJ1Hu78BwNrcNoFnqV+Tj+1MMGSEVqlblNNF3MctsRZJGFo8XxC7RbxKPoXZiF8i5TS3A5UoDNKs59kMwAnxt8kLKG0SydEGh4fHBF9dA1KLlYr0nYvxPRLlxlvwgTv+73MIe5mSN9RKTDmQH3h5HJNMRcz0Oxe3Yyq3MzNBUOzZJZyWTOgLa6uzLkCNFCe41HXKe5Yth0Cz3XVv//2X3Mf0lo8lLZrORAAaui7HL8Uokj+7//v/0W307E2h4UcItkiWwRA2Ssla00OZsjvaY2/9cxvuEdruEMTQvnJ4RF+ffHCKtrrGUkETjuzRZbIDMVvpxO2DoOaJC7WrOkpXh72DvI/Xpye2zNasWHPVBry/yyWS5w2CiVT5Qa8DIZfhFDCXgfOn7ocSg3omhYRwPmbUUbAQdY+KRDYOIThyXyKG5MaIEW3THolCTjyfOpoSv1kUt90yGKpn7OhmBjoclD0Zmvl0dvqZnKLRWpnw4KtlVh8wwDrWgZYhNQ6WD86n4K+khJa5F6noiiCXIw7RzG9AbgC4+9W0ouTM92HKjWeTXFrlDclfphVVj3sD6pszralAQE4SEHYdlsOUgopmdDwpKdw04CiraJSBDRE3FQqb1cbK9EoQSnjg15fq+PaxekZ/+dvf6m1zq4OfRf6rRACIyKGKF/IswSK0jjmKowjoADCQRjQMI5QxCO1WK4w5AaGiybCSGCE7Tyrc5K0yABcpqNNnUPUpLZ1jQGlVL48uyCnR8dN6n5bZOXL9ZpFUZS6PwopcTsZ00bTfsI5DSFsCrvPLvCBUe6gP2Q2X3bqKVrgRdBNC7RYLijk2mnbA0prjDHoPrDjuMh6FTw9wpb+Od/MBwdQLgQazybUsv7kw3BXKcYc3vf1pH/SL12NNWLMN9lGcRGDU40dqKFp0INjyMBSrZOLEILfTMet0AXA9+i7Xiv6knMG8jiOGRebuNr7D6EE0oDlnlywB0sJ+YCjnfimMwAnCigI/C2fLgw8Ns+PT3WfrSAxMlqslnaByzlTdRfbJAHv5Z7guuWx9aVHYJNLkxGIBm76w7kQ1+NR8zvS9IEoU36MuGn5iMvsbqPrLskIDNTPOg/rhBD+i3fv2ZuLl42G2wqvDwGpFET2JQZeAi6cUqg4jmUQxWodrWkQhDiKIxRGEQJD73MUPVJKOZrcwO+T89HWWJRc0S3NoL4By1ITRkJJRa0TaRbQ7LvPIpBQcCOilCp8B4IF5+ufvUXWobba+QZrwWQ2y9QopCG5mdxQ2APsUw0CjFF5dnxW+DurRtrGtsIh4nfewnRrnw2/DrbpXvbPT0KIcCizOpX9UD37xmK1SChfC1Rhiz6BwOHwwOLyAAGI2Ce4UjrjVoxBogenlePGl+sVawNTwMYG1O/yuezJ6F+0ccgonmMaI8E5p7uYWPYagJNcjhXmcWSUytOjkzImhZovFzjmj63trViNGtYJxljXvT8aNmKPxXVdF9H8TioG9F+p2+kEW2VMNUOhK+qlGmltK21AYEs147me1u4wStXvfvUbPLT55bTiam5lWEolJRhswFsa7LJCShXHkQyiSK2CNdsadiEiDAy8eYyFEBV8M77BEAnw6NkYjUCxZlNn1DBRYDzzjGkNoj7dZEnONcb0r8OCUErVd199gx2bj76yWRDzmC+Wq0wRDMA4NBrfEnAEasPThDM9pBU7HB4Rz9WX/qMNY6erD+DUIHisFqts34Ku9suqB2MiwOfOdRwCdM/22Y8A3LcYAf7nMlS4+9tv0RtcSknH8ykwA7WoW/V1Beam73mWdvbBEABVu3Uszj4va6KBTu6g08UcteEMCYEZHX2ejf6FNCuEUKrrm9yVD3inAbiOw73ruvx4eJjpUpV2AoECbzKb2ZNJWsBKeg/mFdDo6MzHWJKotto9CMCluqmH/TiO+WhyW8paYyfOMzpoiKRCCftp6bgn+coqYK2wY60RAU35EbcSgZfhsD/UvueDwv0vP/zRemhrHPqaqxJg3QUDL0TmweE7FhwieEUQRmgVrFgSvZtE8MalXb4g5y+0g3Fyz3tyfoFTJkJYYmxpoaudMwps/s2MbNnQtiKb97faGbO3NY37nXjRSi4AACAASURBVO/54rt33zRzfu4FyqwXwJC7WK4Iz+hQDuWub29I2yg+t8oqUx1kXMcRJ0cn9tvQ/hkpGUYRhhQW2quuqUJMcJKnw3Vc0pZUV1VC6TnW0UIX3qAoCaJQTmczKuQTTqG6GupIPZtUUL3SdU+NgHMTaUiBV6oR8homZBI5nXB9gcqg2mfjKD7GUslqG9bYGkRQ+55PKOnksezp6N87fJneXOUqjMKndUnfe/9lVLKOQa8nB72BdoXtHa48iEK6Wj9OuqxxXtuq9iAAnlie6zJG7T7c9MlCCFau4zYuIgkUFTeTMWqbIqYR8ynJJ6/gT7kLgEblaiNwbYuQmiLVwNGo5/dwGfvM0fCA//Cr35Q7f9syngb0A/JrwYpzF8EL1KsoFkJGcSTDIMSrcJ3k34UoXjDAVs0Us/HqnaFP3v4pvwHIcYhRyeuoAeNniAgQldHMbx6cBipkcjJkvIwXQ6eTNaQlOBgM0Vev3jRzjho/Wp8FBAXcZDrLrPiDcle3I5zVcGwsNMkZGzHP89SLk1N1OboiVe+dabCB1GLHh8fYGvTSoJX6HQWG3zAKUxcw+UVQSBNCleswWsadweS+65LN0j/rQvJzPeAMKqXCEPW3XC/1N9CxGuGMpCu6rsnQWern4qMH53dGaeZzYOGWMVJRHIvJbNrYs/6Wna+D7Bo85jF77g6QRJbrnFMYsokpGT+RD3gvBXThiZqhAojYGvaGtOf7GUplf3W2mKMnKfayV2VL5EAADto9zydNjRzN0eVWF4FDv+e6jXLjCaKQj6eTxm6eTZ9QSXQuQtgqpZs+kvrl16EUh/nlOB7yXU/7ugT71/s3X5Gv37zV33lbYy4EFFJcyU3+XYwJVkrCBUmFUSyDMCDrMEhoN7c0zbvyouQSoEAhiAqbLxdktV59qiVt6pXtezY/cIEBSF+0uQbg9H20b1aNQEpnjzRiUUrE+ckZvTg5S/O6fScHAhghsQ5Dug5yUXOqy5srbNL+kwOCTZG7PNaw91DK8NsXrxJqn4+ja7w2kLbU93x+dFAOu1xuDBtcEM4rURw3uAfbaYwVIVS6DmSu1X5daDw+aTsACn1KKGt2WrC0va3+PaWQ4IKjyXxC2/DdVY9gkjuHe67HbC5vlDA3woXZPvkRAF0QhTDgGoKoIfXCcrWkq2CdvwM1l2TM6WIq0J3Rv5hgQYnugwgWXMSP8gGbZQAmWBwNDmjZ1MBCSjGdz+xJr8aPf9Dv282nRvy1No2xYIQox3EaY1C9vh1ZJxCtkyBfZTqMfY9atpG/+QbDkFJpjV+7xIWIj0FvUAozAaNM/PN3v6Qnh0eGINZyMTYe8AKpjYEXKJeEFEDPLIMwVutwRYMowhDBu82/K2UzqJHgErder8hsOf98E8+zfiXKeEUQwrVcRls+A7fdE5CXrUl9LWV/bRIATZBVowEYukspUT978RofDg+a0PvGyaiQQvP5AokcewwwPXy8ucpV1iSgwMEukQcTgCO594FD3HYTG41v0Xy1MEnkRJbz0zPUUcpBbWMBc3i5XqE2RLEzxrjLHEZ161u1od2silzm2OjKkocMFtzVeiUnc5vOMA/UlFIx6PUbdY7P089nywD1M8KsDqOl1n4YUhkEQFFSH4/xeDZtLJMlpGjr+/2yGH8NmSFfiLEz+hfeBCYnQkgptpQ4jtF92vAvDMB1KwuATvb44BhX4IXHV8GaBWE7qGtMnOX7lPN9v2ddj5o2cLvkxZgDFYbDmOEHKyzW4RpNZlPD5WzT5Ki4L5oVqhVL3/nm4BwCICgw+OV4IIeX7/qkTGqZv/z+T8h6uucYnCeKKIQg/a5MDLwIUbiYCiFUxGMZhqFaButN/t1ok4MXvN9NzTWYERFISYImswdMFAXoesEjGSFk8wNnHIhUr4MjgpC51qRU9et+aROhR/Ouo7rFsfU9j8CunN95cIM19NuvvkG+5+UpbsvsQEBIIWbzRa77AyjvL6+vvlDCNA5sjAQsgkrBEQiWF4VBkffq7IJsI6sgEng6n2FQTprywLGi3xuQYX/QnDXcFPDu5IBxXSyXjY1g3+o4GXMERPzaM7y+CWbpn/VhmaImLpWkk9nUSLaFFPLX+kqXaaAxxoLg+gyWtQ58CY3XRgN91xeppLqZjHFTdSLD/rCEUTG3yiAIENwDnnrgjIoxgaDysjrwRT7gTwZg3RfQvNIDdVVVninT+RwJuXFktU91CIAHVs/zc12gq5PStpQVAThYgCut5gTmWcXY+T5skle3IyDF11qvrcwiYBHQiEABIxh49ff9fikedNDDvu/LP/7mh9JOaBpRNKMqpYS8y7+LMYIoVcQFV3EUi3UUonWwZvejdztBb4aRjGOubiY3pZ2DIFAaI1xa/WZMruqkgIu+EIntw/gHHAGAWnwbnWe8wF0XME/U/x7MXMeR3717b1Pt6J1bfLVeM3BGyvv8dH3ZXAcmjCRGGJSNGPZx2GNQYggm/OzomA16/U+wSKVEGAbq8ua6tLNY1jEA3dLF6XllOqas8pn7PhZAwrJYLmkT785bViHXcbjDHFaigtXcISxTsg0LHLXR9WWC/LhuOOPFUSxv5xPWirQCFcC3oYF2WdlMoxV0JVcTlvo5F2zPFgK9N3jCVWW3ekIQEcYRONwZc85Ki/A2WKMT+wbGgvOYxHH8rA4B1iaI/i1tLmEMBMjAnpfMlY0BuICyNe1Ap3kPaBvPj08rU7AIIfh0MW/cR5MGS5PfcRyHe45rcTd5kHLKBkpShzFsKKUSXyyXzERqspxwt6pYYQaKEpSorQK4I50Bj8IyFTyvL16Kf/zmW2tYu5tPSinI5w2+NYQkBl4E0buQg1cGwRqvwpDej+BtA3Vg0U9JSiGvxzfkKa/dwuvgVrgkUgvDeJRChV4UgyaWb4ry2xSH3iaOcVtkBsXUoNdX3/zsK3vX0jiok9mskAH3x6sPGqWprqqHqTkwIfy+g8nxwSGCny8fxUPO8cfrK2qCsz3IPOz1Wf+eobo6BBvbEgfj0ny5aNw6AgpVpRRzXU8AOxmpIVdjY0c9g+CJ3oeC3roy9W0G6dr/KtwjZss5WqyW7e+shh4SSsSwN+jWHR4ifxGu01CpYeTMrIKWSNubpsfgCLJYLsk6DNK8bsw7sD+7DiRhcIyRqUxBgjDYeXeAfXSTUrrMfTQxRCfncfy9/19wiDdiIWSMitPDk8pkgfxrq/WKFvHmLXOytLFuCHF3HZd25YNv4xim6ZPnuqUaYdLI8MQ76nJ01ViqjJx9blaxJLcYBqax7MoGS/3crLHeJW0OYz7GpHTPXkop/8dvvmUvTs/bg/WeniikuJL38+9KxXksgyhS6zAkQRgQOEMlRt44AvrmzmCTp6OwuI3GN8/TKOpexzaUnfDH5gfOM2D3yjTFAFywm7Z4DQhs86oCta6u5gml/PTwiLw6f2EZKzSAGnMuIAoyb1WgqIcI4KY9CaOAghzznx+c+BZ9fnzf569Oz588t0sp1eXNFTZB10IpVecnZ2Vq2Jo2vM/KCzoywblarJbZ72M1ogCKZYRQolgGWvJyFao1dtSQpjHByqWO/aZqHQ/FuZB4MptQuIfZZzcCw/7ARB1lacOWRBficnKLliZ0QyqumwZ6C9PtdALsag1BbSPmJiDQa9T5IjPAGEnBhYriaO/doSoGVdDXfZEDOHOnNBdwXZcfDw8rnQhwIQMq6PuJkTV3y1b3xaURC9/1qKERonasNCEAG6LruqBx1lRj4Wr4bDFny/WqcEW2gpIRSC7vEFOIKt0LSu6VrT4rAhh9EWGyr/jGq3e494C1r55dv4fI4j/+5nfId1uTW1EBVWOSfxdDBC8Bw6SKwcAbhmiVGHfDRHG7oWmO7VmpyARCCN1Ob5M8xs8+OZwf0oiU5NbeRAXbdTUNYA/eaQIF9MMovRzdtEVahgClRL46f0lODo9a1rNquwNRFsvlisQ8v4KtiQbgpxkpgFsCIoA/O2oyxtTbF6+evfBB36/HN6juOxgccQ4HB9T3/GonUONaUzKMIrwOAmMu8fsgBCMHxpgCC5njuOD1Zp8KEIC0bozQUu9eFXSjFU3AOrsOAzGZTyFBeyv6pLsTm0Akj0KgSleeTtDs1jSYSV5lQmpnmBBSyJvJuFHOnoQQ2ff7jZI5zzTbF/0LdYIjFSW0qmOLNMoAPOj31cDvV9X5ZAyBKi2Mwau3efQ2eSZh3WXgMtnzeyYZBuuGpLXtE/AKddyS6QzSwSeVVB9H15WuLekks289iUASCQxksimiYeDSjxBcduz4dng6DXoDVLZjkeM46j/+5Q+NmWcKIYjcSaJ3MEJJBCgHA28cyTVE8D7Iv2tChE5bp3DibLiYIbgIPPvojv59piHYm5PTr33SI4ARMHebe1FN9kGFdUaQpgfHvqkNgYyOT2nbff/2HbqfozVtOfveBgFgbphMZ4XWTKjjp6vLQnVUOR7PpSN4SP+8lenrN293Gt1gDxzPJmi6mFfZjUdtOYyJ0+NTa7B6fhQUGH7DKKx1nNI2/tnw62CI+LVPdQiA0xmjDJxHq2vUtrQTAYjcR0qRyXyKV8HaovUEAmB4GvYH7Z+0lvq5kvlfNw30XSd5EEV4tpg16mwDadva+sAZOhZcxFG01/EeztWUVBSlD/qCJAewAQ8c4Ib9AevV4pWp5GK1IjujMgzAqC0iAPWGfdqPACx8mBDpOU6tmxEchmfzGbUH4ebNuVS5DA3JYd88dM2WGLx00xgzkjwirks8xyv9Mnd2dMy//4df7z3IVYXs5/y7CsgWkv5zIWQURQoomlfBmkXb6F2I4N0VeVqV0B1sB6LH5osFWQW7GSjSzvnCEN45zdj8wBmQhPVIKnOjKipyHsiAmH01BwJlRXEzStW3795jhxmzfeVAp7YiMohCvF4Xi4YER9QP1x8bYwB+Du2H9M/wHijUX51dkH0GOHBIW6xXkAahtnshyHp0cEhcpzsRYFm+nNV61YizIsZEYIzA6EtsWrEsI6zv3YTtjVn6Z32I6qsJ7h1xHMvxbMqaRg2rD4Wna4J5O+j1MbB6tfmx1M/Vja4ZZ2slZ4sFCZrivEWw9F2ftDlCPU30b3KGpkQBC19VM9YcAzDB4mhwSPddHkoERo1nU5sftESAt5fEvt9r945bMoaNqh5jzihBDnNq0zoBLcbVzcjOuUZNHCusRSCJUdxrBCaEqGF/WPqhiRDCv337NXv78nVlQ6MQ4kpK6BtE70LYJtAzqzCKZBAGeB0GNIziTf7dKGpc/pfKgKyxIXBAWq2XZL5clD5HM3dzkx8Y7MDU5snbgx7G8C0yE2n1novUyzwfbAEzECjJqa3n++Lbr76pzfBmBri5pFCzxeL5vO0pq4RcuB9GTTcAP6Z/vrvb87OjY5YmylwpxSGlxOXoqrb1FFKOnRwe13YvTTllKn0N9jYw/hahOa9CYEywhJwlruMSM5TuVfTazDYg8o1R61Vk5uh8lmq2mKP5amG6mJXJB452sH547Unn9CR2bTasVTZZ0jSEcRK9aULaQ9jHb2cTJMSGSNHkJwngcFzWVgcuISWPonD/OfNu/lSphzHGAAxK3JODI1w2heOOD0FAdMxitbSX4xJXC8YY992WJ/wuEb8mVg0LPGOUAE1Q1fKDB+RkNiWQz9I+LUPAUl62bEAfd2dfBDjkzOi5Pcwq0D8wRuW//MM/kYOBProaiRRHMqEuJ4QQLKRQPOYQbYTWUYiDJAfvNv9uhISUrR/zlnWQw1hOZpP9F4AaO27zA6cA32ADcArp7StNQqCkaG5wYjocHqC3L18bvR6ZNlRSSjGdzwvrBsAZ9XJ0Vfk9SCeemBDxXGqW44NDBD8pH8EFx4BHHQZHSIBwenyKGLWfAowX0JMvlsvCTg4pxz7XaxhjSQhVrsOoHbdcEGotlOh2CPA/N3pJ04qJuZUpIIci4/mUNIXavWwsN87jA/McczV0HAzcGJEk7ZN9qkGAEDACm3Gg4EKI2+m48Jm1CuQcx+Ge0067UBiGSKr9ejv4XjdppKv7Xo0xAMMke3F6XsVc29WGgiiNOi4jdXe8qvYhwtvSLlWFtjntwMWNMUYYrXY/4lyI6/Go2kbNgb1VkjyMctpnHGxV5zvamV2RbZs1xZE9z69EgweenX/91z9nGQlIvgu5mDDCkPYeg3Ityb8bRBFaBWsKxt0kevcugtfE6MIsHbbv3kMAIxnHXN1MMlBdlhT5l2Zctt8aXECqvISkkc2EdwAfKaVZLEElGQpNwLvrMpQV1U0pkRcn5+T85LTrEKftP1+t1wz26qIPKOU+3lw1+j4CBjgFZ5onHt/3+avT80znMTA8fhxdA5tJUXgzl+/5PXCIyCRv5kZMLwC57aVEi+WSwL9NfGAtJIRK13Fo1ToEE/EwSSbP0qibNBwpZFFqFQZiOpsyqYzIAJlC5nJeAQfyvterM/CslI6BMQkhLAmuKJ9oKb1oZqUGMVJw0DEtVsvqLIo5hwxScvT9fuu8iKSUPEwT/XuHWxWBLPeHyBgDMHjinB+f1j5RpZJyMpu1biLm/C61FgNvQc9xWdWTXGsnbGWFEAAHgOqi/JW6nU6wDsVNoU7bwvoQ+ExZSp5TQulrzNZUOwI7DBxgpBr2h5UZq4aDofjDr7//pLxVCEnIZ6eUgqQdieceF1xBzqV1FKl1sFEag3F3m4e3djytAJUhANFeo/ENrFPp28SYI6XqVUjb/MA7xksJKZUZBhxYGxEG+0m98yX97LZvZkGgxLUA9qp3r3+GdLJZZOla096dzGYo0zr+TAdjzsXV7bUZ60eOQbhzDgK7wZM6EsaYevviVS49zmh8WwtF6cXpOdCv5ECjFUU4lwIvl0tjc9sDaxwQRFanN2jFuFbSCUv/XAnMZTQiFFJkMpvhVbAqo/5G1Jnkr3Yd5TleqzaAxGGmwlyijRjsKoQEGl+MTWJEUNPFrBE6cNDlterBSIVhiNM61cE3SynNdXbOi5sxBmDGqDg9PDHhYgSUfXS1Xlc6EHkHsEnlIGKr5/lAddkksa2smhHwXLeSC3ccx3w0ubXKUc3jV1d14ECCMMJKKgpex//jT39RQoqEFlcIqYTgwHGkOOco5jGKeUSimBMuOOJCJPkw4L83/3783zoUfHVh0+p2nzACY4KF53i0dDYJDEZeBOEuSeTBH3/zg4wggjcM8SrcRvDGSf5dmHP2sQgAAmCVG41vMtEpgtf2c4r1OlDdepFjjO0eejcAdzm5zcCjxmjxOuajbVMvAsBo8e27b1Dbc+AVRY1zzufLpZZvPuYxv7odaamraL/ylAdHfaXQTt3I12/e7n7hmYZhz5zOZ3g8m+YRLVcZuFMMen026A9ylW9yIYWQEJyrxUrP3NaFxZb5gDFHQMQvtfoiXdBqrQe+Hch5aXOMaoW10spgDYjjGE3mE9pV5su20UCDnh2jhHGs0rlkG9sgALopRiqmutwNvhpNblMbIusYR0yw7Lm9VtmGpFI8DIPUZ31MkIBEmVXib4wB2HM9cTQ8qLTzu4CeLRaJscA+ehEY9PqVRWzpldzWpgsBQrByHRcYUXVV+age0FLcTMbWKFMawuVUnBh5UaI/SiJ8gRoEYyIpJTTh0SWQ1YTAARf/L3/4n9JNIIWETOI3FFhmEFDyKpQsQ/Bnc2YjZPOGUlujsgK63jujsYo5x5xzFfKIxHFMHhuRvzQybw3O1qhczjyhlCWKO821c4QUgekAk4RLCQoyBk4GUsgkj4fjMHFycEKtE5Nm5FtUHawzt9MxAsVKpqfEiL9McjzxMiaEY4R0f29Fxaq8vFEG4Mp7bxusGoHEGIIgjUA5357nuvK7d++tsvD5gRWL5VKbcjyKI349vjFqHc1CNQ5n711OSvD7V2cXBJie8jyQMiMMA3V5c10ZRmAAuDg9T3eXyNMpI8soGcYxWq/Xxnjjbx3gXMfhDnNMiqIycgRNEMpljtXnmTAQGmSYLedovlxoqKlZVYDxqe/1SCsYBjAWECNBrNNurZPQIBroBIeYcz6eTSo7U2UFH/S+rgM8H/nOjVnbK/39jNG/IA+hhFdN2W6MARgMg/BjyiOkFNP5zBiDtCm4FJEDLlp9v9exi1YRxNpblhAsPbc82pUgCvl4au6G196R3d8znFBXwoO3Rl6FMRE0yZJK4F9JhPizDgIYqXUQ4P/tP/7H/sbKeAMjIP6VYE7eZ1QG+o+NUVkiIYWSQipwLIrBuMwhapTjiHMwKuOHkcr3o5bv/3cZXTK6zicMY0AXU9AIC44GsL9jSPsghZRc3Bl7N2P2JCQJTQsh6vjwpPJ85kaPkRUuQQDmzXQ+RUEUZkYkiyI+c+UFC2yVszY/MBBOyFrvBSbPk4LTzBZ/AoEyxxuiFYa9gfr6zVtjlUM1Two1nk613VnDKDSKlSjL3IK5ghTeufYRQvjZ0TErpstRPOQcf7y+ouB8V/YDzk0H/QHr+b2ymzKl/uT+FOY4o5TRAVD+KqWY63rCYSy5/9nHfATAcOZSxxgHAvMRM11C8HlWZDybkDz3F9N7t0s+13WE7/q1nut14Gepn3WgWLAO82igIe5FrNYrulybS/fuOA73HK8V9xClFA8yRP8ijAQB3XfFbCdGGIAxwfygN2C+5xf88rQWhwTaLAizK/K0StGiyiilouc1f5Nt0ZDU1hVQKFNCpeM4pSz417ejhObXPvUgsKUPvYvkBWoPBX9HCE28EzEmKInmhWDLjA8YWcI4Uv/+2z/gw+FBxtLGvg524o1ReWt8vBepDIbKBDMA8ZNROaG/TiKVP1FfixhxznHMYxIlRmWgvt5EJz/33xDNbPxzRwO99RRMTVv5icIZ8nZiJZSUgnOg5iVJZK+UuboO8/nk4Bg7OSNdcjVqCxmNgEJKzhdzsgrWRstZSLgkP/AmSr5MBo9CMpZZGCNw4qlPQ21wlHiZsHe+7ifSIOjChFIizo5O6IuzC11VtqMejGQYhmi1DrIfUp9BIIgCfjMZl3LnyQp6FuMv1A1nd2Dl2dfO8cEhgp+ij5RSXd5cVZK/jlIqz0/OtI1z0b6XWX61XqMojspsIlXdd2xPSdQPRIx38jyRCikDX8JIMkLhHwOFsyIVREAFYSDG8ynLez8u2H7lxdtAAw37OZDa2XW08unzqEEDaaAhLRWazmcoyspMVhGcwB7T9/ttOIPJKIoS/WLaB4KiCKG06m/XCAMwIVgcDg5pXtqgtCDneW86n0PkVp6itswDBDYeHq4Rl187OAYggDGHvJoOYxrnBBbrcI0ms6m9mZQ8xHDgRAgJhBFRUiVGXoQSw76CvJFbA69ur6aEJi4K1a+//SX7+vXbknvZ5OqxBJvyJ6PynfJuS3+9SVeyOW+B0RmCmoXYRCpv6K8hl7JUsYgSo3IUxwQilp8yKD/8O4h41vlslZVwSBz2h88dEvdSOGuWCR0fHNkcijpBbWhd4GG7XC3pYlWAQg0nd7S9CnYTIII8U7DWdy0/MKxDQohaxiiJwkZIlkUHbMK8sjI8jUDZ+cEpJer1+Ut8fHhkh+AzAmq2WGTK474PvFW4NoKZCAOLTaa9JskqCFTke+9Vvu/zV6fnWu50IOT1+AaVHbmS6KCGhzS1Y+G+gTbw94Dlar0C1qFapQPDL8aYOoxhx3GbceCpFTHzGodzkEOZNTaZNzR6JIKzplRkupiVvvbqEbhYLbC3QXASo1q2rWLC5CmdOOZi8Mrduz/nqd6WyY4A6LarNujtk1IqpW4mt9jU1HTA7Nf0BwgfgzDI9B0mkfskocCstPuGGICJOjk8xrTi8Oc0SAsh+HQxb+iukKaH1bwDHg6u49LWcLxXA1vrW8EYC0Yp1WUDho3t6naUO7Kv9YDn6GDiqX1n5L2jAJVgiIN8BffpmqvavGLBRRiG9M3FS/7Dr39r1+YcY5q3yMYAsTUqf86nDPXdJVT+ZFSGnLlw4JQQhfxUpHLMcRCH9HE+5cdRy0IKKYQk/V4f3V3SclE45+33rnJHw0PUIfrAMiBsep0cKNMmRXPsNDS6E5QnGHVH8VBXVER2o03TPysr/xcIVOAg8vOvvkb97lDh7pxgkBhiOp9nUuTsm7HLYC0ms4nWOve1+ej3OHEiyRRpATTJaR1PGGPq7YtX2jRZcKcbzyZouphn7mqWAo7DxOnRab1jk0XgbO+q+VKvM0O25hMKozvDr4NNDPbI2p8uv48JVi51tH3jXcbS5L6DYyvnHNZfGvPYZFELy+Y4Lu95zaSgtdTPhYdfbwUG0kAnHQRWmziS09nMOL0pOJX3vB4EEukdi2pryxz9uxVPlw0kS3eNMACDwC9Oz7PIXdm7W+70MKqfMqeyTpfQEBj6fNejlLb1flUCaB2pEg4vjDEMHlMFH75YLtm8SBRWQQGaWvyOjgsudNu8vBJjIiklNPEsvKNrrsrIuwNHHkYhAy923/fVf/7xL/YS2tRJdyc3GJWBPjfxSoQY8nvU11tKI5h3/+f/838hSpmEi2hRCmedkEHk+6DXx4PeQGe1tq5GIIAF55EaTW6Nu1BVBh9GYACGW1vlHqyV9fFeQ3UZgOvoq23TIAQqcBBxGFPfvnuv4yxuEHC5ROGr9ZrpvvcvVks1XcxqObMmLCoI/mQz/iZ6w4ypWr5+81ZrZCf4ES7WKzUa3xS+JD43G+Acd3xw1K60HknGGIkWyyWpa9/CmAhwDnUdh9gAgFxrkXGFIJ0bI8UVNsZ1zAr0LAJ17l1VDAvoGA4GzYtAtNTPVcyO7G1AjnSgyc9estwSYNNarJZ0bViqqm16tyafEQDbIFhnPqPCXIGECuWO/OPajTAAU0LU2fFpLZeiNICDYhqooCGiyT75EIBNquf3gKIiXwW2VOsRcF0XFWQBUJejK2PpLeoeQIjC38iAt0bebV5eyC1LgQ4YvK8MMPLugkqugnWizAB5//PPf03y4ccIFwAAIABJREFUR9mnPQhIpbiSkoIteDydiMvRRwZUVBBpizBSy/UaQ0SISbmLN/lLemgHPXV7Bsj25BMCQgg5mtzAeloMlQqMO8UETFE6MQSD3r+9+YHroIAum/43xcjaVzqCwOae5oufv/26uw4td2M9mc0SnmRdD2ALxt/5skCagJzC3NHHg/E3s3IKlvRNBLBKNSfgLPTq7ILoPpcrpXgYR+hydMV0jst9SD3P48cHR6n6mXMoqizGpRRovlyWhteuzoBSEyOMXMcljs4sT1UiaNt6hMCWtW2bPshC1BkEuFSSjmdTHIRB6zoN8zqhgW7SWoUxT2IzULPDJls3mTbe0IrWQOubFkvQodWdDuKhrJs0oc2Mwod0iFEcJYyGWR84X1NCKj93GmEAdhgTJ4fHOS4mWWHO9z5Qr4UxF4vlovIByiexmaWGfRshZebImCOV57qJETLHw2eLOSs7V1QOuSotss3NeBfJm+TlBeUPIVQRjBl48m9pmysVTGNji9UyqY0xKn74x+/pi7MLjbXbqqpGAHJmCCkTq9F4PhWX1x/ZzWSMZssN5R+lVAFDiOe4G++hu/xEk/kMgWHYlAeocD3HgygSe04wZVBKlAOiqUa3N1jI7Af+h2K1yciX5IbfRAW37juAcQIq+hKn1ZdVJ7m9FITuGXs/qgwL2xDsfUkC6jLnAyGEHx8c4jcvXnV2znHOORjOtE45jOR0PiPb86vWundUBo6fiRk75xqShf4ZmoH5c3Z0zAa9fhldFFxwfDm6ImUpL89PzuDMWYbsVdbJY87xcrWsvCNwB4X7puuw5ubUrHKkGtiW57gNlNqKrAMBYOsKo1BOZjOm4+6jQyZddTDm8L7v6933dQn3RD2Jbg9XHzlYYpfaUzXGgkJgTT59duk4SCXlaHxb3V02RY82gRR9o2RKIfbdK0qugyCz7EkEPwaWzcxF04v2zJtGGIDB6/JocGD4oqvkYrUiUdzuPAiFZ9QzFdxFSFU/w8vqkK23FAQI5JZx3MxUklJJ9XF03Znw8vt5ecHIi9BnI++WrrmODaWUSXGvUrh8LFerZB2BjfO7d+/xL7/5ruxmbf06EVBIcCnA4Eumi5n4MLqit5NbBAbdhw980OenZ8r3fEQx+eL7hogQ8Ei+mYzxyhA6G1CWQrTD6eGJ4ecZnQPavbogAul2OkZtz4tVdGRhP0+yg7flAWOKVLSsCLQnFkCR13DTFshtP6pHgFIiX5xekLPjk+obr79FsVitaKz/ri8m8xldrjcOjJU8wCyBFGSPzm0IzEr/DP06PjhMfsp6wPkK7ntrzZFoSR66Xl8d9Ae58Sqrz+nrVZDnD63X2ZWR6dt4/GaSh5JQ6ToO1ZDOqYgotmyJCFBCOKNNCpMsEYyOVg3fupQSzxZztKhyP6sA78PhQQWt6GkiYezTmmxBj1y2lg0CcJ5g1FgDPQ/iCM3mZuUDHvabR8NeJPoXQb5oQlgdzJu1G4BhI+n7PVySt6judUgB/UVlyh/d0tdYH6WM97zGhvbXiFz3miaECM91U1/AgXd/Np9RU4xAukbszsiLQeEMm8PGs5pIiOQF+iVMNtG8dWwcuvqYtR4hBF+HwSfj2tHBkfiff/hj6rmStT37vg4EsOSCA707mS3n4sP1RzDaIqCg2fXAvD4+PEJ9v6cYgU/gaTsS5IeL4kjeTMfMBActiLhhlKGTwxNjvT91jGpX6wAezclsisIo1AYBsMwoiJtt25NEsCbGh8xOXUZCgTHQ01dCqZnk7FSqfXPCyIFtmFAVUMbDfvvu9Vt0MOgcc5MaT6dlfHd8Mp9Wx1K0Mf7CnwLOaNnon7dfke/7/NXpeYF2032Po/Etmq/0UmrDvL84PW/qvUqtwwCHob6zSZqRYIxxlzmsBZHTabrb2XdAJ8EIZW10Lu/soBboeMLeJSQazyc0iqMCNZlRFOa373nM+Dykm3tVoge0j7kImE4DDQE18+WSmELpnjjgeT1grjR3UJ+WTK2Dda47w51eHwgQK++zAQZgwg8GA+a7XuWdz9GgAAUzJNDOUbbTRdz/v70v6ZEkSa+zzT22zMjIrbqqprqqe7rJmWmJM2IDxIAEZnTpE3+hTjzoIAE8iAdBF4IHQQdJAC8URECERHBAcoZdmRmbx+YR4bYIzyOzOrMqI8Pdw3yLNG9Ub2HLZ8/Mzc2+5X2+b3zhFb/CnzXqNR08pUowZjzPS6RAUFrp60G/dl8MzE5s5I3zJpJ7eXmZ4nG4I76DSPBR+by8xSw0StVqteL3o+5wUPjTX31XTP+ul8QIKKUU55xP5zP1fX9j8B2Mh4nrwwnkqN3hSBuAQ7THxc5vB8LgZ4uZHgbj/XOyJpZ0e0FQV592exTGYPccBgKIPJrOpvYjzpGffY8orcqje0tdSwnltQ4ILtAAXPk5dQKWhkBRzgH4hn31+TvqPxPKT+AarpYmp+hJOZqMRSGOqpt7BbjC9zp8UMYyfZeEEObNi5c7z2z7vkD4HgfTCR1Ngn2b+lCfMio7rU5eFNbW5HysoUUYkiIMMXf7jxCeQsQvr5/CNtd5OOTGHf3zIc9utrHBe3WxDPV4GtRSD3d/1AhW6rRae303s6GYvBbyFTPKnB0iOWSllNyk32MUf5UiQIJOoTcbBSMiM+SuTdB8qiLQh/seXMm8VPVKLiyjKBIIcsn6lJV3vHQDMGNUnRx1eY0m3EznM5pX/pmsC6jK9fBSNzxflLXIq4yNk20LAvA05Zx6Qjx5yIEH03gSsGXBHs9p5g0RgYSACpOAOhJc/+D8VwwcuJTx+9G8adp9hmVVuFpyde+gIoTQf/KLP2J1ou05xHmDwZcxhih8dTW4ZjejIYXBV2uderigUW41mrR33OXI94vo3xQHaGmI4cPxmNqODEk9kE0+POQEfjYK9CwY1aUOmCbmixnPI4fjIeUAfmo+654fGPOktcnXweTQnQHq8sJXXc6C1kmz0VBfv/3yuSgbzWQ2o/fPmPaWgZHDYCxs0xZ/Ip8l4y/azUL/fCfPu9dvCqG00Mao1Wpp3g9urCntOWPm4uyiskrbj+ccrCSLRZh7Soq7c4rvedITnosEtbc51KIlOOaC4LsWwjohi0YgTsk0ngTWqfmLHshx56jSDBCO+rnoFZG9P9x5ocvO3kL+NZXSahAMK7Gve54f24vyH7W1HjJH/27O2NTwktZH6QZgRD2fn5xBUWptNvJuCMmzx5NJfQTOG5Ad7SPEvdloMuclWvJE1Kx7XDYFF+wpxwEplboZ9Uv/cGGNIw/vbSQvQnfNxvuLG0aouKNrrtM+V8XlMg8XMVfq3cM5l9989RPx7tWbKop7sDIprSWlRCxXa90f9s3V8IYP4EUos3vB3R6GkENMn/fO4gNgfHh+gv55G8BQCiqtyGA84lWgt+l1e6QmLCcHu2b3G5iR4XpFgklg/2JSAJ3rfmO3W/sueug2rYHdxotpTWut8zn/W6FtLQYE10u5CMCx0BTAGgCHrON2m7599ab0c3beiINNaDKd5fNuEyORpiJXZ1Wr+wfon2mmCGCkqnl5fsl8r6hIDiNXUtKrm2uOc9++D8Z93DnmrUZz36aKqG9m8xnNM4IHTvzGGOH7DQWnbKQecs/zQgBrALkKuQs8fF4Tn3K0CMqI1pEeTccizz0ppViJi8c00H5DeIV9uxKLBoWIjPWJbv9NAVq5RaEbRi6wis8ZUuvR6XxW+hkfTkbtZrt0ORKuGhnJSOyj98T9Ct/VhP1ZLVYBAzAll6fnVgdVQGNyuV7xRZiN87sA+SrXBXI8V3wDrBxmTqCNAcgTgj6eW8iYYTCmq3VxuUduKZsRARQbeWH0hVE3juS9o2tmlOAv91hHwMwW80+AfX35mfz2m1+U8gG1PsKKNgiDLyFERHJt+sOBvhr2Y1pn23RzQnB9eXrx4bCMw7PHRWaFLDLgLZehGgS4jO5nnN53arpHXeQz3rcZV794BFQkIzMYD/PZYyjRxJDMa7x4OCz1WNP8wIaQOA+wJRQeNvNc10IuYB5+o0XlDuecqfPeGX9xdnHIoMrFcinyyp9qiFFwSLOZO/7BZNwxDe1J+3zXJsX9JmNeesaYPD/pFU6jDHqG94NrK3dCnEXPe+fV/S7HbBSazOZzloVpJ8mLfHvfjSkZYcx3OpwkqB1uGV+4NXC4s2t3ZFCOTWYTpEy023ABrVWVBtpRPxcw+Tl0AaMmZ5X3nDHBbEpzO5+mwPWofZSidKlF94r+heSMs9Lo3Es3AHPOzPnJWS2tJZPZjJStVC516SfsHIaydrNVyzlOOERXLGcEGr7/CUtAFEWyn4NSPr70UkKNNjFvB2UMRl54cXGKK3Bs8I3/LedRu+bvI6CMlmEYfqJ4bzab5rtf/tpNhsXlsjH4GnjwwvClrvo3YhAMSZ7RK3if4Az2IeKfEs0pY/t6nMOJRBtDx9OABNOJRZTSNYXvYKfZpp12J11FV7pUBBBK3h/1ObTh7rGPAJgyCKGaUpqPUdWyyLkagC3L6po7cAQKZA9APuDXl5/Rk+PuwYI6nkweMMzYHChSCPRHA27baQ4ybtLMIOUvsRY5gfOKyWgAhiy94278p+gHQt+MBgRsQfs8uPN1j7oMd8+qPZQQKbWis/kcaYWsi4c7MKWUw/na83znzmwd4fo1yBiccb3qOkTUD9JnILGRUmk6noz5KiouUMMGsFWkgXbUzzZmtvg26kADfYsK9H1UZUjdZgtVBH20Gi0EWNlqMq929o7+jSP6KS0tlUbpBmDP8+Tp8UktFD8fryKltQqmE2sXrrxWadntcs5Vq9F0OJU9ETXunzJqGp5P74yuuPQiAjGSUaZR3eblRV1oOW7z8jLFkW4UpmYa/90ZeTOha78SDlCr9Yquo0/nGzmUv/vjfxt7qLsnGwLaaAnlodaKDIORft+/4cjhu1iG2RrMUOusd/qAJjkr/fPWro2R2hhQVdN9lYMZhhdXYYyqZrNNuu0j9z3MCmKB9YzRpj/ChWh/WsltYt9RIhc4rMp2BTokSkjF7wNGaW2svr9uDVR2STrB7iGA8/eP37wjrWYtqHFTzZ2UUk7n89z2HlBj3gwHLOudZetgKFFwRwUrUaoBP1F4Q/1M99rjms2mfHl2kRueT40V98PRZEyC2XQvSHzPl6cnvVLG8ITgEoEHsxzW6g+GX4+6+9ReS+egKsfprChngu+1JRwUJm4wyRHAfhyulmo8DXJxWEkuSbKS2Acbvi98ryLOP5QqRih3QSfJ5q9qpRC5HQcQ1SBoSCkVpyopC0O8e77nx6wjVX6wp+2bXg52CMZ4aeuidANws9GU3c5RaYttzwUmF8sw35w+ewpYheow8tcsqXcVYHMyfIQAPFB9z4/pYZfrlRwF4yf3jbvIIkIIDp23Rt57lM2UIccV6Jsd1tVHQC5Xy0dzygjB1bc//Tl/cX5Z/VFUREJtDGhMOWIHRsFYve9fCeTwLYOuCZEWx50jhjQB95996Z+3QW2M0euY0neUSzTOrimGkQvOLL3jE6dN2QVWib/jgD8MsjsZJRYd0VsWI7cS91vBgvhmGwOCjQozbIB6U1nMAVxgFGcFp9yJtCcC8TtDqCaWqH93ieN5wnz99seUV99Df9dQ7v+u5osFf8zBME0jT5XdGID7LJL2UlHc7Ze2ZLxrZ9/oX7QjhDBvXrwsjZkH57xZuDCIus6KD3DodXvUE9VQUSGKHBHkYRhmHtNjWFDKFD65vuexqites86lq5cdgbu7WB0MGNlH6WrmjIAyxLDxJKBFOpZnHROoWY9aHav7bFZZHPVzVuSqU48zJllJuV5ToiDn4UKUFSQBWT3Pr7bNiBIpIylsOHN+YDxMOUk2ipdqAMahotNqs7rnxQumU5JnhIiNiS6rDXg4+J7P3aWirBk4nH4RJQM65obn8Zthn0il4hzBhMT0Zw/y8oKujpINtcJdNO/hIPEMR0KJWSwWFNaBjx+sga/ffkl/8sXXzxCYZEM2xiilNYVlZTQN1PubK4EI+sl8vwiJZL1vL4VccZ1Wix13jh96YcBjkjKep5IZBr7ZcqFG4zHXRu87lFT1KaPS44Kedk9L8/5LJfAzLIwIokLy4TgD4KerK84PjIi2eMuq1OpD3lWltBWhijbeVQpIJ0wtEcC9vd1s6S/fvK2GVcwOimYUBFbe6SfEMVeDa4p7i40nL+MvQf6bOAJ4fzrpd6/flEofbIyRoB59378WWamSEaRwctytwlo3y9WS2kzDQhnVlFACx+qqGLltvBuuDbsIMEaNx72890e7QrvWKokAHKGiKNKjSSCqnkLxqN35JPVcGaDumwarDJldnw8RqBENdJwGBewpeaQrSbIukDO53WxXwvlim7yI/s16przf5vM1ADMmu+2OaPiNJGuismUQMh/MplW4IFQOIxiAG36TO+qYyk1NbQXCRXUWznUkld7w52+ieCsdNVRbtCsjuJkt5lsvoCfHJ+pX3/6y0geGQpE0RCFHGKOUBbOJ+r5/zYfjIRmXmAP34/HffhvM2SMUe9bpn7eAj4gKQgwbBmM6nc8KnSIo0uGoctrtcXfBKxT6HZ0ZE8ymNCyC/txF/z45F3hHCCGVyw+sLeVIgjF5nzybVXprnCwlI1DgXsIYl6fdE/rq8sVBnLnW60jNw0XeYzHv+9dW0gnkSRkPhhJi9qfhB7PLy/NLVgEqYSWVpO/715mjry/PLko3BCzC0JpCFt9VxrjxPcEFd6qrknfuynePNG6COf7nyk9UzQSczKZkuij23p0UopgG2vOFX2YOeEf9nHS6Kl8ujuJmjCMgqQ6PIcYMRiNadHDEHTZH7aNqwkSpkjKiURTtTR0KBzzO+N7tZAWq1AhgULqeHJ3U3vMQSuRFuOCrdb2S3GddNGnq4aLaajapo9lNg5or+wkCcUQQEb7nGd/z8QU1kYzUIgxFWR8oN0vFIaCNiffYbT0i0vtPf/VdcQJVrieq4U3LGWOT+VR9f3PFEeGLKMaqPp4n1OXpxaNzmhf98zYssL6U1mQ4HvJwtSwUMhiBe8fVoRksdPAV6wxnuflixouiQocTBHJvVwyGSoqDqDRK9stLaWtgtgzAtuRx7TgE8osIfRxbzrn+7PySnZ306g6+mc5m1iJzt4EBT4/3g2uy796Rp/EXslNLKXHA7nJ+0hMfp/Yoa7FAoXnVv6Fpz3f4RnfaHdZpdUrT3M4XC2KDbhBrhzGufc9zTvllLcSa9QvDheCcOx1ezSauFuIaqbRmo0nACmFbSokJnJiO2p3yDDSUSkaZ89BJOW9VLV4jGmgQwZh1FKnxJCh8/UH/12q0GPS6VXxsRf9Cp8FLdKwq1QCMib04PTuIHJxxyPx0Spwx6tPXFTQa7nEIZEKAgorMcBh+hRDwlvlBWY7cZ9owbMbL9SpT865SPRCIlFSr1WqroQRr409+8Uese3RcjwFZkFIppTjnfDqfqe/7G4Mvonw/Jcm20JnlJpBb7fL0nPLHnMoLoH/eqqQlxqxWK9UPRkJazNW3Cz6wF5x2e6Di21XU/Z4fAjJcL0lQwoUnvyEdUMuUwACMGyEtmxZ6fyPOJtfxAc2OG0oVEKBEkwLXFehj3/3oDanzHU8brYPJtJB38V9u3luhjctvqdmjf4aMveNu/KdKT380TB11Fp9Xzy7KMACb2dyOc4IQQvrCgy2vStPhZKkBAg13L6nBLNVXRDjnhKuVwt2rSjp0OMx0Wm1ahiEqdtahrIxvTn0XUg0kr1OqhY1D/JwXnbMb0fe+h9OKV6kZhZOtVMqs1+u9D1Foi2JnKdHIXaoBGEqcy9PzSk1wVmFA5baKpJrNZ4V7S2SVuYh6uDi1my33ESsC7APsQwihPCGQB/Ch8ffhWKU2mi3CkNnwkj5AGOs+JLlcr540yHHO5Tdf/US8e/Wm7mPdKj8MvqCQWSxDdTW4ZjejIR2Mh3tHlJQBGBy/thk7i6J/3jXu8TQonDK7d3xCmo3mLtHc7/YRUFEUmUEwdOc3+9jabTE2BCO1ZDn5gXFxU0pnNxht8htTF/ltd1m41mLXCEmMKXQPA4PF159/QT2vWsqahOtBhsulsJlX9al+f3f9fUKxyilmi/75Tvpmsylfnl0Uuh53IQdjQzCd0NEk2FX0w+/A5ajVEe1WK3GdfQrGeea1NrP5nGV1NrqLFBfCU4j45SUqGvfBwtUtFwFErQkuKvUOl4uI6z0nBJQhhI0nAV0sFzl1ka5ZsD/4XoM3CqaBjo1DhEHvmU5gV7raCFAqOWNQaFdbzo+kw1mpaN2653mq4TX2NrTaBtpW9C/ualgLZb7jpRqAQSF1fnKaXZFie2b3bs/o2WLB1lG0d0uH0gDnQrYaDXd4PJQJLWAcuLhyxhQXseUX4T4JefINvHM0aKGVVgVI6rooCAG9WIY7FSGvLz+T337zi4PZa5TWklIilqu17g/75mp4wwfBiBQZmWp7fuEQ1D06pu3mdkVa0fTP28dopNYGmNN5WMyFFIfB484RaTfbtqF37T2BAJwrbkb94i8bBUfsHdIiwDmBbKKCi93zKVFa6exrpcBcrYc0324syRDImyL4MSmajab6+u0X2d+JZEPLpVTM3GUpp/dTAhpiyL9cv89lDLYatUX/fCePEMK8efGyctpOpPxYrZbm/eAm8bcDjg4Xp+e5j4USIqXWdDafcTDLpX3uqOB9z5Oe8ESZESZpZXflq4UAIrE448I5D1RrXg5ZGkQdShmZ0WQsogJZuLZhWjQNNPZvQuLo31qepw55bdoYG2ObPdVGW0W1AarNwXhEs5xHssrIGFPtZrtS74DSSq7Xaytzt0nHAR+P3I+UW6egVAMwDqi94xMrYGZdZDnUM6NJUOiLksMYrDXp+77xhVfeCrc2EtdQ3ggg1ww2Q0/gvrHxC9kYg3nq9bNcr0y4DFPXy3uMrv1sCCTJydlsNs13v/x1beccBl9CiIjk2vSHA3017Me0zuvoMHLLM0ZVp9XhMHBuP5FQxSmrVLQClIVSRTgAi9U6/7nYsGa0aZ1pNbO95eXUii83owFFDujCnxIi9gofYwEdMkYNTgsFdBVHWRqtRZbLcBnGuUIwcZ1UB4E4wpwwY0xhztXI94rv+ucvX9fqPq+UkpNZMaxd2C9AAV3dB/TPzHoE+bvXb0DXUMHHyJWU9OrmmidxGMb59bhzzHNmaJFSSTKbz1O/RzDWGWOE7zfAmsXrFmVUwQXiRCKEOPpntwzKQmA6n5HJfFpW9xsdJKMxiyUvyB7rqJ9Lne5COq8TDfQtIGoVrcGckvpcsg+gR+0ndIX7NJyxrrXo39v+RcnEGqUagFvNljpudypl4c+4Lu5XU4gAni3mhzau1ND8wONe6J6RWk5XoWQEKJWMEi64eJAT9IOHTDb1AYxpfB4u6KEY0EqepdK6N8To+WKxU5nJKCPf/fGva5NHdWPwNQI5JQbjobrq34hBMCRF0REWOaGUUdn0m+S0+7TDV1Xonx/DBgrc+XKhhsGY5x0xBGVjw2+Rk6PjZ3+OyHOdYk6HwahweqNYsYAc9gXm68wTx9Lb3hi98K7k71G7hwG4dJycAA6BnBDgnKmL03Neo7ROar5Y8AIZu8zvrr+vpi10o+hWxFCr5w1ET708v2R+henBtdbm/eCaJnHu84RQZ70zqxjdvY6IfIuiiCzCRar2oWeB4yjy5QHnMiNKctpaXLMlIYAoLI+LVOuxJFFdtweJQMzCxUaTMVuuV6WMEDoJBDI1PH+nDmpfAdFXzHlYkC/rvvK6+hkQAKsCpbVj5oAeFikpwtUyw6DTV8G70Gq0Ssm//Zi0Wmu1Wq+sfQvj4DaePrgtPZLba5RmAAa3PqKBnqKCtDnQgtsy0/mMVoG+ouBxP+gOVJ7NRpM5+pgyZ6HCfVMoHAyHN9THnjB3XnD7HoRwqdZakUUYcnhWu6d+CCilZbgKd3qRCMHVtz/9OX9xflnJQWqjJfI+Yj0Og5F+37/hyOG7WIaVlNemUL7nxcrhXW1Wh/55q6TKGMOREyVvz2RE40Chd3rc27n2d+Hqfn8cgdFkTFYlKRbKyNd58Otgkx+YUEJ5bgHBlCijTTp6Tkf7fPBLr3IDLIFdgHNmfvTiFe0eHVcOjkcEMqMgKMwga4wx/3LzvrD+0k6Abfpn9I/I8POTnui0qp3SAo5gN6MB2ZXqAwbtk+Mu8z0/Lby7ypvlaknTOH/C8Espxf2Zep6fzU16l1Tu92eLwIb+mYmiIh+fLdBu4DsRQN721XqlRpNA5O18/ZgwYOU6anfy/XaDATGmfi44pc1O9F0B2wjA2U4wvlMfZrtfG+0NgzEpQpeO70/Da4iyo2TvMIOeyObeA/0evq825iRrG+UZgBmT3faRKDq5elag0tbTRuvxZJK7x1BauYouj4vfvka8omV2/RWDgBBCCbjAPOLthkuHzXWD/FtSSrkIFwJhV+6pCQKUqNVqzSO5O686nAa+fvsl/ckXX1dicNoYUIVyrLZRMFbv+1cCOXyT0FlXYgCWhEDutMvT892efLR69M/bIDDGSKUVGwRjFuZowMchGAq+0+7po/ukpSl6js2YYDahec7dLlAdHfAuhLL/XkB+YKO1TqYQ2kRoEWJMqZe97Gi6mnVEoKz9Bef2rz7/gjQbjUrDto6iOAK4KCGRauD7m6tke0ZRQn3oB/TPcMiNWRSsPr3jLsGfqj8wAsMhLJg9TTnq+7487dp1yoMT6DphepEfDL8erXJkddXn28m3GwFfuIjy3Si5EoUgAMYkbVgwm+x01LEtD2VUtxstxnO02TnqZ9uzVu32akgDHQOqtNKD8agQ25bnearhNayfSdOuDK2NXK2XVu/vjDPN6G2uy7QCWSpfmgGYMap7xydM1CsXdhrY5XK94ovw+eYh3eQybFX0wptmKl1ZWwhscvoyxYUQ23IU2Tb+3tNxxAfABMQLAAAdtElEQVRI8PiXRSdjC8dn1I4Ol0uWJEcXMDk5PlG/+vaXpRwYjDFKaU0ZpXQ0DdT7myuBHL55R4pWeS1AGXzROyNeAgrAKtM/b8M49kxerdUgGIq8GD8QFc05I6fHp7leQKu8jmzKBlaI+WLGn5sjhk0M69DWnQEMe5BNZzKM3RAS5wFOhIOL/k0EkyuUAwIlrT3f8/TXb79krFz9xlOA6ulsxqRSOYD+eJNaa/19/2qn4qwMwz1lTJOc0hE0m0358uwi2V5Z2Gw83pExRs/ChemPBlvvEFBonJ2eEVu6q/likSgFBaVM4VPmex4D3bN7HAJ5IgAdrce9nftVnjK4th0CHyNgiFFSKjjrJAoMsIWg73uq6Tdz0S056mdbs1STdmpKA32Lrlyu13Qym+TyLtyfQaQgaDfbuffz5KqhxKxWK2oz+hfsb4j0L/t+VJoBGIAjV5BtxUzVXv/JbFZIuHzVxg15GOOq3czng1nF8TqZtiNAQW9CKfGE4E9terkZfx+KJrXRbBGGLElkqZvXchEALRu885M8WFt/+qvvkhTdv4whSmoFgy+8UtX3/Ws+HA/JeDrZv+0DaAHv+2n3hDQbzUSjqQH985PjCGYTM5rkRynJGTO9bo865V+i5bStkAxXSxpMg3IvFZCOEhBTOAe5vaYzQeUc8gOnMgAnENEVcQjkgkBJBmCc9zuttvniR59X0vAHhq5gMi3UuKGU0u8H10/2WYbx9/auDobqXL5FQgjz5sXLXNrO450Bu8sqWpP3/Wvx2L0Dc9RsNHX36HjfM4SZzed0F50ios8oocT3fFbXqKE85sm1mR8ClBLNGaf4k18vrmWHwH4IzMK5CaaTQtZobjTQ8f2EQo+07/dkPzBd7UIRqDMNNCFGT2azQvJyH7WPCp2XjzsDk+NqZTf6FylwGXuc/bTIwZZmAMZmetE7K2TjLhLQj/tCAtJgmr+nRJlj3Na353my4fmVVABUEa+DlCn2dCFccEF30acUZPy9D7OWSupFGIqkEaYHOUfVHpSZLeaJvxNCCP0nv/gjlk8OOor1QuDBMJnP1Pc3V3wYDAlyYrjnIQLIlXbU7rCjdicZNDWif94+ICO1IXwYjGhe0aUwqveOT0jDrza9ZrJJL7yUWkVrMwpG1TiTlJCjs3DEK9QhlJqEUE2t5NgySmvzpMKmLGNOhSB3olQAAUpj/7nEZyhbIjPO5Vn3hL28eFGooTWB/DJcLkWafKsJ2txZRCqlrgbX2yNLS5onyhgsv1gjuc3Tu9dvil+AO2fkyQJKKknf96/ZNmaXy7ML5DhO3Qu+C1orAuOv0nprfThEMsaN7wncn1P34yo4BLIigLUnuGDbWNqytuvqOQQsI4BgDj6eBDRcLS03/bA5OOK0Gk3rrKU4nzHqHC1ynbyKNi643VSHRQ4TB8bhZExUjiw6OCu1Gq3d6ePyGnge0b+3slYht3FpBmDBuT47OU1/es5rovNrVy6WYeGXzfyGk6xleDj4wudJqD+TtehK1QoBinxShsNjeddGF9OfUHjAlbcdLNcrEy6fL117VdeWMlqGYZhY+8E5l9989RPx7tUbK0NSSinOOZ/C4Nu/4qB0Ho5Hceieex5HgDImW40m7R13E3u01pH+edv8gwo8UpIMxiO+Wq9yWSYnxyeklTCyOhcBatgoFPD9UT/xmsxziPfoiQ107zBM3vbH84rEynM8dWsbexQlJPF35ZPxUaK10tsPLCVFXtZtHpy8BSBQoqMJ50zDAHza7RUw0ORdBNMpsUrplqDrSEp1Pbx59PtTlpEeYsMZP08HATgDvjy/ZHXMV4sUH1f9m0+MC8jD22m1RSepg+Pt+qCESKk1nc1n+M4/umriXJCMa9/zOBTE7nEIFI0A1qAvvMKdhooep+vvMBAwxOj1eq1HkyDXYA7P82Wr0ch+b3gEbug9D50J9TBWmeVR1JsGOgYDOpVhMMrtkIJzVsNriF02BMsz86E56PKWq6X18cWpMHn5Th+lGYB935e9o67VjTSvRWCjXVw4n1OUYfzi+g3hLjA2Vk/92hBCKIEdjj59h4CnKWy/ZRp/b9GVhBA+Dxd0Ha3rB/gBSoyIrdV6zdZRlGp0ry8/k99+84tM3xYYfBljfLEM1dXght2MBnQwHhauLEw14AoVxvvse74+752mwr/u9M+PTQEUfItlKIfB2PqlNKajanVou9Wu0OxXVxQkf++PBnbzuGQYLs5FlBIOj29ED90pgT/8c+NYIjf/baghhBm9oebEpWGTfpZo/I3iN2PK85rKMP6qVMG3BRFvmfMDU2K00o8ebuK2CUFOzVR7YFWwcXI4BGwj8OWbt6RTkW8VzniT2cy6UmcXZlEUyetR/9M9AcwEOUbfPi0XJcj1mWf0L2NMnp/0RFXmf9c8PfZ7fzQk08XswU84g12eXaQxkkkwCM3m863fBSGE9IWHq3MWMV0dh4AVBATnkjMXdm4FTNdIIQhsmBU0ncynJE8GruOOJUraTR5QRkmJkS+FzIzrZBsCiCoXjNf5Do8AR56GpTHtavA8TzW8RhkHIjiVsDzsdqD/5qz8Q15pBuBOq6U7rU6dF36qdayUksFs+mwUQpvQ/WZ5ofupZscVtoFA7NXCmOJCiCTUQVCUwvZbAePvh+EbQhQ2/DAM+a7cTDYwc208iUDsfSVTUow0m03z3S9/nUgxo7SGQUYsV2vdH/bN1fCGD4IRkRL+AO5Ji4AQXF+eXsSGlaQPjGKMMiQHT1qlTuU0jHSjaUAms6lVuRFZ02m1aafVSQ62VQnq0VhMVRQMyTYqxyJGAUYUYwjIBAhSHWR5HhiJETe8MRYrJG+EsRjBXPG/3eZyhFPFhtmTGrCM5ankzzKeStSJ82/BiI4UXOleo20RhGVG81UCUydE5RDY0J/Hm0G2zWfPEQnOzVdvv6QVyGEq54uFSOtUuOfw4+rraC1vRoMPOoCYBQLsD6UZf7HrMVmEo0rvuEvwp64P5gm5JkeT4MMQgN1xuyNazdbOYeFeGUURWYSLB+/fHROIEJ5CxO+BnoF34uMKVAcB5G+HB0KV9DLVQcdJUnUEELUHav3RZMxtB3Pg3Wg1mlBx7g0DzmSM1tr4tzcGz72BW505CDDrDIUJZhO6WucTOMUYU+1mu/B7C85sy2WYS79wimSM7b+J7LlqSjEAQxl21DrirWZzT/HrUx2LCYf/vF6SKiKROP9jFYV3MiVGAIcifMA8ARtOQiMOpQrebwwOcBV8oJWRUsp5uBDbqLoqKPaBiWTIPAw/RMklHRwurt/98a+J7/mfVIHBlxAiIrk2/eFAXw37Ma2z7YtCUlkPqRwiIi56ZzTL5cjj4qBpkIwxUhnNhuMRWyxDa9POGFUNv2lOnhGbSlrwRpMxyYuKO6ksnDPFmcjlMvGYDFuMxYj00oTEkauwPtCPjcX433HkcUmGoqR42i63MZbDIY0mvpQVTSFre8yuPYdAkQi0mk311edfFLYHbtsXx5NJkcP+0Fe4XqrheEOXd8sSgGtGqXggx2wRKQeazaZ8eXaReG8tZYJ2dKqNUavV0rwf3HwYB1KZnZ+e77r0muVqSe/nnL5joPA9T3rCE4nvzVUExsl0cAg0Hrk7H9wg3YAOGoENA9dSBdOA20zZJYQn283m3t8y7PkUPE7ueb4IUKo4pcn15tVFyvTHw1wY1vCGdNqWou4T40fVOlrxXPIbU6IYZZWY83IMwIyqk84xf0xBn3h+algQH6Q495C5S/dWw0EkFBnGgHaz5b5uCfGqZbE4co9wwQVNQ1m1ocGMc/6WqvzYiTmoHLVhy9WSLHPK5blThuddwGShFhGCq29/+nP+4vySbAy+RkilzGA8VFf9GzEIhuS+MuZ5Q2xv9Oe9U9LwG6kbpJQpL80GkrqH6lQwxuhVtNaD8UhEMh21+bZRIBLFFx457fb2vpRWBykrksSeqaFFg3saqW5z24PqR1TZwzdWjtxFFP8QWYzwYmXMrbEYluEHVNRG30YWH5yxGPRMlNCdZ5OPDcB3Sv00a8SVdQgUigAlhUR8PjYmeL13j47Jm89elfadimQkZ/NFKf0vVks5CkaCID84npKNv0gigL2uCDmEEObNi5cHoA8wciUlvbq55mCKggNe96jLnzr34vxx5/iPu68xRvh+Q8UO0/WO/Cl063KdFYMAZ0wKbiHEsRhxXS8OgacQkNpoPp7avQfiHJP5gd6U0ErfCTOPzVVMjQCcjwWvfyR4JKUcTcbWz9YbNtlWoWyyyCm+XC53OfalnmtUQAAsY7vTY2ZqPGWlUgzAjFHTO+7R55YfFtRwq0iq2Xxm/SVJOe+5F+dcyFajcfDjzB3IKnZAoTQwHHRuaaP9bo2/BJSvVRzaFplwiGSLMGS2jDY1GntposLj/mPKtKTCQCHz89//mXrfv+HI4Wsz6jKpDM+lHKiIu50jliUf7YHTPz+5BIL51IwnAaIw914qwFEITk+7p466LdatGz2bz9k8nO+NbdoGcMCHwReH/EOk0buft/jOeEzoU3mLscDjCFs8CDmrtiEA87fJy7WVmguXUqXUD+PYUEkfnDE87dp35auNQNlOCpyzOEXExelZ4UBtvgkLVlZ6j8UyVKNpsKHrL934Wxz9891Ev3v95mDinbTW5v3gOqY99Dyhzk7OHnUYmocLAupnnM/APOQJj/ied9BsN4W/2K5DawhgncJh0VGRW4PUNVQBBPDtj6JIw0CVNqXYx+JTymSzgUztXqaRgTGx8sEvmUbmKmVB4EBooOFDHutrceax+eCb1PAaIq2tIbsMOUb/bpQKBokvqxAUUIoBGBNzeXr+TA/BRs8WC1ZGDqLsL0T6mr7vaV/4uXhQpJfG1bCJgBAizhGTdgOLjb9IVMh4nYy/96EzUkl85ARyjLgnXwQiGenVep1pD3lxfmmm81lp0X/5IlOd1hHV02m1+XHnKLNR59Dpn5+YLUSDIOc0nS32N1TeXiRMr3vKnptz3UOMjQxXKwrqr0LflJjZgnBOeaHeqoWOMWVn943FqHpLxYZ1j/8C3zR7GFkcJzbW+BuNcxojP29JT2wIhhiP5AemRGmlf1hfiOqrgFGnJKRct3VCAPmAy8w7Syl5++pH5LhTLK0buI7Hk0nmc8q+UzwL52CkwD5RifsPjX1cinngJPjy/JLB+HkoD75hN6MBCVdL0+ue0I8MAmY2n1OlFdiu4CxNPc8/GAP4ocyhG8enCICZsbRN0k2IQyBnBILZhOx73xZCyHazlek77qifc57gmjUf54KOkyFWMx1iGjhxvw+mE2LbvuV7nvK9RkH6HKPDnKJ/77Aszpj99OyVYgC+yxWYZmEdWFkzshT5U0VcYOjzPXhIZfo+VnFIz16mW+OC4kKITLRV8HojxNTY+PtgDYAWOlwtn/26yBEAuVyvRNpoDdCptJot5ERFpBm5GfVJLnkcchx4XZpGpCPyz56dZKcefk70z9vm1RijIiUJ8gPaoJrH+er0uEe9A1K2pngn5Cpak5hqs6DnLqoOLOa84lkNCoIkUzdb8hYrGG7iqLnYIEyQEz7WT27y9uJHipA6/JaLRQNnH9C2UnIvPzCoPLUWce8UQfwVj2rONCOu0kEigGhEYwrbHx/DEHeIr95+kSllRMY5UeFyyctK/QGlL1Jk/M3f/W1G8W1XA8cBK2wdwFHw/KQnOq227YGU2h72/9FkTJbRWvWOT2IFpSHGzOdzo42BUZgektG7VLBd57kjwBjS8YiCFO25D8d14BB4BAEjpdJ0PB3zO2r+LDDBgS1VEEysA6WpA2eyyObq1AsB3CEF5wfhd6ONQbo9K8x2d7OI71K72S7iu6TW0Tqf3L+3g6GMGs6qMdelGICRo/Gse1rEZFZ1F1DwkJgt5geJAfIKNf0Gd8rQqi6/5HKBrgSHnDhfEcuoX6VEUxJveoe03qUhhi/CkK6jdXJAXcmkCJjFMqQf51lMUvnF2SW5SykbyUj1R4NDWndJICikDKjvLk8vMmP7nOmfH5sgKA7DZagGwVjs67SAPbt3fFKkgr2QNberE6mU6o/6mdfkrvYf+51zLhljgrq4iSzwZaqzxVisjSGa4LiBnMWwDH9kLMb/jiOPM0brIn1NnMXnngE40wBcJYdAiQhUwWmh4fv667dfggutECSC6ZRkOU/uIxxnXHLO+b/56b+ib1+9Mf/pr/4L/ef3v9unSSt1N8bfYiORe8ddgj+H9hhj9HQxRwAPAmDoYhmaOOI3I0XooeHjxlMPBDb0z0w4vV095stJuTcCZrEK9XgSxMECaR68K02/IdI4WTvq5zQIP6+ycGaGgr2os3Cu6FKiV9FaB5OJNSdT4NJpdXIV+7Zx6OByvZDg7I3vbBGD2dVHKQZg3/dl76hbCQB2AZTj7zFFaSSRGubwHnj6HsRmdnhTk2xElEpGCRdc0DtjWrKKn5bCwefAjL8fBom8B0orEoYhl+ow3+Ws875vvbQ0PVBqNhtNeOJ/+LYgunK2mPG0be0r+6HX54yZi9PzvfeGZ0z//PgSoUQbbdh4OiGgqtr3OTnqklaztW8ztagP4PqjQSankbQDxIVtc2njwp1z0qJXdHm4VtzST9/9E/9JiDLm1lgMy7D+EFmMUvo2sviBsRjR3pvUwLgjGqJv6xQ9ItefQ2AvBDbpWErNxw1H4aNWx7x7/SZ3XYBSSk1ms0IdgxDl/HtffK1//vs/ZXdGldEk0H/2F/8hoyftXjP+oHKR9M93HTebTfny7CL3ubaHUrqWIhmRSCnHOJQONle6Igjg/uzFx9lc9d8VGa0TwyEQI6AMMWw8CeC4kwoSzrlC+quklZxjRVKknmc5RLlydhgUYtCLI8AxTPlObZt5fJtajVbeqbVkFEUibz0+58zQitB9l2IA7rTbptNsP/tThjZajyeT0i+DtrdbUFC2m61nP7+2cS2kPUoVMQY5i4gNnvpbJfnBrfGP5wKu3zKScr5cxLSQ7tkPAUOMni8WqdfN5dkFEY+kmB6Mh8RFau83J/drX5yeEeSK2udx9M/b0TPGSG00H4xHqS+m91vFt7jT6tBDo178ZP81hgyCIUlLGZ92/YL2HAoyxjhnBeZQTCunK58dgft5i+OcxZuExBotaq3Z5n+ZmGXi4uRMzpehWEUrEkVR9k5dTYfAM0SAc6bOT075i/PLPEcv52Eo1utimHo8IfRpt6e//ebn4uOIVyml/O//66/FX//t3+Q53h1tF0v/fCeMEMK8efHy4PQCoLc+arXJ29dvBCLM/+G3/xTnBnaPQ6BOCDBGtce91HfuOo3RyeoQeAwB6JtkJPVwOk6VdiwJDXTMouion93C23UqOyAa6LuhIj2GjSBHRNw3vIawYZN4Yhpyj/4Fcxiif6viZFW4ARgTedTuiFaj6TYEQpDnMqaRPSQwGOOq3Wwm9ow6pLHXfSxCCCU4t5KnAl47MavFs6HGpIgo4sgNvFqv6r4USpVfKiWXq2WqaIFWsyXvR//eH4DWWl8Nrt3lds9ZhUHx5OiY7htV6uifk00E6AXX0VoPgpFA2ogsD2NMt5stctQ+Otj1P5qMyD75nHbiiog5SjinPG8v1J2iuAL5IwCaJkYJU0ozzrkRQuim34DTC0dOR194cDRSyii6WC7xmjJYiaNorRbhxiCc63rMHwLXw3NAgJLCqYA/hhUe8a8uPqO97kkuiMOhYzzZn01jl3CCc4n94Q9/9gf085evtxaHPH/2F/+RjKfBriZz+Z0ypuC/kkvjOxp99/rNQd0GOWOy0+6Qt69+9OGuorTRo8lY//0//cY5A5exyFyfqRGAroYzRqqSmzD1AFwFh4AlBCbzKZnOZztbi41SfkPsyvF+p+vY2aAr8KwR2DBlMiu696oAiSDH/mhoRe/ke57yvUZe51YZySiV80cWjMEgxhivDNV38QZgRtVJpxsrUdyzQWAym5G8w86LxFoITzZ9P5Xxpkj5XF8PEbg9/CsuhIC51sYTG38p9jk77dmQqcA2pDaKLcIlAy2Ye1IjIFfrtUiL3bbo39veZbha0vFknNcBIvUg61aBbSgb+VHnyIroYBl4Ps4h+0GGIMTZYqaHwZhlYRgA3WbDa5htDhL7SVdmbWOC6ZSGq3T0XUklBoOFMQZGQCjHklZz5WqAwB2NNyGEa60pItQ84alWo8E94VHcUZDj66lIb5xzQD0eLpfsLr8o6K/IJvcwi5RUSA8Bh7BVtCZZ3t0aQOlErCkCVcgFfAfdjz9/R+CoZPuJZCRn80Vu91FgCI6AP/i9n5Fvvvr9ROL/8/e/lX/+l/85N5meEoIxMH9v6O6LfOCI9vL8kh2K7gfGX5yFP3/5+pN5ROqZSEn29//4GxrMpkXC7PpyCKRGAGchwUXsru8eh8DzRsBIpTUbTQK2K5AjCQ20uzc+79WUZvQ4U7CK5IdNI/cTZeUyWpPJdP98wHjXWo1WXkqY/KN/b0HKOYo51bQVbgBGBNHp8cneuQNTjbLihZXWKphO8lrYhY4eHg6e8A/mklcoeAV3FlOTUEo8IZB/3mrvOPQ8U+PvfRyNVFLNw0VMDeaexAhoKNSRWznpg/xip8e9JxVqyAQZTAKKCG33pEMAEXGIgDvt/pBfOV0LD0s7+udM6ElDDB+Ox3S62O2h/HEPmEMY3c+6p6UonjON+IlKoO2azedsHs5tN/2hPc65ZLQ6lD25DfSAG8Zec6vXhPMEDL3a93zT9H0YemMqewtGCRiB6aPfrDivNzGIII8NwsuQrlYrBoOwOxcc8MKry9AoHBbKiQi9D5EnhPnq7ZdUcHtX4c03YsHySg0Ap5FXF5+pP/zZvxZpjNdRFOm//B//lf3db/6+0FWCO9nGqYnYvfAlGAWoks9PeuIQ0lFAUds9OiY/+uzVk2cp7O+/u35Pfnv1fQKEXBGHQDkIwInFF56z/pYDv+u1gggg00u4WqpgGjypvztqd8ij+lNKFXPUzxWc2eqKhH1YcH5Q+zDO4NP5nC331Lvi7NppdexPHiWb3L9S2m/7oxbjYLsKzW/hBmDg8eLsInega9aBXCxDsVzVnzb2jhbD5iW+ZnNZfXEpBb0hF1zk4ojhjL+fLgF8/JzhMfmrMV8s4jyLSR4cDM5753BkSFLcXA9uHlfUJ6n9DMvg0OJ5Ql/0zq1oZh39836LSBujYGgajEc87aEaOWyRI/u0e2rd6We/UaWuHUf0B9PAypq83/tdZChnvDK5WlKj8wwrwMEB5g2kYYCjqeBCNz3feL4f07TFtM3JvhGZ0cP7KNVuxyW8w4xSLrXUq9Ua3sccBmGVoG5m4VxFh8BjCFTEAIxzRqvZVD9+8y7RQS7JZMLpbxxMrCvUkCoHhsxvf/YH/LOM+YuXq6X5d3/+7ws9i2JfNKY8FmbkRP44L3KSeaxSGcaYwhhev3iZ6OyhjZbL5ZL+33/8TZweyD0OgaohAPp6nHerJpeTxyFQLgJUEWLYeBrQebj4RJSNvhv3C//Bb7esIArOw+XK73qvEwIIymIbjuA6ib1TVmhyR8Eo0d14W2Px/aDRsp6CC3rm5bKYcxmY+Diz6OG6E/mnCxRuAMYF5KJ3dlire89JuKseTKckTdSbpW6tNrN5SZvWX1KrQj7XxigFNSGHoSwvRagz/m5dXHH0HvJ9r6P1c12BScdtZot54m9Es9GUp92no3/vdxxFkeyPB+5gnnA2BOfm4vTc6p7u6J8Tgv9EMXgoL5ehQn7gJEan+00hr+lpt0dhDK7hI2EsGwUjq8LjMk8pYYzCflh4gFQNp6F4kXG+jJlLCGGgaUMEHgy9Dd+nDW/DPAPa5jJp10AbF6X0JjbGwP0YOSPNcr1ClLBADuFDSg1T/GpxPSZFgNKYnTzxmStpu2nLIUq0d9ylSY1rT7VPCVGL5ZLbdKyG8Y8zzn7xk2/o12+/TDu8B+W11vJ//7//Q//qf/63RIbEvTq7rQwa5jKif+9kB1PPy7MLq99tG7gkbYMxrk6Pu+TVi89SzxlesH/47T+R62E/aXeunEMgdwRwnhKM190hNHecXAfPFwFjiIpURMaTgH+cmgzf1KN258GF8S4F3vNFzI08KwIHSAMdQ4GohUEwTH1uusPxh+BCi8dHSpWMok/e6axzt6se41QxWh0D8P8H/ejHeeeil+8AAAAASUVORK5CYII=\";"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/assets/sass/_theme.scss",
    "content": "/*\n|--------------------------------------------------------------------------\n| Packages\n|--------------------------------------------------------------------------\n*/\n\n@import '~bootstrap/scss/bootstrap';\n\n/*\n|--------------------------------------------------------------------------\n| Base\n|--------------------------------------------------------------------------\n*/\n\n@import \"resources/themes/default/assets/sass/_patterns.scss\";\n@import \"resources/themes/default/assets/sass/_basic.scss\";\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/blog/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') A delightful collection of posts by me over the years. Feel free to browse through the past and present while I build software for the future. @endsection\n@section('seoKeywords') @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Blog</h1>\n\n    <div class=\"row\">\n        <div class=\"col-md-8\">\n            @foreach($blogs as $blog)\n                <div class=\"card entry-row\">\n                    <div class=\"card-header\">\n                        @if (config('app.locale') !== config('cms.default-language'))\n                            @if ($blog->translation(config('app.locale')))\n                                <a href=\"{!! URL::to('blog/'.$blog->translation(config('app.locale'))->data->url) !!}\">{!! $blog->translation(config('app.locale'))->data->title !!} - <span>{!! $blog->published_at !!}</span></a>\n                            @endif\n                        @else\n                            <a href=\"{!! URL::to('blog/'.$blog->url) !!}\">{!! $blog->title !!} - <span>{!! \\Carbon\\Carbon::parse($blog->published_at)->format('d M, Y') !!}</span></a>\n                        @endif\n                    </div>\n                    <div class=\"card-body\">\n                    {!! str_limit($blog->entry->plain(), 300) !!}\n                    </div>\n                </div>\n            @endforeach\n\n            {!! $blogs !!}\n        </div>\n\n        <div class=\"col-md-4\">\n            @foreach($tags as $tag)\n                <a href=\"{{ url('blog/tags/'.$tag) }}\" class=\"btn btn-default\">{{ $tag }}</a>\n            @endforeach\n        </div>\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('blog')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/blog/featured-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $blog->seo_description }} @endsection\n@section('seoKeywords') {{ $blog->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">{!! $blog->title !!} <span class=\"pull-right\">{!! \\Carbon\\Carbon::parse($blog->published_at)->format('d M, Y') !!}</span></h1>\n\n    <div class=\"well entry-row\">\n        <img class=\"thumbnail img-responsive\" src=\"{{ $blog->hero_image_url }}\" alt=\"\">\n    </div>\n\n    <div class=\"entry-row\">\n        {!! $blog->entry !!}\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('blog', $blog->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/blog/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $blog->seo_description }} @endsection\n@section('seoKeywords') {{ $blog->seo_keywords }} @endsection\n\n@section('content')\n\n    <div class=\"container\">\n\n        <h1 class=\"page-header\">{!! $blog->title !!} <span class=\"pull-right\">{!! \\Carbon\\Carbon::parse($blog->published_at)->format('d M, Y') !!}</span></h1>\n@widget('test')\n        <div class=\"entry-row\">\n            {!! $blog->entry !!}\n        </div>\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('blog', $blog->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/events/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n    <div class=\"container\">\n\n        <h1 class=\"page-header\">Events</h1>\n\n        @foreach($events as $event)\n            @if (config('app.locale') !== config('cms.default-language'))\n                <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->translationData(config('app.locale'))->title }}</a><br>\n            @else\n                <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->title }}</a><br>\n            @endif\n        @endforeach\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/events/calendar.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <div class=\"row\">\n        <div class=\"col-md-12 mb-4\">\n            {!! $calendar->asHtml([ 'class' => 'calendar', 'dates' => $events ]); !!}\n            {!! $calendar->links('cal-link btn btn-secondary'); !!}\n        </div>\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/events/date.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Events ({{ $date->format('d M, Y') }})</h1>\n\n    @foreach($events as $event)\n        @if (config('app.locale') !== config('cms.default-language'))\n            <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->translationData(config('app.locale'))->title }}</a><br>\n        @else\n            <a href=\"{!! url('events/event/'.$event->id) !!}\">{{ $event->title }}</a><br>\n        @endif\n    @endforeach\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/events/featured-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $event->seo_description }} @endsection\n@section('seoKeywords') {{ $event->seo_keywords }} @endsection\n\n@section('content')\n\n    <div class=\"container\">\n\n        <div class=\"jumbotron\">\n            <h1>Featured Event</h1>\n            <h2>{{ $event->title }}</h2>\n        </div>\n\n        @if (config('app.locale') !== config('cms.default-language'))\n            <h1>{!! $event->translationData(config('app.locale'))->title !!}</h1>\n            <p>{!! $event->translationData(config('app.locale'))->start_date !!} - {!! $event->translationData(config('app.locale'))->end_date !!}</p>\n            {!! $event->translationData(config('app.locale'))->details !!}\n        @else\n            <h1>{!! $event->title !!}</h1>\n            <p>{!! $event->start_date !!} - {!! $event->end_date !!}</p>\n            {!! $event->details !!}\n        @endif\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events', $event->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/events/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $event->seo_description }} @endsection\n@section('seoKeywords') {{ $event->seo_keywords }} @endsection\n\n@section('content')\n\n    <div class=\"container\">\n\n        @if (config('app.locale') !== config('cms.default-language'))\n            <h1>{!! $event->translationData(config('app.locale'))->title !!}</h1>\n            <p>{!! $event->translationData(config('app.locale'))->start_date !!} - {!! $event->translationData(config('app.locale'))->end_date !!}</p>\n            {!! $event->translationData(config('app.locale'))->details !!}\n        @else\n            <h1>{!! $event->title !!}</h1>\n            <p>{!! $event->start_date !!} - {!! $event->end_date !!}</p>\n            {!! $event->details !!}\n        @endif\n\n    </div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('events', $event->id)</li>\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/faqs/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">FAQs</h1>\n\n    <div class=\"entry-row\">\n        @widget('faq-description')\n    </div>\n\n    @foreach($faqs as $faq)\n        @if (config('app.locale') !== config('cms.default-language'))\n            <blockquote>{!! $faq->translationData(config('app.locale'))->question !!}</blockquote>\n            <div class=\"well\">\n                {!! $faq->translationData(config('app.locale'))->answer !!}\n            </div>\n            @editBtn('faqs', $faq->id)\n        @else\n            <blockquote>{!! $faq->question !!}</blockquote>\n            <div class=\"well\">\n                {!! $faq->answer !!}\n            </div>\n            @editBtn('faqs', $faq->id)\n        @endif\n    @endforeach\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('faqs')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/gallery/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Gallery</h1>\n\n    <div class=\"col-md-6\">\n        @foreach ($images as $image)\n            <img class=\"thumbnail img-responsive\" alt=\"{{ $image->alt_tag }}\" src=\"{{ $image->url }}\" />\n        @endforeach\n    </div>\n    <div class=\"col-md-6\">\n        @foreach($tags as $tag)\n            <a href=\"{{ url('gallery/'.$tag) }}\" class=\"btn btn-default\">{{ $tag }}</a>\n        @endforeach\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('images')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/gallery/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1>Gallery ({{ $title }})</h1>\n\n    <div class=\"col-md-8\">\n        @foreach ($images as $image)\n            <img alt=\"{{ $image->alt_tag }}\" src=\"{{ $image->url }}\" />\n        @endforeach\n    </div>\n    <div class=\"col-md-4\">\n        @foreach($tags as $tag)\n            <a href=\"{{ url('gallery/'.$tag) }}\" class=\"btn btn-default\">{{ $tag }}</a>\n        @endforeach\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    <li class=\"nav-text\">@edit('images')</li>\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/layout/master.blade.php",
    "content": "<!doctype html>\n\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <meta name=\"viewport\" content=\"width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1\">\n\n        <title>{{ config('app.name') }} @if (isset($page) && !is_null($page->title)) - {{ $page->title }} @endif</title>\n\n        <meta name=\"description\" content=\"@yield('seoDescription')\">\n        <meta name=\"keywords\" content=\"@yield('seoKeywords')\">\n        <meta name=\"author\" content=\"\">\n\n        <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css\">\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"{{ asset('css/app.css') }}\">\n\n        @yield('stylesheets')\n    </head>\n\n    <body>\n\n        @theme('partials.navigation')\n\n        <div class=\"site-wrapper @if (Request::is('/')) homepage @endif\">\n            <div class=\"container-fluid\">\n                @yield('content')\n            </div>\n        </div>\n\n        <div class=\"footer container-fluid navbar-fixed-bottom\">\n            <ul class=\"nav\">\n                <li class=\"nav-item\">\n                    <span class=\"nav-text\">&copy; {{ date('Y') }}</span>\n                </li>\n                @can('cms')\n                    <li class=\"nav-item\"><a class=\"btn btn-sm btn-link\" href=\"{{ url(config('cms.backend-route-prefix', 'cms').'/dashboard') }}\">CMS</a></li>\n                    @yield('cms')\n                @else\n                    <li class=\"nav-item\"><a class=\"btn btn-sm btn-link\" href=\"{{ url('login') }}\">Login</a></li>\n                @endcan\n            </ul>\n        </div>\n    </body>\n\n    <script type=\"text/javascript\">\n        var _token = '{!! csrf_token() !!}';\n        var _url = '{!! url(\"/\") !!}';\n    </script>\n    @yield(\"pre-javascript\")\n    <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-1.12.0.min.js\"></script>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js\" integrity=\"sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q\" crossorigin=\"anonymous\"></script>\n    <script type=\"text/javascript\" src=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js\"></script>\n    <script type=\"text/javascript\" src=\"{{ asset('js/app.js') }}\"></script>\n    @yield('javascript')\n</html>\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/pages/all.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">Pages Directory</h1>\n\n    <table class=\"table table-striped\">\n        @foreach($pages as $page)\n            <tr>\n                <td><a href=\"{!! url('page/'.$page->url) !!}\">{{ $page->title }}</a></td>\n            </tr>\n        @endforeach\n    </table>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages')\n@endsection"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/pages/featured-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $page->seo_description }} @endsection\n@section('seoKeywords') {{ $page->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <div class=\"jumbotron\">\n        <img class=\"thumbnail img-responsive\" src=\"{{ $page->hero_image_url }}\" alt=\"\">\n    </div>\n\n    <h2>{{ $page->title }}</h2>\n\n    {!! $page->block('main') !!}\n\n    {!! $page->entry !!}\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages', $page->id)\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/pages/home.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@if (isset($page))\n    @section('seoDescription') {{ $page->seo_description }} @endsection\n    @section('seoKeywords') {{ $page->seo_keywords }} @endsection\n@endif\n\n@section('content')\n\n<div class=\"homepage-banner\">\n    <h1>{{ config('app.name') }}</h1>\n    <p class=\"lead\">Fluent, Minimalism</p>\n</div>\n\n<div class=\"container\">\n\n    @if (isset($page))\n        {!! $page->entry !!}\n    @else\n        <div class=\"row homepage-container\">\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Basics</h3>\n                    <p>In order to add content to this page login to Cms and add a home page. Remember you can set up\n                        your own Auth for Cms or run the artisan command: <code>php artisan grafite:cms-setup</code> to get\n                        a prebuilt auth system.</p>\n                    <p>Once you're all set up try building a menu with slug: main, and a widget with the slug: widget. You'll see the theme display them right away!</p>\n                </div>\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Custom Templates</h3>\n                    <p>By default the homepage has its own template but you can add any by following these details:</p>\n                    <p>To create custom templates for different purposes simply make a view in <br>\n                        the <code>resources/themes/{theme-name}/{module-name}</code> directory that looks similar to: `xxxx-template.blade.php`. <br>\n                        This means you still have full control of blade templating but your pages can easily swap out views.</p>\n                </div>\n            </div>\n        </div>\n        <div class=\"row homepage-container\">\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Custom Themes</h3>\n                    <p>You can easily generate a theme template via the command: <code>php artisan theme:generate {name}</code> </p>\n                    <p>The theme's files will be placed in the following directory: <code>resources/themes/{name}</code></p>\n                    <p>To include files either use the blade code: <code>&#64;theme</code> or include a file with the <code>cms-frontend::</code> namespace.</p>\n                </div>\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"well\">\n                    <h3>Widgets, Menus, Images &amp; Includes</h3>\n                    <p>Widgets are easy to add to any template since they can be injected with the <code>&#64;menu('slug')</code>, <code>&#64;widget('slug')</code> or <code>&#64;images('tag')</code>. If you don't suppy a tag for the images you will get all images. To include a theme view you can easily use: <code>&#64;theme('path.in.theme')</code>.</p>\n                </div>\n                <br>\n            </div>\n        </div>\n    @endif\n\n</div>\n@endsection\n\n@section('cms')\n    @if (isset($page))\n        @edit('pages', $page->id)\n    @endif\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/pages/markdown-template.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $page->seo_description }} @endsection\n@section('seoKeywords') {{ $page->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">{{ $page->title }}</h1>\n\n    @markdown($page->entry)\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages', $page->id)\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/pages/show.blade.php",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('seoDescription') {{ $page->seo_description }} @endsection\n@section('seoKeywords') {{ $page->seo_keywords }} @endsection\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1 class=\"page-header\">{!! $page->title !!}</h1>\n\n    <div class=\"entry-row\">\n        {!! $page->entry !!}\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('pages', $page->id)\n@endsection\n"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/partials/main-menu.blade.php",
    "content": "@foreach($links as $link)\n    @if ($link->external)\n        <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url($link->external_url) }}\">{{ $link->name }}</a></li>\n    @else\n        <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('p/'.$link->page->url) }}\">{{ $link->name }}</a></li>\n    @endif\n@endforeach"
  },
  {
    "path": "src/PublishedAssets/Views/themes/default/partials/navigation.blade.php",
    "content": "<nav class=\"navbar navbar-expand-md navbar-dark fixed-top bg-dark\">\n    <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarCollapse\" aria-controls=\"navbarCollapse\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n        <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse\" id=\"navbarCollapse\">\n        <ul class=\"navbar-nav mr-auto\">\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('/') }}\">Home</a></li>\n            @menu('main', 'cms-frontend::partials.main-menu')\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('blog') }}\">Blog</a></li>\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('events') }}\">Events</a></li>\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('faqs') }}\">FAQs</a></li>\n            <li class=\"nav-item\"><a class=\"nav-link\" href=\"{{ url('gallery') }}\">Gallery</a></li>\n            @modules()\n            @languages()\n        </ul>\n        <ul class=\"navbar-nav px-3\">\n            <li class=\"nav-item text-nowrap\">\n                @if (auth()->user())\n                    <a class=\"nav-link\" href=\"{!! url('user/settings') !!}\"><span class=\"fa fa-fw fa-user\"></span> Settings</a>\n                @else\n                    <a class=\"nav-link\" href=\"{!! url('login') !!}\"><span class=\"fa fa-fw fa-sign-in\"></span> Login</a>\n                @endif\n            </li>\n        </ul>\n    </div>\n</nav>\n\n"
  },
  {
    "path": "src/Repositories/BlogRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Carbon\\Carbon;\nuse Cms;\nuse Grafite\\Cms\\Models\\Blog;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\nuse Grafite\\Cms\\Services\\FileService;\n\nclass BlogRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(Blog $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->translationRepo = $translationRepo;\n        $this->table = config('cms.db-prefix').'blogs';\n    }\n\n    /**\n     * Returns all paginated EventS.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function published()\n    {\n        return $this->model->where('is_published', 1)\n            ->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'))->orderBy('created_at', 'desc')\n            ->paginate(config('cms.pagination', 24));\n    }\n\n    /**\n     * Blog tags, with similar name\n     *\n     * @param  string $tag\n     *\n     * @return Illuminate\\Support\\Collection\n     */\n    public function tags($tag)\n    {\n        return $this->model->where('is_published', 1)\n            ->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'))\n            ->where('tags', 'LIKE', '%'.$tag.'%')->orderBy('created_at', 'desc')\n            ->paginate(config('cms.pagination', 24));\n    }\n\n    /**\n     * Gets all tags of an entry\n     *\n     * @return Illuminate\\Support\\Collection\n     */\n    public function allTags()\n    {\n        $tags = [];\n\n        if (app()->getLocale() !== config('cms.default-language', 'en')) {\n            $blogs = $this->translationRepo->getEntitiesByTypeAndLang(app()->getLocale(), 'Grafite\\Cms\\Models\\Blog');\n        } else {\n            $blogs = $this->model->orderBy('published_at', 'desc')->get();\n        }\n\n        foreach ($blogs as $blog) {\n            foreach (explode(',', $blog->tags) as $tag) {\n                if ($tag !== '') {\n                    array_push($tags, $tag);\n                }\n            }\n        }\n\n        return collect(array_unique($tags));\n    }\n\n    /**\n     * Stores Blog into database.\n     *\n     * @param array $input\n     *\n     * @return Blog\n     */\n    public function store($payload)\n    {\n        $payload = $this->parseBlocks($payload, 'blog');\n\n        $payload['title'] = htmlentities($payload['title']);\n        $payload['url'] = Cms::convertToURL($payload['url']);\n        $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n        $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n        if (isset($payload['hero_image'])) {\n            $file = request()->file('hero_image');\n            $path = app(FileService::class)->saveFile($file, 'public/images', [], true);\n            $payload['hero_image'] = $path['name'];\n        }\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Find Blog by given URL.\n     *\n     * @param string $url\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Pages\n     */\n    public function findBlogsByURL($url)\n    {\n        $blog = null;\n\n        $blog = $this->model->where('url', $url)->where('is_published', 1)->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'))->first();\n\n        if (!$blog) {\n            $blog = $this->translationRepo->findByUrl($url, 'Grafite\\Cms\\Models\\Blog');\n        }\n\n        return $blog;\n    }\n\n    /**\n     * Find Blogs by given Tag.\n     *\n     * @param string $tag\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Pages\n     */\n    public function findBlogsByTag($tag)\n    {\n        return $this->model->where('tags', 'LIKE', \"%$tag%\")->where('is_published', 1)->get();\n    }\n\n    /**\n     * Updates Blog into database.\n     *\n     * @param Blog  $blog\n     * @param array $input\n     *\n     * @return Blog\n     */\n    public function update($blog, $payload)\n    {\n        $payload = $this->parseBlocks($payload, 'blog');\n\n        $payload['title'] = htmlentities($payload['title']);\n\n        if (isset($payload['hero_image'])) {\n            app(FileService::class)->delete($blog->hero_image);\n            $file = request()->file('hero_image');\n            $path = app(FileService::class)->saveFile($file, 'public/images', [], true);\n            $payload['hero_image'] = $path['name'];\n        }\n\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($blog->id, 'Grafite\\Cms\\Models\\Blog', $payload['lang'], $payload);\n        } else {\n            $payload['url'] = Cms::convertToURL($payload['url']);\n            $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n            $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n            unset($payload['lang']);\n\n            return $blog->update($payload);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Repositories/CmsRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Carbon\\Carbon;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CmsRepository\n{\n    public $translationRepo;\n\n    public $model;\n\n    public $table;\n\n    public function __construct(TranslationRepository $translationRepo)\n    {\n        $this->translationRepo = $translationRepo;\n    }\n\n    /**\n     * Returns all Widgets.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function all()\n    {\n        return $this->model->orderBy('created_at', 'desc')->get()->all();\n    }\n\n    /**\n     * Returns all paginated items.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function paginated()\n    {\n        $model = $this->model;\n\n        if (isset(request()->dir) && isset(request()->field)) {\n            $model = $model->orderBy(request()->field, request()->dir);\n        } else {\n            $model = $model->orderBy('created_at', 'desc');\n        }\n\n        return $model->paginate(config('cms.pagination', 25));\n    }\n\n    /**\n     * Returns all published items.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function published()\n    {\n        return $this->model->where('is_published', 1)\n            ->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'))\n            ->orderBy('created_at', 'desc')\n            ->paginate(config('cms.pagination', 24));\n    }\n\n    /**\n     * Returns all public items\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function arePublic()\n    {\n        if (Schema::hasColumn($this->model->getTable(), 'is_published')) {\n            $query = $this->model->where('is_published', 1);\n\n            if (Schema::hasColumn($this->model->getTable(), 'published_at')) {\n                $query->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'));\n            }\n\n            return $query->orderBy('created_at', 'desc')->get();\n        }\n\n        return $this->model->orderBy('created_at', 'desc')->get();\n    }\n\n    /**\n     * Search the columns of a given table\n     *\n     * @param  array $payload\n     *\n     * @return array\n     */\n    public function search($payload)\n    {\n        $query = $this->model->orderBy('created_at', 'desc');\n        $query->where('id', 'LIKE', '%'.$payload['term'].'%');\n\n        $columns = Schema::getColumnListing($this->table);\n\n        foreach ($columns as $attribute) {\n            $query->orWhere($attribute, 'LIKE', '%'.$payload['term'].'%');\n        }\n\n        return [$query, $payload['term'], $query->paginate(25)->render()];\n    }\n\n    /**\n     * Stores Widgets into database.\n     *\n     * @param array $payload\n     *\n     * @return Widgets\n     */\n    public function store($payload)\n    {\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Find Widgets by given id.\n     *\n     * @param int $id\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Widgets\n     */\n    public function find($id)\n    {\n        return $this->model->find($id);\n    }\n\n    /**\n     * Find items by slug.\n     *\n     * @param int $slug\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Model\n     */\n    public function getBySlug($slug)\n    {\n        return $this->model->where('slug', $slug)->first();\n    }\n\n    /**\n     * Find items by url.\n     *\n     * @param int $url\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Model\n     */\n    public function getByUrl($url)\n    {\n        return $this->model->where('url', $url)->first();\n    }\n\n    /**\n     * Updates items into database.\n     *\n     * @param Model $model\n     * @param array $payload\n     *\n     * @return Model\n     */\n    public function update($model, $payload)\n    {\n        return $model->update($payload);\n    }\n\n    /**\n     * Convert block payloads into json\n     *\n     * @param  array $payload\n     * @param  string $module\n     *\n     * @return array\n     */\n    public function parseBlocks($payload, $module)\n    {\n        $blockCollection = [];\n\n        foreach ($payload as $key => $value) {\n            if (stristr($key, 'block_')) {\n                $blockName = str_replace('block_', '', $key);\n                $blockCollection[$blockName] = $value;\n                unset($payload[$key]);\n            }\n        }\n\n        $blockCollection = $this->parseTemplate($payload, $blockCollection, $module);\n\n        if (empty($blockCollection)) {\n            $payload['blocks'] = \"{}\";\n        } else {\n            $payload['blocks'] = json_encode($blockCollection);\n        }\n\n        return $payload;\n    }\n\n    /**\n     * Parse the template for blocks.\n     *\n     * @param  array $payload\n     * @param  array $currentBlocks\n     *\n     * @return array\n     */\n    public function parseTemplate($payload, $currentBlocks, $module)\n    {\n        if (isset($payload['template'])) {\n            $content = file_get_contents(base_path('resources/themes/'.config('cms.frontend-theme').'/'.$module.'/'.$payload['template'].'.blade.php'));\n\n            preg_match_all('/->block\\((.*)\\)/', $content, $pageMethodMatches);\n            preg_match_all('/\\@block\\((.*)\\)/', $content, $bladeMatches);\n\n            $matches = array_unique(array_merge($pageMethodMatches[1], $bladeMatches[1]));\n\n            foreach ($matches as $match) {\n                $match = str_replace('\"', \"\", $match);\n                $match = str_replace(\"'\", \"\", $match);\n                if (!isset($currentBlocks[$match])) {\n                    $currentBlocks[$match] = '';\n                }\n            }\n        }\n\n        return $currentBlocks;\n    }\n}\n"
  },
  {
    "path": "src/Repositories/EventRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Carbon\\Carbon;\nuse Grafite\\Cms\\Models\\Event;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\n\nclass EventRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(Event $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->translationRepo = $translationRepo;\n        $this->table = config('cms.db-prefix').'events';\n    }\n\n    /**\n     * Returns all published Events.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function findEventsByDate($date)\n    {\n        return $this->model->where('is_published', 1)\n            ->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'))\n            ->orderBy('created_at', 'desc')->where('start_date', '<=', $date)\n            ->where('end_date', '>=', $date)->get();\n    }\n\n    /**\n     * Stores Event into database.\n     *\n     * @param array $payload\n     *\n     * @return Event\n     */\n    public function store($payload)\n    {\n        $payload['title'] = htmlentities($payload['title']);\n        $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n        $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Updates Event into database.\n     *\n     * @param Event $event\n     * @param array $input\n     *\n     * @return Event\n     */\n    public function update($event, $payload)\n    {\n        $payload['title'] = htmlentities($payload['title']);\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($event->id, 'Grafite\\Cms\\Models\\Event', $payload['lang'], $payload);\n        } else {\n            $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n            $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n            unset($payload['lang']);\n\n            return $event->update($payload);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Repositories/FAQRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Carbon\\Carbon;\nuse Grafite\\Cms\\Models\\FAQ;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\n\nclass FAQRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(FAQ $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->translationRepo = $translationRepo;\n        $this->table = config('cms.db-prefix').'faqs';\n    }\n\n    /**\n     * Stores FAQ into database.\n     *\n     * @param array $payload\n     *\n     * @return FAQ\n     */\n    public function store($payload)\n    {\n        $payload['question'] = htmlentities($payload['question']);\n        $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n        $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Updates FAQ into database.\n     *\n     * @param FAQ   $FAQ\n     * @param array $input\n     *\n     * @return FAQ\n     */\n    public function update($item, $payload)\n    {\n        $payload['question'] = htmlentities($payload['question']);\n\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($item->id, 'Grafite\\Cms\\Models\\FAQ', $payload['lang'], $payload);\n        } else {\n            $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n            $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n            unset($payload['lang']);\n\n            return $item->update($payload);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Repositories/FileRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Auth;\nuse Config;\nuse CryptoService;\nuse Grafite\\Cms\\Models\\File;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Services\\FileService;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass FileRepository extends CmsRepository\n{\n    public $model;\n\n    public $table;\n\n    public function __construct(File $model)\n    {\n        $this->model = $model;\n        $this->table = config('cms.db-prefix').'files';\n    }\n\n    /**\n     * Stores Files into database.\n     *\n     * @param array $input\n     *\n     * @return Files\n     */\n    public function store($payload)\n    {\n        $result = false;\n\n        foreach ($payload['location'] as $file) {\n            $filePayload = $payload;\n            $filePayload['name'] = $file['original'];\n            $filePayload['location'] = CryptoService::decrypt($file['name']);\n            $filePayload['mime'] = $file['mime'];\n            $filePayload['size'] = $file['size'];\n            $filePayload['order'] = 0;\n            $filePayload['user'] = (isset($payload['user'])) ? $payload['user'] : Auth::id();\n            $filePayload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n            $result = $this->model->create($filePayload);\n        }\n\n        return $result;\n    }\n\n    /**\n     * Updates Files into database.\n     *\n     * @param Files $files\n     * @param array $payload\n     *\n     * @return Files\n     */\n    public function update($files, $payload)\n    {\n        if (isset($payload['location'])) {\n            $savedFile = app(FileService::class)->saveFile($payload['location'], 'files/');\n            $_file = $payload['location'];\n\n            $filePayload = $payload;\n            $filePayload['name'] = $savedFile['original'];\n            $filePayload['location'] = $savedFile['name'];\n            $filePayload['mime'] = $_file->getClientMimeType();\n            $filePayload['size'] = $_file->getClientSize();\n        } else {\n            $filePayload = $payload;\n        }\n\n        $filePayload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n\n        return $files->update($filePayload);\n    }\n\n    /**\n     * Files output for API calls\n     *\n     * @return array\n     */\n    public function apiPrepared()\n    {\n        $files = File::orderBy('created_at', 'desc')->where('is_published', 1)->get();\n        $allFiles = [];\n\n        foreach ($files as $file) {\n            array_push($allFiles, [\n                'file_identifier' => CryptoService::url_encode($file->name).'/'.CryptoService::url_encode($file->location),\n                'file_name' => $file->name,\n                'file_date' => $file->created_at->format('F jS, Y'),\n            ]);\n        }\n\n        return $allFiles;\n    }\n}\n"
  },
  {
    "path": "src/Repositories/ImageRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Cms;\nuse Config;\nuse CryptoService;\nuse Grafite\\Cms\\Models\\Image;\nuse Grafite\\Cms\\Services\\FileService;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass ImageRepository extends CmsRepository\n{\n    public $model;\n\n    public $table;\n\n    public function __construct(Image $model)\n    {\n        $this->model = $model;\n        $this->table = config('cms.db-prefix').'images';\n    }\n\n    public function published()\n    {\n        return $this->model->where('is_published', 1)\n            ->orderBy('created_at', 'desc')\n            ->paginate(Config::get('cms.pagination', 24));\n    }\n\n    /**\n     * Returns all Images for the API.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function apiPrepared()\n    {\n        return $this->model->orderBy('created_at', 'desc')->where('is_published', 1)->get();\n    }\n\n    /**\n     * Returns all Images for the API.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function getImagesByTag($tag = null)\n    {\n        $images = $this->model->orderBy('created_at', 'desc')->where('is_published', 1);\n\n        if (!is_null($tag)) {\n            $images->where('tags', 'LIKE', '%'.$tag.'%');\n        }\n\n        return $images;\n    }\n\n    /**\n     * Returns all Images tags.\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Collection|static[]\n     */\n    public function allTags()\n    {\n        $tags = [];\n        $images = $this->model->orderBy('created_at', 'desc')->where('is_published', 1)->get();\n\n        foreach ($images as $image) {\n            foreach (explode(',', $image->tags) as $tag) {\n                if ($tag > '') {\n                    array_push($tags, $tag);\n                }\n            }\n        }\n\n        return array_unique($tags);\n    }\n\n    /**\n     * Stores Images into database.\n     *\n     * @param array $input\n     *\n     * @return Images\n     */\n    public function apiStore($input)\n    {\n        $savedFile = app(FileService::class)->saveClone($input['location'], 'public/images');\n\n        if (!$savedFile) {\n            return false;\n        }\n\n        $input['is_published'] = 1;\n        $input['location'] = $savedFile['name'];\n        $input['storage_location'] = config('cms.storage-location');\n        $input['original_name'] = $savedFile['original'];\n\n        $image = $this->model->create($input);\n        $image->setCaches();\n\n        return $image;\n    }\n\n    /**\n     * Stores Images into database.\n     *\n     * @param array $input\n     *\n     * @return Images\n     */\n    public function store($input)\n    {\n        $savedFile = $input['location'];\n\n        if (!$savedFile) {\n            Cms::notification('Image could not be saved.', 'danger');\n\n            return false;\n        }\n\n        if (!isset($input['is_published'])) {\n            $input['is_published'] = 0;\n        } else {\n            $input['is_published'] = 1;\n        }\n\n        $input['location'] = CryptoService::decrypt($savedFile['name']);\n        $input['storage_location'] = config('cms.storage-location');\n        $input['original_name'] = $savedFile['original'];\n\n        $image = $this->model->create($input);\n        $image->setCaches();\n\n        return $image;\n    }\n\n    /**\n     * Updates Images\n     *\n     * @param Images $images\n     * @param array  $input\n     *\n     * @return Images\n     */\n    public function update($image, $input)\n    {\n        if (isset($input['location']) && !empty($input['location'])) {\n            $savedFile = app(FileService::class)->saveFile($input['location'], 'public/images', [], true);\n\n            if (!$savedFile) {\n                Cms::notification('Image could not be updated.', 'danger');\n\n                return false;\n            }\n\n            $input['location'] = $savedFile['name'];\n            $input['original_name'] = $savedFile['original'];\n        } else {\n            $input['location'] = $image->location;\n        }\n\n        if (!isset($input['is_published'])) {\n            $input['is_published'] = 0;\n        } else {\n            $input['is_published'] = 1;\n        }\n\n        $image->forgetCache();\n\n        $image->update($input);\n\n        $image->setCaches();\n\n        return $image;\n    }\n}\n"
  },
  {
    "path": "src/Repositories/LinkRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Exception;\nuse Grafite\\Cms\\Models\\Link;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\n\nclass LinkRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(Link $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->table = config('cms.db-prefix').'links';\n        $this->translationRepo = $translationRepo;\n    }\n\n    /**\n     * Stores Links into database.\n     *\n     * @param array $payload\n     *\n     * @return Links\n     */\n    public function store($payload)\n    {\n        $payload['external'] = isset($payload['external']) ? $payload['external'] : 0;\n\n        if ($payload['external'] != 0 && empty($payload['external_url'])) {\n            throw new Exception(\"Your link was missing a URL\", 1);\n        }\n\n        if (!isset($payload['page_id'])) {\n            $payload['page_id'] = 0;\n        }\n\n        if ($payload['page_id'] == 0 && $payload['external'] == 0) {\n            throw new Exception(\"Your link was not connected to anything, and could not be made\", 1);\n        }\n\n        $link = $this->model->create($payload);\n\n        $order = json_decode($link->menu->order);\n        array_push($order, $link->id);\n        $link->menu->update([\n            'order' => json_encode($order),\n        ]);\n\n        return $link;\n    }\n\n    /**\n     * Find Links by menu id.\n     *\n     * @param int $id\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Links\n     */\n    public function getLinksByMenu($id)\n    {\n        return $this->model->where('menu_id', $id)->get();\n    }\n\n    /**\n     * Updates Links into database.\n     *\n     * @param Link  $link\n     * @param array $input\n     *\n     * @return Link\n     */\n    public function update($link, $payload)\n    {\n        $payload['external'] = isset($payload['external']) ? $payload['external'] : 0;\n\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($link->id, 'Grafite\\Cms\\Models\\Link', $payload['lang'], $payload);\n        }\n\n        unset($payload['lang']);\n\n        return $link->update($payload);\n    }\n}\n"
  },
  {
    "path": "src/Repositories/MenuRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Grafite\\Cms\\Models\\Menu;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass MenuRepository extends CmsRepository\n{\n    public $model;\n\n    public $table;\n\n    public function __construct(Menu $model)\n    {\n        $this->model = $model;\n        $this->table = config('cms.db-prefix').'menus';\n    }\n\n    /**\n     * Stores Menu into database.\n     *\n     * @param array $payload\n     *\n     * @return Menu\n     */\n    public function store($payload)\n    {\n        $payload['name'] = htmlentities($payload['name']);\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Updates Menu into database.\n     *\n     * @param Menu  $menu\n     * @param array $payload\n     *\n     * @return Menu\n     */\n    public function update($menu, $payload)\n    {\n        $payload['name'] = htmlentities($payload['name']);\n\n        return $menu->update($payload);\n    }\n\n    /**\n     * Set the order\n     *\n     * @param Menu  $menu\n     * @param array $payload\n     *\n     * @return Menu\n     */\n    public function setOrder($menu, $payload)\n    {\n        return $menu->update($payload);\n    }\n}\n"
  },
  {
    "path": "src/Repositories/PageRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Carbon\\Carbon;\nuse Cms;\nuse Grafite\\Cms\\Models\\Page;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\nuse Grafite\\Cms\\Services\\FileService;\n\nclass PageRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(Page $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->translationRepo = $translationRepo;\n        $this->table = config('cms.db-prefix').'pages';\n    }\n\n    /**\n     * Stores Pages into database.\n     *\n     * @param array $input\n     *\n     * @return Pages\n     */\n    public function store($payload)\n    {\n        $payload = $this->parseBlocks($payload, 'pages');\n\n        $payload['title'] = htmlentities($payload['title']);\n        $payload['url'] = Cms::convertToURL($payload['url']);\n        $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n        $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n        if (isset($payload['hero_image'])) {\n            $file = request()->file('hero_image');\n            $path = app(FileService::class)->saveFile($file, 'public/images', [], true);\n            $payload['hero_image'] = $path['name'];\n        }\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Find Pages by given URL.\n     *\n     * @param string $url\n     *\n     * @return \\Illuminate\\Support\\Collection|null|static|Pages\n     */\n    public function findPagesByURL($url)\n    {\n        $page = null;\n\n        $page = $this->model->where('url', $url)->where('is_published', 1)->where('published_at', '<=', Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s'))->first();\n\n        if ($page && app()->getLocale() !== config('cms.default-language')) {\n            $page = $this->translationRepo->findByEntityId($page->id, 'Grafite\\Cms\\Models\\Page');\n        }\n\n        if (!$page) {\n            $page = $this->translationRepo->findByUrl($url, 'Grafite\\Cms\\Models\\Page');\n        }\n\n        if ($url === 'home' && app()->getLocale() !== config('cms.default-language')) {\n            $page = $this->translationRepo->findByUrl($url, 'Grafite\\Cms\\Models\\Page');\n        }\n\n        return $page;\n    }\n\n    /**\n     * Updates Pages into database.\n     *\n     * @param Pages $page\n     * @param array $input\n     *\n     * @return Pages\n     */\n    public function update($page, $payload)\n    {\n        $payload = $this->parseBlocks($payload, 'pages');\n\n        if (isset($payload['hero_image'])) {\n            app(FileService::class)->delete($page->hero_image);\n            $file = request()->file('hero_image');\n            $path = app(FileService::class)->saveFile($file, 'public/images', [], true);\n            $payload['hero_image'] = $path['name'];\n        }\n\n        $payload['title'] = htmlentities($payload['title']);\n\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($page->id, 'Grafite\\Cms\\Models\\Page', $payload['lang'], $payload);\n        } else {\n            $payload['url'] = Cms::convertToURL($payload['url']);\n            $payload['is_published'] = (isset($payload['is_published'])) ? (bool) $payload['is_published'] : 0;\n            $payload['published_at'] = (isset($payload['published_at']) && !empty($payload['published_at'])) ? Carbon::parse($payload['published_at'])->format('Y-m-d H:i:s') : Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s');\n\n            unset($payload['lang']);\n\n            return $page->update($payload);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Repositories/PromotionRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Grafite\\Cms\\Models\\Promotion;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\n\nclass PromotionRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(Promotion $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->translationRepo = $translationRepo;\n        $this->table = config('cms.db-prefix').'promotions';\n    }\n\n    /**\n     * Stores Promotions into database.\n     *\n     * @param array $payload\n     *\n     * @return Promotions\n     */\n    public function store($payload)\n    {\n        $payload['slug'] = str_slug($payload['slug']);\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Updates Promotion in the database\n     *\n     * @param Promotions $widget\n     * @param array $payload\n     *\n     * @return Promotions\n     */\n    public function update($widget, $payload)\n    {\n        $payload['slug'] = str_slug($payload['slug']);\n\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($widget->id, 'Grafite\\Cms\\Models\\Promotion', $payload['lang'], $payload);\n        } else {\n            unset($payload['lang']);\n\n            return $widget->update($payload);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Repositories/TranslationRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Carbon\\Carbon;\nuse Grafite\\Cms\\Models\\Translation;\n\nclass TranslationRepository\n{\n    public $model;\n\n    public function __construct(Translation $translation)\n    {\n        $this->model = $translation;\n    }\n\n    /**\n     * Create or Update an entry\n     *\n     * @param  integer $entityId\n     * @param  string $entityType\n     * @param  string $lang\n     * @param  array $payload\n     *\n     * @return boolean\n     */\n    public function createOrUpdate($entityId, $entityType, $lang, $payload)\n    {\n        $translation = $this->model->firstOrCreate([\n            'entity_id' => $entityId,\n            'entity_type' => $entityType,\n            'language' => $lang,\n        ]);\n\n        unset($payload['_method']);\n        unset($payload['_token']);\n\n        $translation->entity_data = json_encode($payload);\n\n        return $translation->save();\n    }\n\n    /**\n     * Find by URL\n     *\n     * @param  string $url\n     * @param  string $type\n     *\n     * @return Object|null\n     */\n    public function findByUrl($url, $type)\n    {\n        $item = $this->model->where('entity_type', $type)->where('entity_data', 'LIKE', '%\"url\":\"'.$url.'\"%')->first();\n\n        if ($item && ($item->data->is_published == 1 || $item->data->is_published == 'on') && $item->data->published_at <= Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s')) {\n            return $item->data;\n        }\n\n        return null;\n    }\n\n    /**\n     * Find an entity by its Id\n     *\n     * @param  integer $entityId\n     * @param  string $entityType\n     *\n     * @return Object|null\n     */\n    public function findByEntityId($entityId, $entityType)\n    {\n        $item = $this->model->where('entity_type', $entityType)->where('entity_id', $entityId)->first();\n\n        if ($item && ($item->data->is_published == 1 || $item->data->is_published == 'on') && $item->data->published_at <= Carbon::now(config('app.timezone'))->format('Y-m-d H:i:s')) {\n            return $item->data;\n        }\n\n        return null;\n    }\n\n    /**\n     * Get entities by type and language\n     *\n     * @param  string $lang\n     * @param  string $type\n     *\n     * @return Illuminate\\Support\\Collection\n     */\n    public function getEntitiesByTypeAndLang($lang, $type)\n    {\n        $entities = collect();\n        $collection = $this->model->where('entity_type', $type)->where('entity_data', 'LIKE', '%\"lang\":\"'.$lang.'\"%')->get();\n\n        foreach ($collection as $item) {\n            $instance = app($item->type)->attributes = $item->data;\n            $entities->push($instance);\n        }\n\n        return $entities;\n    }\n}\n"
  },
  {
    "path": "src/Repositories/WidgetRepository.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Repositories;\n\nuse Grafite\\Cms\\Models\\Widget;\nuse Grafite\\Cms\\Repositories\\CmsRepository;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\n\nclass WidgetRepository extends CmsRepository\n{\n    public $model;\n\n    public $translationRepo;\n\n    public $table;\n\n    public function __construct(Widget $model, TranslationRepository $translationRepo)\n    {\n        $this->model = $model;\n        $this->translationRepo = $translationRepo;\n        $this->table = config('cms.db-prefix').'widgets';\n    }\n\n    /**\n     * Stores Widgets into database.\n     *\n     * @param array $payload\n     *\n     * @return Widgets\n     */\n    public function store($payload)\n    {\n        $payload['name'] = htmlentities($payload['name']);\n\n        return $this->model->create($payload);\n    }\n\n    /**\n     * Updates Widget in the database\n     *\n     * @param Widgets $widget\n     * @param array $payload\n     *\n     * @return Widgets\n     */\n    public function update($widget, $payload)\n    {\n        $payload['name'] = htmlentities($payload['name']);\n\n        if (!empty($payload['lang']) && $payload['lang'] !== config('cms.default-language', 'en')) {\n            return $this->translationRepo->createOrUpdate($widget->id, 'Grafite\\Cms\\Models\\Widget', $payload['lang'], $payload);\n        } else {\n            unset($payload['lang']);\n\n            return $widget->update($payload);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Requests/BlogRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Illuminate\\Foundation\\Http\\FormRequest;\nuse Grafite\\Cms\\Models\\Blog;\n\nclass BlogRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Blog::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/EventRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Event;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass EventRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Event::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/FAQRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\FAQ;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass FAQRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return FAQ::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/FileRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass FileRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return [];\n    }\n}\n"
  },
  {
    "path": "src/Requests/ImagesRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Image;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass ImagesRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Image::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/LinksRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Link;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass LinksRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Link::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/MenuRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Menu;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass MenuRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Menu::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/PagesRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Page;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass PagesRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Page::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/PromotionRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Promotion;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass PromotionRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Promotion::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Requests/WidgetRequest.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Requests;\n\nuse Auth;\nuse Gate;\nuse Grafite\\Cms\\Models\\Widget;\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nclass WidgetRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (config('app.env') !== 'testing') {\n            return Gate::allows('cms', Auth::user());\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return Widget::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Routes/api.php",
    "content": "<?php\n\n    $routePrefix = config('cms.backend-route-prefix', 'cms');\n\n    Route::group(['middleware' => 'web'], function () use ($routePrefix) {\n\n        /*\n        |--------------------------------------------------------------------------\n        | APIs\n        |--------------------------------------------------------------------------\n        */\n        Route::group(['prefix' => $routePrefix.'/api'], function () use ($routePrefix) {\n            Route::group(['middleware' => ['cms-api']], function () use ($routePrefix) {\n                Route::get('blog', 'ApiController@all');\n                Route::get('blog/{id}', 'ApiController@find');\n\n                Route::get('events', 'ApiController@all');\n                Route::get('events/{id}', 'ApiController@find');\n\n                Route::get('faqs', 'ApiController@all');\n                Route::get('faqs/{id}', 'ApiController@find');\n\n                Route::get('files', 'ApiController@all');\n                Route::get('files/{id}', 'ApiController@find');\n\n                Route::get('images', 'ApiController@all');\n                Route::get('images/{id}', 'ApiController@find');\n\n                Route::get('pages', 'ApiController@all');\n                Route::get('pages/{id}', 'ApiController@find');\n\n                Route::get('widgets', 'ApiController@all');\n                Route::get('widgets/{id}', 'ApiController@find');\n            });\n        });\n    });\n"
  },
  {
    "path": "src/Routes/web.php",
    "content": "<?php\n\n    $routePrefix = config('cms.backend-route-prefix', 'cms');\n\n    Route::group(['middleware' => 'web'], function () use ($routePrefix) {\n        Route::get($routePrefix, 'GrafiteCmsFeatureController@sendHome');\n        Route::get('{module}/rss', 'RssController@index');\n        Route::get('site-map', 'SiteMapController@index');\n        Route::get($routePrefix.'/hero-images/delete/{entity}/{entity_id}', 'GrafiteCmsFeatureController@deleteHero');\n\n        /*\n        |--------------------------------------------------------------------------\n        | Set Language\n        |--------------------------------------------------------------------------\n        */\n\n        Route::get($routePrefix.'/language/set/{language}', 'GrafiteCmsFeatureController@setLanguage');\n\n        /*\n        |--------------------------------------------------------------------------\n        | Public Routes\n        |--------------------------------------------------------------------------\n        */\n\n        Route::get('public-preview/{encFileName}', 'AssetController@asPreview');\n        Route::get('public-asset/{encFileName}', 'AssetController@asPublic');\n        Route::get('public-download/{encFileName}/{encRealFileName}', 'AssetController@asDownload');\n\n        /*\n         * --------------------------------------------------------------------------\n         * Internal APIs\n         * --------------------------------------------------------------------------\n        */\n        Route::group(['middleware' => 'auth'], function () use ($routePrefix) {\n            Route::group(['prefix' => 'cms/api'], function () {\n                Route::get('images/list', 'ImagesController@apiList');\n                Route::post('images/store', 'ImagesController@apiStore');\n                Route::get('files/list', 'FilesController@apiList');\n            });\n\n            Route::group(['prefix' => $routePrefix], function () {\n                Route::get('images/bulk-delete/{ids}', 'ImagesController@bulkDelete');\n                Route::post('images/upload', 'ImagesController@upload');\n                Route::post('files/upload', 'FilesController@upload');\n            });\n        });\n\n        /*\n        |--------------------------------------------------------------------------\n        | Cms\n        |--------------------------------------------------------------------------\n        */\n\n        Route::group(['prefix' => $routePrefix], function () use ($routePrefix) {\n            Route::get('asset/{path}/{contentType}', 'AssetController@asset');\n\n            Route::group(['middleware' => ['auth', 'cms']], function () use ($routePrefix) {\n                Route::get('dashboard', 'DashboardController@main');\n                Route::get('help', 'HelpController@main');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Common Features\n                |--------------------------------------------------------------------------\n                */\n\n                Route::get('preview/{entity}/{entityId}', 'GrafiteCmsFeatureController@preview');\n                Route::get('rollback/{entity}/{entityId}', 'GrafiteCmsFeatureController@rollback');\n                Route::get('revert/{id}', 'GrafiteCmsFeatureController@revert');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Menus\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('menus', 'MenuController', ['except' => ['show'], 'as' => $routePrefix]);\n                Route::post('menus/search', 'MenuController@search');\n                Route::put('menus/{id}/order', 'MenuController@setOrder');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Links\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('links', 'LinksController', ['except' => ['index', 'show'], 'as' => $routePrefix]);\n                Route::post('links/search', 'LinksController@search');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Images\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('images', 'ImagesController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('images/search', 'ImagesController@search');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Blog\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('blog', 'BlogController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('blog/search', 'BlogController@search');\n                Route::get('blog/{id}/history', 'BlogController@history');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Pages\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('pages', 'PagesController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('pages/search', 'PagesController@search');\n                Route::get('pages/{id}/history', 'PagesController@history');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Widgets\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('widgets', 'WidgetsController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('widgets/search', 'WidgetsController@search');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Promotions\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('promotions', 'PromotionsController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('promotions/search', 'PromotionsController@search');\n\n                /*\n                |--------------------------------------------------------------------------\n                | FAQs\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('faqs', 'FAQController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('faqs/search', 'FAQController@search');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Events\n                |--------------------------------------------------------------------------\n                */\n\n                Route::resource('events', 'EventController', ['as' => $routePrefix, 'except' => ['show']]);\n                Route::post('events/search', 'EventController@search');\n                Route::get('events/{id}/history', 'EventController@history');\n\n                /*\n                |--------------------------------------------------------------------------\n                | Files\n                |--------------------------------------------------------------------------\n                */\n\n                Route::get('files/remove/{id}', 'FilesController@remove');\n                Route::post('files/search', 'FilesController@search');\n\n                Route::resource('files', 'FilesController', ['as' => $routePrefix, 'except' => ['show']]);\n            });\n        });\n    });\n"
  },
  {
    "path": "src/Services/AnalyticsService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Schema;\nuse Grafite\\Cms\\Models\\Analytics;\n\nclass AnalyticsService\n{\n    public function __construct(Analytics $model)\n    {\n        $this->model = $model;\n    }\n\n    public function log($request)\n    {\n        $requestData = json_encode([\n            'referer' => $request->server('HTTP_REFERER', null),\n            'user_agent' => $request->server('HTTP_USER_AGENT', null),\n            'host' => $request->server('HTTP_HOST', null),\n            'remote_addr' => $request->server('REMOTE_ADDR', null),\n            'uri' => $request->server('REQUEST_URI', null),\n            'method' => $request->server('REQUEST_METHOD', null),\n            'query' => $request->server('QUERY_STRING', null),\n            'time' => $request->server('REQUEST_TIME', null),\n        ]);\n\n        if (Schema::hasTable(config('cms.db-prefix', '').'analytics')) {\n            $this->model->create([\n                'data' => $requestData,\n            ]);\n        }\n    }\n\n    public function topReferers($count)\n    {\n        $analytics = $this->model->where('created_at', '>', Carbon::now()->subDays($count))->get();\n        $data = $analytics->pluck('data')->all();\n\n        return $this->convertDataToItems($data, 'referer', ['unknown' => 0]);\n    }\n\n    public function topPages($count)\n    {\n        $analytics = $this->model->where('created_at', '>', Carbon::now()->subDays($count))->get();\n        $data = $analytics->pluck('data')->all();\n\n        return $this->convertDataToItems($data, 'uri');\n    }\n\n    public function topBrowsers($count)\n    {\n        $analytics = $this->model->where('created_at', '>', Carbon::now()->subDays($count))->get();\n        $data = $analytics->pluck('data')->all();\n\n        $browsers = [];\n\n        foreach ($this->convertDataToItems($data, 'user_agent') as $userAgent => $count) {\n            $browser = parse_user_agent($userAgent);\n            $browsers[$browser['browser'].' ('.$browser['version'].') on '.$browser['platform']] = $count;\n        }\n\n        return $browsers;\n    }\n\n    public function convertDataToItems($data, $key, $conversions = [], $limit = 15)\n    {\n        if (!isset($conversions['unknown'])) {\n            $conversions['unknown'] = 0;\n        }\n\n        if (!isset($conversions['unknown'])) {\n            $conversions['unknown'] = 0;\n        }\n\n        foreach ($data as $item) {\n            $visit = json_decode($item);\n            if (!empty($visit->$key) && $visit->$key > '') {\n                $conversions[$visit->$key] = 0;\n            }\n        }\n\n        foreach ($data as $item) {\n            $visit = json_decode($item);\n            if (!empty($visit->$key) && $visit->$key > '') {\n                $conversions[$visit->$key] += 1;\n            } else {\n                $conversions['unknown'] += 1;\n            }\n        }\n\n        return array_slice($conversions, 0, $limit);\n    }\n\n    public function getDays($count)\n    {\n        $analytics = $this->model->where('created_at', '>', Carbon::now()->subDays($count));\n\n        if ($analytics->first()) {\n            $endDate = Carbon::now();\n            $startDate = Carbon::parse($analytics->first()->created_at->format('Y-m-d'));\n\n            $dateRange = $this->getDateRange($startDate, $endDate);\n\n            foreach ($dateRange as $date) {\n                $visits[$date] = $this->model->where('created_at', '>', $date.' 00:00:00')->where('created_at', '<', $date.' 23:59:59')->count();\n            }\n\n            $visitCollection = collect($visits);\n        } else {\n            $visitCollection = collect([\n                Carbon::now()->format('Y-m-d') => 0,\n            ]);\n        }\n\n        return [\n            'dates' => $visitCollection->keys()->toArray(),\n            'visits' => $visitCollection->values()->toArray(),\n        ];\n    }\n\n    protected function getDateRange($startDate, $endDate)\n    {\n        $dates = [];\n\n        for ($date = $startDate; $date->lte($endDate); $date->addDay()) {\n            $dates[] = $date->format('Y-m-d');\n        }\n\n        return $dates;\n    }\n}\n"
  },
  {
    "path": "src/Services/AssetService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse App;\nuse Exception;\nuse Illuminate\\Filesystem\\Filesystem;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Request;\nuse Illuminate\\Support\\Facades\\Response;\nuse Illuminate\\Support\\Facades\\Storage;\nuse Intervention\\Image\\Facades\\Image;\nuse Cms;\nuse SplFileInfo;\nuse Grafite\\Cms\\Facades\\CryptoServiceFacade;\n\nclass AssetService\n{\n    protected $mimeTypes;\n\n    public function __construct()\n    {\n        $this->mimeTypes = require __DIR__.'/../Assets/mimes.php';\n    }\n\n    /**\n     * Provide the File as a Public Asset.\n     *\n     * @param string $encFileName\n     *\n     * @return Download\n     */\n    public function asPublic($encFileName)\n    {\n        try {\n            return Cache::remember($encFileName.'_asPublic', 3600, function () use ($encFileName) {\n                $fileName = CryptoServiceFacade::url_decode($encFileName);\n                $filePath = $this->getFilePath($fileName);\n\n                $fileTool = new SplFileInfo($filePath);\n                $ext = $fileTool->getExtension();\n                $contentType = $this->getMimeType($ext);\n\n                $headers = ['Content-Type' => $contentType];\n                $fileContent = $this->getFileContent($fileName, $contentType, $ext);\n\n                return Response::make($fileContent, 200, [\n                    'Content-Type' => $contentType,\n                    'Content-Disposition' => 'attachment; filename=\"'.$fileName.'\"',\n                ]);\n            });\n        } catch (Exception $e) {\n            return Response::make('file not found');\n        }\n    }\n\n    /**\n     * Provide the File as a Public Preview.\n     *\n     * @param string $encFileName\n     *\n     * @return Download\n     */\n    public function asPreview($encFileName, Filesystem $fileSystem)\n    {\n        try {\n            return Cache::remember($encFileName.'_preview', 3600, function () use ($encFileName, $fileSystem) {\n                $fileName = CryptoServiceFacade::url_decode($encFileName);\n\n                if (config('cms.storage-location') === 'local' || config('cms.storage-location') === null) {\n                    $filePath = storage_path('app/'.$fileName);\n                    $contentType = $fileSystem->mimeType($filePath);\n                    $ext = strtoupper($fileSystem->extension($filePath));\n                } else {\n                    $filePath = Storage::disk(config('cms.storage-location', 'local'))->url($fileName);\n                    $fileTool = new SplFileInfo($filePath);\n                    $ext = $fileTool->getExtension();\n                    $contentType = $this->getMimeType($ext);\n                }\n\n                if (stristr($contentType, 'image')) {\n                    $headers = ['Content-Type' => $contentType];\n                    $fileContent = $this->getFileContent($fileName, $contentType, $ext);\n                } else {\n                    $fileContent = file_get_contents($this->generateImage($ext));\n                }\n\n                return Response::make($fileContent, 200, [\n                    'Content-Type' => $contentType,\n                    'Content-Disposition' => 'attachment; filename=\"'.$fileName.'\"',\n                ]);\n            });\n        } catch (Exception $e) {\n            return Response::make('file not found');\n        }\n    }\n\n    /**\n     * Provide file as download.\n     *\n     * @param string $encFileName\n     * @param string $encRealFileName\n     *\n     * @return Downlaod\n     */\n    public function asDownload($encFileName, $encRealFileName)\n    {\n        try {\n            return Cache::remember($encFileName.'_asDownload', 3600, function () use ($encFileName, $encRealFileName) {\n                $fileName = CryptoServiceFacade::url_decode($encFileName);\n                $realFileName = CryptoServiceFacade::url_decode($encRealFileName);\n                $filePath = $this->getFilePath($fileName);\n\n                $fileTool = new SplFileInfo($filePath);\n                $ext = $fileTool->getExtension();\n                $contentType = $this->getMimeType($ext);\n\n                $headers = ['Content-Type' => $contentType];\n                $fileContent = $this->getFileContent($realFileName, $contentType, $ext);\n\n                return Response::make($fileContent, 200, [\n                    'Content-Type' => $contentType,\n                    'Content-Disposition' => 'attachment; filename=\"'.$fileName.'\"',\n                ]);\n            });\n        } catch (Exception $e) {\n            Cms::notification('We encountered an error with that file', 'danger');\n\n            return redirect('errors/general');\n        }\n    }\n\n    /**\n     * Gets an asset.\n     *\n     * @param string $encPath\n     * @param string $contentType\n     *\n     * @return Provides the valid\n     */\n    public function asset($encPath, $contentType, Filesystem $fileSystem)\n    {\n        try {\n            $path = CryptoServiceFacade::url_decode($encPath);\n\n            if (Request::get('isModule') === 'true') {\n                $filePath = $path;\n            } else {\n                if (str_contains($path, 'dist/') || str_contains($path, 'themes/')) {\n                    $filePath = __DIR__.'/../Assets/'.$path;\n                } else {\n                    $filePath = __DIR__.'/../Assets/src/'.$path;\n                }\n            }\n\n            $fileName = basename($filePath);\n\n            if (!is_null($contentType)) {\n                $contentType = CryptoServiceFacade::url_decode($contentType);\n            } else {\n                $contentType = $fileSystem->mimeType($fileName);\n            }\n\n            $headers = ['Content-Type' => $contentType];\n\n            return response()->download($filePath, $fileName, $headers);\n        } catch (Exception $e) {\n            return Response::make('file not found');\n        }\n    }\n\n    /**\n     * Get the mime type.\n     *\n     * @param string $extension\n     *\n     * @return string\n     */\n    public function getMimeType($extension)\n    {\n        if (isset($this->mimeTypes['.'.strtolower($extension)])) {\n            return $this->mimeTypes['.'.strtolower($extension)];\n        }\n\n        return 'text/plain';\n    }\n\n    /**\n     * Get a file's path\n     *\n     * @param  string $fileName\n     *\n     * @return string\n     */\n    public function getFilePath($fileName)\n    {\n        if (file_exists(storage_path('app/'.$fileName))) {\n            $filePath = storage_path('app/'.$fileName);\n        } else {\n            $filePath = Storage::disk(config('cms.storage-location', 'local'))->url($fileName);\n        }\n\n        return $filePath;\n    }\n\n    /**\n     * Get a files content\n     *\n     * @param  string $fileName\n     * @param  string $contentType\n     * @param  string $ext\n     *\n     * @return mixed\n     */\n    public function getFileContent($fileName, $contentType, $ext)\n    {\n        if (Storage::disk(config('cms.storage-location', 'local'))->exists($fileName)) {\n            $fileContent = Storage::disk(config('cms.storage-location', 'local'))->get($fileName);\n        } elseif (!is_null(config('filesystems.cloud.key'))) {\n            $fileContent = Storage::disk('cloud')->get($fileName);\n        } else {\n            $fileContent = file_get_contents($this->generateImage('File Not Found'));\n        }\n\n        if (stristr($fileName, 'image') || stristr($contentType, 'image')) {\n            if (! is_null(config('cms.preview-image-size'))) {\n                $img = Image::make($fileContent);\n                $img->resize(config('cms.preview-image-size', 800), null, function ($constraint) {\n                    $constraint->aspectRatio();\n                });\n\n                return $img->encode($ext);\n            }\n        }\n\n        return $fileContent;\n    }\n\n    /**\n     * Generate an image\n     *\n     * @param string $ext\n     *\n     * @return Image\n     */\n    public function generateImage($ext)\n    {\n        if ($ext == 'File Not Found') {\n            return __DIR__.'/../Assets/src/images/blank-file-not-found.jpg';\n        }\n\n        return __DIR__.'/../Assets/src/images/blank-file.jpg';\n    }\n}\n"
  },
  {
    "path": "src/Services/BaseService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nclass BaseService\n{\n    /**\n     * Get templates as options\n     *\n     * @param  string $module\n     *\n     * @return array\n     */\n    public function getTemplatesAsOptionsArray($module)\n    {\n        $availableTemplates = ['show'];\n        $templates = glob(base_path('resources/themes/'.config('cms.frontend-theme').'/'.$module.'/*'));\n\n        foreach ($templates as $template) {\n            $template = str_replace(base_path('resources/themes/'.config('cms.frontend-theme').'/'.$module.'/'), '', $template);\n            if (stristr($template, 'template')) {\n                $template = str_replace('-template.blade.php', '', $template);\n                if (!stristr($template, '.php')) {\n                    $availableTemplates[] = $template.'-template';\n                }\n            }\n        }\n\n        return $availableTemplates;\n    }\n}\n"
  },
  {
    "path": "src/Services/BlogService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Grafite\\Cms\\Services\\BaseService;\nuse Illuminate\\Support\\Facades\\Config;\n\nclass BlogService extends BaseService\n{\n    /**\n     * Get templates as options\n     *\n     * @return array\n     */\n    public function getTemplatesAsOptions()\n    {\n        return $this->getTemplatesAsOptionsArray('blog');\n    }\n}\n"
  },
  {
    "path": "src/Services/CmsResponseService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Illuminate\\Support\\Facades\\Response;\n\nclass CmsResponseService\n{\n    /**\n     * Generate an api response.\n     *\n     * @param string $type    Response type\n     * @param string $message Response string\n     *\n     * @return Response\n     */\n    public function apiResponse($type, $message, $code = 200)\n    {\n        return Response::json(['status' => $type, 'data' => $message], $code);\n    }\n\n    /**\n     * Generate an API error response.\n     *\n     * @param array $errors Validation errors\n     * @param array $inputs Input values\n     *\n     * @return Response\n     */\n    public function apiErrorResponse($errors, $inputs)\n    {\n        $message = [];\n        foreach ($inputs as $key => $value) {\n            if (!isset($errors[$key])) {\n                $message[$key] = [\n                    'status' => 'valid',\n                    'value' => $value,\n                ];\n            } else {\n                $message[$key] = [\n                    'status' => 'invalid',\n                    'error' => $errors[$key],\n                    'value' => $value,\n                ];\n            }\n        }\n\n        return Response::json(['status' => 'error', 'data' => $message]);\n    }\n}\n"
  },
  {
    "path": "src/Services/CmsService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Grafite\\Cms\\Facades\\CryptoServiceFacade;\nuse Grafite\\Cms\\Repositories\\ImageRepository;\nuse Grafite\\Cms\\Services\\Traits\\DefaultModuleServiceTrait;\nuse Grafite\\Cms\\Services\\Traits\\MenuServiceTrait;\nuse Grafite\\Cms\\Services\\Traits\\ModuleServiceTrait;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Gate;\nuse Illuminate\\Support\\Facades\\Session;\nuse Illuminate\\Support\\Facades\\URL;\nuse ReflectionException;\n\nclass CmsService\n{\n    use MenuServiceTrait,\n        DefaultModuleServiceTrait,\n        ModuleServiceTrait;\n\n    public $backendRoute;\n\n    public function __construct()\n    {\n        $this->imageRepo = app(ImageRepository::class);\n        $this->backendRoute = config('cms.backend-route-prefix', 'cms');\n    }\n\n    /**\n     * Get a module's asset.\n     *\n     * @param string $module      Module name\n     * @param string $path        Path to module asset\n     * @param string $contentType Asset type\n     *\n     * @return string\n     */\n    public function asset($path, $contentType = 'null', $fullURL = true)\n    {\n        if (!$fullURL) {\n            return base_path(__DIR__.'/../Assets/'.$path);\n        }\n\n        return url($this->backendRoute.'/asset/'.CryptoServiceFacade::url_encode($path).'/'.CryptoServiceFacade::url_encode($contentType));\n    }\n\n    /**\n     * Get a file download response\n     *\n     * @param  string $fileName\n     * @param  string $realFileName\n     *\n     * @return Response\n     */\n    public function fileAsDownload($fileName, $realFileName)\n    {\n        return app(FileService::class)->fileAsDownload($fileName, $realFileName);\n    }\n\n    /**\n     * Check if default CMS language\n     *\n     * @return bool\n     */\n    public function isDefaultLanguage()\n    {\n        if (! is_null(request('lang')) && request('lang') !== config('cms.default-language', 'en')) {\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * Links for each supported language\n     *\n     * @param  string $linkClass\n     * @param  string $itemClass\n     *\n     * @return string\n     */\n    public function languageLinks($linkClass = 'nav-link', $itemClass = 'nav-item')\n    {\n        if (count(config('cms.languages')) > 1) {\n            $languageLinks = [];\n            foreach (config('cms.languages') as $key => $value) {\n                $url = url(config('cms.backend-route-prefix', 'cms').'/language/set/'.$key);\n                $languageLinks[] = '<li class=\"'.$itemClass.'\"><a class=\"language-link '.$linkClass.'\" href=\"'.$url.'\">'.ucfirst($value).'</a></li>';\n            }\n\n            $languageLinkString = implode($languageLinks);\n\n            return $languageLinkString;\n        }\n\n        return '';\n    }\n\n    /**\n     * Generates a notification for the app.\n     *\n     * @param string $string Notification string\n     * @param string $type   Notification type\n     */\n    public function notification($string, $type = null)\n    {\n        if (is_null($type)) {\n            $type = 'info';\n        }\n\n        Session::flash('notification', $string);\n        Session::flash('notificationType', 'alert-'.$type);\n    }\n\n    /**\n     * Creates a breadcrumb trail.\n     *\n     * @param array $locations Locations array\n     *\n     * @return string\n     */\n    public function breadcrumbs($locations)\n    {\n        $trail = '';\n\n        foreach ($locations as $location) {\n            if (is_array($location)) {\n                foreach ($location as $key => $value) {\n                    $trail .= '<li class=\"breadcrumb-item\"><a href=\"'.$value.'\">'.ucfirst($key).'</a></li>';\n                }\n            } else {\n                $trail .= '<li class=\"breadcrumb-item\">'.ucfirst($location).'</li>';\n            }\n        }\n\n        return $trail;\n    }\n\n    /**\n     * Get Module Config.\n     *\n     * @param string $key Config key\n     *\n     * @return mixed\n     */\n    public function config($key)\n    {\n        $splitKey = explode('.', $key);\n\n        $moduleConfig = include __DIR__.'/../PublishedAssets/Config/'.$splitKey[0].'.php';\n\n        $strippedKey = preg_replace('/'.$splitKey[1].'./', '', preg_replace('/'.$splitKey[0].'./', '', $key, 1), 1);\n\n        return $moduleConfig[$strippedKey];\n    }\n\n    /**\n     * Assign a value to the path.\n     *\n     * @param array  &$arr Original Array of values\n     * @param string $path Array as path string\n     *\n     * @return mixed\n     */\n    public function assignArrayByPath(&$arr, $path)\n    {\n        $keys = explode('.', $path);\n\n        while ($key = array_shift($keys)) {\n            $arr = &$arr[$key];\n        }\n\n        return $arr;\n    }\n\n    /**\n     * Convert a string to a URL.\n     *\n     * @param string $string\n     *\n     * @return string\n     */\n    public function convertToURL($string)\n    {\n        return preg_replace('/[^A-Za-z0-9\\-]/', '', str_replace(' ', '-', strtolower($string)));\n    }\n\n    /**\n     * Add these views to the packages.\n     *\n     * @param string $dir\n     */\n    public function addToPackages($dir)\n    {\n        $files = glob($dir.'/*');\n\n        $packageViews = Config::get('cms.package-menus');\n\n        if (is_null($packageViews)) {\n            $packageViews = [];\n        }\n\n        foreach ($files as $view) {\n            array_push($packageViews, $view);\n        }\n\n        return Config::set('cms.package-menus', $packageViews);\n    }\n\n    /**\n     * Edit button.\n     *\n     * @param string $type\n     * @param int    $id\n     * @param string $class\n     *\n     * @return string\n     */\n    public function editBtn($type = null, $id = null, $class=\"btn-outline-secondary\")\n    {\n        if (Gate::allows('cms', Auth::user())) {\n            if (!is_null($id)) {\n                return '<a href=\"'.url($this->backendRoute.'/'.$type.'/'.$id.'/edit').'\" class=\"btn btn-sm '.$class.'\"><span class=\"fa fa-edit\"></span> Edit</a>';\n            } else {\n                return '<a href=\"'.url($this->backendRoute.'/'.$type).'\" class=\"btn btn-sm '.$class.'\"><span class=\"fa fa-edit\"></span> Edit</a>';\n            }\n        }\n\n        return '';\n    }\n\n    /**\n     * Grafite CMS url generator - handles custom cms url\n     *\n     * @param  string $string\n     *\n     * @return string\n     */\n    public function url($string)\n    {\n        $url = str_replace('.', '/', $string);\n\n        return url($this->backendRoute.'/'.$url);\n    }\n\n    /**\n     * Grafite CMS route generator\n     *\n     * @param  string $string\n     *\n     * @return string\n     */\n    public function route($string)\n    {\n        return $this->backendRoute.'.'.$string;\n    }\n\n    /**\n     * Another form of the edit button\n     *\n     * @param string $type\n     * @param int    $id\n     * @param string $class\n     *\n     * @return string\n     */\n    public function editBtnSecondary($type = null, $id = null)\n    {\n        return $this->editBtn($type, $id, 'btn-secondary');\n    }\n\n    /**\n     * Rollback URL.\n     *\n     * @param obj $object\n     *\n     * @return string\n     */\n    public function rollbackUrl($object)\n    {\n        $class = str_replace('\\\\', '_', get_class($object));\n\n        return url($this->backendRoute.'/rollback/'.$class.'/'.$object->id);\n    }\n\n    /**\n     * Get version from the changelog.\n     *\n     * @return string\n     */\n    public function version()\n    {\n        $changelog = @file_get_contents(__DIR__.'/../../changelog.md');\n\n        if (!$changelog) {\n            return 'unknown version';\n        }\n\n        $matches = strstr($changelog, '## [');\n        $until = strpos($matches, '-');\n\n        return str_replace(']', '', substr($matches, 5, $until - 5));\n    }\n\n    /**\n     * Collect items for a site map\n     *\n     * @return array\n     */\n    public function collectSiteMapItems()\n    {\n        $itemCollection = [];\n        $modules = config('site-mapped-modules', [\n            'blog' => 'Grafite\\Cms\\Repositories\\BlogRepository',\n            'page' => 'Grafite\\Cms\\Repositories\\PageRepository',\n            'events' => 'Grafite\\Cms\\Repositories\\EventRepository',\n        ]);\n\n        foreach ($modules as $module => $repository) {\n            try {\n                $items = collect([]);\n\n                if (method_exists($repository, 'arePublic')) {\n                    $items = app($repository)->arePublic();\n                }\n\n                foreach ($items as $item) {\n                    $itemCollection[] = [\n                        'url' => url($module.'/'.$item->url),\n                        'updated_at' => $item->updated_at->format('Y-m-d'),\n                    ];\n                }\n            } catch (ReflectionException $e) {\n                // It just means we couldn't find\n                // the Repository class\n            }\n        }\n\n        return collect($itemCollection);\n    }\n}\n"
  },
  {
    "path": "src/Services/CryptoService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nclass CryptoService\n{\n    /**\n     * Length of the hash to be returned.\n     *\n     * @var integer\n     */\n    protected $length;\n\n    /**\n     * Encrypted Key.\n     *\n     * @var string\n     */\n    protected $password;\n\n    /**\n     * Bad URL characters.\n     *\n     * @var array\n     */\n    protected $specialCharactersForward;\n\n    /**\n     * Bad URL characters.\n     *\n     * @var array\n     */\n    protected $specialCharactersReversed;\n\n    /**\n     * The encoding.\n     *\n     * @var string\n     */\n    protected $encoding;\n\n    /**\n     * Construct the Encrypter with the fields.\n     *\n     * @param string\n     * @param string\n     * @param int\n     */\n    public function __construct()\n    {\n        $this->password = config('app.key');\n\n        $this->specialCharactersForward = [\n            '+' => '.',\n            '=' => '-',\n            '/' => '~',\n        ];\n        $this->specialCharactersReversed = [\n            '.' => '+',\n            '-' => '=',\n            '~' => '/',\n        ];\n\n        $this->encoding = 'AES-256-CBC';\n    }\n\n    /**\n     * Encrypt the string using your app and session keys,\n     * then return the new encrypted string.\n     *\n     * @param string $value String to encrypt\n     *\n     * @return string\n     */\n    public function encrypt($value)\n    {\n        $iv = substr(md5(random_bytes(16)), 0, 16);\n        $encrypted = openssl_encrypt($value, $this->encoding, $this->password, null, $iv);\n\n        return $this->url_encode($iv.$encrypted);\n    }\n\n    /**\n     * Decrypt a string.\n     *\n     * @param string $value Encrypted string\n     *\n     * @throws Exception\n     *\n     * @return string\n     */\n    public function decrypt($value)\n    {\n        $decoded = $this->url_decode($value);\n        $iv = substr($decoded, 0, 16);\n        $encryptedValue = str_replace($iv, '', $decoded);\n\n        return trim(openssl_decrypt($encryptedValue, $this->encoding, $this->password, null, $iv));\n    }\n\n    /**\n     * Encode the string to be used as a url slug.\n     *\n     * @param  string\n     *\n     * @return string\n     */\n    public function url_encode($string)\n    {\n        return rawurlencode($this->url_base64_encode($string));\n    }\n\n    /**\n     * Decode the string to be used as a url slug.\n     *\n     * @param  string\n     *\n     * @return string\n     */\n    public function url_decode($string)\n    {\n        return $this->url_base64_decode(rawurldecode($string));\n    }\n\n    /**\n     * Base 64 encode.\n     *\n     * @param string $string String to encode\n     *\n     * @return string\n     */\n    protected function url_base64_encode($string)\n    {\n        return strtr(base64_encode($string), $this->specialCharactersForward);\n    }\n\n    /**\n     * Base 64 decode.\n     *\n     * @param string $string String to decode\n     *\n     * @return string\n     */\n    protected function url_base64_decode($string)\n    {\n        return base64_decode(strtr($string, $this->specialCharactersReversed));\n    }\n}\n"
  },
  {
    "path": "src/Services/EventService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Carbon\\Carbon;\nuse Grafite\\Cms\\Repositories\\EventRepository;\nuse Grafite\\Cms\\Services\\BaseService;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\URL;\n\nclass EventService extends BaseService\n{\n    public function __construct(EventRepository $eventRepo)\n    {\n        $this->eventRepository = $eventRepo;\n        $this->weeks = [];\n        $this->date = null;\n    }\n\n    /**\n     * Generate a calendar\n     *\n     * @param  string $date\n     *\n     * @return Grafite\\Cms\\Services\\EventService\n     */\n    public function generate($date = null)\n    {\n        $this->date = $date;\n\n        if (is_null($date)) {\n            $this->date = date('Y-m-d');\n        }\n\n        $dateAsArray = explode('-', $this->date);\n\n        $today = Carbon::createFromDate($dateAsArray[0], $dateAsArray[1], $dateAsArray[2]);\n\n        foreach (range(1, $today->daysInMonth) as $dayAsNumber) {\n            $day = Carbon::createFromDate($today->year, $today->month, $dayAsNumber);\n\n            if ($day->dayOfWeek === 0) {\n                $dayOfTheWeek = 7;\n            } else {\n                $dayOfTheWeek = $day->dayOfWeek;\n            }\n\n            $this->weeks[$day->weekOfYear][$dayOfTheWeek] = $day;\n        }\n\n        return $this;\n    }\n\n    /**\n     * Get a calendar by date\n     *\n     * @param  string $date\n     *\n     * @return array\n     */\n    public function calendar($date)\n    {\n        $events = $this->eventRepository->all();\n        $dateArray = explode('-', $date);\n        $daysInMonth = Carbon::create($dateArray[0], $dateArray[1], $dateArray[2])->daysInMonth;\n\n        $eventsByDate = [];\n\n        foreach (range(1, $daysInMonth) as $day) {\n            $date = $dateArray[0].'-'.$dateArray[1].'-'.sprintf('%02d', $day);\n            foreach ($events as $event) {\n                $startDate = explode('-', $event->start_date);\n                $endDate = explode('-', $event->end_date);\n                $first = Carbon::create($startDate[0], $startDate[1], $startDate[2]);\n                $second = Carbon::create($endDate[0], $endDate[1], $endDate[2]);\n                if (Carbon::create($dateArray[0], $dateArray[1], sprintf('%02d', $day))->between($first, $second)) {\n                    $eventsByDate[$date][] = $event;\n                }\n            }\n        }\n\n        return $eventsByDate;\n    }\n\n    /**\n     * Get a calendar as html\n     *\n     * @param  array $config\n     *\n     * @return string\n     */\n    public function asHtml($config)\n    {\n        $class = $config['class'];\n        $dates = $config['dates'];\n\n        $daysOfTheWeek = [\n            'Monday',\n            'Tuesday',\n            'Wednesday',\n            'Thursday',\n            'Friday',\n            'Saturday',\n            'Sunday',\n        ];\n\n        $output = '<table class=\"'.$class.'\">';\n        $output .= '<thead>';\n        foreach ($daysOfTheWeek as $day) {\n            $output .= '<th>'.$day.'</th>';\n        }\n        $output .= '</thead>';\n\n        foreach ($this->weeks as $week) {\n            $output .= '<tr>';\n            foreach (range(1, 7) as $dayAsNumber) {\n                if (isset($week[$dayAsNumber])) {\n                    $content = '';\n                    if (isset($dates[$week[$dayAsNumber]->toDateString()])) {\n                        $content = $dates[$week[$dayAsNumber]->toDateString()];\n                    }\n\n                    if (is_array($content)) {\n                        $itemString = '';\n                        foreach ($content as $item) {\n                            if (config('app.locale') !== config('cms.default-language')) {\n                                if ($item->translationData(config('app.locale'))) {\n                                    $itemString .= '<a href=\"'.url('events/event/'.$item->id).'\">'.$item->translationData(config('app.locale'))->title.'</a><br>';\n                                }\n                            } else {\n                                $itemString .= '<a href=\"'.url('events/event/'.$item->id).'\">'.$item->title.'</a><br>';\n                            }\n                        }\n                        $content = $itemString;\n                    }\n\n                    $output .= '<td><span class=\"date\"><a href=\"'.url('events/date/'.$week[$dayAsNumber]->format('Y-m-d')).'\">'.$week[$dayAsNumber]->toFormattedDateString().'</a></span><span class=\"content\">'.$content.'</span></td>';\n                } else {\n                    $output .= '<td>&nbsp;</td>';\n                }\n            }\n            $output .= '</tr>';\n        }\n        $output .= '</table>';\n\n        return $output;\n    }\n\n    /**\n     * Generate HTML links\n     *\n     * @param  string $class\n     *\n     * @return string\n     */\n    public function links($class = null)\n    {\n        if (is_null($class)) {\n            $class = '';\n        }\n\n        $dateArray = explode('-', $this->date);\n        $previousMonth = Carbon::create($dateArray[0], $dateArray[1], $dateArray[2])->subMonth()->toDateString();\n        $nextMonth = Carbon::create($dateArray[0], $dateArray[1], $dateArray[2])->addMonth()->toDateString();\n\n        $links = '<div class=\"row calendar-links\"><div class=\"col-12\">';\n        $links .= '<a class=\"previous '.$class.'\" href=\"'.url('events/'.$previousMonth).'\">Previous Month</a>';\n        $links .= '<a class=\"next '.$class.'\" href=\"'.url('events/'.$nextMonth).'\">Next Month</a>';\n        $links .= '</div></div>';\n\n        return $links;\n    }\n\n    /**\n     * Get templates as options\n     *\n     * @return array\n     */\n    public function getTemplatesAsOptions()\n    {\n        return $this->getTemplatesAsOptionsArray('events');\n    }\n}\n"
  },
  {
    "path": "src/Services/FileService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse CryptoService as CryptoServiceForFiles;\nuse Exception;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\File;\nuse Illuminate\\Support\\Facades\\Request;\nuse Illuminate\\Support\\Facades\\Storage;\nuse Intervention\\Image\\ImageManagerStatic as InterventionImage;\n\nclass FileService\n{\n    /**\n     * Generate a name from the file path.\n     *\n     * @param string $file File path\n     *\n     * @return string\n     */\n    public function getFileClass($file)\n    {\n        $sections = explode(DIRECTORY_SEPARATOR, $file);\n        $fileName = $sections[count($sections) - 1];\n\n        $class = str_replace('.php', '', $fileName);\n\n        return $class;\n    }\n\n    /**\n     * Saves File.\n     *\n     * @param string $fileName File input name\n     * @param string $location Storage location\n     *\n     * @return array\n     */\n    public function saveClone($fileName, $directory = '', $fileTypes = [])\n    {\n        $fileInfo = pathinfo($fileName);\n\n        if (substr($directory, 0, -1) != '/') {\n            $directory .= '/';\n        }\n\n        $extension = $fileInfo['extension'];\n        $newFileName = md5(rand(1111, 9999).time());\n\n        // In case we don't want that file type\n        if (!empty($fileTypes)) {\n            if (!in_array($extension, $fileTypes)) {\n                throw new Exception('Incorrect file type', 1);\n            }\n        }\n\n        Storage::disk(Config::get('cms.storage-location', 'local'))->put($directory.$newFileName.'.'.$extension, file_get_contents($fileName));\n\n        return [\n            'original' => basename($fileName),\n            'name' => $directory.$newFileName.'.'.$extension,\n        ];\n    }\n\n    public function delete($path)\n    {\n        if (is_file(storage_path($path))) {\n            return Storage::delete($path);\n        } else {\n            return Storage::disk(config('cms.storage-location', 'local'))->delete($path);\n        }\n    }\n\n    /**\n     * Saves File.\n     *\n     * @param string $fileName File input name\n     * @param string $location Storage location\n     *\n     * @return array\n     */\n    public function saveFile($fileName, $directory = '', $fileTypes = [], $isImage = false)\n    {\n        if (is_object($fileName)) {\n            $file = $fileName;\n            $originalName = $file->getClientOriginalName();\n        } else {\n            $file = Request::file($fileName);\n            $originalName = false;\n        }\n\n        if (is_null($file)) {\n            return false;\n        }\n\n        if (File::size($file) > Config::get('cms.max-file-upload-size', 6291456)) {\n            throw new Exception('This file is too large', 1);\n        }\n\n        if (substr($directory, 0, -1) != '/') {\n            $directory .= '/';\n        }\n\n        $extension = $file->getClientOriginalExtension();\n        $newFileName = md5(rand(1111, 9999).time());\n\n        // In case we don't want that file type\n        if (!empty($fileTypes)) {\n            if (!in_array($extension, $fileTypes)) {\n                throw new Exception('Incorrect file type', 1);\n            }\n        }\n\n        Storage::disk(Config::get('cms.storage-location', 'local'))->put($directory.$newFileName.'.'.$extension, File::get($file));\n\n           // Resize images only\n        if ($isImage) {\n            $storage = Storage::disk(Config::get('cms.storage-location', 'local'));\n            $image = $storage->get($directory.$newFileName.'.'.$extension);\n\n            $image = InterventionImage::make($image)->resize(config('cms.max-image-size', 800), null, function ($constraint) {\n                $constraint->aspectRatio();\n            });\n\n            $imageResized = $image->stream();\n\n            $storage->delete($directory.$newFileName.'.'.$extension);\n            $storage->put($directory.$newFileName.'.'.$extension, $imageResized->__toString());\n        }\n\n        return [\n            'original' => $originalName ?: $file->getFilename().'.'.$extension,\n            'name' => $directory.$newFileName.'.'.$extension,\n        ];\n    }\n\n    /**\n     * Provide a URL for the file as a public asset.\n     *\n     * @param string $fileName File name\n     *\n     * @return string\n     */\n    public function fileAsPublicAsset($fileName)\n    {\n        return '/public-asset/'.CryptoServiceForFiles::url_encode($fileName);\n    }\n\n    /**\n     * Provides a URL for the file as a download.\n     *\n     * @param string $fileName     File name\n     * @param string $realFileName Real file name\n     *\n     * @return string\n     */\n    public function fileAsDownload($fileName, $realFileName)\n    {\n        return '/public-download/'.CryptoServiceForFiles::url_encode($fileName).'/'.CryptoServiceForFiles::url_encode($realFileName);\n    }\n\n    /**\n     * Provide a URL for the file as a public preview.\n     *\n     * @param string $fileName File name\n     *\n     * @return string\n     */\n    public function filePreview($fileName)\n    {\n        return '/public-preview/'.CryptoServiceForFiles::url_encode($fileName);\n    }\n}\n"
  },
  {
    "path": "src/Services/ModuleService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nclass ModuleService\n{\n    public function menus()\n    {\n        $modulePath = base_path(config('cms.module-directory').'/');\n        $modules = glob($modulePath.'*');\n\n        $menu = '';\n\n        foreach ($modules as $module) {\n            if (is_dir($module)) {\n                $module = lcfirst(str_replace($modulePath, '', $module));\n                if (file_exists($modulePath.ucfirst($module).'/Views/menu.blade.php')) {\n                    $menu .= view($module.'::menu');\n                }\n            }\n        }\n\n        if (is_array(config('cms.modules'))) {\n            foreach (config('cms.modules') as $module => $config) {\n                if (!is_dir($modulePath.ucfirst($module))) {\n                    $menu .= view($module.'::menu');\n                }\n            }\n        }\n\n        return $menu;\n    }\n}\n"
  },
  {
    "path": "src/Services/Normalizer.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nclass Normalizer\n{\n    public function __construct($value)\n    {\n        $this->value = $value;\n    }\n\n    public function __toString()\n    {\n        if (is_null($this->value)){\n            return \"\";\n        }\n\n        return $this->value;\n    }\n\n    public function plain()\n    {\n        return strip_tags($this->value);\n    }\n}\n"
  },
  {
    "path": "src/Services/PageService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Grafite\\Cms\\Repositories\\PageRepository;\nuse Grafite\\Cms\\Services\\BaseService;\nuse Illuminate\\Support\\Facades\\Config;\n\nclass PageService extends BaseService\n{\n    public function __construct()\n    {\n        $this->repo = app(PageRepository::class);\n    }\n\n    /**\n     * Get pages as options\n     *\n     * @return array\n     */\n    public function getPagesAsOptions()\n    {\n        $pages = [];\n        $publishedPages = $this->repo->all();\n\n        foreach ($publishedPages as $page) {\n            $pages[$page->title] = $page->id;\n        }\n\n        return $pages;\n    }\n\n    /**\n     * Get templates as options\n     *\n     * @return array\n     */\n    public function getTemplatesAsOptions()\n    {\n        return $this->getTemplatesAsOptionsArray('pages');\n    }\n\n    /**\n     * Get a page name by ID\n     *\n     * @param  int $id\n     *\n     * @return string\n     */\n    public function pageName($id)\n    {\n        $page = $this->repo->find($id);\n\n        return $page->title;\n    }\n}\n"
  },
  {
    "path": "src/Services/Traits/DefaultModuleServiceTrait.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services\\Traits;\n\nuse Grafite\\Cms\\Repositories\\PromotionRepository;\nuse Grafite\\Cms\\Repositories\\WidgetRepository;\nuse Grafite\\Cms\\Services\\FileService;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\Gate;\n\ntrait DefaultModuleServiceTrait\n{\n    public $imageRepo;\n\n    public function defaultModules()\n    {\n        return [\n            'blog',\n            'menus',\n            'files',\n            'images',\n            'pages',\n            'widgets',\n            'events',\n            'promotions',\n            'faqs',\n        ];\n    }\n\n    /**\n     * Get a widget.\n     *\n     * @param string $slug\n     *\n     * @return widget\n     */\n    public function widget($slug)\n    {\n        $widget = app(WidgetRepository::class)->getBySlug($slug);\n\n        if ($widget) {\n            if (Gate::allows('cms', Auth::user())) {\n                $widget->content .= '<a href=\"'.url(config('cms.backend-route-prefix', 'cms').'/widgets/'.$widget->id.'/edit').'\" class=\"btn btn-sm ml-2 btn-outline-secondary\"><span class=\"fa fa-edit\"></span> Edit</a>';\n            }\n\n            if (config('app.locale') !== config('cms.default-language') && $widget->translation(config('app.locale'))) {\n                return $widget->translationData(config('app.locale'))->content;\n            } else {\n                return $widget->content;\n            }\n        }\n\n        return '';\n    }\n\n    /**\n     * Get an promotion.\n     *\n     * @param string $slug\n     *\n     * @return promotion\n     */\n    public function promotion($slug)\n    {\n        $promotion = app(PromotionRepository::class)->getBySlug($slug);\n\n        if ($promotion) {\n            if (Gate::allows('cms', Auth::user())) {\n                $promotion->details .= '<a href=\"'.url(config('cms.backend-route-prefix', 'cms').'/promotions/'.$promotion->id.'/edit').'\" style=\"margin-left: 8px;\" class=\"btn btn-xs btn-default\"><span class=\"fa fa-pencil\"></span> Edit</a>';\n            }\n\n            if ($promotion->is_published) {\n                if (config('app.locale') !== config('cms.default-language') && $promotion->translation(config('app.locale'))) {\n                    return $promotion->translationData(config('app.locale'))->details;\n                } else {\n                    return $promotion->details;\n                }\n            }\n        }\n\n        return '';\n    }\n\n    /**\n     * Get image.\n     *\n     * @param string $tag\n     *\n     * @return collection\n     */\n    public function image($id, $class = '')\n    {\n        $img = '';\n\n        if ($image = app('Grafite\\Cms\\Models\\Image')->find($id)) {\n            $img = $image->url;\n        }\n\n        return '<img class=\"'.$class.'\" src=\"'.$img.'\">';\n    }\n\n    /**\n     * Get image link.\n     *\n     * @param string $tag\n     *\n     * @return collection\n     */\n    public function imageLink($id)\n    {\n        $img = '';\n\n        if ($image = app('Grafite\\Cms\\Models\\Image')->find($id)) {\n            $img = $image->url;\n        }\n\n        return $img;\n    }\n\n    /**\n     * Get images.\n     *\n     * @param string $tag\n     *\n     * @return collection\n     */\n    public function images($tag = null)\n    {\n        $images = [];\n\n        if (is_array($tag)) {\n            foreach ($tag as $tagName) {\n                $images = array_merge($images, $this->imageRepo->getImagesByTag($tag)->get()->toArray());\n            }\n        } elseif (is_null($tag)) {\n            $images = array_merge($images, $this->imageRepo->getImagesByTag()->get()->toArray());\n        } else {\n            $images = array_merge($images, $this->imageRepo->getImagesByTag($tag)->get()->toArray());\n        }\n\n        return $images;\n    }\n}\n"
  },
  {
    "path": "src/Services/Traits/MenuServiceTrait.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services\\Traits;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Gate;\nuse Grafite\\Cms\\Repositories\\LinkRepository;\nuse Grafite\\Cms\\Repositories\\MenuRepository;\nuse Grafite\\Cms\\Repositories\\PageRepository;\n\ntrait MenuServiceTrait\n{\n    /**\n     * Cms package Menus.\n     *\n     * @return string\n     */\n    public function packageMenus()\n    {\n        $packageViews = Config::get('cms.package-menus', []);\n\n        foreach ($packageViews as $view) {\n            include $view;\n        }\n    }\n\n    /**\n     * Get a view.\n     *\n     * @param string $slug\n     * @param View   $view\n     *\n     * @return string\n     */\n    public function menu($slug, $view = null, $class = '')\n    {\n        $pageRepository = app(PageRepository::class);\n        $menu = app(MenuRepository::class)->getBySlug($slug);\n\n        if (!$menu) {\n            return '';\n        }\n\n        $links = app(LinkRepository::class)->getLinksByMenu($menu->id);\n        $order = json_decode($menu->order);\n        // Sort the links by the order from the menu\n        $links = $this->sortByKeys($links, $order);\n\n        $response = '';\n        $processedLinks = [];\n        foreach ($links as $key => $link) {\n            if ($link->external) {\n                if (config('app.locale') != config('cms.default-language', $this->config('cms.default-language'))) {\n                    $processedLinks[] = '<a class=\"'.$class.'\" href=\"'.$link->external_url.'\">'.$link->translation(config('app.locale'))->name.'</a>';\n                } else {\n                    $processedLinks[] = '<a class=\"'.$class.'\" href=\"'.$link->external_url.'\">'.$link->name.'</a>';\n                }\n            } else {\n                $page = $pageRepository->find($link->page_id);\n                // if the page is published\n                if ($page && $page->is_published && $page->published_at <= Carbon::now(config('app.timezone'))) {\n                    if (config('app.locale') === config('cms.default-language', $this->config('cms.default-language'))) {\n                        $processedLinks[] = '<a class=\"'.$class.'\" href=\"'.url('page/'.$page->url).\"\\\">$link->name</a>\";\n                    } elseif (config('app.locale') != config('cms.default-language', $this->config('cms.default-language'))) {\n                        // if the page has a translation\n                        if ($page->translation(config('app.locale'))) {\n                            $processedLinks[] = '<a class=\"'.$class.'\" href=\"'.url('page/'.$page->translation(config('app.locale'))->data->url).'\">'.$link->translation(config('app.locale'))->name.'</a>';\n                        }\n                    }\n                } else {\n                    unset($links[$key]);\n                }\n            }\n        }\n        if (!is_null($view)) {\n            $response = view($view, ['links' => $links, 'processed_links' => $processedLinks]);\n        }\n\n        if (Gate::allows('cms', Auth::user())) {\n            if (is_null($view)) {\n                $response = implode(',', $processedLinks);\n            }\n            $response .= '<a href=\"'.url(config('cms.backend-route-prefix', 'cms').'/menus/'.$menu->id.'/edit').'\" class=\"btn btn-sm ml-2 btn-outline-secondary\"><span class=\"fa fa-edit\"></span> Edit</a>';\n        }\n\n        return $response;\n    }\n\n    /**\n     * Sort by an existing set of keys\n     *\n     * @param  collection $links\n     * @param  array $keys\n     *\n     * @return collection\n     */\n    public function sortByKeys($links, $keys)\n    {\n        if (! is_null($keys)) {\n            $links = $links->keyBy('id');\n\n            $sortedLinks = [];\n            foreach ($keys as $key) {\n                $sortedLinks[] = $links[$key];\n            }\n\n            return collect($sortedLinks);\n        }\n\n        return $links;\n    }\n}\n"
  },
  {
    "path": "src/Services/Traits/ModuleServiceTrait.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services\\Traits;\n\nuse Illuminate\\Support\\Facades\\Config;\nuse Grafite\\Cms\\Facades\\CryptoServiceFacade;\n\ntrait ModuleServiceTrait\n{\n    /**\n     * Determine the module based on URL\n     *\n     * @return string\n     */\n    public function getModule()\n    {\n        $module = request()->segment(1);\n\n        $defaultModules = config('cms.active-core-modules');\n        $extraModules = array_keys(config('cms.modules', []));\n\n        $modules = array_merge($defaultModules, $extraModules);\n\n        if (in_array($module, $modules)) {\n            return str_singular($module);\n        }\n\n        return 'page';\n    }\n\n    /**\n     * Module Assets.\n     *\n     * @param string $module      Module name\n     * @param string $path        Asset path\n     * @param string $contentType Content type\n     *\n     * @return string\n     */\n    public function moduleAsset($module, $path, $contentType = 'null')\n    {\n        $assetPath = base_path(Config::get('cms.module-directory').'/'.ucfirst($module).'/Assets/'.$path);\n\n        if (!is_file($assetPath)) {\n            $assetPath = config('cms.modules.'.$module.'.asset_path').'/'.$path;\n        }\n\n        return url(config('cms.backend-route-prefix', 'cms').'/asset/'.CryptoServiceFacade::url_encode($assetPath).'/'.CryptoServiceFacade::url_encode($contentType).'/?isModule=true');\n    }\n\n    /**\n     * Module Config.\n     *\n     * @param string $module      Module name\n     * @param string $path        Asset path\n     * @param string $contentType Content type\n     *\n     * @return string\n     */\n    public function moduleConfig($module, $path)\n    {\n        $configArray = @include base_path(Config::get('cms.module-directory').'/'.ucfirst($module).'/config.php');\n\n        if (!$configArray) {\n            return config('cms.modules.'.$module.'.'.$path);\n        }\n\n        return self::assignArrayByPath($configArray, $path);\n    }\n\n    /**\n     * Module Links.\n     *\n     * @param array $ignoredModules   A list of ignored links\n     *\n     * @return string\n     */\n    public function moduleLinks($ignoredModules = [], $linkClass = 'nav-link', $listClass = 'nav-item')\n    {\n        $links = '';\n\n        $modules = config('cms.modules', []);\n\n        foreach ($ignoredModules as $ignoredModule) {\n            if (in_array(strtolower($ignoredModule), array_keys($modules))) {\n                unset($modules[strtolower($ignoredModule)]);\n            }\n        }\n\n        foreach ($modules as $module => $config) {\n            $link = $module;\n\n            if (isset($config['url'])) {\n                $link = $config['url'];\n            }\n\n            $displayLink = true;\n\n            if (isset($config['is_ignored_in_menu']) && $config['is_ignored_in_menu']) {\n                $displayLink = false;\n            }\n\n            if ($displayLink) {\n                $links .= '<li class=\"'.$listClass.'\"><a class=\"'.$linkClass.'\" href=\"'.url($link).'\">'.ucfirst($link).'</a></li>';\n            }\n        }\n\n        return $links;\n    }\n}\n"
  },
  {
    "path": "src/Services/ValidationService.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Services;\n\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Input;\nuse Illuminate\\Support\\Facades\\Redirect;\nuse Illuminate\\Support\\Facades\\Request;\nuse Illuminate\\Support\\Facades\\Session;\nuse Illuminate\\Support\\Facades\\Validator;\n\nclass ValidationService\n{\n    /**\n     * Validation check.\n     *\n     * @param string $form      form in question from the config\n     * @param string $module    module name\n     * @param bool   $jsonInput JSON input\n     *\n     * @return array\n     */\n    public function check($form, $jsonInput = false)\n    {\n        $result = [];\n        $errors = [];\n        $inputs = [];\n\n        if (is_array($form)) {\n            $fields = $form;\n        } else {\n            $conditions = Cms::config('validation.'.$form);\n            $fields = $conditions;\n        }\n\n        if (!is_array($fields)) {\n            $fields = [$fields];\n        }\n\n        $validationRules = $validationInputs = [];\n\n        foreach ($fields as $key => $value) {\n            if (isset($fields[$key])) {\n                $inputs[$key] = $this->getInput($key, $jsonInput);\n                $validationInputs[$key] = $this->getInput($key, $jsonInput);\n                $validationRules[$key] = $fields[$key];\n            }\n        }\n\n        $validation = Validator::make($validationInputs, $validationRules);\n\n        if ($validation->fails()) {\n            $errors = $validation->messages();\n        }\n\n        if (!$jsonInput) {\n            $result['redirect'] = Redirect::back()->with('errors', $errors)->with('inputs', $this->inputsArray($jsonInput));\n        }\n\n        if (!empty($errors)) {\n            $result['errors'] = $errors;\n        } else {\n            $result['errors'] = false;\n        }\n\n        $result['inputs'] = $this->inputsArray($jsonInput);\n\n        return $result;\n    }\n\n    /**\n     * Json form validation.\n     *\n     * @param string $form   validation config\n     * @param string $module module name if validation is in module\n     *\n     * @return mixed\n     */\n    public function jsonCheck($form, $module = null)\n    {\n        return $this->check($form, $module, true);\n    }\n\n    /**\n     * ValidationService Errors.\n     *\n     * @param string $format Type of error request\n     *\n     * @return mixed\n     */\n    public function errors($format = 'array')\n    {\n        $errorMessage = '';\n        $errors = Session::get('errors') ?: false;\n\n        if (!$errors) {\n            return false;\n        }\n\n        if ($format === 'string') {\n            foreach ($errors as $error => $message) {\n                $errorMessage .= $message.'<br>';\n            }\n        } else {\n            $errorMessage = Session::get('errors');\n        }\n\n        return $errorMessage;\n    }\n\n    /**\n     * Validation inputs.\n     *\n     * @return mixed\n     */\n    public function inputs()\n    {\n        $inputs = Session::get('inputs') ?: false;\n\n        if (!$inputs) {\n            return false;\n        }\n\n        return $inputs;\n    }\n\n    /**\n     * Get input.\n     *\n     * @param string $key       Input name\n     * @param bool   $jsonInput JSON or not\n     *\n     * @return mixed\n     */\n    private function getInput($key, $jsonInput)\n    {\n        if ($jsonInput) {\n            $input = Input::json($key);\n        } elseif (Input::file($key)) {\n            $input = Input::file($key);\n        } else {\n            $input = Input::get($key);\n        }\n\n        return $input;\n    }\n\n    /**\n     * Get the inputs as an array.\n     *\n     * @param bool $jsonInput JSON or not\n     *\n     * @return array\n     */\n    private function inputsArray($jsonInput)\n    {\n        if ($jsonInput) {\n            $inputs = Input::json();\n        } else {\n            $inputs = Input::all();\n\n            // Don't send the token back\n            unset($inputs['_token']);\n\n            foreach ($inputs as $key => $value) {\n                if (Input::file($key)) {\n                    unset($inputs[$key]);\n                }\n            }\n        }\n\n        return $inputs;\n    }\n\n    /**\n     * Get the value last attempted in valuation.\n     *\n     * @param string $key Input key\n     *\n     * @return string\n     */\n    public function value($key)\n    {\n        $inputs = Session::get('inputs') ?: false;\n\n        if (!$inputs) {\n            return '';\n        }\n\n        return $inputs[$key];\n    }\n}\n"
  },
  {
    "path": "src/Templates/AppBasic/Controller.txt",
    "content": "<?php\n\nnamespace _namespace_controller_;\n\nuse Illuminate\\Http\\Request;\nuse _app_namespace_Http\\Controllers\\Controller;\nuse Cms\\Modules\\_camel_casePlural_\\Services\\_camel_case_Service;\n\nclass _ucCamel_casePlural_Controller extends Controller\n{\n    public function __construct(_camel_case_Service $_lower_case_Service)\n    {\n        $this->service = $_lower_case_Service;\n    }\n\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index(Request $request)\n    {\n        return view('cms-frontend::_lower_casePlural_.index');\n    }\n}\n"
  },
  {
    "path": "src/Templates/AppBasic/Routes.txt",
    "content": "/*\n|--------------------------------------------------------------------------\n| _camel_case_ App Routes\n|--------------------------------------------------------------------------\n*/\n\nRoute::resource('_lower_casePlural_', '_ucCamel_casePlural_Controller', ['only' => ['index']]);\n"
  },
  {
    "path": "src/Templates/AppBasic/Views/index.blade.txt",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1>_camel_case_</h1>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('_lower_casePlural_')\n@endsection"
  },
  {
    "path": "src/Templates/AppCRUD/Controller.txt",
    "content": "<?php\n\nnamespace _namespace_controller_;\n\nuse Illuminate\\Http\\Request;\nuse _app_namespace_Http\\Controllers\\Controller;\nuse Cms\\Modules\\_camel_casePlural_\\Services\\_camel_case_Service;\n\nclass _ucCamel_casePlural_Controller extends Controller\n{\n    public function __construct(_camel_case_Service $_lower_case_Service)\n    {\n        $this->service = $_lower_case_Service;\n    }\n\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index(Request $request)\n    {\n        $_lower_casePlural_ = $this->service->paginated();\n        return view('cms-frontend::_lower_casePlural_.all')->with('_lower_casePlural_', $_lower_casePlural_);\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show($id)\n    {\n        $_lower_case_ = $this->service->find($id);\n        return view('cms-frontend::_lower_casePlural_.show')->with('_lower_case_', $_lower_case_);\n    }\n}\n"
  },
  {
    "path": "src/Templates/AppCRUD/Routes.txt",
    "content": "/*\n|--------------------------------------------------------------------------\n| _camel_case_ App Routes\n|--------------------------------------------------------------------------\n*/\n\nRoute::resource('_lower_casePlural_', '_ucCamel_casePlural_Controller', ['only' => ['show', 'index']]);\n"
  },
  {
    "path": "src/Templates/AppCRUD/Views/all.blade.txt",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1>_camel_case_</h1>\n\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            @foreach($_lower_casePlural_ as $_lower_case_)\n                <a href=\"{!! URL::to('_lower_casePlural_/'.$_lower_case_->id) !!}\"><p>{!! $_lower_case_->name !!} - <span>{!! $_lower_case_->updated_at !!}</span></p></a>\n            @endforeach\n\n            {!! $_lower_casePlural_ !!}\n        </div>\n    </div>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('_lower_casePlural_')\n@endsection"
  },
  {
    "path": "src/Templates/AppCRUD/Views/show.blade.txt",
    "content": "@extends('cms-frontend::layout.master')\n\n@section('content')\n\n<div class=\"container\">\n\n    <h1>{!! $_lower_case_->id !!} - <span>{!! $_lower_case_->updated_at !!}</span></h1>\n\n</div>\n\n@endsection\n\n@section('cms')\n    @edit('_lower_casePlural_', $_lower_case_->id)\n@endsection\n"
  },
  {
    "path": "src/Templates/Basic/Controller.txt",
    "content": "<?php\n\nnamespace _namespace_controller_;\n\nuse Cms;\nuse CryptoService;\nuse Illuminate\\Http\\Request;\nuse _app_namespace_Http\\Controllers\\Controller;\nuse Cms\\Modules\\_ucCamel_casePlural_\\Services\\_camel_case_Service;\n\nclass _ucCamel_casePlural_Controller extends Controller\n{\n    public function __construct(_camel_case_Service $_lower_case_Service)\n    {\n        $this->service = $_lower_case_Service;\n    }\n\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index(Request $request)\n    {\n        return view('_lower_casePlural_::_lower_casePlural_.index');\n    }\n}\n"
  },
  {
    "path": "src/Templates/Basic/Provider.txt",
    "content": "<?php\n\nnamespace Cms\\Modules\\_camel_casePlural_;\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Contracts\\Events\\Dispatcher as DispatcherContract;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\View;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass _camel_casePlural_ModuleProvider extends ServiceProvider\n{\n    public function boot(DispatcherContract $events, Router $router)\n    {\n        // Publishes\n        $this->publishes([\n            __DIR__.'/Publishes/app' => base_path('app'),\n            __DIR__.'/Publishes/resources' => base_path('resources'),\n            __DIR__.'/Publishes/routes' => base_path('routes'),\n        ]);\n\n        // Load Routes\n        $this->app->router->group(['middleware' => ['web']], function ($router) {\n            require __DIR__.'/Routes/web.php';\n        });\n\n        // View namespace\n        $this->app->view->addNamespace('_lower_casePlural_', __DIR__.'/Views');\n\n        // Configs\n        $this->app->config->set('cms.modules._lower_casePlural_', include(__DIR__.'/config.php'));\n    }\n\n    public function register()\n    {\n        // register as you please\n    }\n}"
  },
  {
    "path": "src/Templates/Basic/Routes.txt",
    "content": "/*\n|--------------------------------------------------------------------------\n| _ucCamel_casePlural_ Routes\n|--------------------------------------------------------------------------\n*/\n\nRoute::resource('_lower_casePlural_', '_ucCamel_casePlural_Controller', ['only' => ['index']]);\n"
  },
  {
    "path": "src/Templates/Basic/Service.txt",
    "content": "<?php\n\nnamespace _namespace_services_;\n\nuse Config;\n\nclass _camel_case_Service\n{\n    public function __construct()\n    {\n        // use dependancy injection!\n    }\n\n}"
  },
  {
    "path": "src/Templates/Basic/Views/breadcrumbs.blade.txt",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('_lower_casePlural_') !!}\">_camel_casePlural_</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Templates/Basic/Views/index.blade.txt",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('content')\n\n    <div class=\"row\">\n        <h1 class=\"page-header\">_camel_casePlural_</h1>\n    </div>\n\n    <div class=\"row\">\n        <p>A highly customizable module!</p>\n    </div>\n\n@endsection\n\n@section('javascript')\n\n    @parent\n    <script type=\"text/javascript\">\n\n        // add js here\n\n    </script>\n\n@endsection\n\n\n"
  },
  {
    "path": "src/Templates/CRUD/Controller.txt",
    "content": "<?php\n\nnamespace _namespace_controller_;\n\nuse Cms;\nuse CryptoService;\nuse Illuminate\\Http\\Request;\nuse _app_namespace_Http\\Controllers\\Controller;\nuse Cms\\Modules\\_ucCamel_casePlural_\\Services\\_camel_case_Service;\nuse Cms\\Modules\\_ucCamel_casePlural_\\Requests\\_camel_case_CreateRequest;\nuse Cms\\Modules\\_ucCamel_casePlural_\\Requests\\_camel_case_UpdateRequest;\n\nclass _ucCamel_casePlural_Controller extends Controller\n{\n    public function __construct(_camel_case_Service $_lower_case_Service)\n    {\n        $this->service = $_lower_case_Service;\n    }\n\n    /**\n     * Display a listing of the resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function index(Request $request)\n    {\n        $_lower_casePlural_ = $this->service->paginated();\n        return view('_lower_casePlural_::_lower_casePlural_.index')\n            ->with('pagination', $_lower_casePlural_->render())\n            ->with('_lower_casePlural_', $_lower_casePlural_);\n    }\n\n    /**\n     * Display a listing of the resource searched.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function search(Request $request)\n    {\n        $_lower_casePlural_ = $this->service->search($request->search);\n        return view('_lower_casePlural_::_lower_casePlural_.index')\n            ->with('term', $request->search)\n            ->with('pagination', $_lower_casePlural_->render())\n            ->with('_lower_casePlural_', $_lower_casePlural_);\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     *\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function create()\n    {\n        return view('_lower_casePlural_::_lower_casePlural_.create');\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\_camel_case_CreateRequest  $request\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function store(_camel_case_CreateRequest $request)\n    {\n        $result = $this->service->create($request->except('_token'));\n\n        if ($result) {\n            Cms::notification('Successfully created', 'success');\n            return redirect(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_/'.$result->id.'/edit');\n        }\n\n        Cms::notification('Failed to create', 'warning');\n        return redirect(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_');\n    }\n\n    /**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function show($id)\n    {\n        $_lower_case_ = $this->service->find($id);\n        return view('_lower_casePlural_::_lower_casePlural_.show')->with('_lower_case_', $_lower_case_);\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function edit($id)\n    {\n        $_lower_case_ = $this->service->find($id);\n        return view('_lower_casePlural_::_lower_casePlural_.edit')->with('_lower_case_', $_lower_case_);\n    }\n\n    /**\n     * Update the specified resource in storage.\n     *\n     * @param  \\Illuminate\\Http\\_camel_case_UpdateRequest  $request\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function update(_camel_case_UpdateRequest $request, $id)\n    {\n        $result = $this->service->update($id, $request->except(['_token', '_method']));\n\n        if ($result) {\n            Cms::notification('Successfully updated', 'success');\n            return back();\n        }\n\n        Cms::notification('Failed to update', 'warning');\n        return back();\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     *\n     * @param  int  $id\n     * @return \\Illuminate\\Http\\Response\n     */\n    public function destroy($id)\n    {\n        $result = $this->service->destroy($id);\n\n        if ($result) {\n            Cms::notification('Successfully deleted', 'success');\n            return redirect(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_');\n        }\n\n        Cms::notification('Failed to delete', 'warning');\n        return redirect(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_');\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/CreateRequest.txt",
    "content": "<?php\n\nnamespace _namespace_request_;\n\nuse Auth;\nuse Illuminate\\Foundation\\Http\\FormRequest;\nuse _namespace_model_\\_camel_case_;\n\nclass _camel_case_CreateRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (Auth::user()) {\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return _camel_case_::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/ExtendedService.txt",
    "content": "<?php\n\nnamespace _namespace_services_;\n\nuse _namespace_model_\\_camel_case_;\nuse _namespace_services_\\BaseService;\n\nclass _camel_case_Service extends BaseService\n{\n    /**\n     * Service Model\n     *\n     * @var Model\n     */\n    public $model;\n\n    /**\n     * Pagination\n     *\n     * @var integer\n     */\n    public $pagination;\n\n    /**\n     * Service Constructor\n     *\n     * @param _camel_case_ $_lower_case_\n     */\n    public function __construct(_camel_case_ $_lower_case_)\n    {\n        $this->model = $_lower_case_;\n        $this->pagination = 25;\n        $this->table = '_table_name_';\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Facade.txt",
    "content": "<?php\n\nnamespace _namespace_facade_;\n\nuse Illuminate\\Support\\Facades\\Facade;\n\nclass _camel_case_ extends Facade\n{\n    /**\n     * Create the Facade\n     *\n     * @return string\n     */\n    protected static function getFacadeAccessor() { return '_camel_case_'; }\n}"
  },
  {
    "path": "src/Templates/CRUD/Factory.txt",
    "content": "\n/*\n|--------------------------------------------------------------------------\n| _camel_case_ Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\App\\Repositories\\_camel_case_\\_camel_case_::class, function (Faker\\Generator $faker) {\n    return [\n\n        // prepare your table here\n\n    ];\n});\n"
  },
  {
    "path": "src/Templates/CRUD/Model.txt",
    "content": "<?php\n\nnamespace _namespace_model_;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass _camel_case_ extends CmsModel\n{\n    public $table = \"_lower_casePlural_\";\n\n    public $primaryKey = \"id\";\n\n    public $timestamps = true;\n\n    public $fillable = [\n        // _camel_case_ table data\n    ];\n\n    public static $rules = [\n        // create rules\n    ];\n\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Models/Model.txt",
    "content": "<?php\n\nnamespace _namespace_model_;\n\nuse Grafite\\Cms\\Models\\CmsModel;\n\nclass _camel_case_ extends CmsModel\n{\n    public $table = \"_lower_casePlural_\";\n\n    public $primaryKey = \"id\";\n\n    public $timestamps = true;\n\n    public $fillable = [\n        // _camel_case_ table data\n    ];\n\n    public static $rules = [\n        // create rules\n    ];\n\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Provider.txt",
    "content": "<?php\n\nnamespace Cms\\Modules\\_camel_casePlural_;\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Contracts\\Events\\Dispatcher as DispatcherContract;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\View;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass _camel_casePlural_ModuleProvider extends ServiceProvider\n{\n    public function register()\n    {\n        // Publishes\n        $this->publishes([\n            __DIR__.'/Publishes/app' => base_path('app'),\n            __DIR__.'/Publishes/routes' => base_path('routes'),\n            __DIR__.'/Publishes/resources' => base_path('resources'),\n        ]);\n\n        // Load events\n        $this->app->events->listen('eloquent.saved: Cms\\Modules\\_camel_casePlural_\\Models\\_camel_case_', 'Cms\\Modules\\_camel_casePlural_\\Models\\_camel_case_@afterSaved');\n\n        // Load Routes\n        $this->app->router->group(['middleware' => ['web']], function ($router) {\n            require __DIR__.'/Routes/web.php';\n        });\n\n        // View namespace\n        $this->app->view->addNamespace('_lower_casePlural_', __DIR__.'/Views');\n\n        // Migrations\n        $this->loadMigrationsFrom(__DIR__.'/Migrations');\n\n        // Configs\n        $this->app->config->set('cms.modules._lower_casePlural_', include(__DIR__.'/config.php'));\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Routes.txt",
    "content": "/*\n|--------------------------------------------------------------------------\n| _ucCamel_casePlural_ Routes\n|--------------------------------------------------------------------------\n*/\n\nRoute::resource('_lower_casePlural_', '_ucCamel_casePlural_Controller', [ 'except' => ['show'], 'as' => config('cms.backend-route-prefix', 'cms') ]);\nRoute::post('_lower_casePlural_/search', '_ucCamel_casePlural_Controller@search');"
  },
  {
    "path": "src/Templates/CRUD/Service.txt",
    "content": "<?php\n\nnamespace _namespace_services_;\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse _namespace_model_\\_camel_case_;\n\nclass _camel_case_Service\n{\n    public function __construct(_camel_case_ $_lower_case_)\n    {\n        $this->model = $_lower_case_;\n    }\n\n    public function all()\n    {\n        return $this->model->all();\n    }\n\n    public function paginated()\n    {\n        $model = $this->model;\n\n        if (isset(request()->dir) && isset(request()->field)) {\n            $model = $model->orderBy(request()->field, request()->dir);\n        } else {\n            $model = $model->orderBy('created_at', 'desc');\n        }\n\n        return $model->paginate(config('cms.pagination', 25));\n    }\n\n    public function search($payload)\n    {\n        $query = $this->model->orderBy('created_at', 'desc');\n        $query->where('id', 'LIKE', '%'.$payload.'%');\n\n        $columns = Schema::getColumnListing('_lower_casePlural_');\n\n        foreach ($columns as $attribute) {\n            $query->orWhere($attribute, 'LIKE', '%'.$payload.'%');\n        };\n\n        return $query->paginate(config('cms.pagination', 24));\n    }\n\n    public function create($payload)\n    {\n        return $this->model->create($payload);\n    }\n\n    public function find($id)\n    {\n        return $this->model->find($id);\n    }\n\n    public function update($id, $payload)\n    {\n        return $this->find($id)->update($payload);\n    }\n\n    public function destroy($id)\n    {\n        return $this->model->destroy($id);\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Tests/Feature/AcceptanceTest.txt",
    "content": "<?php\n\nuse Tests\\TestCase;\nuse Illuminate\\Foundation\\Testing\\WithoutMiddleware;\nuse Illuminate\\Foundation\\Testing\\DatabaseMigrations;\n\nclass _camel_case_AcceptanceTest extends TestCase\n{\n    use DatabaseMigrations;\n    use WithoutMiddleware;\n\n    public function setUp()\n    {\n        parent::setUp();\n\n        $this->_camel_case_ = factory(_namespace_model_\\_camel_case_::class)->make([\n            // _camel_case_ table data\n        ]);\n        $this->_camel_case_Edited = factory(_namespace_model_\\_camel_case_::class)->make([\n            // _camel_case_ table data\n        ]);\n        $user = factory(_app_namespace_Models\\User::class)->make();\n        $this->actor = $this->actingAs($user);\n    }\n\n    public function testIndex()\n    {\n        $response = $this->actor->call('GET', '_sectionRoutePrefix__lower_casePlural_');\n        $this->assertEquals(200, $response->getStatusCode());\n        $this->assertViewHas('_lower_casePlural_');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->actor->call('GET', '_sectionRoutePrefix__lower_casePlural_/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testStore()\n    {\n        $response = $this->actor->call('POST', '_sectionRoutePrefix__lower_casePlural_', $this->_camel_case_->toArray());\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertRedirectedTo('_sectionRoutePrefix__lower_casePlural_/'.$this->_camel_case_->id.'/edit');\n    }\n\n    public function testEdit()\n    {\n        $this->actor->call('POST', '_sectionRoutePrefix__lower_casePlural_', $this->_camel_case_->toArray());\n\n        $response = $this->actor->call('GET', '/_sectionRoutePrefix__lower_casePlural_/'.$this->_camel_case_->id.'/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $this->assertViewHas('_lower_case_');\n    }\n\n    public function testUpdate()\n    {\n        $this->actor->call('POST', '_sectionRoutePrefix__lower_casePlural_', $this->_camel_case_->toArray());\n        $response = $this->actor->call('PATCH', '_sectionRoutePrefix__lower_casePlural_/1', $this->_camel_case_Edited->toArray());\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertDatabaseHas('_table_name_', $this->_camel_case_Edited->toArray());\n        $this->assertRedirectedTo('/');\n    }\n\n    public function testDelete()\n    {\n        $this->actor->call('POST', '_sectionRoutePrefix__lower_casePlural_', $this->_camel_case_->toArray());\n\n        $response = $this->call('DELETE', '_sectionRoutePrefix__lower_casePlural_/'.$this->_camel_case_->id);\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertRedirectedTo('_sectionRoutePrefix__lower_casePlural_');\n    }\n\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Tests/Unit/ServiceTest.txt",
    "content": "<?php\n\nuse Tests\\TestCase;\nuse _namespace_services_\\_camel_case_Service;\nuse Illuminate\\Foundation\\Testing\\DatabaseMigrations;\n\nclass _camel_case_ServiceTest extends TestCase\n{\n    use DatabaseMigrations;\n\n    public function setUp()\n    {\n        parent::setUp();\n        $this->service = $this->app->make(_camel_case_Service::class);\n        $this->originalArray = [\n            // _camel_case_ table data\n        ];\n        $this->editedArray = [\n            // _camel_case_ table data\n        ];\n        $this->searchTerm = '';\n    }\n\n    public function testAll()\n    {\n        $response = $this->service->all();\n        $this->assertEquals(get_class($response), 'Illuminate\\Database\\Eloquent\\Collection');\n        $this->assertTrue(is_array($response->toArray()));\n        $this->assertEquals(0, count($response->toArray()));\n    }\n\n    public function testPaginated()\n    {\n        $response = $this->service->paginated(25);\n        $this->assertEquals(get_class($response), 'Illuminate\\Pagination\\LengthAwarePaginator');\n        $this->assertEquals(0, $response->total());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->service->search($this->searchTerm, 25);\n        $this->assertEquals(get_class($response), 'Illuminate\\Pagination\\LengthAwarePaginator');\n        $this->assertEquals(0, $response->total());\n    }\n\n    public function testCreate()\n    {\n        $response = $this->service->create($this->originalArray);\n        $this->assertEquals(get_class($response), '_namespace_model_\\_camel_case_');\n        $this->assertEquals(1, $response->id);\n    }\n\n    public function testFind()\n    {\n        // create the item\n        $item = $this->service->create($this->originalArray);\n\n        $response = $this->service->find($item->id);\n        $this->assertEquals($item->id, $response->id);\n    }\n\n    public function testUpdate()\n    {\n        // create the item\n        $item = $this->service->create($this->originalArray);\n\n        $response = $this->service->update($item->id, $this->editedArray);\n\n        $this->assertDatabaseHas('_table_name_', $this->editedArray);\n    }\n\n    public function testDestroy()\n    {\n        // create the item\n        $item = $this->service->create($this->originalArray);\n\n        $response = $this->service->destroy($item->id);\n        $this->assertTrue($response);\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/UpdateRequest.txt",
    "content": "<?php\n\nnamespace _namespace_request_;\n\nuse Auth;\nuse Illuminate\\Foundation\\Http\\FormRequest;\nuse _namespace_model_\\_camel_case_;\n\nclass _camel_case_UpdateRequest extends FormRequest\n{\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize()\n    {\n        if (Auth::user()) {\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules()\n    {\n        return _camel_case_::$rules;\n    }\n}\n"
  },
  {
    "path": "src/Templates/CRUD/Views/breadcrumbs.blade.txt",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('_lower_casePlural_') !!}\">_camel_casePlural_</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Templates/CRUD/Views/create.blade.txt",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') _camel_casePlural_ @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('_lower_casePlural_::_lower_casePlural_.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n         <div class=\"row\">\n            <div class=\"col-md-12 mt-2\">\n                {!! Form::open(['route' => config('cms.backend-route-prefix', 'cms').'._lower_casePlural_.store', '_lower_casePlural_' => true, 'class' => 'add']); !!}\n\n                    {!! FormMaker::fromTable('_lower_casePlural_', Cms::moduleConfig('_lower_casePlural_', '_lower_casePlural_')) !!}\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! url(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_') !!}\" class=\"btn btn-default raw-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Templates/CRUD/Views/edit.blade.txt",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') _camel_casePlural_ @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        <div class=\"row\">\n            <div class=\"col-md-6\">\n                @include('_lower_casePlural_::_lower_casePlural_.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                <a class=\"btn btn-primary pull-right\" href=\"{!! route(config('cms.backend-route-prefix', 'cms').'._lower_casePlural_.create') !!}\">Add New</a>\n                <a class=\"btn btn-warning pull-right raw-margin-right-8\" href=\"{!! Cms::rollbackUrl($_lower_case_) !!}\">Rollback</a>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12 mt-2\">\n                {!! Form::model($_lower_case_, ['route' => [config('cms.backend-route-prefix', 'cms').'._lower_casePlural_.update', $_lower_case_->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n                    {!! FormMaker::fromObject($_lower_case_, FormMaker::getTableColumns('_lower_casePlural_')) !!}\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! url(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_') !!}\" class=\"btn btn-default raw-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Templates/CRUD/Views/index.blade.txt",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') _camel_casePlural_ @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete _camel_case_</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this _lower_case_?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n\n    @include('cms::layouts.module-header', [ 'module' => '_lower_casePlural_' ])\n\n    <div class=\"col-md-12\">\n        @if (isset($term))\n            <div class=\"row\">\n                <div class=\"col-md-12\">\n                    <div class=\"well text-center\">You searched for \"{{ $term }}\"</div>\n                </div>\n            </div>\n        @endif\n\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($_lower_casePlural_->isEmpty())\n                    <div class=\"well text-center\">No _lower_casePlural_ found.</div>\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>Name</th>\n                            <th width=\"200px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n\n                        @foreach($_lower_casePlural_ as $_lower_case_)\n                            <tr>\n                                <td>\n                                    <a href=\"{!! route(config('cms.backend-route-prefix', 'cms').'._lower_casePlural_.edit', [$_lower_case_->id]) !!}\">{!! $_lower_case_->name !!}</a>\n                                </td>\n                                <td class=\"text-right\">\n                                    <form method=\"post\" action=\"{!! url(config('cms.backend-route-prefix', 'cms').'/_lower_casePlural_/'.$_lower_case_->id) !!}\">\n                                        {!! csrf_field() !!}\n                                        {!! method_field('DELETE') !!}\n                                        <button class=\"delete-btn btn btn-sm btn-danger pull-right\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                    </form>\n                                    <a class=\"btn btn-sm btn-outline-primary raw-margin-right-8 pull-right\" href=\"{!! route(config('cms.backend-route-prefix', 'cms').'._lower_casePlural_.edit', [$_lower_case_->id]) !!}\"><i class=\"fa fa-pencil\"></i> Edit</a>\n                                </td>\n                            </tr>\n                        @endforeach\n                        </tbody>\n                    </table>\n                @endif\n            </div>\n\n            <div class=\"text-center\">\n                {!! $pagination !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n\n@section('javascript')\n\n    @parent\n    <script type=\"text/javascript\">\n\n        // add js here\n\n    </script>\n\n@endsection\n\n\n"
  },
  {
    "path": "src/Templates/Composer/composer.stub",
    "content": "{\n    \"name\": \"{package}\",\n    \"description\": \"{description}\",\n    \"license\": \"MIT\",\n    \"require\": {\n        \"illuminate/support\": \"5.*\",\n    },\n    \"require-dev\": {\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"{escapedNamespace}\": \"src/\"\n        }\n    },\n    \"autoload-dev\": {},\n    \"scripts\": {\n        \"post-install-cmd\": [],\n        \"post-update-cmd\": [],\n        \"post-create-project-cmd\": []\n    },\n    \"minimum-stability\": \"dev\",\n    \"prefer-stable\": true\n}\n"
  },
  {
    "path": "src/Templates/Composer/readme.stub",
    "content": "# {package}\n\n{description}\n\n## Requirements\n4. Laravel\n4. Cms\n\n## Installation\n\n## License\n\n{module} is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)\n\n### Bug Reporting and Feature Requests\n\nPlease add as many details as possible regarding submission of issues and feature requests\n\n### Disclaimer\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/Traits/Translatable.php",
    "content": "<?php\n\nnamespace Grafite\\Cms\\Traits;\n\nuse Grafite\\Cms\\Models\\Translation;\nuse Grafite\\Cms\\Services\\CmsService;\nuse Stichoza\\GoogleTranslate\\TranslateClient;\nuse Grafite\\Cms\\Repositories\\TranslationRepository;\n\ntrait Translatable\n{\n    /**\n     * Get a translation.\n     *\n     * @param string $lang\n     *\n     * @return mixed\n     */\n    public function translation($lang)\n    {\n        $result = Translation::where('entity_id', $this->id)\n            ->where('entity_type', get_class($this))\n            ->where('language', $lang)\n            ->first();\n\n        if ($result) {\n            return $result;\n        }\n\n        $this->data = $this;\n\n        return $this;\n    }\n\n    /**\n     * Get translation data.\n     *\n     * @param string $lang\n     *\n     * @return array|null\n     */\n    public function translationData($lang)\n    {\n        $translation = $this->translation($lang);\n\n        if ($translation) {\n            $data = json_decode($translation->entity_data);\n\n            if (isset($data->blocks)) {\n                $data->blocks = json_decode($data->blocks, true);\n            }\n\n            return $data;\n        }\n\n        return null;\n    }\n\n    /**\n     * Get a translations attribute.\n     *\n     * @return array\n     */\n    public function getTranslationsAttribute()\n    {\n        $translationData = [];\n        $translations = Translation::where('entity_id', $this->id)->where('entity_type', get_class($this))->get();\n\n        foreach ($translations as $translation) {\n            $translationData[] = $translation->data->attributes;\n        }\n\n        return $translationData;\n    }\n\n    /**\n     * After the item is created in the database.\n     *\n     * @param object $payload\n     */\n    public function afterCreate($payload)\n    {\n        if (config('cms.auto-translate', false)) {\n            $entry = $payload->toArray();\n\n            unset($entry['created_at']);\n            unset($entry['updated_at']);\n            unset($entry['translations']);\n            unset($entry['is_published']);\n            unset($entry['published_at']);\n            unset($entry['id']);\n\n            foreach (config('cms.languages') as $code => $language) {\n                if ($code != config('cms.default-language')) {\n                    $translateClient = new TranslateClient(config('cms.default-language'), $code);\n                    $translation = [\n                        'lang' => $code,\n                        'template' => 'show',\n                    ];\n\n                    foreach ($entry as $key => $value) {\n                        $translation[$key] = $value;\n\n                        if (!empty($value)) {\n                            $translation[$key] = json_decode(json_encode($translateClient->translate(strip_tags($value))));\n                        }\n                    }\n\n                    // not the biggest fan of this but it works\n                    if (empty($translation['blocks'])) {\n                        $translation['blocks'] = \"{}\";\n                    }\n\n                    if (isset($translation['url'])) {\n                        $translation['url'] = app(CmsService::class)->convertToURL($translation['url']);\n                    }\n\n                    $entityId = $payload->id;\n                    $entityType = get_class($payload);\n                    app(TranslationRepository::class)->createOrUpdate($entityId, $entityType, $code, $translation);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/Views/dashboard/analytics-google.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Dashboard @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <canvas id=\"dashboardChart\" class=\"raw100\"></canvas>\n        </div>\n\n        <div class=\"row raw-margin-top-24\">\n            <div class=\"col-md-4\">\n                <p class=\"lead\">Browsers</p>\n                <table class=\"table table-striped\">\n                    <thead>\n                        <th>Browser</th>\n                        <th>Sessions</th>\n                    </thead>\n                    @foreach (Analytics::fetchTopBrowsers($period, 10) as $word)\n                        <tr>\n                            <td>{{ $word['browser'] }}</td>\n                            <td>{{ $word['sessions'] }}</td>\n                        </tr>\n                    @endforeach\n                </table>\n            </div>\n            <div class=\"col-md-4\">\n                <p class=\"lead\">Most Visited Pages</p>\n                <table class=\"table table-striped\">\n                    <thead>\n                        <th>URL</th>\n                        <th>Views</th>\n                    </thead>\n                    @foreach (Analytics::fetchMostVisitedPages($period, 10) as $browser)\n                        <tr>\n                            <td>{{ str_limit($browser['url'], 30) }}</td>\n                            <td>{{ $browser['pageViews'] }}</td>\n                        </tr>\n                    @endforeach\n                </table>\n            </div>\n            <div class=\"col-md-4\">\n                <p class=\"lead\">Top Referers</p>\n                <table class=\"table table-striped\">\n                    <thead>\n                        <th>URL</th>\n                        <th>Views</th>\n                    </thead>\n                    @foreach (Analytics::fetchTopReferrers($period, 10) as $referers)\n                        <tr>\n                            <td>{{ str_limit($referers['url'], 30) }}</td>\n                            <td>{{ $referers['pageViews'] }}</td>\n                        </tr>\n                    @endforeach\n                </table>\n            </div>\n        </div>\n\n    </div>\n\n@stop\n\n@section('javascript')\n    @parent\n    <script type=\"text/javascript\">\n        var _chartData = {\n            _labels : {!! json_encode($visitStats['date']) !!},\n            _visits : {!! json_encode($visitStats['pageViews']) !!}\n        };\n        var options = {};\n    </script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.bundle.js\"></script>\n    {!! Minify::javascript(Cms::asset('js/dashboard-chart.js')) !!}\n@stop"
  },
  {
    "path": "src/Views/dashboard/analytics-internal.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Dashboard @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <canvas id=\"dashboardChart\" class=\"raw100\"></canvas>\n        </div>\n        <div class=\"row raw-margin-top-24\">\n            <div class=\"col-md-4\">\n                <p class=\"lead\">Top Browsers</p>\n                <table class=\"table table-striped\">\n                    <thead>\n                        <th>Browser</th>\n                        <th class=\"text-right\">Views</th>\n                    </thead>\n                    <tbody>\n                        @foreach($topBrowsers as $browser => $views)\n                        <tr>\n                            <td>{{ $browser }}</td>\n                            <td class=\"text-right\">{{ $views }}</td>\n                        </tr>\n                        @endforeach\n                    </tbody>\n                </table>\n            </div>\n            <div class=\"col-md-4\">\n                <p class=\"lead\">Most Visited Pages</p>\n                <table class=\"table table-striped\">\n                    <thead>\n                        <th>URL</th>\n                        <th class=\"text-right\">Views</th>\n                    </thead>\n                    <tbody>\n                        @foreach($topPages as $url => $views)\n                        <tr>\n                            <td>{{ str_limit($url, 30) }}</td>\n                            <td class=\"text-right\">{{ $views }}</td>\n                        </tr>\n                        @endforeach\n                    </tbody>\n                </table>\n            </div>\n            <div class=\"col-md-4\">\n                <p class=\"lead\">Top Referers</p>\n                <table class=\"table table-striped\">\n                    <thead>\n                        <th>URL</th>\n                        <th class=\"text-right\">Views</th>\n                    </thead>\n                    <tbody>\n                        @foreach($topReferers as $url => $views)\n                        <tr>\n                            <td>{{ str_limit($url, 40) }}</td>\n                            <td class=\"text-right\">{{ $views }}</td>\n                        </tr>\n                        @endforeach\n                    </tbody>\n                </table>\n            </div>\n        </div>\n\n    </div>\n\n@stop\n\n@section('javascript')\n    @parent\n    <script type=\"text/javascript\">\n        var _chartData = {\n            _labels : {!! json_encode($stats['dates']) !!},\n            _visits : {!! json_encode($stats['visits']) !!}\n        };\n        var options = {};\n    </script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.bundle.js\"></script>\n    {!! Minify::javascript(Cms::asset('js/dashboard-chart.js')) !!}\n@stop"
  },
  {
    "path": "src/Views/dashboard/empty.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Dashboard @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <p>The Cms dashboard is powered by <b>Google Analytics</b> or by its own <b>Internal Analytics</b>.</p>\n\n                <h3>Internal Analytics</h3>\n                <p>In order to use the internal analytics (just for this dashboard - you can still add your Google Analytics tracking to the site) simply run:</p>\n<pre>\nphp artisan migrate\n</pre>\n\n                <h3>Google Analytics</h3>\n                <p>Grafite CMS uses the Spatie package for Google Analytics integration. <br><br>Please follow its installation instructions: <a target=\"_blank\" href=\"https://github.com/spatie/laravel-analytics#installation\">https://github.com/spatie/laravel-analytics#installation</a></p>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/Views/dashboard/main.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n"
  },
  {
    "path": "src/Views/dashboard/panel.blade.php",
    "content": "<li class=\"nav-item\">\n    <a class=\"nav-link\" href=\"{{ URL::to('/') }}\"><span class=\"fa fa-arrow-left\"></span> Back To Site </a>\n</li>\n\n<li class=\"nav-item @if (Request::is(cms()->backendRoute.'/dashboard')) active @endif\">\n    <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/dashboard') !!}\"><span class=\"fa fa-fw fa-line-chart\"></span> Dashboard</a>\n</li>\n\n<li class=\"nav-item @if (Request::is(cms()->backendRoute.'/help')) active @endif\">\n    <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/help') !!}\"><span class=\"fa fa-fw fa-info-circle\"></span> Help</a>\n</li>\n\n@if (Route::get('user/settings'))\n    <li class=\"nav-item @if (Request::is('user/settings') || Request::is('user/password')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url('user/settings') !!}\"><span class=\"fa fa-fw fa-wrench\"></span> Settings</a>\n    </li>\n@endif\n\n@if (in_array('images', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/images') || Request::is(cms()->backendRoute.'/images/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/images') !!}\"><span class=\"fa fa-fw fa-image\"></span> Images</a>\n    </li>\n@endif\n\n@if (in_array('files', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/files') || Request::is(cms()->backendRoute.'/files/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/files') !!}\"><span class=\"fa fa-fw fa-file\"></span> Files</a>\n    </li>\n@endif\n\n@if (in_array('menus', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/menus') || Request::is(cms()->backendRoute.'/menus/*') || Request::is(cms()->backendRoute.'/links') || Request::is(cms()->backendRoute.'/links/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/menus') !!}\"><span class=\"fa fa-fw fa-link\"></span> Menus</a>\n    </li>\n@endif\n\n@if (in_array('promotions', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/promotions') || Request::is(cms()->backendRoute.'/promotions/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/promotions') !!}\"><span class=\"fa fa-fw fa-clock-o\"></span> Promotions</a>\n    </li>\n@endif\n\n@if (in_array('widgets', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/widgets') || Request::is(cms()->backendRoute.'/widgets/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/widgets') !!}\"><span class=\"fa fa-fw fa-cog\"></span> Widgets</a>\n    </li>\n@endif\n\n@if (in_array('blog', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/blog') || Request::is(cms()->backendRoute.'/blog/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/blog') !!}\"><span class=\"fa fa-fw fa-pencil\"></span> Blog</a>\n    </li>\n@endif\n\n@if (in_array('pages', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/pages') || Request::is(cms()->backendRoute.'/pages/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/pages') !!}\"><span class=\"fa fa-fw fa-file-text\"></span> Pages</a>\n    </li>\n@endif\n\n@if (in_array('faqs', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/faqs') || Request::is(cms()->backendRoute.'/faqs/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/faqs') !!}\"><span class=\"fa fa-fw fa-question\"></span> FAQs</a>\n    </li>\n@endif\n\n@if (in_array('events', Config::get('cms.active-core-modules', Cms::defaultModules())))\n    <li class=\"nav-item @if (Request::is(cms()->backendRoute.'/events') || Request::is(cms()->backendRoute.'/events/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url(cms()->backendRoute.'/events') !!}\"><span class=\"fa fa-fw fa-calendar\"></span> Events</a>\n    </li>\n@endif\n\n{!! ModuleService::menus() !!}\n\n{!! Cms::packageMenus() !!}\n\n@if (Route::get('admin/users'))\n    <li class=\"sidebar-header\"><span>Admin</span></li>\n@endif\n\n@if (Route::get('admin/dashboard'))\n    <li class=\"nav-item @if (Request::is('admin/dashboard') || Request::is('admin/dashboard/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url('admin/dashboard') !!}\"><span class=\"fa fa-fw fa-tachometer\"></span> Dashboard</a>\n    </li>\n@endif\n@if (Route::get('admin/users'))\n    <li class=\"nav-item @if (Request::is('admin/users') || Request::is('admin/users/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url('admin/users') !!}\"><span class=\"fa fa-fw fa-users\"></span> Users</a>\n    </li>\n@endif\n@if (Route::get('admin/roles'))\n    <li class=\"nav-item @if (Request::is('admin/roles') || Request::is('admin/roles/*')) active @endif\">\n        <a class=\"nav-link\" href=\"{!! url('admin/roles') !!}\"><span class=\"fa fa-fw fa-lock\"></span> Roles</a>\n    </li>\n@endif\n"
  },
  {
    "path": "src/Views/help.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Help @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-4\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Resource History aka. Rollback and Revert</b></div>\n                    <div class=\"card-body\">\n                        With many of the Grafite CMS modules you can perform a Rollback or Revert to an earlier moment in history. In pages for example if you click Rollback, you will go back to the most recently saved version of the post. However, you can only go back once, or rather undo, it does not keep digging through history. If you would like to go further back, visit the pages History and you will find different edits, you can revert to any of these with just a single click.\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Published Assets</b></div>\n                    <div class=\"card-body\">\n                        Grafite CMS publishes views and controllers within your application. This allows you to control everything you want. You will find the controllers in: <code>app/Http/Controllers/Cms</code> and the views in: <code>resources/themes</code>. There is also the cms config which is added to your app's config directory.\n                        <br><br>\n                        Grafite CMS will also be able to generate custom modules which you can find in the following directory: <code>cms/modules</code>\n                        <br><br>\n                        To generate these files simple run:\n                        <br><br>\n                        <pre>php artisan vendor:publish</pre>\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Multilingual</b></div>\n                    <div class=\"card-body\">\n                        CMS is fully multilingual all you need to do is set the languages in your <code>config/cms.php</code> file and then in your app just set the <code>locale</code> and poof! you have multi-language support.\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>API Endpoints</b></div>\n                    <div class=\"card-body\">\n                    Grafite CMS comes with a very basic API. It provides access to all published public facing data. You can define details in your CMS API middleware.\n                    <br><br>\n                    Out of the box Grafite CMS API requires use of the <code>api-token</code> set in the config of your app.\n                    <br><br>\n                    All requests should have the following added to the url: <code>?token={config.cms.apiToken}</code>\n                    <br><br>\n                    <pre>/cms/api/blog\n/cms/api/blog/{id}\n/cms/api/events\n/cms/api/events/{id}\n/cms/api/promotions\n/cms/api/promotions/{id}\n/cms/api/faqs\n/cms/api/faqs/{id}\n/cms/api/files\n/cms/api/files/{id}\n/cms/api/images\n/cms/api/images/{id}\n/cms/api/pages\n/cms/api/pages/{id}\n/cms/api/widgets\n/cms/api/widgets/{id}</pre>\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Console Commands</b></div>\n                    <div class=\"card-body\">\n                        Grafite CMS comes with a few console commands to handle things like module building and publishing\n                        <br><br>\n                        You can also build simple modules which will run inside CMS. Simply provide a table name you wish to manage and allow CMS to build a CRUD structure that works inside Grafite CMS's module directory.\n                        <br><br>\n                        You need to add the following line in the autoload PSR-4 group to your composer file to ensure that all modules will work correctly:\n                        <br><br>\n                        <pre>\"Cms\\\\Modules\\\\\": \"cms/modules/\",</pre>\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Modules: Generate</b></div>\n                    <div class=\"card-body\">\n                        The commmand for generating custom modules for the Grafite CMS is:\n                        <br><br>\n                        <pre>php artisan module:crud {name} {--schema=\"id:increments,name:string\"}</pre>\n                        <pre>php artisan module:make {name}</pre>\n                        <br>\n                        The migration option will generate a migration file that can be found in the module. You will then need to run the module migrate to get the module to run its migration course.\n                        <br><br>\n                        <pre>\"Cms\\\\Modules\\\\\": \"cms/modules/\",</pre>\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Modules: Composer and Publish</b></div>\n                    <div class=\"card-body\">\n                        Grafite CMS lets you create a composer package from a module. So if you want to can offer them to others rather easily.\n                        <br><br>\n                        <pre>php artisan module:composer {module} {namespace}</pre>\n                        <br>\n                        You can also publish assets that belong to a module. So in the chance you wish to build your own modules for future projects you can easily publish specific assets to any applications you build.\n                        <br><br>\n                        <pre>php artisan module:publish {module}</pre>\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Front-End Code: Helpers</b></div>\n                    <div class=\"card-body\">\n                        Grafite CMS automatically builds you a sample of the controllers, and views for your application's pages, blog, faqs, etc. You can run the following services as method calls or use the blade directives listed below:\n                        <br><br>\n                        <pre>Cms::widget('slug') // Renders the widget</pre>\n                        <pre>Cms::menu('slug', 'custom-view-path') // Renders the menu</pre>\n                        <pre>Cms::images('tag') // Outputs an array of images with matching tags if no tag defined all images are returned</pre>\n                        <br>\n                        You can also publish assets that belong to a module. So in the chance you wish to build your own modules for future projects you can easily publish specific assets to any applications you build.\n                        <br><br>\n                        <pre>php artisan module:publish {module}</pre>\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Front-End Code: Custom Templates</b></div>\n                    <div class=\"card-body\">\n                        By default the homepage has its own template but you can add any by following these details: To create custom templates for different purposes simply make a view in the <code>resources/themes/{theme}/{module}</code> directory that looks similar to: <code>xxxx-template.blade.php</code>. This means you still have full control of blade templating but your pages can easily swap out views.\n                    </div>\n                </div>\n\n                <div class=\"card card-dark card-help\">\n                    <div class=\"card-header\"><b>Front-End Code: Blade Components</b></div>\n                    <div class=\"card-body\">\n                        By default the Grafite CMS has the default theme. You can override this in the <code>config/cms.php</code> file. The theme has the namespace of: <code>cms-frontend::</code>, and has some <b>Blade</b> directives such as:\n                        <br><br>\n                        <pre>&#64;theme('path') // includes file within the theme path</pre>\n                        <pre>&#64;menu('slug') // menu rendering</pre>\n                        <pre>&#64;modules() // module url links</pre>\n                        <pre>&#64;widget('slug') // widget contents</pre>\n                        <pre>&#64;promotion('slug') // promotion contents</pre>\n                        <pre>&#64;image('id', 'class') // an image HTML tag</pre>\n                        <pre>&#64;image_link('id') // an image url</pre>\n                        <pre>&#64;images('tag') // images</pre>\n                        <pre>&#64;edit('module', 'id') // a link to edit a module or item on the front-end of the site</pre>\n                        <br>\n                        You can generate new themes and publish thier public assets. Consult the <a target=\"_blank\" href=\"https://docs.grafite.ca/cms/themes\">documentation</a> for more information about themes etc.\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/Views/layouts/blank.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Dashboard @stop\n\n@section('content')\n\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <p>Nothing to see here...</p>\n        </div>\n    </div>\n\n@stop\n"
  },
  {
    "path": "src/Views/layouts/dashboard.blade.php",
    "content": "@extends('cms::layouts.master')\n\n@section('app-content')\n\n    @include('cms::layouts.notifications')\n\n    <nav id=\"sidebar\" class=\"sidebar\">\n        <div class=\"sidebar-sticky\">\n            <ul class=\"nav flex-column\">\n                @include('cms::dashboard.panel')\n            </ul>\n        </div>\n    </nav>\n\n    <main class=\"ml-sm-auto pt-2 px-2 main\">\n        @yield('content')\n    </main>\n\n    <footer class=\"footer bg-light\">\n        <div class=\"container-fluid\">\n            <span class=\"text-muted\">Brought to you by <a href=\"https://grafite.ca\">Grafite Inc</a>.</span>\n        </div>\n    </footer>\n@stop\n\n@section('javascript')\n    {!! Minify::javascript(Cms::asset('js/dashboard.js', 'application/javascript')) !!}\n    {!! Minify::javascript(Cms::asset('js/chart.min.js', 'application/javascript')) !!}\n@stop\n"
  },
  {
    "path": "src/Views/layouts/master.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <meta name=\"viewport\" content=\"width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1\">\n\n        <title>{{ config('cms.backend-title') }}: {{ ucfirst(request()->segment(2)) }}</title>\n\n        <link rel=\"icon\" type=\"image/ico\" href=\"{!! Cms::asset('images/favicon.ico', 'image/ico') !!}?v3\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"{!! Cms::asset('images/favicon-32.png', 'image/png') !!}?v3\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"{!! Cms::asset('images/favicon-96.png', 'image/png') !!}?v3\">\n\n        <!-- Bootstrap and Font-Awesome -->\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css\">\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css\">\n\n        <!-- Theme -->\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"{!! Cms::asset('themes/'.config('cms.backend-theme', 'standard').'.css', 'text/css') !!}\">\n\n        <!-- App style -->\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"{!! Cms::asset('dist/css/vendor.css', 'text/css') !!}\">\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"{!! Cms::asset('dist/css/cms.css', 'text/css') !!}\">\n\n        <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n        <!--[if lt IE 9]>\n          <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n          <script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script>\n        <![endif]-->\n\n        @yield('stylesheets')\n\n        <script type=\"text/javascript\">\n            var _token = '{!! csrf_token() !!}';\n            var _url = '{!! url(\"/\") !!}';\n            var _cms = '{!! cms()->url('/') !!}';\n            var _pixabayKey = '{!! config('cms.pixabay', '') !!}';\n            var _appTimeZone = '{!! config('app.timezone', 'UTC') !!}';\n            var _apiKey = '{!! config(\"cms.api-key\") !!}';\n            var _apiToken = '{!! config(\"cms.api-token\") !!}';\n        </script>\n    </head>\n    <body>\n        @include(\"cms::layouts.navigation\")\n\n        <div class=\"container-fluid\">\n            <div class=\"row\">\n                @yield(\"app-content\")\n            </div>\n        </div>\n\n        <script>\n            @yield('pre_javascript')\n        </script>\n        <script src=\"https://code.jquery.com/jquery-2.2.4.min.js\" integrity=\"sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=\" crossorigin=\"anonymous\"></script>\n        <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js\"></script>\n        <script src=\"{!! Cms::asset('dist/js/vendor.js', 'application/javascript') !!}\"></script>\n        <script src=\"{!! Cms::asset('dist/js/cms.js', 'application/javascript') !!}\"></script>\n        @include('cms::notifications')\n        @yield(\"javascript\")\n    </body>\n</html>"
  },
  {
    "path": "src/Views/layouts/module-header.blade.php",
    "content": "<div class=\"col-md-12\">\n    <nav class=\"navbar px-0 navbar-light justify-content-between\">\n        <ul class=\"navbar-nav\">\n            @if (Route::has(cms()->route($module.'.create')))\n                <li class=\"nav-item\">\n                    <a class=\"btn btn-primary\" href=\"{!! route(cms()->route($module.'.create')) !!}\">Add New</a>\n                </li>\n            @endif\n        </ul>\n        {!! Form::open(['url' => cms()->url($module.'/search'), 'class' => 'form-inline mt-2']) !!}\n            <input class=\"form-control mr-sm-2\" name=\"term\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\">\n            <button class=\"btn btn-outline-success my-2 my-sm-0\" type=\"submit\">Search</button>\n        {!! Form::close() !!}\n    </nav>\n</div>"
  },
  {
    "path": "src/Views/layouts/module-search.blade.php",
    "content": "<div class=\"card card-dark text-center mt-4\">\n    @if (request('term'))\n        <div class=\"card-header\">Searched for \"{!! $term !!}\"</div>\n    @endif\n    <div class=\"card-body\">No {{ $module }} found.</div>\n</div>"
  },
  {
    "path": "src/Views/layouts/navigation.blade.php",
    "content": "<nav class=\"navbar navbar-dark bg-dark sticky-top flex-md-nowrap p-0\">\n    <a class=\"navbar-brand mr-0 pl-4\" href=\"{{ url('/') }}\"><span class=\"fa fa-cogs\"></span> {{ config('cms.backend-title', 'CMS') }}</a>\n    <ul class=\"navbar-nav mr-auto\">\n        <span class=\"navbar-text page-title\">\n            <a class=\"sidebar-toggle text-light ml-3\"><i class=\"fa fa-bars\"></i></a>\n            <span class=\"ml-4\">@yield('pageTitle')</span>\n        </span>\n    </ul>\n    <ul class=\"navbar-nav ml-auto px-3\">\n        <li class=\"nav-item\">\n            @if (Auth::user())\n                <a class=\"nav-link\" href=\"{{ url('/logout') }}\">Sign out</a>\n            @endif\n        </li>\n    </ul>\n</nav>\n"
  },
  {
    "path": "src/Views/layouts/notifications.blade.php",
    "content": "<div class=\"cms-notification\">\n    <div class=\"cms-notify\">\n        <p class=\"cms-notify-comment\"></p>\n    </div>\n    <div class=\"cms-notify-closer\">\n        <span class=\"fa fa-times cms-notify-closer-icon\"></span>\n    </div>\n</div>"
  },
  {
    "path": "src/Views/layouts/tabs.blade.php",
    "content": "@foreach(config('cms.languages') as $short => $language)\n    <li class=\"nav-item\">\n        <a class=\"nav-link @if (request('lang') == $short || is_null(request('lang')) && $short == config('cms.default-language')) active @endif\" href=\"{{ cms()->url($module.'/'.$item->id.'/edit?lang='.$short) }}\">{{ ucfirst($language) }}</a>\n    </li>\n@endforeach\n"
  },
  {
    "path": "src/Views/modules/blocks.blade.php",
    "content": "<div class=\"modal fade\" id=\"deleteBlockModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteBlockModalLabel\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h5 class=\"modal-title\" id=\"deleteBlockModalLabel\">Delete Block</h5>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n            </div>\n            <div class=\"modal-body\">\n                <p>Are you sure want to delete this block?</p>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                <button id=\"deleteBlockBtn\" class=\"btn btn-danger\">Confirm Delete</button>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"modal fade\" id=\"addBlockModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"addBlockModalLabel\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h5 class=\"modal-title\" id=\"addBlockModalLabel\">Add Block</h5>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n            </div>\n            <div class=\"modal-body\">\n                <div class=\"form-group\">\n                    <input id=\"blockName\" type=\"text\" class=\"form-control\" placeholder=\"Slug\">\n                </div>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                <button id=\"addBlockBtn\" class=\"btn btn-primary\">Add Block</button>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"row\">\n    <div class=\"col-md-12\">\n        <h3>Blocks\n            <button type=\"button\" class=\"btn btn-outline-primary float-right btn-sm add-block-btn mt-2\">Add Block</button>\n        </h3>\n        <hr>\n    </div>\n    <div class=\"blocks col-md-12\">\n        <div class=\"row\">\n            @if (!is_null($item))\n                @foreach ($item->blocks as $slug => $block)\n                    <div id=\"block_container_{{ $slug }}\" class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <h4>\n                                {{ ucfirst($slug) }}\n                                <button type=\"button\" class=\"btn btn-sm btn-danger delete-block-btn float-right\" data-slug=\"block_container_{{ $slug }}\"><span class=\"fa fa-trash\"></span></button>\n                            </h4>\n                            <textarea id=\"block_{{ $slug }}\" name=\"block_{{ $slug }}\" class=\"form-control redactor\">{{ $block }}</textarea>\n                        </div>\n                    </div>\n                @endforeach\n            @endif\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "src/Views/modules/blogs/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('blog') !!}\">Blog</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/blogs/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Blog @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.blogs.breadcrumbs', ['location' => ['create']])\n    </div>\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('blog.store'), 'class' => 'add', 'files' => true]) !!}\n\n            {!! FormMaker::setColumns(3)->fromTable('blogs', config('cms.forms.blog.identity')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('blogs', config('cms.forms.blog.content')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('blogs', config('cms.forms.blog.seo')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('blogs', config('cms.forms.blog.publish')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('blog') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/blogs/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Blog @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-2\">\n                @include('cms::modules.blogs.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"btn-toolbar float-right mt-2 mb-4\">\n                    @if (! cms()->isDefaultLanguage() && $blog->translationData(request('lang')))\n                        @if (isset($blog->translationData(request('lang'))->is_published))\n                            <a class=\"btn btn-success ml-1\" href=\"{!! url('blog/'.$blog->translationData(request('lang'))->url) !!}\">Live</a>\n                        @else\n                            <a class=\"btn btn-outline-success ml-1\" href=\"{!! cms()->url('preview/blog/'.$blog->id.'?lang='.request('lang')) !!}\">Preview</a>\n                        @endif\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($blog->translation(request('lang'))) !!}\">Rollback</a>\n                    @else\n                        @if ($blog->is_published)\n                            <a class=\"btn btn-success ml-1\" href=\"{!! url('blog/'.$blog->url) !!}\">Live</a>\n                        @else\n                            <a class=\"btn btn-outline-success ml-1\" href=\"{!! cms()->url('preview/blog/'.$blog->id) !!}\">Preview</a>\n                        @endif\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($blog) !!}\">Rollback</a>\n                        <a class=\"btn btn-outline-secondary ml-1\" href=\"{!! cms()->url('blog/'.$blog->id.'/history') !!}\">History</a>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'blog', 'item' => $blog ])\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"@if (config('cms.live-preview', false)) col-md-6 @else col-md-12 @endif\">\n                {!! Form::model($blog, ['route' => [cms()->route('blog.update'), $blog->id], 'method' => 'patch', 'class' => 'edit', 'files' => true]) !!}\n\n                    <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n                    {!! FormMaker::setColumns(3)->fromObject($blog->asObject(), config('cms.forms.blog.identity')) !!}\n\n                    <div class=\"form-group\">\n                        <label for=\"Template\">Template</label>\n                        <select class=\"form-control\" id=\"Template\" name=\"template\">\n                            @foreach (BlogService::getTemplatesAsOptions() as $template)\n                                @if (! cms()->isDefaultLanguage() && $blog->translationData(request('lang')))\n                                    <option @if($template === $blog->translationData(request('lang'))->template) selected  @endif value=\"{!! $template !!}\">{!! ucfirst(str_replace('-template', '', $template)) !!}</option>\n                                @else\n                                    <option @if($template === $blog->template) selected  @endif value=\"{!! $template !!}\">{!! ucfirst(str_replace('-template', '', $template)) !!}</option>\n                                @endif\n                            @endforeach\n                        </select>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-6\">\n                            {!! FormMaker::setColumns(1)->fromObject($blog->asObject(), config('cms.forms.blog.content')) !!}\n                        </div>\n                        <div class=\"col-md-6\">\n                            @if ($blog->hero_image)\n                                <img class=\"img-thumbnail img-fluid\" src=\"{{ $blog->hero_image_url }}\" alt=\"\">\n                                <div class=\"btn-toolbar mt-2\" role=\"toolbar\">\n                                    <a href=\"{{ cms()->url('hero-images/delete/blog/'.$blog->id) }}\" class=\"btn btn-outline-danger\">\n                                        <span class=\"fa fa-fw fa-trash\"></span> Delete Image\n                                    </a>\n                                </div>\n                            @endif\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12 mt-4\">\n                            {!! FormMaker::setColumns(2)->fromObject($blog->asObject(), config('cms.forms.blog.seo')) !!}\n                        </div>\n                    </div>\n                    {!! FormMaker::setColumns(2)->fromObject($blog->asObject(), config('cms.forms.blog.publish')) !!}\n\n                    @include('cms::modules.blocks', ['item' => $blog->asObject()])\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('blog') !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n            @if (config('cms.live-preview', false))\n                <div class=\"col-md-6 hidden-sm hidden-xs\">\n                    <div id=\"wrap\">\n                        @if (! cms()->isDefaultLanguage())\n                            <iframe id=\"frame\" src=\"{{ cms()->url('preview/blog/'.$blog->id.'?lang='.request('lang')) }}\"></iframe>\n                        @else\n                            <iframe id=\"frame\" src=\"{{ cms()->url('preview/blog/'.$blog->id) }}\"></iframe>\n                        @endif\n                    </div>\n                    <div id=\"frameButtons\" class=\"raw-margin-top-16\">\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"desktop\">Desktop</button>\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"mobile\">Mobile</button>\n                    </div>\n                </div>\n            @endif\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/blogs/history.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Blog History @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.blogs.breadcrumbs', ['location' => [[$blog->title => cms()->url('blog/'.$blog->id.'/edit')], 'history']])\n\n        <div class=\"row mt-4\">\n            <div class=\"col-md-12\">\n                <table class=\"table table-striped\">\n                    @foreach($blog->history() as $history)\n                        <tr>\n                            <td>{{ $history->created_at->format('M jS, Y') }} ({{ $history->created_at->diffForHumans() }})</td>\n                            <td class=\"text-right\">\n                                <a class=\"btn btn-outline-warning btn-sm\" href=\"{{ cms()->url('revert/'.$history->id) }}\">Revert</a>\n                            </td>\n                        </tr>\n                    @endforeach\n                </table>\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/blogs/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Blog @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Blog</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this blog?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'blog' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($blogs->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'blogs' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Title', 'title') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Url', 'url') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Published', 'is_published') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n                            @foreach($blogs as $blog)\n                                <tr>\n\n                                    <td><a href=\"{!! route(cms()->route('blog.edit'), [$blog->id]) !!}\">{!! $blog->title !!}</a></td>\n                                    <td class=\"m-hidden\">{!! $blog->url !!}</td>\n                                    <td class=\"m-hidden\">\n                                        @if ($blog->is_published)\n                                            <span class=\"fa fa-check\"></span>\n                                        @else\n                                            <span class=\"fa fa-times\"></span>\n                                        @endif\n                                    </td>\n                                    <td class=\"text-right\">\n                                        <div class=\"btn-toolbar justify-content-between\">\n                                            <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('blog.edit'), [$blog->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                            <form method=\"post\" action=\"{!! cms()->url('blog/'.$blog->id) !!}\">\n                                                {!! csrf_field() !!}\n                                                {!! method_field('DELETE') !!}\n                                                <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                            </form>\n                                        </div>\n                                    </td>\n                                </tr>\n                            @endforeach\n                        </tbody>\n                    </table>\n                @endif\n            </div>\n\n            <div class=\"text-center\">\n                {!! $pagination !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/events/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('events') !!}\">Events</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/events/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Events @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.events.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('events.store'), 'class' => 'add']) !!}\n\n            {!! FormMaker::setColumns(3)->fromTable('events', config('cms.forms.event.identity')) !!}\n            {!! FormMaker::setColumns(1)->fromTable('events', config('cms.forms.event.content')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('events', config('cms.forms.event.seo')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('events', config('cms.forms.event.publish')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('events') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/events/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Events @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-2\">\n                @include('cms::modules.events.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"btn-toolbar float-right mt-2 mb-4\">\n                    @if (! cms()->isDefaultLanguage() && $event->translationData(request('lang')))\n                        @if (isset($event->translationData(request('lang'))->is_published))\n                            <a class=\"btn btn-success ml-1\" href=\"{!! url('events/event/'.$event->id) !!}\">Live</a>\n                        @else\n                            <a class=\"btn btn-success ml-1\" href=\"{!! cms()->url('preview/event/'.$event->id.'?lang='.request('lang')) !!}\">Preview</a>\n                        @endif\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($event->translation(request('lang'))) !!}\">Rollback</a>\n                    @else\n                        @if ($event->is_published)\n                            <a class=\"btn btn-success ml-1\" href=\"{!! url('events/event/'.$event->id) !!}\">Live</a>\n                        @else\n                            <a class=\"btn btn-secondary ml-1\" href=\"{!! cms()->url('preview/event/'.$event->id) !!}\">Preview</a>\n                        @endif\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($event) !!}\">Rollback</a>\n                        <a class=\"btn btn-outline-secondary ml-1\" href=\"{!! cms()->url('events/'.$event->id.'/history') !!}\">History</a>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'events', 'item' => $event ])\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"@if (config('cms.live-preview', false)) col-md-6 @else col-md-12 @endif\">\n                {!! Form::model($event, ['route' => [cms()->route('events.update'), $event->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n                    <div class=\"form-group\">\n                        <label for=\"Template\">Template</label>\n                        <select class=\"form-control\" id=\"Template\" name=\"template\">\n                            @foreach (EventService::getTemplatesAsOptions() as $template)\n                                @if (! cms()->isDefaultLanguage() && $event->translationData(request('lang')))\n                                    <option @if($template === $event->translationData(request('lang'))->template) selected  @endif value=\"{!! $template !!}\">{!! ucfirst(str_replace('-template', '', $template)) !!}</option>\n                                @else\n                                    <option @if($template === $event->template) selected  @endif value=\"{!! $template !!}\">{!! ucfirst(str_replace('-template', '', $template)) !!}</option>\n                                @endif\n                            @endforeach\n                        </select>\n                    </div>\n\n                    <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n                    {!! FormMaker::setColumns(3)->fromObject($event->asObject(), config('cms.forms.event.identity')) !!}\n                    {!! FormMaker::setColumns(1)->fromObject($event->asObject(), config('cms.forms.event.content')) !!}\n                    {!! FormMaker::setColumns(2)->fromObject($event->asObject(), config('cms.forms.event.seo')) !!}\n                    {!! FormMaker::setColumns(2)->fromObject($event->asObject(), config('cms.forms.event.publish')) !!}\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('events') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n            @if (config('cms.live-preview', false))\n                <div class=\"col-md-6 hidden-sm hidden-xs\">\n                    <div id=\"wrap\">\n                        @if (! cms()->isDefaultLanguage())\n                            <iframe id=\"frame\" src=\"{!! cms()->url('preview/event/'.$event->id.'?lang='.request('lang')) !!}\"></iframe>\n                        @else\n                            <iframe id=\"frame\" src=\"{{ cms()->url('preview/event/'.$event->id) }}\"></iframe>\n                        @endif\n                    </div>\n                    <div id=\"frameButtons\" class=\"raw-margin-top-16\">\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"desktop\">Desktop</button>\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"mobile\">Mobile</button>\n                    </div>\n                </div>\n            @endif\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/events/history.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Event History @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.events.breadcrumbs', ['location' => [[\n            $event->title => cms()->url('events/'.$event->id.'/edit')], 'history'\n        ]])\n    </div>\n\n    <div class=\"col-md-12\">\n        <table class=\"table table-striped\">\n            @foreach($event->history() as $history)\n                <tr>\n                    <td>{{ $history->created_at->format('M jS, Y') }} ({{ $history->created_at->diffForHumans() }})</td>\n                    <td class=\"text-right\">\n                        <a class=\"btn btn-warning btn-sm\" href=\"{{ cms()->url('revert/'.$history->id) }}\">Revert</a>\n                    </td>\n                </tr>\n            @endforeach\n        </table>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/events/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Events @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Event</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this event?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'events' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($events->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'events' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Title', 'title') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Start Date', 'start_date') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('End Date', 'end_date') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Published', 'is_published') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n\n                        @foreach($events as $event)\n                            <tr>\n                                <td><a href=\"{!! route(cms()->route('events.edit'), [$event->id]) !!}\">{!! $event->title !!}</a></td>\n                                <td class=\"m-hidden\">{!! date('M jS, Y', strtotime($event->start_date)) !!}</td>\n                                <td class=\"m-hidden\">{!! date('M jS, Y', strtotime($event->end_date)) !!}</td>\n                                <td class=\"m-hidden\">\n                                    @if ($event->is_published)\n                                        <span class=\"fa fa-check\"></span>\n                                    @else\n                                        <span class=\"fa fa-times\"></span>\n                                    @endif\n                                </td>\n                                <td class=\"text-right\">\n                                    <div class=\"btn-toolbar justify-content-between\">\n                                        <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('events.edit'), [$event->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                        <form method=\"post\" action=\"{!! cms()->url('events/'.$event->id) !!}\">\n                                            {!! csrf_field() !!}\n                                            {!! method_field('DELETE') !!}\n                                            <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                        </form>\n                                    </div>\n                                </td>\n                            </tr>\n                        @endforeach\n                    </tbody>\n                </table>\n            @endif\n        </div>\n    </div>\n    <div class=\"text-center\">\n        {!! $pagination !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/faqs/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('faqs') !!}\">FAQs</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/faqs/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') FAQs @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.faqs.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('faqs.store'), 'class' => 'add']) !!}\n\n            {!! FormMaker::fromTable('faqs', config('cms.forms.faqs')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('faqs') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/faqs/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') FAQs @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-2\">\n                @include('cms::modules.faqs.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"btn-toolbar float-right mt-2\">\n                    @if (! cms()->isDefaultLanguage() && $faq->translationData(request('lang')))\n                        @if (isset($faq->translationData(request('lang'))->is_published))\n                            <a class=\"btn btn-success pull-right ml-1\" href=\"{!! url('faqs') !!}\">Live</a>\n                        @endif\n                        <a class=\"btn btn-warning pull-right ml-1\" href=\"{!! Cms::rollbackUrl($faq->translation(request('lang')))!!}\">Rollback</a>\n                    @else\n                        @if ($faq->is_published)\n                            <a class=\"btn btn-success pull-right ml-1\" href=\"{!! url('faqs') !!}\">Live</a>\n                        @endif\n                        <a class=\"btn btn-warning pull-right ml-1\" href=\"{!! Cms::rollbackUrl($faq) !!}\">Rollback</a>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'faqs', 'item' => $faq ])\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                {!! Form::model($faq, ['route' => [cms()->route('faqs.update'), $faq->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n                    <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n                    {!! FormMaker::fromObject($faq->asObject(), config('cms.forms.faqs')) !!}\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('faqs') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/faqs/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') FAQs @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete FAQ</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this faq?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'faqs' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($faqs->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'FAQs' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Question', 'question') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Is Published', 'is_published') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n                            @foreach($faqs as $faq)\n                                <tr>\n                                    <td>\n                                        <a href=\"{!! route(cms()->route('faqs.edit'), [$faq->id]) !!}\">{!! $faq->question !!}</a>\n                                    </td>\n                                    <td class=\"m-hidden\">\n                                        @if ($faq->is_published)\n                                            <span class=\"fa fa-check\"></span>\n                                        @else\n                                            <span class=\"fa fa-times\"></span>\n                                        @endif\n                                    </td>\n                                    <td class=\"text-right\">\n                                        <div class=\"btn-toolbar justify-content-between\">\n                                            <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('faqs.edit'), [$faq->id]) !!}\"><i class=\"fa fa-pencil\"></i> Edit</a>\n                                            <form method=\"post\" action=\"{!! cms()->url('faqs/'.$faq->id) !!}\">\n                                                {!! csrf_field() !!}\n                                                {!! method_field('DELETE') !!}\n                                                <button class=\"delete-btn btn btn-sm btn-danger pull-right\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                            </form>\n                                        </div>\n                                    </td>\n                                </tr>\n                            @endforeach\n                        </tbody>\n                    </table>\n                @endif\n            </div>\n        </div>\n        <div class=\"text-center\">\n            {!! $pagination !!}\n        </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/files/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('files') !!}\">Files</a></li>\n        @foreach($location as $local)\n            <li class=\"breadcrumb-item\">{!! ucfirst($local) !!}</li>\n        @endforeach\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/files/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Files @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.files.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['url' => cms()->url('files/upload'), 'files' => true, 'class' => 'dropzone', 'id' => 'fileDropzone']); !!}\n        {!! Form::close() !!}\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('files.store'), 'files' => true, 'id' => 'fileDetailsForm', 'class' => 'add']); !!}\n\n            {!! FormMaker::setColumns(2)->fromTable('files', config('cms.forms.files')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('files') !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary', 'id' => 'saveFilesBtn']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n@endsection\n"
  },
  {
    "path": "src/Views/modules/files/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Files @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.files.breadcrumbs', ['location' => ['edit']])\n    </div>\n\n    <div class=\"col-md-12 raw-margin-bottom-48 raw-margin-top-48 text-center\">\n        <a class=\"btn btn-secondary\" href=\"{!! Cms::fileAsDownload($files->name, $files->location) !!}\"><span class=\"fa fa-download\"></span> Download: {!! $files->name !!}</a>\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::model($files, ['route' => [cms()->route('files.update'), $files->id], 'files' => true, 'method' => 'patch', 'class' => 'edit']) !!}\n\n            {!! FormMaker::setColumns(2)->fromObject($files, config('cms.forms.file-edit')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('files') !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/files/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Files @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete File</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this file?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'files' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($files->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'files' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Name', 'name') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Is Published', 'is_published') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n\n                        @foreach($files as $file)\n                            <tr>\n                                <td>\n                                    <a href=\"{!! Cms::fileAsDownload($file->name, $file->location) !!}\"><span class=\"fa fa-download\"></span></a>\n                                    <a href=\"{!! route(cms()->route('files.edit'), [$file->id]) !!}\">{!! $file->name !!}</a>\n                                </td>\n                                <td class=\"m-hidden\">\n                                    @if ($file->is_published)\n                                        <span class=\"fa fa-check\"></span>\n                                    @else\n                                        <span class=\"fa fa-times\"></span>\n                                    @endif\n                                </td>\n                                <td class=\"text-right\">\n                                    <div class=\"btn-toolbar justify-content-between\">\n                                        <a class=\"btn btn-sm btn-outline-primary ml-2\" href=\"{!! route(cms()->route('files.edit'), [$file->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                        <form method=\"post\" action=\"{!! cms()->url('files/'.$file->id) !!}\">\n                                            {!! csrf_field() !!}\n                                            {!! method_field('DELETE') !!}\n                                            <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                        </form>\n                                    </div>\n                                </td>\n                            </tr>\n                        @endforeach\n                    </tbody>\n                </table>\n            @endif\n        </div>\n    </div>\n\n    <div class=\"text-center\">\n        {!! $pagination !!}\n    </div>\n\n@endsection\n\n"
  },
  {
    "path": "src/Views/modules/files/menu.blade.php",
    "content": "<div class=\"row\">\n    @if (isset($createBtn))\n        <a class=\"btn btn-primary pull-right\" href=\"{!! cms()->route('files.create') !!}\">Add New</a>\n    @endif\n    <div class=\"raw-m-hide pull-right raw-m-hide\">\n        {!! Form::open(['url' => cms()->url('files/search')]) !!}\n        <input class=\"form-control header-input pull-right @if (isset($createBtn)) raw-margin-right-24 @endif\" name=\"term\" placeholder=\"Search\">\n        {!! Form::close() !!}\n    </div>\n    <h1 class=\"page-header\">Files</h1>\n</div>"
  },
  {
    "path": "src/Views/modules/images/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('images') !!}\">Images</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/images/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Images @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.images.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12 mt-2\">\n        {!! Form::open(['url' => cms()->url('images/upload'), 'files' => true, 'class' => 'dropzone', 'id' => 'fileDropzone']); !!}\n        {!! Form::close() !!}\n\n        {!! Form::open(['route' => cms()->route('images.store'), 'files' => true, 'id' => 'fileDetailsForm', 'class' => 'add']) !!}\n\n            {!! FormMaker::fromTable('files', config('cms.forms.images')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('images') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary', 'id' => 'saveImagesBtn']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/images/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Images @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.images.breadcrumbs', ['location' => ['edit']])\n    </div>\n\n    <div class=\"col-md-12 mt-2\">\n        <div class=\"row\">\n            <div class=\"col-md-6 col-md-offset-4\">\n                <img class=\"img-fluid img-thumbnail\" src=\"{!! $images->url !!}\" />\n            </div>\n            <div class=\"col-md-6\">\n                <h2 class=\"raw-margin-top-0 raw-margin-bottom-24\">Blade Tags</h2>\n<pre>&#64;image({{ $images->id }})\n&#64;image_link({{ $images->id }})\n@foreach(explode(',', $images->tags) as $key => $tag)\n&#64;images({{ trim($tag) }})\n@endforeach\n</pre>\n                @if (!is_null($images->entity_id))\n                    <h2 class=\"raw-margin-top-24 raw-margin-bottom-8\">Linked Entity</h2>\n                    <a href=\"{{ cms()->url($images->entity_type.'s/'.$images->entity_id.'/edit') }}\">{{ ucfirst($images->entity_type) }}</a>\n                @endif\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"col-md-12 mt-4\">\n                {!! Form::model($images, ['route' => [cms()->route('images.update'), $images->id], 'method' => 'patch', 'files' => true, 'class' => 'edit']) !!}\n\n                    {!! FormMaker::setColumns(2)->fromObject($images, config('cms.forms.images-edit')) !!}\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('images') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/images/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Images @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Images</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this image?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"modal fade\" id=\"bulkImageDeleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Bulk Image Delete</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete these images?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"bulkImageDelete\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <nav class=\"navbar px-0 navbar-light justify-content-between\">\n            <div class=\"navbar-nav navbar-expand-md mr-auto justify-content-between\">\n                <a class=\"nav-item btn btn-primary mr-1 mt-2\" href=\"{!! route(cms()->route('images.create')) !!}\">Add New</a>\n                <button class=\"nav-item btn btn-danger bulk-image-delete mt-2\"><span class=\"fa fa-trash\"></span> Bulk Delete</button>\n            </div>\n            {!! Form::open(['url' => cms()->url('images/search'), 'class' => 'form-inline mt-2']) !!}\n                <input class=\"form-control mr-sm-2\" name=\"term\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\">\n                <button class=\"btn btn-outline-success my-2 my-sm-0\" type=\"submit\">Search</button>\n            {!! Form::close() !!}\n        </nav>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"row\">\n                    @if ($images->count() === 0)\n                        <div class=\"col-md-12\">\n                            @include('cms::layouts.module-search', [ 'module' => 'images' ])\n                        </div>\n                    @else\n                        @foreach($images as $image)\n                            <div class=\"col-md-4 col-xl-3 image-panel raw-margin-top-24\">\n                                <div class=\"thumbnail\">\n                                    <a href=\"{!! route(cms()->route('images.edit'), [$image->id]) !!}\">\n                                        <div class=\"img\" style=\"background-image: url('{!! $image->url !!}')\"></div>\n                                    </a>\n                                </div>\n                                <div data-id=\"{{ $image->id }}\" class=\"well pull-down overflow-hidden selectable\">\n                                    <div class=\"row\">\n                                        <div class=\"col-6\">\n                                            @if ($image->is_published)\n                                                <span clas=\"pull-left\"><span class=\"pull-left fa fa-check\"></span> Published</span>\n                                            @else\n                                                <span clas=\"pull-left\"><span class=\"pull-left fa fa-times\"></span> Published</span>\n                                            @endif\n                                        </div>\n                                        <div class=\"col-6\">\n                                            <div class=\"btn-toolbar float-right\">\n                                                <a class=\"btn btn-sm btn-secondary img-alter-btn mr-2\" href=\"{!! route(cms()->route('images.edit'), [$image->id]) !!}\"><i class=\"fa fa-edit\"></i></a>\n                                                <form method=\"post\" action=\"{!! cms()->url('images/'.$image->id) !!}\">\n                                                    {!! csrf_field() !!}\n                                                    {!! method_field('DELETE') !!}\n                                                    <button class=\"delete-btn btn btn-sm img-alter-btn btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i></button>\n                                                </form>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        @endforeach\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"text-center\">\n        {!! $pagination !!}\n    </div>\n\n@endsection\n\n@section('pre_javascript')\n\n    @parent\n    var _cmsUrl = \"{{ cms()->url('/') }}\";\n\n@stop\n"
  },
  {
    "path": "src/Views/modules/links/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/links/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Links @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.links.breadcrumbs', ['location' => [['Menu' => cms()->url('menus/'.request('m').'/edit')], 'links', 'create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('links.store'), 'class' => 'add']) !!}\n\n            {!! FormMaker::fromTable('links', config('cms.forms.link')) !!}\n\n            <div class=\"form-group\" style=\"display: none;\">\n                <label for=\"Page_id\">Page</label>\n                <select class=\"form-control\" id=\"Page_id\" name=\"page_id\">\n                    @foreach (PageService::getPagesAsOptions() as $key => $value)\n                        <option value=\"{!! $value !!}\">{!! $key !!}</option>\n                    @endforeach\n                </select>\n            </div>\n\n            <input type=\"hidden\" name=\"menu_id\" value=\"{{ request('m') }}\">\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! url()->previous() !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n@endsection\n\n@section('javascript')\n\n    @parent\n    {!! Minify::javascript(Cms::asset('js/links-module.js', 'application/javascript')) !!}\n\n@stop\n"
  },
  {
    "path": "src/Views/modules/links/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Links @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.links.breadcrumbs', ['location' => [['Menu' => cms()->url('menus/'.$links->menu_id.'/edit')], 'links', 'edit']])\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'links', 'item' => $links ])\n                </ul>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::model($links, ['route' => [cms()->route('links.update'), $links->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n            <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n            {!! FormMaker::fromObject($links->asObject(), config('cms.forms.link')) !!}\n\n            <div class=\"form-group\" style=\"display: none;\">\n                <label for=\"Page_id\">Page</label>\n                <select class=\"form-control\" id=\"Page_id\" name=\"page_id\">\n                    @foreach (PageService::getPagesAsOptions() as $key => $value)\n                        <option @if($value === $links->page_id) selected  @endif value=\"{!! $value !!}\">{!! $key !!}</option>\n                    @endforeach\n                </select>\n            </div>\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! url()->previous() !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/links/index.blade.php",
    "content": "\n<div class=\"modal fade\" id=\"deleteLinkModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Link</h4>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n            </div>\n            <div class=\"modal-body\">\n                <p>Are you sure want to delete this link?</p>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                <a id=\"deleteLinkBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n            </div>\n        </div>\n    </div>\n</div>\n\n@if ($links->count() === 0)\n    <div class=\"card card-dark text-center mt-4\">\n        <div class=\"card-body\">No links found.</div>\n    </div>\n@else\n    <table class=\"table table-striped mt-4\">\n        <thead>\n            <th>Name</th>\n            <th class=\"m-hidden\">Links To</th>\n            <th width=\"170px\" class=\"text-right\">Actions</th>\n        </thead>\n        <tbody id=\"linkList\">\n\n            @foreach($links as $link)\n                <tr data-id=\"{{ $link->id }}\">\n                    <td>\n                        <i class=\"fa fa-bars mr-4\"></i>\n                        <a href=\"{!! route(cms()->route('links.edit'), [$link->id]) !!}\">{!! $link->name !!}</a>\n                    </td>\n                    @if ($link->external)\n                    <td class=\"m-hidden\">{!! $link->external_url !!}</td>\n                    @else\n                    <td class=\"m-hidden\">{!! PageService::pageName($link->page_id) !!}</td>\n                    @endif\n                    <td>\n                        <div class=\"btn-toolbar justify-content-between\">\n                            <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('links.edit'), [$link->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                            <form method=\"post\" action=\"{!! cms()->url('links/'.$link->id) !!}\">\n                                {!! csrf_field() !!}\n                                {!! method_field('DELETE') !!}\n                                <button class=\"delete-link-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                            </form>\n                        </div>\n                    </td>\n                </tr>\n            @endforeach\n        </tbody>\n    </table>\n@endif\n\n"
  },
  {
    "path": "src/Views/modules/menus/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('menus') !!}\">Menus</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/menus/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Menus @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.menus.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('menus.store'), 'class' => 'add']) !!}\n\n            {!! FormMaker::fromTable('menus', config('cms.forms.menu')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('menus') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n\n"
  },
  {
    "path": "src/Views/modules/menus/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Menus @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.menus.breadcrumbs', ['location' => ['edit']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::model($menu, ['route' => [cms()->route('menus.update'), $menu->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n            {!! FormMaker::fromObject($menu, config('cms.forms.menu')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('menus') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n    <div class=\"col-md-12\">\n        <hr class=\"mt-4 mb-4\">\n    </div>\n\n    <div class=\"col-md-12\">\n        <a class=\"btn btn-outline-primary float-right\" href=\"{!! cms()->url('links/create?m='.$menu->id) !!}\">Add Link</a>\n        <h5 class=\"pt-2\">Links <small>(Drag and drop to sort)</small></h5>\n        @include('cms::modules.links.index')\n    </div>\n\n@endsection\n\n@section('pre_javascript')\n\n    @parent\n    var _linkOrder = @if (!is_null($menu->order)) {!! $menu->order !!} @else [] @endif;\n    var _id = {{ $menu->id }};\n    var _cmsUrl = _url + \"/{{ config('cms.backend-route-prefix') }}\";\n\n@stop\n"
  },
  {
    "path": "src/Views/modules/menus/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Menus @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Menu</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this menu?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'menus' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($menus->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'menus' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Name', 'name') !!}</th>\n                            <th>{!! sortable('Slug', 'slug') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n                            @foreach($menus as $menu)\n                                <tr>\n                                    <td><a href=\"{!! route(cms()->route('menus.edit'), [$menu->id]) !!}\">{!! $menu->name !!}</a></td>\n                                    <td>{!! $menu->slug !!}</td>\n                                    <td class=\"text-right\">\n                                         <div class=\"btn-toolbar justify-content-between\">\n                                            <a class=\"btn btn-sm btn-secondary mr-2\" href=\"{!! route(cms()->route('menus.edit'), [$menu->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                            <form method=\"post\" action=\"{!! cms()->url('menus/'.$menu->id) !!}\">\n                                                {!! csrf_field() !!}\n                                                {!! method_field('DELETE') !!}\n                                                <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                            </form>\n                                        </div>\n                                    </td>\n                                </tr>\n                            @endforeach\n                        </tbody>\n                    </table>\n                @endif\n            </div>\n        </div>\n    </div>\n    <div class=\"text-center\">\n        {!! $pagination !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/pages/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('pages') !!}\">Pages</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/pages/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Pages @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.pages.breadcrumbs', ['location' => ['create']])\n    </div>\n    <div class=\"col-md-12 mt-4\">\n        {!! Form::open(['route' => cms()->route('pages.store'), 'class' => 'add', 'files' => true]) !!}\n\n            {!! FormMaker::setColumns(2)->fromTable('pages', config('cms.forms.page.identity')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('pages', config('cms.forms.page.content')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('pages', config('cms.forms.page.seo')) !!}\n            {!! FormMaker::setColumns(2)->fromTable('pages', config('cms.forms.page.publish')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('pages') !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/pages/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Pages @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-2\">\n                @include('cms::modules.pages.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"btn-toolbar float-right mt-2\">\n                    @if (! cms()->isDefaultLanguage() && $page->translationData(request('lang')))\n                        @if (isset($page->translationData(request('lang'))->is_published))\n                            <a class=\"btn btn-primary ml-1\" href=\"{!! url('page/'.$page->translationData(request('lang'))->url) !!}\">Live</a>\n                        @else\n                            <a class=\"btn btn-outline-success ml-1\" href=\"{!! cms()->url('preview/page/'.$page->id.'?lang='.request('lang')) !!}\">Preview</a>\n                        @endif\n                         <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($page->translation(request('lang'))) !!}\">Rollback</a>\n                    @else\n                        @if ($page->is_published)\n                            <a class=\"btn btn-primary ml-1\" href=\"{!! url('page/'.$page->url) !!}\">Live</a>\n                        @else\n                            <a class=\"btn btn-outline-success ml-1\" href=\"{!! cms()->url('preview/page/'.$page->id) !!}\">Preview</a>\n                        @endif\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($page) !!}\">Rollback</a>\n                        <a class=\"btn btn-outline-secondary ml-1\" href=\"{!! cms()->url('pages/'.$page->id.'/history') !!}\">History</a>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'pages', 'item' => $page ])\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"@if (config('cms.live-preview', false)) col-md-6 @else col-md-12 @endif\">\n                {!! Form::model($page, ['route' => [cms()->route('pages.update'), $page->id], 'method' => 'patch', 'class' => 'edit', 'files' => true]) !!}\n\n                    <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n                    {!! FormMaker::setColumns(2)->fromObject($page->asObject(), config('cms.forms.page.identity')) !!}\n\n                    <div class=\"form-group\">\n                        <label for=\"Template\">Template</label>\n                        <select class=\"form-control\" id=\"Template\" name=\"template\">\n                            @foreach (PageService::getTemplatesAsOptions() as $template)\n                                @if (! cms()->isDefaultLanguage() && $page->translationData(request('lang')))\n                                    <option @if($template === $page->translationData(request('lang'))->template) selected  @endif value=\"{!! $template !!}\">{!! ucfirst(str_replace('-template', '', $template)) !!}</option>\n                                @else\n                                    <option @if($template === $page->template) selected  @endif value=\"{!! $template !!}\">{!! ucfirst(str_replace('-template', '', $template)) !!}</option>\n                                @endif\n                            @endforeach\n                        </select>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-6\">\n                            {!! FormMaker::setColumns(1)->fromObject($page->asObject(), config('cms.forms.page.content')) !!}\n                        </div>\n                        <div class=\"col-md-6\">\n                            @if ($page->hero_image)\n                                <img class=\"img-thumbnail img-fluid\" src=\"{{ $page->hero_image_url }}\" alt=\"\">\n                                <div class=\"btn-toolbar mt-2 mb-4\" role=\"toolbar\">\n                                    <a href=\"{{ cms()->url('hero-images/delete/page/'.$page->id) }}\" class=\"btn btn-outline-danger\">\n                                        <span class=\"fa fa-fw fa-trash\"></span> Delete Image\n                                    </a>\n                                </div>\n                            @endif\n                        </div>\n                    </div>\n\n                    <div class=\"row\">\n                        <div class=\"col-md-12 mt-4\">\n                            {!! FormMaker::setColumns(2)->fromObject($page->asObject(), config('cms.forms.page.seo')) !!}\n                        </div>\n                    </div>\n\n                    {!! FormMaker::setColumns(2)->fromObject($page->asObject(), config('cms.forms.page.publish')) !!}\n\n                    @include('cms::modules.blocks', ['item' => $page->asObject()])\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('pages') !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n            @if (config('cms.live-preview', false))\n                <div class=\"col-md-6 hidden-sm hidden-xs\">\n                    <div id=\"wrap\">\n                        @if (! cms()->isDefaultLanguage())\n                            <iframe id=\"frame\" src=\"{!! cms()->url('preview/page/'.$page->id.'?lang='.request('lang')) !!}\"></iframe>\n                        @else\n                            <iframe id=\"frame\" src=\"{{ cms()->url('preview/page/'.$page->id) }}\"></iframe>\n                        @endif\n                    </div>\n                    <div id=\"frameButtons\" class=\"mt-2\">\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"desktop\">Desktop</button>\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"mobile\">Mobile</button>\n                    </div>\n                </div>\n            @endif\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/pages/history.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Page History @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.pages.breadcrumbs', ['location' => [[$page->title => cms()->url('pages/'.$page->id.'/edit')], 'history']])\n    </div>\n\n    <div class=\"col-md-12 mt-4\">\n        <table class=\"table table-striped\">\n            @foreach($page->history() as $history)\n                <tr>\n                    <td>{{ $history->created_at->format('M jS, Y') }} ({{ $history->created_at->diffForHumans() }})</td>\n                    <td class=\"text-right\">\n                        <a class=\"btn btn-outline-warning btn-sm\" href=\"{{ cms()->url('revert/'.$history->id) }}\">Revert</a>\n                    </td>\n                </tr>\n            @endforeach\n        </table>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/pages/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Pages @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\" role=\"document\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h5 class=\"modal-title\" id=\"deleteModalLabel\">Delete Page</h5>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                        <span aria-hidden=\"true\">&times;</span>\n                    </button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this page?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'pages' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($pages->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'pages' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Title', 'title') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Url', 'url') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Is Published', 'is_published') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n                            @foreach($pages as $page)\n                                <tr>\n                                    <td><a href=\"{!! route(cms()->route('pages.edit'), [$page->id]) !!}\">{!! $page->title !!}</a></td>\n                                    <td class=\"m-hidden\">{!! $page->url !!}</td>\n                                    <td class=\"m-hidden\">\n                                        @if ($page->is_published)\n                                            <span class=\"fa fa-check\"></span>\n                                        @else\n                                            <span class=\"fa fa-times\"></span>\n                                        @endif\n                                    </td>\n                                    <td class=\"text-right\">\n                                        <div class=\"btn-toolbar justify-content-between\">\n                                            <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('pages.edit'), [$page->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                            <form method=\"post\" action=\"{!! cms()->url('pages/'.$page->id) !!}\">\n                                                {!! csrf_field() !!}\n                                                {!! method_field('DELETE') !!}\n                                                <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                            </form>\n                                        </div>\n                                    </td>\n                                </tr>\n                            @endforeach\n                        </tbody>\n                    </table>\n                @endif\n            </div>\n\n            <div class=\"text-center\">\n                {!! $pagination !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n\n"
  },
  {
    "path": "src/Views/modules/promotions/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('promotions') !!}\">Promotions</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/promotions/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Promotions @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.promotions.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('promotions.store'), 'class' => 'add']) !!}\n\n            {!! FormMaker::setColumns(3)->fromTable('promotions', config('cms.forms.promotion.identity')) !!}\n            {!! FormMaker::setColumns(1)->fromTable('promotions', config('cms.forms.promotion.content')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('promotions') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/promotions/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Promotions @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-2\">\n                @include('cms::modules.promotions.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"btn-toolbar float-right mt-2 mb-4\">\n                    @if (! cms()->isDefaultLanguage() && $promotion->translationData(request('lang')))\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($promotion->translation(request('lang'))) !!}\">Rollback</a>\n                    @elseif (is_null(request('lang')))\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($promotion) !!}\">Rollback</a>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'promotions', 'item' => $promotion ])\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"@if (config('cms.live-preview', false)) col-md-6 @else col-md-12 @endif\">\n                {!! Form::model($promotion, ['route' => [cms()->route('promotions.update'), $promotion->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n                    <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n                    {!! FormMaker::setColumns(3)->fromObject($promotion->asObject(), config('cms.forms.promotion.identity')) !!}\n                    {!! FormMaker::setColumns(1)->fromObject($promotion->asObject(), config('cms.forms.promotion.content')) !!}\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('promotions') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n            @if (config('cms.live-preview', false))\n                <div class=\"col-md-6 hidden-sm hidden-xs\">\n                    <div id=\"wrap\">\n                        @if (! cms()->isDefaultLanguage())\n                            <iframe id=\"frame\" src=\"{!! cms()->url('preview/promotion/'.$promotion->id.'?lang='.request('lang')) !!}\"></iframe>\n                        @else\n                            <iframe id=\"frame\" src=\"{{ cms()->url('preview/promotion/'.$promotion->id) }}\"></iframe>\n                        @endif\n                    </div>\n                    <div id=\"frameButtons\" class=\"raw-margin-top-16\">\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"desktop\">Desktop</button>\n                        <button class=\"btn btn-secondary preview-toggle\" data-platform=\"mobile\">Mobile</button>\n                    </div>\n                </div>\n            @endif\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/promotions/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Promotions @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Event</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this promotion?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'promotions' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($promotions->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'promotions' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Slug', 'slug') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Publushed At', 'published_at') !!}</th>\n                            <th class=\"m-hidden\">{!! sortable('Finished At', 'finished_at') !!}</th>\n                            <th class=\"m-hidden\">Currenlty Visible</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n\n                        @foreach($promotions as $promotion)\n                            <tr>\n                                <td><a href=\"{!! route(cms()->route('promotions.edit'), [$promotion->id]) !!}\">{!! $promotion->slug !!}</a></td>\n                                <td class=\"m-hidden\">{!! date('M jS, Y', strtotime($promotion->published_at)) !!}</td>\n                                <td class=\"m-hidden\">{!! date('M jS, Y', strtotime($promotion->finished_at)) !!}</td>\n                                <td class=\"m-hidden\">\n                                    @if ($promotion->is_published)\n                                        <span class=\"fa fa-check\"></span>\n                                    @else\n                                        <span class=\"fa fa-times\"></span>\n                                    @endif\n                                </td>\n                                <td class=\"text-right\">\n                                    <div class=\"btn-toolbar justify-content-between\">\n                                        <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('promotions.edit'), [$promotion->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                        <form method=\"post\" action=\"{!! cms()->url('promotions/'.$promotion->id) !!}\">\n                                            {!! csrf_field() !!}\n                                            {!! method_field('DELETE') !!}\n                                            <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                        </form>\n                                    </div>\n                                </td>\n                            </tr>\n                        @endforeach\n                    </tbody>\n                </table>\n            @endif\n        </div>\n    </div>\n    <div class=\"text-center\">\n        {!! $pagination !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/widgets/breadcrumbs.blade.php",
    "content": "<nav aria-label=\"breadcrumb\">\n    <ol class=\"breadcrumb\">\n        <li class=\"breadcrumb-item\"><a href=\"{!! cms()->url('widgets') !!}\">Widgets</a></li>\n            {!! Cms::breadcrumbs($location) !!}\n        <li class=\"active\"></li>\n    </ol>\n</nav>"
  },
  {
    "path": "src/Views/modules/widgets/create.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Widgets @stop\n\n@section('content')\n\n    <div class=\"col-md-12 mt-2\">\n        @include('cms::modules.widgets.breadcrumbs', ['location' => ['create']])\n    </div>\n\n    <div class=\"col-md-12\">\n        {!! Form::open(['route' => cms()->route('widgets.store'), 'class' => 'add']) !!}\n\n            {!! FormMaker::fromTable('widgets', config('cms.forms.widget')) !!}\n\n            <div class=\"form-group text-right\">\n                <a href=\"{!! cms()->url('widgets') !!}\" class=\"btn btn-secondary raw-left\">Cancel</a>\n                {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n            </div>\n\n        {!! Form::close() !!}\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/widgets/edit.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Widgets @stop\n\n@section('content')\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-6 mt-2\">\n                @include('cms::modules.widgets.breadcrumbs', ['location' => ['edit']])\n            </div>\n            <div class=\"col-md-6\">\n                 <div class=\"btn-toolbar float-right mt-2 mb-4\">\n                    @if (! cms()->isDefaultLanguage() && $widget->translationData(request('lang')))\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($widget->translation(request('lang'))) !!}\">Rollback</a>\n                    @elseif (is_null(request('lang')))\n                        <a class=\"btn btn-warning ml-1\" href=\"{!! Cms::rollbackUrl($widget) !!}\">Rollback</a>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-md-12\">\n        <div class=\"row mb-4\">\n            <div class=\"col-md-12\">\n                <ul class=\"nav nav-tabs\">\n                    @include('cms::layouts.tabs', [ 'module' => 'widgets', 'item' => $widget ])\n                </ul>\n            </div>\n        </div>\n\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                {!! Form::model($widget, ['route' => [cms()->route('widgets.update'), $widget->id], 'method' => 'patch', 'class' => 'edit']) !!}\n\n                    <input type=\"hidden\" name=\"lang\" value=\"{{ request('lang') }}\">\n\n                    @if (! cms()->isDefaultLanguage())\n                        <input type=\"hidden\" name=\"name\" value=\"{{ $widget->name }}\">\n                        <input type=\"hidden\" name=\"slug\" value=\"{{ $widget->slug }}\">\n                        <div class=\"form-group\">\n                            {!! FormMaker::fromObject($widget->translationData(request('lang')), ['content' => [\n                                'type' => 'text',\n                                'class' => 'redactor'\n                            ]]) !!}\n                        </div>\n                    @else\n                        {!! FormMaker::fromObject($widget, config('cms.forms.widget')) !!}\n                    @endif\n\n                    <div class=\"form-group text-right\">\n                        <a href=\"{!! cms()->url('widgets') !!}\" class=\"btn btn-secondary float-left\">Cancel</a>\n                        {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}\n                    </div>\n\n                {!! Form::close() !!}\n            </div>\n        </div>\n    </div>\n\n@endsection\n"
  },
  {
    "path": "src/Views/modules/widgets/index.blade.php",
    "content": "@extends('cms::layouts.dashboard')\n\n@section('pageTitle') Widgets @stop\n\n@section('content')\n\n    <div class=\"modal fade\" id=\"deleteModal\" tabindex=\"-3\" role=\"dialog\" aria-labelledby=\"deleteModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h4 class=\"modal-title\" id=\"deleteModalLabel\">Delete Widgets</h4>\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>\n                </div>\n                <div class=\"modal-body\">\n                    <p>Are you sure want to delete this widget?</p>\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>\n                    <a id=\"deleteBtn\" class=\"btn btn-danger\" href=\"#\">Confirm Delete</a>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('cms::layouts.module-header', [ 'module' => 'widgets' ])\n\n    <div class=\"col-md-12\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                @if ($widgets->count() === 0)\n                    @include('cms::layouts.module-search', [ 'module' => 'widgets' ])\n                @else\n                    <table class=\"table table-striped\">\n                        <thead>\n                            <th>{!! sortable('Name', 'name') !!}</th>\n                            <th>{!! sortable('Slug', 'slug') !!}</th>\n                            <th width=\"170px\" class=\"text-right\">Actions</th>\n                        </thead>\n                        <tbody>\n                            @foreach($widgets as $widget)\n                                <tr>\n                                    <td>\n                                        <a href=\"{!! route(cms()->route('widgets.edit'), [$widget->id]) !!}\">{!! $widget->name !!}</a>\n                                    </td>\n                                    <td>{!! $widget->slug !!}</td>\n                                    <td class=\"text-right\">\n                                        <div class=\"btn-toolbar justify-content-between\">\n                                            <a class=\"btn btn-sm btn-outline-primary mr-2\" href=\"{!! route(cms()->route('widgets.edit'), [$widget->id]) !!}\"><i class=\"fa fa-edit\"></i> Edit</a>\n                                            <form method=\"post\" action=\"{!! cms()->url('widgets/'.$widget->id) !!}\">\n                                                {!! csrf_field() !!}\n                                                {!! method_field('DELETE') !!}\n                                                <button class=\"delete-btn btn btn-sm btn-danger\" type=\"submit\"><i class=\"fa fa-trash\"></i> Delete</button>\n                                            </form>\n                                        </div>\n                                    </td>\n                                </tr>\n                            @endforeach\n                        </tbody>\n                    </table>\n                @endif\n            </div>\n        </div>\n    </div>\n    <div class=\"text-center\">\n        {!! $pagination !!}\n    </div>\n\n@endsection\n\n"
  },
  {
    "path": "src/Views/notifications.blade.php",
    "content": "<script>\n    @if (Session::has(\"notification\"))\n        cmsNotify(\"{{ Session::get(\"notification\") }}\", \"{{ Session::get(\"notificationType\") }}\");\n    @endif\n\n    @if (Session::has(\"message\"))\n        cmsNotify(\"{{ Session::get(\"message\") }}\", \"alert-info\");\n    @endif\n\n    @if (Session::has(\"success\"))\n        cmsNotify(\"{{ Session::get(\"success\") }}\", \"alert-success\");\n    @endif\n\n    @if (Session::has(\"errors\") && count(Session::get(\"errors\")) >= 1)\n        cmsNotify(\"{!! collect($errors->all())->implode('<br>') !!}\", \"alert-danger\");\n    @endif\n</script>\n"
  },
  {
    "path": "src/Views/rss.blade.php",
    "content": "<?xml version=\"1.0\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n    <channel>\n        @foreach($meta as $key => $metaItem)\n            @if ($key === 'link')\n            <{{ $key }} href=\"{{ $metaItem }}\"></{{ $key }}>\n            @elseif ($key === 'title')\n            <{{ $key }}>{{ $metaItem }}</{{ $key }}>\n            @else\n            <{{ $key }}>{{ $metaItem }}</{{ $key }}>\n            @endif\n        @endforeach\n        @foreach($items as $item)\n            <item>\n                <title>{{ $item->title }}</title>\n                <link rel=\"alternate\" href=\"{{ url(str_plural($module).'/'.$item->url) }}\" />\n                <id>{{ url($item->id) }}</id>\n                <author>\n                    <name>{{ optional($item)->author }}</name>\n                </author>\n                <summary type=\"html\">{!! $item->seo_description !!}</summary>\n                <updated>{{ $item->updated_at->toAtomString() }}</updated>\n            </item>\n        @endforeach\n    </channel>\n</rss>"
  },
  {
    "path": "src/Views/site-map.blade.php",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n\n    @foreach ($items as $item)\n   <url>\n      <loc>{{ $item['url'] }}</loc>\n      <lastmod>{{ $item['updated_at'] }}</lastmod>\n      <changefreq>monthly</changefreq>\n      <priority>0.8</priority>\n   </url>\n   @endforeach\n\n</urlset>"
  },
  {
    "path": "tests/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/Console/ModuleMakeTest.php",
    "content": "<?php\n\nnamespace Tests\\Console;\n\nuse Tests\\TestCase;\nuse org\\bovigo\\vfs\\vfsStream;\nuse Grafite\\CrudMaker\\Generators\\CrudGenerator;\n\nclass ModuleMakeTest extends TestCase\n{\n    protected $generator;\n    protected $config;\n\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->generator = new CrudGenerator();\n        $this->config = [\n            'framework' => 'Laravel',\n            'bootstrap' => false,\n            'semantic' => false,\n            'template_source' => __DIR__.'/../../src/Templates/CRUD',\n            '_sectionPrefix_' => '',\n            '_sectionTablePrefix_' => '',\n            '_sectionRoutePrefix_' => '',\n            '_sectionNamespace_' => '',\n            'relationships' => null,\n            'schema' => null,\n            '_path_facade_' => vfsStream::url('Facades'),\n            '_path_service_' => vfsStream::url('Services'),\n            '_path_model_' => vfsStream::url('Models/'.ucfirst('testTable')),\n            '_path_controller_' => vfsStream::url('Http/Controllers'),\n            '_path_api_controller_' => vfsStream::url('Http/Controllers/Api'),\n            '_path_views_' => vfsStream::url('resources/views'),\n            '_path_tests_' => vfsStream::url('tests'),\n            '_path_request_' => vfsStream::url('Http/Requests'),\n            '_path_routes_' => vfsStream::url('Http/routes.php'),\n            '_path_api_routes_' => vfsStream::url('Http/api-routes.php'),\n            '_path_factory_' => vfsStream::url('database/factories/ModelFactory.php'),\n            'routes_prefix' => '',\n            'routes_suffix' => '',\n            '_namespace_services_' => 'App\\Services',\n            '_namespace_facade_' => 'App\\Facades',\n            '_namespace_model_' => 'App\\Models',\n            '_namespace_controller_' => 'App\\Http\\Controllers',\n            '_namespace_api_controller_' => 'App\\Http\\Controllers\\Api',\n            '_namespace_request_' => 'App\\Http\\Requests',\n            '_lower_case_' => strtolower('testTable'),\n            '_lower_casePlural_' => str_plural(strtolower('testTable')),\n            '_camel_case_' => ucfirst(camel_case('testTable')),\n            '_camel_casePlural_' => str_plural(camel_case('testTable')),\n            '_ucCamel_casePlural_' => ucfirst(str_plural(camel_case('testTable'))),\n        ];\n    }\n\n    public function testControllerGenerator()\n    {\n        $this->crud = vfsStream::setup('Http/Controllers');\n        $this->generator->createController($this->config);\n\n        $contents = $this->crud->getChild('Http/Controllers/TestTablesController.php');\n\n        $this->assertTrue($this->crud->hasChild('Http/Controllers/TestTablesController.php'));\n        $this->assertContains('class TestTablesController extends Controller', $contents->getContent());\n    }\n\n    public function testRequestGenerator()\n    {\n        $this->crud = vfsStream::setup('Http/Requests');\n\n        $this->generator->createRequest($this->config);\n        $contents = $this->crud->getChild('Http/Requests/TestTableCreateRequest.php');\n\n        $this->assertTrue($this->crud->hasChild('Http/Requests/TestTableCreateRequest.php'));\n        $this->assertContains('class TestTableCreateRequest', $contents->getContent());\n    }\n\n    public function testServiceGenerator()\n    {\n        $this->crud = vfsStream::setup('Services');\n\n        $this->generator->createService($this->config);\n        $contents = $this->crud->getChild('Services/TestTableService.php');\n\n        $this->assertTrue($this->crud->hasChild('Services/TestTableService.php'));\n        $this->assertContains('class TestTableService', $contents->getContent());\n    }\n\n    public function testRoutesGenerator()\n    {\n        $this->crud = vfsStream::setup('Http');\n        file_put_contents(vfsStream::url('Http/routes.php'), 'test');\n\n        $this->generator->createRoutes($this->config, false);\n        $contents = $this->crud->getChild('Http/routes.php');\n\n        $this->assertContains('TestTablesController', $contents->getContent());\n        $this->assertContains('TestTablesController@search', $contents->getContent());\n    }\n\n    public function testViewsGenerator()\n    {\n        $this->crud = vfsStream::setup('resources/views');\n\n        $this->generator->createViews($this->config);\n        $contents = $this->crud->getChild('resources/views/testtables/index.blade.php');\n\n        $this->assertTrue($this->crud->hasChild('resources/views/testtables/index.blade.php'));\n        $this->assertContains('$testtable', $contents->getContent());\n    }\n\n    public function testTestGenerator()\n    {\n        $this->crud = vfsStream::setup('tests');\n\n        $this->assertTrue($this->generator->createTests($this->config, false));\n\n        $contents = $this->crud->getChild('tests/Feature/TestTableAcceptanceTest.php');\n        $this->assertTrue($this->crud->hasChild('tests/Feature/TestTableAcceptanceTest.php'));\n        $this->assertContains('class TestTableAcceptanceTest', $contents->getContent());\n\n        $contents = $this->crud->getChild('tests/Unit/TestTableServiceTest.php');\n        $this->assertTrue($this->crud->hasChild('tests/Unit/TestTableServiceTest.php'));\n        $this->assertContains('class TestTableServiceTest', $contents->getContent());\n    }\n\n    public function testTestGeneratorServiceOnly()\n    {\n        $this->crud = vfsStream::setup('tests');\n\n        $this->assertTrue($this->generator->createTests($this->config, true));\n\n        $this->assertFalse($this->crud->hasChild('tests/Feature/TestTableAcceptanceTest.php'));\n\n        $contents = $this->crud->getChild('tests/Unit/TestTableServiceTest.php');\n        $this->assertTrue($this->crud->hasChild('tests/Unit/TestTableServiceTest.php'));\n        $this->assertContains('class TestTableServiceTest', $contents->getContent());\n    }\n\n    public function testFactoryGenerator()\n    {\n        $this->crud = vfsStream::setup('database/factories');\n        file_put_contents(vfsStream::url('database/factories/ModelFactory.php'), 'test');\n\n        $this->generator->createFactory($this->config);\n        $contents = $this->crud->getChild('database/factories/ModelFactory.php');\n\n        $this->assertContains('TestTable::class', $contents->getContent());\n        $this->assertContains('$factory->define(', $contents->getContent());\n    }\n}\n"
  },
  {
    "path": "tests/Feature/BlogTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\nuse Grafite\\Cms\\Services\\CryptoService;\n\nclass BlogTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Blog::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/blog');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('blogs');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/blog/create');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertSee('Title');\n    }\n\n    public function testEdit()\n    {\n        factory(\\Grafite\\Cms\\Models\\Blog::class)->create(['id' => 4]);\n        $response = $this->call('GET', 'cms/blog/4/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('blog');\n        $response->assertSee('Title');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $blog = ['title' => 'dumber', 'url' => 'dumber', 'entry' => 'okie dokie'];\n        $response = $this->call('POST', 'cms/blog', $blog);\n\n        $this->assertDatabaseHas('blogs', ['id' => 2]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->call('POST', 'cms/blog/search', ['term' => 'wtf']);\n\n        $response->assertViewHas('blogs');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $blog = ['title' => 'dumber', 'url' => 'dumber', 'entry' => 'okie dokie'];\n        $this->call('POST', 'cms/blog', $blog);\n\n        $response = $this->call('PATCH', 'cms/blog/1', [\n            'title' => 'dumber and dumber',\n            'url' => 'dumber-and-dumber',\n        ]);\n\n        $this->assertDatabaseHas('blogs', ['title' => 'dumber and dumber']);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testUpdateTranslation()\n    {\n        $blog = ['title' => 'dumber', 'url' => 'dumber', 'entry' => 'okie dokie'];\n        $this->call('POST', 'cms/blog', $blog);\n\n        $response = $this->call('PATCH', 'cms/blog/1', [\n            'title' => 'dumber and dumber',\n            'url' => 'dumber-and-dumber',\n            'lang' => 'fr',\n        ]);\n\n        $this->assertDatabaseHas('translations', [\n            'entity_type' => 'Grafite\\\\Cms\\\\Models\\\\Blog',\n        ]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', 'cms/blog/'.app(CryptoService::class)->encrypt(1));\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/blog');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/DashboardTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass DashboardTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Landing\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', '/cms/dashboard');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n}\n"
  },
  {
    "path": "tests/Feature/EventsTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass EventsTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Event::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/events');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('events');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/events/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/events/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('event');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $event = factory(\\Grafite\\Cms\\Models\\Event::class)->make(['id' => 2]);\n        $event = $event->toArray();\n        unset($event['translations']);\n        $response = $this->call('POST', 'cms/events', $event);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->call('POST', 'cms/events/search', ['term' => 'wtf']);\n\n        $response->assertViewHas('events');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $event = ['id' => 2, 'title' => 'dumber', 'start_date' => '2016-10-31', 'end_date' => '2016-10-31', 'details' => 'okie dokie'];\n        $response = $this->call('POST', 'cms/events', $event);\n\n        $response = $this->call('PATCH', 'cms/events/2', [\n            'title' => 'smarter',\n        ]);\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertDatabaseHas('events', ['title' => 'smarter']);\n    }\n\n    public function testUpdateTranslation()\n    {\n        $event = ['id' => 2, 'title' => 'dumber', 'start_date' => '2016-10-31', 'end_date' => '2016-10-31', 'details' => 'okie dokie'];\n        $response = $this->call('POST', 'cms/events', $event);\n\n        $response = $this->call('PATCH', 'cms/events/2', [\n            'title' => 'smarter',\n            'lang' => 'fr',\n        ]);\n\n        $this->assertDatabaseHas('translations', [\n            'entity_type' => 'Grafite\\\\Cms\\\\Models\\\\Event',\n        ]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', 'cms/events/1');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/events');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/FAQTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass FAQTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\FAQ::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/faqs');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('faqs');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/faqs/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/faqs/1'.'/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('faq');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $response = $this->call('POST', 'cms/faqs', [\n            'question' => 'who is this',\n            'answer' => 'I am your worst nightmare!',\n            'is_published' => '',\n        ]);\n\n        $this->assertDatabaseHas('faqs', ['id' => 1]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->call('POST', 'cms/faqs/search', ['term' => 'wtf']);\n\n        $response->assertViewHas('faqs');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $response = $this->call('PATCH', 'cms/faqs/1', [\n            'question' => 'who is this',\n            'answer' => 'I am your worst nightmare!',\n            'is_published' => 'on',\n        ]);\n\n        $this->assertDatabaseHas('faqs', ['question' => 'who is this']);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testUpdateTranslation()\n    {\n        $response = $this->call('PATCH', 'cms/faqs/1', [\n            'question' => 'who is this',\n            'answer' => 'I am your worst nightmare!',\n            'is_published' => 'on',\n            'lang' => 'fr',\n        ]);\n\n        $this->assertDatabaseHas('translations', [\n            'entity_type' => 'Grafite\\\\Cms\\\\Models\\\\FAQ',\n        ]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', 'cms/faqs/1');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/faqs');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/FilesTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass FilesTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\File::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/files');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('files');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/files/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/files/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('files');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $uploadedFile = new \\Symfony\\Component\\HttpFoundation\\File\\UploadedFile(__DIR__.'/../fixtures/test-file.txt', 'test-file.txt');\n        $file = factory(\\Grafite\\Cms\\Models\\File::class)->make([\n            'id' => 2,\n            'location' => [\n                'file_a' => [\n                    'name' => \\CryptoService::encrypt('test-file.txt'),\n                    'original' => 'test-file.txt',\n                    'mime' => 'txt',\n                    'size' => 24,\n                ],\n            ],\n        ]);\n        $response = $this->call('POST', 'cms/files', $file->getAttributes());\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->call('POST', 'cms/files/search', ['term' => 'wtf']);\n\n        $response->assertViewHas('files');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $file = (array) factory(\\Grafite\\Cms\\Models\\File::class)->make(['id' => 3, 'title' => 'dumber']);\n        $response = $this->call('PATCH', 'cms/files/3', $file);\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('/cms/files');\n    }\n\n    public function testDelete()\n    {\n        \\Storage::put('test-file.txt', 'what is this');\n        $file = factory(\\Grafite\\Cms\\Models\\File::class)->make([\n            'id' => 2,\n            'location' => [\n                'file_a' => [\n                    'name' => \\CryptoService::encrypt('test-file.txt'),\n                    'original' => 'test-file.txt',\n                    'mime' => 'txt',\n                    'size' => 24,\n                ],\n            ],\n        ]);\n        $this->call('POST', 'cms/files', $file->getAttributes());\n\n        $response = $this->call('DELETE', 'cms/files/2');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/files');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/ImagesTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass ImagesTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Image::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/images');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('images');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/images/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/images/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('images');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $uploadedFile = new \\Symfony\\Component\\HttpFoundation\\File\\UploadedFile(__DIR__.'/../fixtures/test-pic.jpg', 'test-pic.jpg');\n        $image = (array) factory(\\Grafite\\Cms\\Models\\Image::class)->make(['id' => 2]);\n        $image['location'] = [\n            [\n                'name' => \\CryptoService::encrypt('test-pic.jpg'),\n                'original' => 'what.jpg',\n            ],\n            [\n                'name' => \\CryptoService::encrypt('test-pic.jpg'),\n                'original' => 'what.jpg',\n            ],\n        ];\n        $response = $this->call('POST', 'cms/images', ['location' => $image['location']], [], []);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $image = (array) factory(\\Grafite\\Cms\\Models\\Image::class)->make(['id' => 3, 'title' => 'dumber']);\n        $response = $this->call('PATCH', 'cms/images/3', $image);\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('/cms/images');\n    }\n\n    public function testDelete()\n    {\n        $uploadedFile = new \\Symfony\\Component\\HttpFoundation\\File\\UploadedFile(__DIR__.'/../fixtures/test-pic.jpg', 'test-pic.jpg');\n        $image = (array) factory(\\Grafite\\Cms\\Models\\Image::class)->make(['id' => 2]);\n        $image['location'] = [\n            [\n                'name' => \\CryptoService::encrypt('files/dumb'),\n                'original' => 'what.jpg',\n            ],\n            [\n                'name' => \\CryptoService::encrypt('files/dumb'),\n                'original' => 'what.jpg',\n            ],\n        ];\n        $this->call('POST', 'cms/images', $image, [], ['location' => ['image' => $uploadedFile]]);\n\n        $response = $this->call('DELETE', 'cms/images/2');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/images');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/LinksTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass LinksTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Menu::class)->create();\n        factory(\\Grafite\\Cms\\Models\\Link::class)->create();\n        factory(\\Grafite\\Cms\\Models\\Link::class)->make(['id' => 1]);\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', '/cms/links/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', '/cms/links/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('links');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $link = factory(\\Grafite\\Cms\\Models\\Link::class)->make(['id' => 89]);\n        $response = $this->call('POST', '/cms/links', $link->toArray());\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('/cms/menus/1/edit');\n    }\n\n    public function testUpdate()\n    {\n        $response = $this->call('PATCH', '/cms/links/1', [\n            'name' => 'wtf',\n        ]);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', '/cms/links/1');\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n}\n"
  },
  {
    "path": "tests/Feature/MenuTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass MenuTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Menu::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', '/cms/menus');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('menus');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', '/cms/menus/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', '/cms/menus/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('menu');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $menu = factory(\\Grafite\\Cms\\Models\\Menu::class)->make(['id' => 2]);\n        $response = $this->call('POST', '/cms/menus', $menu->toArray());\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->call('POST', 'cms/menus/search', ['term' => 'wtf']);\n\n        $response->assertViewHas('menus');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $response = $this->call('PATCH', '/cms/menus/1', [\n            'name' => 'awesome',\n        ]);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', '/cms/menus/1');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('/cms/menus');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/PagesTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass PagesTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Page::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/pages');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('pages');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/pages/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/pages/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('page');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $page = factory(\\Grafite\\Cms\\Models\\Page::class)->make(['id' => 2]);\n        $page = $page->toArray();\n        unset($page['translations']);\n        $response = $this->call('POST', 'cms/pages', $page);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testSearch()\n    {\n        $response = $this->call('POST', 'cms/pages/search', ['term' => 'wtf']);\n\n        $response->assertViewHas('pages');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $page = ['id' => 2, 'title' => 'dumber', 'url' => 'dumber', 'entry' => 'okie dokie'];\n        $response = $this->call('POST', 'cms/pages', $page);\n\n        $response = $this->call('PATCH', 'cms/pages/2', [\n            'title' => 'smarter',\n            'url' => 'smart',\n            'blocks' => null,\n        ]);\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertDatabaseHas('pages', ['title' => 'smarter']);\n    }\n\n    public function testUpdateTranslation()\n    {\n        $page = ['id' => 2, 'title' => 'dumber', 'url' => 'dumber', 'entry' => 'okie dokie'];\n        $response = $this->call('POST', 'cms/pages', $page);\n\n        $response = $this->call('PATCH', 'cms/pages/2', [\n            'title' => 'smarter',\n            'url' => 'smart',\n            'lang' => 'fr',\n            'blocks' => null,\n        ]);\n\n        $this->assertDatabaseHas('translations', [\n            'entity_type' => 'Grafite\\\\Cms\\\\Models\\\\Page',\n        ]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', 'cms/pages/1');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/pages');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/PromotionsTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass PromotionsTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Promotion::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/promotions');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('promotions');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/promotions/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/promotions/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('promotion');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $promotion = factory(\\Grafite\\Cms\\Models\\Promotion::class)->make(['id' => 2]);\n        $promotion = $promotion->toArray();\n        unset($promotion['is_published']);\n        unset($promotion['translations']);\n\n        $response = $this->call('POST', 'cms/promotions', $promotion);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $promotion = ['id' => 2, 'slug' => 'dumber'];\n        unset($promotion['is_published']);\n        unset($promotion['translations']);\n        $response = $this->call('POST', 'cms/promotions', $promotion);\n\n        $response = $this->call('PATCH', 'cms/promotions/2', [\n            'slug' => 'whacky',\n            'details' => 'foobar',\n        ]);\n\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertDatabaseHas('promotions', ['slug' => 'whacky']);\n    }\n\n    public function testUpdateTranslation()\n    {\n        $promotion = ['id' => 2, 'slug' => 'dumber'];\n        unset($promotion['is_published']);\n        unset($promotion['translations']);\n        $response = $this->call('POST', 'cms/promotions', $promotion);\n\n        $response = $this->call('PATCH', 'cms/promotions/2', [\n            'slug' => 'whacky',\n            'details' => 'foobar',\n            'lang' => 'fr',\n        ]);\n\n        $this->assertDatabaseHas('translations', [\n            'entity_type' => 'Grafite\\\\Cms\\\\Models\\\\Promotion',\n        ]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', 'cms/promotions/1');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/promotions');\n    }\n}\n"
  },
  {
    "path": "tests/Feature/WidgetsTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\n\nclass WidgetsTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n        factory(\\Grafite\\Cms\\Models\\Widget::class)->create();\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Views\n    |--------------------------------------------------------------------------\n    */\n\n    public function testIndex()\n    {\n        $response = $this->call('GET', 'cms/widgets');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('widgets');\n    }\n\n    public function testCreate()\n    {\n        $response = $this->call('GET', 'cms/widgets/create');\n        $this->assertEquals(200, $response->getStatusCode());\n    }\n\n    public function testEdit()\n    {\n        $response = $this->call('GET', 'cms/widgets/1/edit');\n        $this->assertEquals(200, $response->getStatusCode());\n        $response->assertViewHas('widget');\n    }\n\n    /*\n    |--------------------------------------------------------------------------\n    | Actions\n    |--------------------------------------------------------------------------\n    */\n\n    public function testStore()\n    {\n        $widget = factory(\\Grafite\\Cms\\Models\\Widget::class)->make(['id' => 2]);\n        $widget = $widget->toArray();\n        unset($widget['translations']);\n        $response = $this->call('POST', 'cms/widgets', $widget);\n\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testUpdate()\n    {\n        $widget = ['id' => 2, 'name' => 'dumber', 'slug' => 'dumber'];\n        $response = $this->call('POST', 'cms/widgets', $widget);\n\n        $response = $this->call('PATCH', 'cms/widgets/2', [\n            'name' => 'whacky',\n            'slug' => 'whacky',\n        ]);\n\n        $this->assertEquals(302, $response->getStatusCode());\n        $this->assertDatabaseHas('widgets', ['name' => 'whacky']);\n    }\n\n    public function testUpdateTranslation()\n    {\n        $widget = ['id' => 2, 'name' => 'dumber', 'slug' => 'dumber'];\n        $response = $this->call('POST', 'cms/widgets', $widget);\n\n        $response = $this->call('PATCH', 'cms/widgets/2', [\n            'name' => 'whacky',\n            'slug' => 'whacky',\n            'lang' => 'fr',\n        ]);\n\n        $this->assertDatabaseHas('translations', [\n            'entity_type' => 'Grafite\\\\Cms\\\\Models\\\\Widget',\n        ]);\n        $this->assertEquals(302, $response->getStatusCode());\n    }\n\n    public function testDelete()\n    {\n        $response = $this->call('DELETE', 'cms/widgets/1');\n        $this->assertEquals(302, $response->getStatusCode());\n        $response->assertRedirect('cms/widgets');\n    }\n}\n"
  },
  {
    "path": "tests/Services/AssetServiceTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Grafite\\Cms\\Services\\AssetService;\nuse Grafite\\Cms\\Services\\CryptoService;\nuse Illuminate\\Filesystem\\Filesystem;\nuse Tests\\TestCase;\n\nclass AssetServiceTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = app(AssetService::class);\n    }\n\n    public function testAsPublic()\n    {\n        $encFileName = app(CryptoService::class)->url_encode(__DIR__.'/../fixtures/test-file.txt');\n\n        $result = $this->service->asPublic($encFileName);\n\n        $this->assertEquals('Illuminate\\Http\\Response', get_class($result));\n    }\n\n    public function testAsPreview()\n    {\n        copy(__DIR__.'/../fixtures/test-pic.jpg', storage_path('app/test-pic.jpg'));\n\n        $fileSystem = app(Filesystem::class);\n        $encFileName = app(CryptoService::class)->url_encode('test-pic.jpg');\n\n        $result = $this->service->asPreview($encFileName, $fileSystem);\n\n        $this->assertEquals('Illuminate\\Http\\Response', get_class($result));\n    }\n\n    public function testAsDownload()\n    {\n        $encFileName = app(CryptoService::class)->url_encode(__DIR__.'/test-file.txt');\n        $encRealFileName = app(CryptoService::class)->url_encode('test-file.txt');\n\n        $result = $this->service->asDownload($encFileName, $encRealFileName);\n\n        $this->assertEquals('Illuminate\\Http\\Response', get_class($result));\n    }\n\n    public function testAsset()\n    {\n        $fileSystem = app(Filesystem::class);\n        $encFileName = app(CryptoService::class)->url_encode(__DIR__.'/test-file.txt');\n        $encType = app(CryptoService::class)->url_encode('plain/text');\n\n        $result = $this->service->asset($encFileName, $encType, $fileSystem);\n\n        $this->assertEquals('Illuminate\\Http\\Response', get_class($result));\n    }\n\n    public function testGetMimeType()\n    {\n        $result = $this->service->getMimeType('jpg');\n\n        $this->assertEquals('image/jpeg', $result);\n    }\n\n    public function testGetFilePath()\n    {\n        $result = $this->service->getFilePath('test-file.txt');\n\n        $this->assertEquals('/storage/test-file.txt', $result);\n    }\n}\n"
  },
  {
    "path": "tests/Services/BlogServiceTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Grafite\\Cms\\Services\\BlogService;\nuse Grafite\\Cms\\Services\\Normalizer;\nuse Tests\\TestCase;\n\nclass BlogServiceTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = app(BlogService::class);\n    }\n\n    public function testGetTemplatesAsOptions()\n    {\n        $result = $this->service->getTemplatesAsOptions();\n\n        $this->assertTrue(is_array($result));\n        $this->assertEquals('show', $result[0]);\n    }\n}\n"
  },
  {
    "path": "tests/Services/CmsServiceTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Grafite\\Cms\\Services\\CmsService;\nuse Tests\\TestCase;\n\nclass CmsServiceTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = app(CmsService::class);\n    }\n\n    public function testDefaultLanguage()\n    {\n        $result = $this->service->isDefaultLanguage();\n\n        $this->assertTrue($result);\n    }\n\n    public function testNotifications()\n    {\n        $result = $this->service->notification('testing');\n\n        $this->assertTrue(is_null($result));\n        $this->assertEquals('testing', session()->get('notification'));\n    }\n\n    public function testBreadcrumbs()\n    {\n        $result = $this->service->breadcrumbs(['module']);\n\n        $this->assertEquals('<li class=\"breadcrumb-item\">Module</li>', $result);\n    }\n}\n"
  },
  {
    "path": "tests/Services/CryptoServiceTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Tests\\TestCase;\nuse Grafite\\Cms\\Services\\CryptoService;\n\nclass CryptoServiceTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = app(CryptoService::class);\n    }\n\n\n    public function testEncrypt()\n    {\n        $result = $this->service->encrypt('test');\n\n        $this->assertContains('--', $result);\n    }\n\n    public function testDecrypt()\n    {\n        $value = $this->service->encrypt('test');\n\n        $result = $this->service->decrypt($value);\n\n        $this->assertEquals('test', $result);\n    }\n}\n"
  },
  {
    "path": "tests/Services/EventServiceTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Grafite\\Cms\\Services\\EventService;\nuse Grafite\\Cms\\Services\\Normalizer;\nuse Tests\\TestCase;\n\nclass EventServiceTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = app(EventService::class);\n    }\n\n    public function testGenerate()\n    {\n        $result = $this->service->generate('2018-03-22');\n\n        $this->assertTrue(is_object($result));\n        $this->assertEquals('Grafite\\Cms\\Services\\EventService', get_class($result));\n    }\n\n    public function testCalendar()\n    {\n        $result = $this->service->calendar('2018-03-22');\n\n        $this->assertTrue(is_array($result));\n        $this->assertEquals(0, count($result));\n    }\n\n    public function testAsHtml()\n    {\n        $result = $this->service->asHtml([\n            'class' => '',\n            'dates' => [\n                '23' => [\n                    3 => 'content'\n                ]\n            ]\n        ]);\n\n        $this->assertTrue(is_string($result));\n        $this->assertEquals('<table class=\"\"><thead><th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th><th>Saturday</th><th>Sunday</th></thead></table>', $result);\n    }\n\n    public function testLinks()\n    {\n        $result = $this->service->generate('2018-03-22')->links('none');\n\n        $this->assertEquals('<div class=\"row calendar-links\"><div class=\"col-12\"><a class=\"previous none\" href=\"http://localhost/events/2018-02-22\">Previous Month</a><a class=\"next none\" href=\"http://localhost/events/2018-04-22\">Next Month</a></div></div>', $result);\n    }\n}\n"
  },
  {
    "path": "tests/Services/NormalizerTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Tests\\TestCase;\nuse Grafite\\Cms\\Services\\Normalizer;\n\nclass NormalizerTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = new Normalizer('<p>sample</p>');\n    }\n\n    public function testToString()\n    {\n        $result = $this->service->__toString();\n\n        $this->assertContains('sample', $result);\n    }\n\n    public function testPlain()\n    {\n        $result = $this->service->plain();\n\n        $this->assertEquals('sample', $result);\n    }\n}\n"
  },
  {
    "path": "tests/Services/PageServiceTest.php",
    "content": "<?php\n\nnamespace Tests\\Services;\n\nuse Grafite\\Cms\\Models\\Page;\nuse Grafite\\Cms\\Services\\PageService;\nuse Tests\\TestCase;\n\nclass PageServiceTest extends TestCase\n{\n    public function setUp(): void\n    {\n        parent::setUp();\n\n        $this->service = app(PageService::class);\n\n        factory(Page::class)->create();\n    }\n\n    public function testGetPagesAsOptions()\n    {\n        $result = $this->service->getPagesAsOptions();\n\n        $this->assertTrue(is_array($result));\n        $this->assertEquals(1, count($result));\n    }\n\n    public function testGetTemplatesAsOptions()\n    {\n        $result = $this->service->getTemplatesAsOptions();\n\n        $this->assertTrue(is_array($result));\n        $this->assertEquals('show', $result[0]);\n    }\n\n    public function testGetPageName()\n    {\n        $result = $this->service->pageName(1);\n\n        $this->assertEquals('dumb', $result);\n    }\n}\n"
  },
  {
    "path": "tests/TestCase.php",
    "content": "<?php\n\nnamespace Tests;\n\nclass TestCase extends \\Orchestra\\Testbench\\TestCase\n{\n    /**\n     * Define environment setup.\n     *\n     * @param \\Illuminate\\Foundation\\Application $app\n     */\n    protected function getEnvironmentSetUp($app)\n    {\n        $app['config']->set('database.default', 'testbench');\n        $app['config']->set('cms.load-modules', false);\n        $app['config']->set('database.connections.testbench', [\n            'driver' => 'sqlite',\n            'database' => ':memory:',\n            'prefix' => '',\n        ]);\n\n        $app['config']->set('minify.config.ignore_environments', ['local', 'testing']);\n        $app->make('Illuminate\\Contracts\\Http\\Kernel')->pushMiddleware('Illuminate\\Session\\Middleware\\StartSession');\n\n        $app['Illuminate\\Contracts\\Auth\\Access\\Gate']->define('cms', function ($user) {\n            return true;\n        });\n    }\n\n    /**\n     * getPackageProviders.\n     *\n     * @param App $app\n     *\n     * @return array\n     */\n    protected function getPackageProviders($app)\n    {\n        return [\n            \\Grafite\\Cms\\GrafiteCmsProvider::class,\n            \\Collective\\Html\\HtmlServiceProvider::class,\n            \\Grafite\\FormMaker\\FormMakerProvider::class,\n        ];\n    }\n\n    /**\n     * Setup the test environment.\n     */\n    public function setUp(): void\n    {\n        parent::setUp();\n        $this->withFactories(__DIR__.'/factories');\n\n        $this->artisan('vendor:publish', [\n            '--provider' => 'Grafite\\Cms\\GrafiteCmsProvider',\n            '--force' => true,\n        ]);\n        $this->artisan('migrate', [\n            '--database' => 'testbench',\n        ]);\n        $this->withoutMiddleware();\n        $this->withoutEvents();\n    }\n}\n"
  },
  {
    "path": "tests/factories/BlogFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Blog Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Blog::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'title' => 'dumb',\n        'entry' => $faker->paragraph().' '.$faker->paragraph(),\n        'is_published' => 1,\n        'url' => 'dumb',\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/EventFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Events Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Event::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'start_date' => '2016-10-31',\n        'end_date' => '2016-10-31',\n        'seo_keywords' => 'dumb, dumber',\n        'seo_description' => 'dumb is dumb',\n        'title' => 'dumb',\n        'details' => $faker->paragraph().' '.$faker->paragraph(),\n        'is_published' => 1,\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/FAQFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| FAQ Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\FAQ::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'question' => 'what\\'s this?',\n        'answer' => 'There\\'s color everywhere!',\n        'is_published' => 1,\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/FileFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Files Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\File::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'location' => 'files/dumb',\n        'name' => 'dumbFile',\n        'tags' => 'dumb, file',\n        'mime' => 'txt',\n        'size' => 24,\n        'details' => 'dumb file',\n        'user' => 1,\n        'is_published' => 1,\n        'order' => 1,\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/ImageFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Images Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Image::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'location' => 'files/dumb',\n        'name' => 'dumb',\n        'original_name' => 'dumb',\n        'alt_tag' => 'dumb',\n        'title_tag' => 'dumb',\n        'is_published' => 1,\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/LinkFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Links Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Link::class, function (Faker\\Generator $faker) {\n    return [\n\n        'id' => 1,\n        'name' => 'dumb',\n        'external' => 1,\n        'page_id' => 0,\n        'menu_id' => 1,\n        'external_url' => 'http://facebook.com',\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n\n    ];\n});\n"
  },
  {
    "path": "tests/factories/MenuFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Menu Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Menu::class, function (Faker\\Generator $faker) {\n    return [\n\n        'id' => 1,\n        'name' => 'dumb menu',\n        'slug' => 'testerSLUG',\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n\n    ];\n});\n"
  },
  {
    "path": "tests/factories/PageFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Pages Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Page::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'title' => 'dumb',\n        'url' => 'dumb',\n        'seo_keywords' => 'dumb, dumber',\n        'seo_description' => 'dumb is dumb',\n        'entry' => $faker->paragraph().' '.$faker->paragraph(),\n        'is_published' => 1,\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/PromotionFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Promotion Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Promotion::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'published_at' => $faker->datetime()->format('Y-m-d H:i'),\n        'finished_at' => $faker->datetime()->format('Y-m-d H:i'),\n        'slug' => 'dumb',\n        'details' => $faker->paragraph().' '.$faker->paragraph(),\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/factories/WidgetFactory.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Widget Factory\n|--------------------------------------------------------------------------\n*/\n\n$factory->define(\\Grafite\\Cms\\Models\\Widget::class, function (Faker\\Generator $faker) {\n    return [\n        'id' => 1,\n        'name' => 'test',\n        'slug' => 'tester',\n        'content' => implode(' ', $faker->paragraphs(3)),\n        'updated_at' => $faker->datetime(),\n        'created_at' => $faker->datetime(),\n    ];\n});\n"
  },
  {
    "path": "tests/fixtures/test-file.txt",
    "content": "what"
  },
  {
    "path": "webpack.mix.js",
    "content": "const { mix } = require('laravel-mix');\n\n/*\n |--------------------------------------------------------------------------\n | Mix Asset Management\n |--------------------------------------------------------------------------\n |\n | Mix provides a clean, fluent API for defining some Webpack build steps\n | for your Laravel application. By default, we are compiling the Sass\n | file for the application as well as bundling up all the JS files.\n |\n */\n\nmix.config.publicPath = 'src/Assets/dist/';\n\nmix.sass('src/Assets/src/sass/cms.scss', 'css');\n\nmix.scripts([\n    'src/Assets/src/js/vendor/typeahead.bundle.js',\n    'src/Assets/src/js/vendor/bootstrap-tagsinput.min.js',\n    'src/Assets/src/js/vendor/sortable.min.js',\n    'src/Assets/src/vendor/dropzone/dropzone.js',\n    'src/Assets/src/vendor/datepicker/moment.js',\n    'src/Assets/src/vendor/datepicker/moment-timezone.js',\n    'src/Assets/src/vendor/datepicker/bootstrap-datetimepicker.min.js',\n    'src/Assets/src/vendor/redactor/redactor.js',\n    'src/Assets/src/vendor/redactor/_plugins/fileselector/fileselector.js',\n    'src/Assets/src/vendor/redactor/_plugins/fontcolor/fontcolor.js',\n    'src/Assets/src/vendor/redactor/_plugins/alignment/alignment.js',\n    'src/Assets/src/vendor/redactor/_plugins/imageselector/imageselector.js',\n    'src/Assets/src/vendor/redactor/_plugins/stockimagemanager/stockimagemanager.js',\n    'src/Assets/src/vendor/redactor/_plugins/specialchars/specialchars.js',\n    'src/Assets/src/vendor/redactor/_plugins/table/table.js',\n    'src/Assets/src/vendor/redactor/_plugins/video/video.js',\n    'src/Assets/src/vendor/redactor/_plugins/inserticon/inserticon.js',\n], 'src/Assets/dist/js/vendor.js');\n\nmix.scripts([\n    'src/Assets/src/js/cms.js',\n    'src/Assets/src/js/forms.js',\n    'src/Assets/src/js/dashboard.js',\n    'src/Assets/src/js/modules.js',\n    'src/Assets/src/js/dropzone-custom.js',\n], 'src/Assets/dist/js/cms.js');\n\nmix.styles([\n    'src/Assets/src/vendor/dropzone/basic.css',\n    'src/Assets/src/vendor/dropzone/dropzone.css',\n    'src/Assets/src/vendor/datepicker/bootstrap-datetimepicker.css',\n    'src/Assets/src/vendor/raw.min.css',\n    'src/Assets/src/vendor/redactor/redactor.css'\n], 'src/Assets/dist/css/vendor.css');\n"
  }
]