From 84b1a7eb9cde5fbcb31e2e998057c4616ae945d5 Mon Sep 17 00:00:00 2001 From: AjmalCybro Date: Fri, 28 Oct 2022 09:38:50 +0530 Subject: [PATCH] Oct 28 [ADD] Initial Commit 'activity_dashboard_mngmnt' --- activity_dashboard_mngmnt/README.rst | 17 + activity_dashboard_mngmnt/__init__.py | 24 + activity_dashboard_mngmnt/__manifest__.py | 57 + .../doc/RELEASE_NOTES.md | 6 + activity_dashboard_mngmnt/models/__init__.py | 25 + .../models/activity_type.py | 40 + .../models/mail_activity.py | 179 + .../security/ir.model.access.csv | 2 + .../static/description/assets/icons/check.png | Bin 0 -> 3676 bytes .../description/assets/icons/chevron.png | Bin 0 -> 310 bytes .../static/description/assets/icons/cogs.png | Bin 0 -> 1377 bytes .../description/assets/icons/consultation.png | Bin 0 -> 1458 bytes .../description/assets/icons/ecom-black.png | Bin 0 -> 576 bytes .../assets/icons/education-black.png | Bin 0 -> 733 bytes .../description/assets/icons/hotel-black.png | Bin 0 -> 911 bytes .../description/assets/icons/license.png | Bin 0 -> 1095 bytes .../description/assets/icons/lifebuoy.png | Bin 0 -> 1199 bytes .../static/description/assets/icons/logo.png | Bin 0 -> 3452 bytes .../assets/icons/manufacturing-black.png | Bin 0 -> 673 bytes .../description/assets/icons/pos-black.png | Bin 0 -> 878 bytes .../description/assets/icons/puzzle.png | Bin 0 -> 653 bytes .../assets/icons/restaurant-black.png | Bin 0 -> 905 bytes .../assets/icons/service-black.png | Bin 0 -> 839 bytes .../assets/icons/trading-black.png | Bin 0 -> 427 bytes .../description/assets/icons/training.png | Bin 0 -> 627 bytes .../description/assets/icons/update.png | Bin 0 -> 1225 bytes .../static/description/assets/icons/user.png | Bin 0 -> 988 bytes .../description/assets/icons/wrench.png | Bin 0 -> 1205 bytes .../assets/modules/budget_image.png | Bin 0 -> 60509 bytes .../assets/modules/credit_image.png | Bin 0 -> 61983 bytes .../assets/modules/employee_image.png | Bin 0 -> 61162 bytes .../assets/modules/export_image.png | Bin 0 -> 61770 bytes .../assets/modules/gantt_image.png | Bin 0 -> 57860 bytes .../assets/modules/quotation_image.png | Bin 0 -> 59629 bytes .../description/assets/screenshots/hero.gif | Bin 0 -> 153347 bytes .../assets/screenshots/screenshot-1.png | Bin 0 -> 75672 bytes .../assets/screenshots/screenshot-10.png | Bin 0 -> 85512 bytes .../assets/screenshots/screenshot-2.png | Bin 0 -> 116487 bytes .../assets/screenshots/screenshot-3.png | Bin 0 -> 105877 bytes .../assets/screenshots/screenshot-4.png | Bin 0 -> 124434 bytes .../assets/screenshots/screenshot-5.png | Bin 0 -> 111342 bytes .../assets/screenshots/screenshot-6.png | Bin 0 -> 47041 bytes .../assets/screenshots/screenshot-7.png | Bin 0 -> 53738 bytes .../assets/screenshots/screenshot-8.png | Bin 0 -> 33380 bytes .../assets/screenshots/screenshot-9.png | Bin 0 -> 83099 bytes .../assets/screenshots/screenshot1.png | Bin 0 -> 86820 bytes .../static/description/banner.png | Bin 0 -> 59211 bytes .../static/description/icon.png | Bin 0 -> 16049 bytes .../static/description/index.html | 653 + .../static/src/css/dashboard.css | 34 + .../static/src/css/material-gauge.css | 194 + .../static/src/css/style.scss | 64 + .../static/src/js/activity_dashboard.js | 257 + .../static/src/js/lib/Chart.bundle.js | 19288 ++++++++++++++++ .../static/src/js/lib/columnHeatmap.js | 114 + .../static/src/js/lib/columnHeatmap.min.js | 1 + .../static/src/js/lib/d3.min.js | 7828 +++++++ .../static/src/js/lib/funnel.js | 5 + .../static/src/js/lib/highcharts.js | 333 + .../static/src/js/lib/material-gauge.js | 67 + .../src/xml/activity_dashboard_view.xml | 397 + .../views/activity_dashbord.xml | 38 + .../views/activity_tag.xml | 54 + .../views/my_activity.xml | 83 + 64 files changed, 29760 insertions(+) create mode 100644 activity_dashboard_mngmnt/README.rst create mode 100644 activity_dashboard_mngmnt/__init__.py create mode 100644 activity_dashboard_mngmnt/__manifest__.py create mode 100644 activity_dashboard_mngmnt/doc/RELEASE_NOTES.md create mode 100644 activity_dashboard_mngmnt/models/__init__.py create mode 100644 activity_dashboard_mngmnt/models/activity_type.py create mode 100644 activity_dashboard_mngmnt/models/mail_activity.py create mode 100644 activity_dashboard_mngmnt/security/ir.model.access.csv create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/check.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/chevron.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/cogs.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/consultation.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/ecom-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/education-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/hotel-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/license.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/lifebuoy.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/logo.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/manufacturing-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/pos-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/puzzle.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/restaurant-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/service-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/trading-black.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/training.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/update.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/user.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/icons/wrench.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/modules/budget_image.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/modules/credit_image.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/modules/employee_image.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/modules/export_image.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/modules/gantt_image.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/modules/quotation_image.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/hero.gif create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-1.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-10.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-2.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-3.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-4.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-5.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-6.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-7.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-8.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-9.png create mode 100644 activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot1.png create mode 100644 activity_dashboard_mngmnt/static/description/banner.png create mode 100644 activity_dashboard_mngmnt/static/description/icon.png create mode 100644 activity_dashboard_mngmnt/static/description/index.html create mode 100644 activity_dashboard_mngmnt/static/src/css/dashboard.css create mode 100644 activity_dashboard_mngmnt/static/src/css/material-gauge.css create mode 100644 activity_dashboard_mngmnt/static/src/css/style.scss create mode 100644 activity_dashboard_mngmnt/static/src/js/activity_dashboard.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/Chart.bundle.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.min.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/d3.min.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/funnel.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/highcharts.js create mode 100644 activity_dashboard_mngmnt/static/src/js/lib/material-gauge.js create mode 100644 activity_dashboard_mngmnt/static/src/xml/activity_dashboard_view.xml create mode 100644 activity_dashboard_mngmnt/views/activity_dashbord.xml create mode 100644 activity_dashboard_mngmnt/views/activity_tag.xml create mode 100644 activity_dashboard_mngmnt/views/my_activity.xml diff --git a/activity_dashboard_mngmnt/README.rst b/activity_dashboard_mngmnt/README.rst new file mode 100644 index 000000000..a3ed2c3d6 --- /dev/null +++ b/activity_dashboard_mngmnt/README.rst @@ -0,0 +1,17 @@ +Activity Management v15 +====================== +Activity Management + +Installation +============ + - www.odoo.com/documentation/15.0/setup/install.html + - Install our custom addon + +Configuration +============= + + No additional configurations needed + +Credits +======= + Developer: Megha v15 @ cybrosys, Contact: odoo@cybrosys.com diff --git a/activity_dashboard_mngmnt/__init__.py b/activity_dashboard_mngmnt/__init__.py new file mode 100644 index 000000000..7d16d55b6 --- /dev/null +++ b/activity_dashboard_mngmnt/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Activity Management +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Megha K () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import models diff --git a/activity_dashboard_mngmnt/__manifest__.py b/activity_dashboard_mngmnt/__manifest__.py new file mode 100644 index 000000000..3cd7174ea --- /dev/null +++ b/activity_dashboard_mngmnt/__manifest__.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Activity Management +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Megha K () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Activity Management', + 'version': '15.0.1.0.0', + 'category': 'Tools', + 'summary': 'Advance Activity Management and Dashboard View', + 'author': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'description': "Advance Activity Management and Dashboard View", + 'depends': ['base', 'mail'], + 'images': ['static/description/banner.png'], + 'data': [ + 'security/ir.model.access.csv', + 'views/my_activity.xml', + 'views/activity_tag.xml', + 'views/activity_dashbord.xml' + ], + 'assets': { + 'web.assets_backend': [ + 'activity_dashboard_mngmnt/static/src/css/dashboard.css', + 'activity_dashboard_mngmnt/static/src/css/style.scss', + 'activity_dashboard_mngmnt/static/src/css/material-gauge.css', + 'activity_dashboard_mngmnt/static/src/js/activity_dashboard.js', + ], + 'web.assets_qweb': [ + 'activity_dashboard_mngmnt/static/src/xml/activity_dashboard_view.xml', + ], + }, + 'installable': True, + 'application': False, + 'auto_install': False, + 'license': 'AGPL-3', +} diff --git a/activity_dashboard_mngmnt/doc/RELEASE_NOTES.md b/activity_dashboard_mngmnt/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8406789ef --- /dev/null +++ b/activity_dashboard_mngmnt/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 26.10.2022 +#### Version 15.0.1.0.0 +##### ADD +- Initial commit for activity_dashboard_mngmnt \ No newline at end of file diff --git a/activity_dashboard_mngmnt/models/__init__.py b/activity_dashboard_mngmnt/models/__init__.py new file mode 100644 index 000000000..93a2c2803 --- /dev/null +++ b/activity_dashboard_mngmnt/models/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Freight Management +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Megha K () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import mail_activity +from . import activity_type diff --git a/activity_dashboard_mngmnt/models/activity_type.py b/activity_dashboard_mngmnt/models/activity_type.py new file mode 100644 index 000000000..04fe2fffe --- /dev/null +++ b/activity_dashboard_mngmnt/models/activity_type.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Activity Management +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Megha K () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from random import randint +from odoo import fields, models + + +class ActivityTag(models.Model): + _name = "activity.tag" + _description = "Activity Tag" + + def _get_default_color(self): + return randint(1, 11) + + name = fields.Char('Tag Name', required=True, translate=True) + color = fields.Integer('Color', default=_get_default_color) + + _sql_constraints = [ + ('name_uniq', 'unique (name)', "Tag name already exists !"), + ] diff --git a/activity_dashboard_mngmnt/models/mail_activity.py b/activity_dashboard_mngmnt/models/mail_activity.py new file mode 100644 index 000000000..bee010c04 --- /dev/null +++ b/activity_dashboard_mngmnt/models/mail_activity.py @@ -0,0 +1,179 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Activity Management +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Megha K () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from datetime import date, datetime +from collections import defaultdict +import pytz + +from odoo import models, fields, api, _, Command +from odoo.exceptions import UserError + + +class MailActivity(models.Model): + _inherit = "mail.activity" + + state = fields.Selection([ + ('overdue', 'Overdue'), ('today', 'Today'), ('planned', 'Planned'), + ('done', 'Done'), ('cancel', 'Cancelled')], 'State', + compute='_compute_state', store=True) + active = fields.Boolean('Active', default=True) + + type = fields.Selection( + [('overdue', 'Overdue'), ('today', 'Today'), ('planned', 'Planned'), + ('done', 'Done'), ('cancel', 'Cancelled')]) + activity_type = fields.Many2many('activity.tag') + + def activity_cancel(self): + """cancel activity""" + for rec in self: + if rec.state == 'cancel': + raise UserError( + _("You Cant Cancelled this activity %s") % rec.res_name) + else: + rec.action_cancel() + + def activity_done(self): + """done activity""" + for rec in self: + if rec.state == 'done': + raise UserError( + _("You Cant Cancelled this activity %s") % rec.res_name) + else: + rec._action_done() + + def get_activity_count(self): + """get the activity count details""" + activity = self.env['mail.activity'] + all = activity.search([]) + planned = activity.search([('state', '=', 'planned')]) + overdue = activity.search([('state', '=', 'overdue')]) + today = activity.search([('state', '=', 'today')]) + done = activity.search([('state', '=', 'done'), ('active', '=', False)]) + cancel = activity.search([('state', '=', 'cancel')]) + return { + 'len_all': len(all), + 'len_overdue': len(overdue), + 'len_planned': len(planned), + 'len_today': len(today), + 'len_done': len(done), + 'len_cancel': len(cancel) + } + + def get_activity(self, id): + activity = self.env['mail.activity'].search([('id', '=', id)]) + return { + 'model': activity.res_model, + 'res_id': activity.res_id + } + + def _action_done(self, feedback=False, attachment_ids=None): + """action done function: rewrite the function""" + messages = self.env['mail.message'] + next_activities_values = [] + + attachments = self.env['ir.attachment'].search_read([ + ('res_model', '=', self._name), + ('res_id', 'in', self.ids), + ], ['id', 'res_id']) + + activity_attachments = defaultdict(list) + for attachment in attachments: + activity_id = attachment['res_id'] + activity_attachments[activity_id].append(attachment['id']) + + for activity in self: + if activity.chaining_type == 'trigger': + vals = activity.with_context( + activity_previous_deadline=activity.date_deadline)._prepare_next_activity_values() + next_activities_values.append(vals) + + # post message on activity, before deleting it + record = self.env[activity.res_model].browse(activity.res_id) + record.message_post_with_view( + 'mail.message_activity_done', + values={ + 'activity': activity, + 'feedback': feedback, + 'display_assignee': activity.user_id != self.env.user + }, + subtype_id=self.env['ir.model.data']._xmlid_to_res_id( + 'mail.mt_activities'), + mail_activity_type_id=activity.activity_type_id.id, + attachment_ids=[Command.link(attachment_id) for attachment_id in + attachment_ids] if attachment_ids else [], + ) + + activity_message = record.message_ids[0] + message_attachments = self.env['ir.attachment'].browse( + activity_attachments[activity.id]) + if message_attachments: + message_attachments.write({ + 'res_id': activity_message.id, + 'res_model': activity_message._name, + }) + activity_message.attachment_ids = message_attachments + messages |= activity_message + + next_activities = self.env['mail.activity'].create( + next_activities_values) + for rec in self: + rec.state = 'done' + rec.active = False + + return messages, next_activities + + @api.model + def _compute_state_from_date(self, date_deadline, tz=False): + """Compute the state""" + date_deadline = fields.Date.from_string(date_deadline) + today_default = date.today() + today = today_default + if tz: + today_utc = pytz.utc.localize(datetime.utcnow()) + today_tz = today_utc.astimezone(pytz.timezone(tz)) + today = date(year=today_tz.year, month=today_tz.month, + day=today_tz.day) + diff = (date_deadline - today) + for rec in self: + if rec.state == 'done': + return 'done' + elif rec.type == 'cancel': + return 'cancel' + else: + if diff.days == 0: + return 'today' + elif diff.days < 0: + return 'overdue' + else: + return 'planned' + + def action_cancel(self): + """cancel activities""" + for rec in self: + rec.state = 'cancel' + + @api.depends('state') + def _onchange_state(self): + """change state and type""" + for rec in self: + rec.type = rec.state diff --git a/activity_dashboard_mngmnt/security/ir.model.access.csv b/activity_dashboard_mngmnt/security/ir.model.access.csv new file mode 100644 index 000000000..5098712b6 --- /dev/null +++ b/activity_dashboard_mngmnt/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_activity_tag,activity.tag,model_activity_tag,base.group_user,1,1,1,1 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/check.png b/activity_dashboard_mngmnt/static/description/assets/icons/check.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e85f51d612c626d167e4def7bccdbe1d6d17bd GIT binary patch literal 3676 zcmcgvdsGuw8jpg4iY%zK;)6~HwPkUVnaO)JDiRS~W01#+Tdm%CgiJ{?ab|#k+GElB zs)m`Fq^5i_*c#09+YQPFKr}nwM5Uo-TAL;V~rhtuFtx>&0g#C#25Hk&m#sUb-WA~31MBLg4ikrG=iSUHIid9Tb1 z9z?MSXrWNHppa=`3T|)6tVasU1O?OhfLBAPab-$=Aj^bs-a^skcg`{z&c(Sok1Rnf z5yC>1Y_<@*U9)a?2rbEDiXfxl+}cG;IVE0Blf_9wp~!G!ilE2DR$`Kz#XXhg1%^X- zXt38Q$b#e)IuIe${frbc@94mx((??I^YI-(m7WmPOQnh&kOeVE5L~UXliA7*Aqh2! zygrHdutKqvq)a?GfU^Rbv!F1L2n;u3q&9~jDV>4R8gLYj5g8$Gdf5;PM8e91VHO}tH2a0L8XijPj4WT@OfXUAT zJnhf*@K9tDMU;r4{0y>T@q!c#dc9U3Y|rFt)F2wJDdXk4$u2;9M#3=B({jWE?ZT8AH% zg#Ynm7{OD-iERSQ3q%07QcjdCs6!Oo2=IDcJmb$VO_7HU?ogqWL}USZT7WtfjpanX zO$@a45~6_o7yUgq;$EyC{@)i#qZ|N_R=_bJvw}bMOMXYUaeIWvk1PbW5LY2pwz5%~)8GxdCY^PssXRx5eoz zoO^~fem~r``@rOd6TkZU8il$gE8}Oz-;cgl{mIK`Pdv;QZ%-|s z|GM{J*isd7WKnONICtpgNp#AiUeQbceyF&&T9d++kK5LH+xFP3BM=)2;)S)A$sTiU6of)b*Y#j{o#0g@7kQ@$&^?Xwd#C) z*?`OMhxblls7-52Hx9e<G~?b~~OYW?LWQyXXH zri{BfJ2omM>(N5CCh8@jy!2dILd_cwrrn5}-u1H`e?0w$}WEW5P9XVW2;W}-E(N#mKb@>!_?9;7EcMc z{$}01S5Kra9GY1>s2abs9zQ>M^!2#Wa|ZgdtCP$7HxD_{=b{ky&9Q_CH6!ldap(T* zf}8Jcd_*M`3GY@f|5wb3WaRUu4KwLk^ZH)Cx@g9Gqrd$0VaEMIzioWH^;l}xdpp8T z8}{xXW=4I#;LY(#$DH;dANHu-yZ<(gnNzG17ONUnb$vS3 zb*fD2Tp8xe4);ae*%)~z`kF2F+Q6#SXw|Se#$N^e?zR2i*OIq99+Iy7|H~LN!Mc6) H^s@f|!zCx= literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/chevron.png b/activity_dashboard_mngmnt/static/description/assets/icons/chevron.png new file mode 100644 index 0000000000000000000000000000000000000000..2089293d6ad94cfc015cc0a8c07bb03efd4a689e GIT binary patch literal 310 zcmV-60m=S}P)fLA$g5CzAh99{FF(tp zz^tD4))$4c^0SZV9_X~njUYum@4i`~v!i=obU%PG(6q`OMK>{HG>r}*tHKc2@w+qg z7|l>B76qkX(U2E&K_1Nf!JbCtpGzwGSJ~CkU>QcDY&q>lnbwQm<|2>>iH5vL6qJIP zp;W{K-Snrb@Z2gLMVZAQQ5jU>DXT)0mtk@hpq-Sb{2q6{0V4Z;tNXT3P5=M^07*qo IM6N<$f_?6Y+W-In literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/cogs.png b/activity_dashboard_mngmnt/static/description/assets/icons/cogs.png new file mode 100644 index 0000000000000000000000000000000000000000..95d0bad62cf22361b148e1d6cefe2ceab605955d GIT binary patch literal 1377 zcmV-n1)lneP)lH5n~Zj$eiG;8wLI!*reT1_VfljL=sA}=JrOptsX2RfC&)+l61t|6JPeb$mZ z6v1wNClWXiLSlOh+mR64U7bjvhva*zJ0HRRaDbgl@(q$*^PYf*$fE&7)c&&!Rfm?&yLyFbQ?2&R6W6v@rWu!;bZU9|_! z4Je^Q5$r!vH2{)*ok-wK1%Wz7TG;LgvHhtN39JtxLC&_yAzs|bhFaWtFLrukMR}l_ zP~>z0rF26#(W+H@aXx?6lf(f454Uv()R+QrlZafX3t}g5wp6-Blj;u$XaE#h->+xC z005Fp0GtMpYoBiuo)VG0UP0_GltOix%1(%-bKgbA0o1pB3&6VoRs+}%fFWUi1MmQV zmjH~{WZwYT7ng4njIz1iD4PuYIM&NvU6NVO4kNuj`IZ(nzL#XTM^~@uFGT>-aT6dh zAgaP68%9MDu}+cu7uohT0RHqW9d8lhD-kJqd^i9;Rw)OT!X*D$Y?MvID9;=%I@23T z$~m4}V3f^0BG}d<_%@?#emG&81LI_NvTQ!T$gzGzil=|K?VCM%e*mZ`d`!0R--N(> zX_T!|fX{f;z6ZDfz>JL{bFu7UqLI0BExN7c!HmOYg;$V?QB4==-_|4!R<1p=W!b zXM0?cbrc+q5buUe#ZpdV?VzCxk-Rm+);3(wb8q`(#{e8FI_3z8RwJLQk>}&nRHK0| zNhvzkFo4$qbT=sr4i@y>Bdr`7j(HfwmH^uc7xH9%r%nnDB_ty3>&opGxGMoP9kf;< zd%_$N;{SC3V62>WZcCaxpx6frT|FlOj5R5zGbh3vrqY>j1H`{Bkt_d-PcIzGcOeS& z0OimpMB04AZ5M$FkksHx)9_uX*rDTKrDER^Aij2r>}i8vD4G(OFwKFYV|^yVP5w23 z`asH~GaMjZ={ojt!?Lb#lcy352^1ZBLpqIV|5 zLfz5N09ce%03XI(J-h5`5#>QuTr`wWt<}xj9|=Odm?U{1pyiQF6&>pYfaOUB0`PfX zSMHvKeKvO?5vfw7-bq{v4vAnDh^?3%L|Q@w6Pmd9iD(;0IfB{ww?bB5NS1mno@&9c zXC4%!P8Bklxq~Ew%%g071mXR`&iMY{dhWR!JtLt}njRD_-Cxi%N0X&qj~Nq_rI}Yn za8e0TJ(H#J00000NkvXXu0mjfE=YKA literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/consultation.png b/activity_dashboard_mngmnt/static/description/assets/icons/consultation.png new file mode 100644 index 0000000000000000000000000000000000000000..8319d4baa09d6afac9362dff318f63a0f96f555e GIT binary patch literal 1458 zcmV;j1x@;iP)fo-7eN@Nx;}%h)9e^5-C?E zsEH&b3Z#%2B-}L7v^LRRD&QZ8A<7MshM0yxF7rU)x4)gW;*vW;3 z#hX3&)M|C@Hzy`0dbVF71Cp#6E*?;(1E5ZgN|t#IpsRseZTS;fmL2OZ%G1F2%+iN5 z?1unK-3Ni+4&6W$B|ic7=Z$mSG;E8PyRX^_00(R zZhUjoBfjtdy_aS#1FePDP8??a5dOFCh z*MWRv)G@zc9y@oAQ6L5)gF{}MFZh1tt%7=2kn>q6`mgJDye)VpNyeX>nXy(;k)8%5c~P{u8)+YKOVK2Ka7pM_X}a`O zk#~c24MYp^y)u3b+*+!2>R#%t}=?wy_< zpYKn-%7CQNC`x``VuKC^f_Kx@zC4JDHDk0HCO^O4#RC{@^;{j6<{9 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/ecom-black.png b/activity_dashboard_mngmnt/static/description/assets/icons/ecom-black.png new file mode 100644 index 0000000000000000000000000000000000000000..a9385ff13f696e96d517a56ce2b2ff7d282c748a GIT binary patch literal 576 zcmV-G0>Ax5}Z)a!cc0ra5uqqg5lnhXD zTbP_`oKdQ!!sJxrjN&KdC#M>hn6H53Z@_@W06J)|I<5r7bODP7TpFfK@D$$y9ro1J z_#n7|3NU9+Eg3t67i6kk1G7mAm}&y~>LPq;59$DNz9rz_PKFAe2JQYcbvs+lNHw^F+;#7cCP*z(AJ2&$C0H1W+ddn*~CoC?@7snGmV!9 z<==r}6|tyA>`?)>6k{b=2d<=(_5rWxzxsKgUs~Q{+du)!y5s>SG|Pu>T2kaR7OcV&-NYURtom{p?~^a9V+ z7O-a3C?=EC%HIJ!R*hUb72^tZzf-`AuuDDSkJJnF?!xs=oN3JbnbTGPz&Os^S>dl1 z(84w;APbb-b_k@KC|~4YkNmz@^KPH*e34{*2J>2yF9_24A}NIoShST-^{Ye_(vLmm zd~pgm3F$kIkw;g)NYXe9tbV#5fWaonr$h>8ffe1h+u&f*`C7F2cl-b`l5Ye!`u+O= O0000##3Xw+{I#MbTYoZ-I?3FUBiCh!QRfyd*8S0 zzBhAFP*6~?-lzdrfLY+Hwprk^9?LDGz;$2=SdFk>z#U*LBaI?QQKD9e7VcUbxCb21 zK<^(;Xc0+8N7+;0G_au`qDwm1ixh;r_7XS;lzSn3Ks%r7fpFK}0T+SIX$T+G&OY=( zxNCJ_5*Q8nGpO{QD=gKm=?w>jvsI4EeCbfxmVgL)==l)8DLS{4AE!e?Z8#kPQdt|>qP=~ z0Jlc(3Gg?f*M1lL)`j_1YkWB%UdQh2b66h*ZnCzsy7n_B0ckvzW`}^r+Q1XwyiR6N z+Zb>`kF^u{kzSF3ZWCxE2%MHJ3h_5t<4fjdNthVL50AOsk~o%60t*2`LXkdVyV0$h z3!el&2Fvm1lW@sw^on`m-Vx`wwB6`P4R}rO zE6^)ow-A5YnfJ&y0Ye!WLUqzpz$M^$fY4`p?Mdxxh|Yg2?gAd7ipc|DXJ`UZ90Kkq z5IzMQOgng*oJH-CT;UDiOoqC=IL6w|-va-Bgt_N1s&c*2*98Ry1?!OCgV~htO4sqyP_dDm_d+wti*Wu|Jegr#e_!#{@68vYp!)bLlu6Zk`LG>4b) zEtVJfV|c&7EyFk1UEqgt9*;Njw1VZ>g|{(-Ih??2*p8dxr0-%j^2hNC#&IhqaU^nc z@$+Ql#-r}>$jwGuyQA&xajp}QpNYQgQvRX3un9j@9GJrg7>xWw!mm^1U#(2=6#lMo z|KQokEyJGV*$a3$^4H^V!vBQLO`Y#xXJTY1;rCX!>CE#}6@DtiPgnT82{)9?y|d)x z(wYD^;79DoMQqIQU*HgKi6iBw;@FUI9sNVmM#^uDbMB8mr2J(psR`f_e2lfYQ^?Pc zD*O(-j!VKyGmVpx8^nFlK|*>Q!@2nVHmt#iLfSnlYCO2 zdFMZq-%%fsUm+%4DcBAM@nlB#OJUtlu?=@5vKyk0-(~c{nEb2TSI|FD&|jC)U02XO zP_VtPpg&ess@n%zfz}7m^l)@9-pa_g6!iB9hqNkI7IY^HwJpfkw1vjiEIS#Wpt0?`HcKIp}DC=(*S1hNk)FAp#M3(Ph`2hp<^Rwd!~tF ztxuuW2aq1-#_&}}?@!(9I-!5fU3;7r`rs;-;>L{bUqXMKVkK5&4iq?1871GE)(+iE(2hg+zdgWT>s_5?n3yszX(6k07r<#7z+xi};Iw>y+AElqG*-EPDTmCjr_EtL l9oc+vR{1Wfk3Rkj{so);rk=IPI$i((002ovPDHLkV1j5u&D{V1 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/license.png b/activity_dashboard_mngmnt/static/description/assets/icons/license.png new file mode 100644 index 0000000000000000000000000000000000000000..a5869797ecaa7583c552c3bb7c9bce5910df78e0 GIT binary patch literal 1095 zcmV-N1i1T&P)?DLX z+1Y*BO%2WWvTu05Ki}`p`@J{sJ=nx1)&%L)P@|a%i#deKSU(9Ndee~mRtn|o9hqkt zsH)g_?j-1Oz*{rH&X9nd_6n5~S%#SclCXXhkhBHYOR<={+%T9HHm_+Rj=iH!?az_sX`LfziH+4|52SPxCd(lFQ#& zy}6O4ybXVUJ6qGPGqH9kZO+TqO1)ZNXdyA~iK zjU@8F177OZcQq)~$=N9vU#B7D6{_#K`1J!DzKA!x0H-08MD^1m@!Cu1^1Ay68A9JiW%_ zS;VTfBGKSzreWdMUn09>mmHnKrHDNn2a^cnnZ|MXDzMjuSf_9uLfT_HXSmEliE3?k zXG5qm?Zm1JIMsm2cnJK_V=hkE@UzgSfJcoDFQBI%WSu~xnTe+6cI1o%43w{m$eK<( z*6j^w>_69x>X$9vq!B%D)n2i2Fx3eCH`fw(T?A+}`>a(i3QK#4M*6$U2tPE#;4RnK z>mxwS8DJZNZzlfX70^76^jmNLyX*lJ7YEWlH{ zcu!SGBHwAI5D}|zA|-av#xj{i{y7^5SAdUFv(H6FZ!P*Haqu>f2gqsj_qOq~2-w*F zS(Vp;I|v^e^)8@E=esPmmg4ZVjs4>wpR8c|FGJSOYN$8)|IM@rI3xAI#QT>#L{?m_|*Crlo{0DLwqmu7G?&JUf N002ovPDHLkV1nf|8?OKW literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/lifebuoy.png b/activity_dashboard_mngmnt/static/description/assets/icons/lifebuoy.png new file mode 100644 index 0000000000000000000000000000000000000000..658d56cccfbc0e46060ad4850b9fc60c656baf18 GIT binary patch literal 1199 zcmV;g1W@~lP)K~!jg?OD%n8$}d;Z#;H3_Ux`{Y$>IOhC`GK2Z&mUBGl%91P8y|S)kfJ7y@Fv(h8fJTCuS1y-dl~V3Bn@u?h-V-e;5wUK!dy#X#2mo{Oe@Ws202*N! zUYebq1*Oz(7=|0J>pn(AT~tHi06fpT5Cp+8=UfzYF~>QdlTyCudEUcDqp?-Q3ClZy zh`8_jS1ilAN<>A)|0jSkVOiEy-}kQ++2pw<5YcQ91S^cOdS0R|Fvb>wAgB}3_lVdx zo@Z(pi+`PnCN6%2qaJh2n$9r_fQWby1S^wxWem84@B1sJuai*#Qp(HIeDX(8DwXO| z%F8CUnE~{Az4MH*g_Fz52gcZf=Xn=0?a~H`hylQ*oZNq<_}k0ls8Xpc6H#iiO$}f$ z7+lQz-Xr3jB4gvg7!%!YH+A(>1Bjw%(UgpcwAQ*+tJSUpz&ZeoCZ;U_SQA3r;GDOJ z$T;)HSw0bo%R@wVuh)CagoKDRBK{zR*fFtJO3f3|HAFNzMEd>yw@I~AqJ#bY{dp7T z002bv$W%N4fDmGbh<-J-uT(0DT8^y%5pku|M*#3XBv+M(*h9qcYPH&RL>!t5ih0Vt zUhhjHdIJES%P?;Pz-K~;bwmtD2ac^kEdHi}cmRNNMD(sw>ZYmi5uOi;=pD!w4*<{v zfK{c`>d}E?De;q!JM+w*2G6)Xkk{#{&dFU)|KBh!fb9Z)o)nlf5uR}Y zd|trusm)0`Mppsg1Ndk6r(q8O?g$}n6g)=1h>y{88Rl&O_*4k-$x*rHnJTQfhuU9KK{~ ze{gV+s3kFgxc1mJAwWb%MAv-ZUm~J%N@uP-7z~#3)Ik8So7O{0t+hLy&I_FLR}6^` z@phbH$Kh*4{3egHFbsdG*XzG0ji){Z*L5FjtyLbvcvB|f%{;ykQM#_XnP!t303zyA zsq`QZDWumnCUwuh==b}N5RuYsGT*~mt@c!Fo%$4}0j>3>Nw>~uBiXinKZ>Hx$z_=# zilR=d)w*wDYuue4X>6r_BNNeAsf38{WsIw8wR+FAJ7-+XA!5H;t=^mFN<>lA$s-;h zXEln5eaCU`PGe7Ktv4OVxtm8kK!NspT#NkddEOtDN@bZbcA|D8B1!;w=r~T1>a_U% zK%>#vBBJeXx4STU!I1-p7aW^eM`ao&dc|bh_WW=-{0Wl3r~lMizvej3Q$);_Ad@h$ zFS2H{DJ{#|0D#*mX186}-I$d4sUW^)U5g92(PHl7XX2Xm3}<-8@HhS0PsfeRnq&X~ N002ovPDHLkV1i;vH)8+* literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/logo.png b/activity_dashboard_mngmnt/static/description/assets/icons/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..478462d3e73d73cc9bae9fea8e7f8fac84fab049 GIT binary patch literal 3452 zcmV-?4TJKDP)Px#PEbr#MIs&_+uGWlo1Co^85R-~_VxAb=;{Ce|FR(_ z1OfvvEiGJHTFS}EY-(z&tE;-XxsHsCJUKc_M@Xp&4t;xj#adq9qNMD=!Jz;F(0O|# z0#`!-01V7YL_t(|+U%Qcd!sB9hJgTP5CM&8+W-GYAKnE-lXUy+{bB2Fk2X;OPp%n; z0nzY#ymR11AVJo77$n$_D1Fa*M>=QEcK-jP$1)5n#rB6~d~zCl$I9(F{&nvkAO9ph zZk0E!D<&x8lR&!%ENtM{+ogYeew|k&i7`3}nEb8BW1RD&1{tHmIf-94S7J!G8q0)l zRHN1zA6qEuA3%ot?Rs>49viS+5yWG3O(t|03_>CvNUX^e{FjJM%zBl0-qk$M<78wi zZ5HWPcTOzhYV;lwBO{HKib*w%lS@3c;(;M$IgB(HDrTLo3hhDRGoI2zNH$E9$0sa4 zX~X~t9~X!CrZarEBlE=*b$VV_qRc|=vlwdojLR{pT;cTaSQ@MH*}}k5BYz&|Wf8v7 zbPNC)mL%S~*kktRglTFe?)zC`jNM;!QRPWP0U3KrFF>b>IyzX-p->PKN7%L|+enzC z|1529OcG;hDK0DZ74p#7EZ*0!UTxYv1pP#84Z@Wt_{U<>f2LZ=)?q5 zl%ho&oes98L+CH=#!~yA53k|7eR_29*K>TUZ7PDIN!qqI;KL}i*Hpe3l9A$!&wuT% zge)I_4h7J`-BkPpR2&@O?Yu1*a-A~c8&oKimX1J!V6kCE4=~Gb-973n#{2c~rSpd! zL|(wRLb$Q?J4t;J0-bp&jNB|tH+&Iwf5f&NSN@a3qR=jE>Y%|HWbYP8V#ET zbAS@el6uqDNQ)7V!U4V$^^HSh=iBjdy*$OI{6mWtX`+Cd=XQNJ3?23PXLbkf;Tz__ zmKS1k1KoB^u*uvRDd6&4@{2muL2rjQk>QNown}VV10w2ovt>L3AjS#Bg%i{}N9Hi30;SF?@-*!@@{&F^1nh6ur6MUln zf!UYjjW$MkkIyIgybP#lGSu!slhNb$+eB(B$OLMCB!i(jU?}jHc0`gxO72OmQ8CDprg) zp-H}rFGU`#!B<-E9-oYNpH3;~O@0LQ5x&Vs#+wtZ)ki9w#^I=b$Pj~v7(hc31)$b4 zVl3)gB8nk+zzK_uo~ILh9p9Je;X-{OL-2KmFUA4lJew7R1#NNF-ag_}*iI|J&24d` zg@jMJ$ebo?jqbncw1kY8O7enkv=n1!$a)VS30Cw3Uo@A+ zdKcNj7m^M3_lWt zT--F{7kytE4msM?ce#e<-Y{G@URY>6)n>X+t4vZE}Jh3 zf<%XbOJ0~!31DNs3$168LwOTkQ3_#RGhUwNryIV@HI!B+4fgnwV$2hKioSr4SK-_i z_pul_PVEFk^}=RXhuUPWMWkB!moPu9@>W)>ypSy_r%I>za?dQZG+sY);3sq5IMG^v z0$-ZWlQwWkwx${}cPDNBd||k8lXa=G6xPZL&4znd8T zLG|TY=EhJv2`d@!tyMOjw!uM9eVi_>m;rb3&9q)!%WbmuP{w(e=hZ{9h_4kL46o*B8IG0HQzrE5%pb0BN1+U>N zll3Xh6!U@goHw;tZu$4ZZiYC%B#kMkMp~D;SHn~FmEOU30gQcogDKX=QwzBOA*&3_ zYwNrw%two+u(6FeReyl4)E8##d4VkYJ6;bAc>vXZeackg15`YEQI|kvj$FmdYe$H) zXQFix+68B{a6A-5p&SY;&r*Xn8@|+qC-qU7W$tiF)o_51Jw6^EAMVHgk?7ekJ}kZ4 z!4{XV!#yt2=S%3kDy`Kt10}l^e~LPJK^(uPlUZ%hWaqbH&3zD0<;9^mCxe{8!=qck zT_tB&JHLZgw&A0*Md6dBZppiyy{fkG==-cpsc|dl*x1fd2Pp%W)VsKyEcWM?cdlUn z)$vw>vq_mun;ZPDh&q^etN6u{VjPU1J}iEnm(R;1PB(HDrtCJ`aRSA?7=_;=Os=jn zzeB;WYJjaO-AcnSa!hPlVzKOD#77A$XQBJ?fP1HRu{4$F?H>~7yM7p%mU$Wf+SZ`F z&1Dwz)CeWcI{4}~*SxwrD9t*|g2brLvd!I@Sj6|?#{%nVntznSH2mww89x8*<-w2E z&=K%oe24hhJ>XNv_{cB59ljin__X{lzBlpR)49hpeDoLJ4qr;j+rv$9f7SOMzUybk z=Q7JXe02WBcZP4XUY9Ot@qsk-*LY9x6`26HtG>cVLB+)OulkPg74pN^&jO$D^S1RgsPdmF5h#akuhRcVeSh|<7ys)wcJaAop)$SX z-`Mg~ZM?vF;DSj$@Y{{S>#V*H50mdsBJtCO)%Wl<`peod6rP05D@^MObX~`9ShnpP z{e66Lfp2P8q94Y0z1;4*wh#gIS=hWd1NW(UGJQt|e}HdL-^KUS#v9&(x$`Y=&+!OA zpHJF+V$I{j-*AlbKf*WsJU$2TdjI<3*sLyf4)rFYvyr#66=~4Kw7b8!GR=E?5+paI z)&iG$&}N5K5~82sV~P;jyRmucl55%CXj<28ow}B9;d3T@yFHZ4Vbga~1|59ss>bGW zxez7h1|Jzmn41;s$t4Mk& z(c;s-I$kd+_~3@OYHPPND|-l9?~9QGlmC(Wur)wqlq!WV3f><&8hmVaOWHL)9QLd< zTcaC%DvU!=ZC6r`DQ+6h>(2^|Ypt$dv+Ta!@g6?$P2Y!mAr8g;z(v>E=;4bm(@gb1 z-QbHaJwVk>Od#h@*%>|poroV#K+XT!xw7R7K^O|O;7CN4v7Pq+f3y&NFd^P$#+QzA zpRUT{@eo4hgyAgqy|?mewHlIr|J%ERz`pdHeJHXB4=3-uw!?)fqgPxb&)|#eeAjzZ zW08Q<`|!ExX!81TdUfeoa6}}DTq7+Y3hZOHuZf{RQR*T=d|~iO-;6TUO8RBXdu;z5 z>2aAwr+$3~v;ID$-_KVwF|yktxpylF-MpOC=z(fZo60j}3P5UvF_bSFMQNGtXA%3P z_&1`j*Yd1g1_rS&0D(RjyF`UCGmmGf7If|v@7oBzk90u4=w!*qlmv0FW8)G+=OXLS z9o=A)QdGY&g|I|jtCKY^1mjF?lKEj7m|mdPrnzS}<^o(MTp)Xl`tBnYf#X>|S@0r4 z1^vKn9@f)Oq_P=@2lx67q!j~CuD@hm7p_8u7pd(~{nazu|j{eyO@#<+LdI)!=KE&Yc(6x*mMz$NTPb e!*|2?|H>Z_>p))&1OWs90000xK~!jg?U=D^6hRope;$f(2!dRQAe>DQQeT=B*H{T+6R=CPGo?i; zwb3GCV`G=p7B(h-MB0d*S1Kujl2}+MniNSfJM7zGW^Qgb$r_ypLnbqCci)@+?wfB1 zGBPqU+Qfwk`Okp9XM78I>x?Y|Ll1WcSarsR1>c9|Nd%6=HgM!=YaZ@efV=JCJ_>M; z#tG_7>fmofHqbV*fwqwi6!_g1x2b_In2ly7f%_eJ0o+aC9sujWOnqs7*p2KnX7jli z;o6OCA9xO2jd1No_NTb+#z~0v;T`Z0zwl|`n*9F~cmiDUaJy7Xk_W&W{K7lHtvX^; z(Zj6p4`48cdl|FZyT#uaI>0^PBmPpQF;uv%TS5j@xaEcnsPI^=RU1CxAp>3Du_HWW zz$g4f4a9`I24ccp10CQ#@F~J=WS|GU0)9pwVB0W3xNXY`!W$Ww23{u$x9zmJwG4zl zNZM#Y1GyGz8>t31fw`hBIdgN;Ml!xCHr9#=MoC1iB|&YhBqA8G zu?X7OSOnBURJ8DgX)FXmEY-qi6Qc+|;sZf^#TXGy#8}J>ckeKJckY?{hP0VaJzj0X8RhK^60Y~Xz{&a9?$@^ z`*!wmV5Zy_F}!tF1}J$Bj0DI7)BwvuZXk8w60j{qaRkSJJyKzx5OU#xRG|a+LWHFb zOd6COC^gCslp0b8n(}BvP?neGfxW0~`7uN}P!H_L!mj|jfWyE~sgms!uaGmXN9#VL z&o{&wH`(XFRQ($pDUuL+1@xib4Gb0l2lVkR;3DeD8LS7k>f__UV1%mzx>4a$5ZEDf zFs9!N;)lCQb0feM2j7i5gwE^pjd8|FLg;tGbr&DyCbIB3L*hWI<61T88h);WH`i)_ z#w>i!kj#Nyz$P-ET7zx?XMsbOOtb!-1`Gk8B3ufXFR%lU=Ye?%_gs{PuhlItkT`G~ z*iYsNGy_*qE6PdWv?bF996`l@7wT=!Aca~OHVbSKIdC1d{b6GWSPEPQ9$MUMlmo*+ zzeDyaLI);$B1?p11lFKJCR&>;B)yV!00U$$m*(l#18adt5v~eYC$PgCrL2V#6Pa`s z8YOcQ*O0DT0KSqr0(GRrbsYE};VKANl_YcE0xA?5BdrDarup5doDk*PG&c?`vA8VaO=C>m4%I|X)lqm$yVLT0P+oIdY}GtOrO29vww9VSooqbBNnh zcu(I|YQ)0zb`*zp)aRe-TomMhG1NxyHQX;fPUPZ16kAXwMG|^ZYrnxPV4v0J8EW^T zsOZBl9Hv`x%N>1ggc$PASEFSIN{zAurN)2jfOsd(fgd5lQU?Y?lv>E=CtGh+0(VGG zWW%UGZ@o!Njc1h3(oB}@JmzAS!6!o=#PN)%o0h~rfH{E-AX#fBK07*qoM6N<$ Eg49ZXX8-^I literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/puzzle.png b/activity_dashboard_mngmnt/static/description/assets/icons/puzzle.png new file mode 100644 index 0000000000000000000000000000000000000000..65cf854e7ea72e36142ffc1a407bf2b8355cc85c GIT binary patch literal 653 zcmV;80&@L{P)9a`;n_Do>R91)@YfrZ;WIBYI)WE@w%y z7IC%30~nX`B(&|Bi6!}ZGuBf8IAM^ zQA&SX2=P2@*<+`kI7+k$-1A&gaYV-{Ks?g2#0TH?II!as;HNYK-X1sS_e0Z#CLzvF_5wZZ}7k)9y#mQhdC00000NkvXXu0mjfog*sX literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/restaurant-black.png b/activity_dashboard_mngmnt/static/description/assets/icons/restaurant-black.png new file mode 100644 index 0000000000000000000000000000000000000000..4a35eb939cf065c6f8cf83781a15f357348769da GIT binary patch literal 905 zcmV;419tq0P)?`PC*pLe{WG*jTWtl`Uu)I!h(oI7q&uZZ6pM-kw|Ur zMPftz3s_jOvBN@wkko<{5h@lmjYJTFNYSdk7WZDgxt))5&f8mkk}hV>Idh-qo-=c2 z<}K*Z0h|JE0{hdxYd{s)k+v@ZXMrAIo@0zw;4N@F7c(R11%8u|tpdl>{-S`voX=~= zI9qe}3E(2Iz)Gr4;kyl(s~mqF&>XN=fMdX2piMb8pcAmd@&I7Dz-K#&h$ije8Ud@c zgQt)P0N6-UPAX^wv}*@XAr$~{fXT%{gxOL;d7J^}NS&nu>IqNA5SA(ZHvoI3&Qbww zBrApmt%jI`Qb(zPr3MliEX(6AgxqFAfF%PhK$pZ(DxlHPm#x|JJ?#vOh0iFWL*gX; zvNkySP6D04&a{0VI7IUG&7=5n`XhX%X!6%0pdIMTwKt`IMHB^02%jlh^`s@_+Eq$X zUua7+@KNF<74Svq=fdYgTbhAkiIY^oW1*i5PYP{`fFHnsWN@i~VW3~=Tf~(@TO!~V ziHK=MH!#NJVMOxR&(xQ+UJ$o$y2)oaLNW;@b@MoYxa>1*DRX}LjYb1P&7s^nlmWWk=>z*h>g|NU{%5MtF5CHx% zsv|6})E_wVDBiwF?G1#>YfMYTD&SYd?mLjjCb;?_Zxs-Gkk1|~y%8;uG6am{&rq!N z-f4+g1^f)yLT_-QuCw0J!G4)Cg3XY f0eA)+t%bl}x(3Cqe?`Zc00000NkvXXu0mjfu`-q5 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/service-black.png b/activity_dashboard_mngmnt/static/description/assets/icons/service-black.png new file mode 100644 index 0000000000000000000000000000000000000000..301ab51cb1363cb8a0063c4f9f7cb9cf73c91e10 GIT binary patch literal 839 zcmV-N1GxN&P)wG}3wsU*IR)z|Z&+>zafrqJwCq*x@FjvNVI2F^z|C zN%{bO#A+2K9mjI&psYL^8b1O*HWO0*iAfK zwBzye?BGqTEZN2s-YR-iRRhR^{{@@H!rmxCX)mp)h^Mf|a7g;p*wW?ud=J0RL?CEP zkEcMj#QI2Tc@Mv*2kEq`DKw7vdi=Jb&-aer)!-Z0qjz+QFK@N1&aRXO}`izA!9+A#$97UmLtKG(#D$V@JG;R0Xua%1u4_kNMazOP^ayYznp(_+pa zmHp&*7l9|T=r9&<9@|?Ko;a_$GXn6R3= z-_eWeE8>!NN6sWQh>p|@{|B~~h0NN}OyO(k|0o{Eevvy?ir79Q%G}xZ=i2u5tSHu2 zwf(N(bFnYJT6O^a^n}=lCZF8Nx;w2}uUkB4XPd5v`7Z>im~HzdJMCK7trz|-8@38>5jc3xX@h`{ zh@iEj_%)@#V~J@-!i)2n-XCy!_SC5Qyigi**PVuC+h<}!~>FElyR+PxP0svs|A}^vKikR z#>I0>S!0;4UyI{*IK1PzbOF;IshL(A_k5A?+#7WY^+>e^YX;p z=xW)DcRQbIOIo!~v-$kABZfD^J?Ag~CjG!0N_ye{SWo@7I2vn7n(V-R~kb-3M9=yBBG68O-n8v2ber%t!Zu Pq0ivy>gTe~DWM4f&Ev8V literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/training.png b/activity_dashboard_mngmnt/static/description/assets/icons/training.png new file mode 100644 index 0000000000000000000000000000000000000000..884ca024d71ca9127a5393134632ee92a61b07c4 GIT binary patch literal 627 zcmV-(0*w8MP)Ji_yZ6G zgCi9sC+SZOF3B?A-3o?c9a^B`5B^xi{atdGlsx zfu5coC)9d9*W)+29w+CYx6HE5(7FIXTmz`}IuU&auvT&%3np6<$3JExZ8|Qv1`yF6 z{uK`ZBO-bN;C9iN>oGlP1At#74phASP()5l1Dq?6>v00$qR~ktYISg_G~Q>PN9l*Pyjm+=0joaxS5K;Rj(=Ddy)iyD^P2j9tz7$MRPPN-6X6Ic< zC{O?T4(yVQo5t(DjmAqa0UQ-9Bj}SmO~ZA+0wO7a=S3S8?~`nFrw($EDaoG!IQ?TF zt|2?U(I}QLQFZXyQiDB8SX$~v-8kVA@YGU+KFk?f>fJUiwWsHQ*BQQneoi* zIdjgY7w2;~&-47A-}lQiGr#AVfgU}2^thi$w2V8gP8xe`iYA|^nQ(?HLC@=`7Uk<}) zLeWEQiU$yZ^@<(}ZFDXOrZ=@2KTECwL3TGYp{o5;VR!&Zenfb(Y~lunk>o@WhF_@a z!ghmmZ=oQx3ZUrTMV_|@z*@URl_LrpnuMspmx02LayE1`&DBGH7 zIB$fJR!y{I;6E2v5gyA7yJ&>%uIrAsk}Qk0c3q+z1eRyI&Umi#qKMSynj`laxQDEG z$>9=BWqAjWxCde)_&ZYtQ_uHfppNAb)C&iMgDG4Yayz-APl492qWnZ z+2s4qPerk;Qd zRTxgcUKCf(0QEW%Si8S$d^23v9Y;Bm$|Jh7D5kUlU|v?DQjz!5DcCSIHI;o!&C;0x zy1x?jTA~w;DMb2S$s6C7*Wr6^*LJGyqHt8;>Dg;xBk)zTu^q3#d?0F4bwS{Xys;0Y z0b}%PxF6sy{*u>yU@TD!7kg>wn=-H#OA+vz;H27KSYpwM_&kp%X2ny`^Yp0@|(y-wyRtOEu) zkZMr2S!>sIk}ylBD^a-LQPoOlqjSJ;L-U^%BWoPTxn4GDGXiV(qm1VDmv{z1L}Jvu zn`vGi$NH_RE@&E5g2~Cr0o8JExjDBIzCUyV^vhJEFcOB*@hFO_Ws){xtzG=^;Lve_ zQnzMHdm+ztcL8TpjlxKr=$THQiK!@hAyIz4N4%2V3+2+10THPgVGEG`aJ3>)#)7~e zj-qI|S!^?IMA7OXjJ}pce+C{;_v(adyt>r~yRAcuwRTCOd=IQ`K0+rHj*6O7#^_|N zR=ZNIR{yzq^QL#_j;<2XwFs{P&o>X}q=;_wJnsh7KQIfj8}c9GwohHEy0HGyN#1EU zwtz&CPhEFtR77q!cFdS4^%iP|h}3+~+kwg^h2P66zKc$%k(WHr*_9O!^)V)55l)iG=bkroSVWSt8oK?9X|oC&>t|S94mi~JQz6J@L4Q+~({Wt+ nVe#UD%iYS|qeqV(_m6)8sc^)gW+q6200000NkvXXu0mjfv*t}m literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/icons/user.png b/activity_dashboard_mngmnt/static/description/assets/icons/user.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffb23d9f036834a32954f83bcfeca00790ee443 GIT binary patch literal 988 zcmV<210(#2P)cAU zg%n1_!UO~hi=Zajq!7VI@CUR>p`!Rx*a$&o3k`~bXb@RtC1&nyR*WQ@xp&s=+|MHZ z%qBDA%sD6P7W>?P9RqF}kWv6&A-zOAepFK7 zn%moe*=$Tc@)I0INT*#4Q(tpt!c>;Iw0DH*Nr(MZj6)>|hd7}=D`NRPh zXvGuSy!q^~M868;^;_^453rHAwcCa0XTYMJUi@XTxY>o~XCPvW7k?SF)lGsQoZDZQ zP)=G_j{)g77n-L5oA={)hSIDH&Cfs)ee1>VM9F4cXnqDNc7ia=s32eb!iDI$gsOi4 zLvKEpLvw7Jbc*9=pw+k^81;$)fYoTt-RZ*gtblIt<9DK%bYb~+p`ZNt9gylSG|w)y z^f7S3E5=1EFtYA*7owK|ZMZhYc+MxrUpVY~%?xuR%hGp%`<%$)6(zO(uDSg$G#5pD z;K6<0FLeNz{gRNEPQuWq)1OJI*Gp=<<_=N;X(Gq;tOM~GAMp_MS;a)29s}JqVCIjM z)b8=k8|EJXBpK4+2QuS_5P5?c0HB~e#B8sn^Ebj8h&ak%8{2szdo@hTfKXDKM!FmH zW1nf?P!ziqZws=70=&$bXf^g?93W~xqS9P$i-O)xkbdQkw>_W_=3j zHL&MZ+4h#Vli`J@6>FxCSeAZmS!$N0X3g}h<>^5?bLOg^ymRRmYovK~+eD>9insPXvj3+6Gb@v&hmf9xq1t2!EP|dQ8Gk{Nb(_%F zfZ2)l~DhpZ1%x!dRjm zO=;u!cb$X1D_}gv>Jbl6rqq7)(!s6*&8$S;I1dcnm#;8RsZyKh9Ozzw#ra8ApLl@n zmu`~X4VYcGB63`?zPU_W_r4w%$5|}xSP?5ge^6@en%S9MO4}qmpBLGc z+0FjUY-Um~^1{NNbKdiv_nq_2d}juhaAqNAYGGAPQ!by+?CdIx=|Q!EF@IoLzlew* zHqN3N&|>jiL`D#~5!H3TiYBy2#kO~cjhT*5UTf&o)WxJyJAvB(gK7(+j!7;TT0A7Y z1FE_V&)W$+3}iZx$0V2A6?Kio3}~@vBQg$L-C2d~l5BRYn{^UNAuSXJ5cvdH*O{zi zV%uGb2Qb}EY>Q0hdBTeCB5i_*J%!Y9hB4-|&cua_ha`5unC%@oF^Pv{Qs|lv<4<)f zUXLH|SJ!zQN!xgltnuI zA*#cGrK&x(v3Ly_Q|`zSxko)OA2y^qPL@<^KO#f_bvjN$1}w`3PIqAS3hH^A zP<=n*vz)54C3ehdJM0g+#tCDPU9e*A9n+;vw!rRxEBni5 z)-Ry*UUp(jA$8sBfPFx3TrnGPh-`L9MCxAWV%Y)pyc>XbNlyG}DwX>i#X}4RsyFRk zVEIC0wZTI&IM}qlEXaTsi?^UUPIBUXU{q}T#a4t=w~?!r^mSlaglPrljv8T7?RP}( z65D>Q9jU9ESY3A%*b`~K>IAlZtB6c%p|F}v<_biHP`wm58|VX$0ly;h9+vfvh)j11 z8_9sG3ZAzI7>zOy_>^pRvxuCEIIkl@7qaR%o>zf8Bd&3X>FJx35Dy`DKpiKGG2_6- zi1EL|_pg8qr_|L-ofg+klMsFq4s0+U^c|Cvl? zW76WGjRAGt5q$puurgxIe=ugV^!5FI`VHxE7Je0$oQCSazOkXL=HEJ@iy7)<8ccM zi$(+ef&T;QIOo)jsy2Ql_>yw@-e%|Y#X_Tj-|AYa)EhMu>Nvyr{xgBmKbe`?Dr?r9 zOju)E)IDj`^R}b-mDwQojt1IgQcl=+(LyKais%c845mdJTs}XVW{eu|uie$6SB5Pd25|YHf6OMZB Tt+q0v00000NkvXXu0mjf(ZE2? literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/modules/budget_image.png b/activity_dashboard_mngmnt/static/description/assets/modules/budget_image.png new file mode 100644 index 0000000000000000000000000000000000000000..b50130c7dc4b15ac99f6898ffa8d11f17308cd4c GIT binary patch literal 60509 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�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 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/modules/credit_image.png b/activity_dashboard_mngmnt/static/description/assets/modules/credit_image.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad04ecfdd5cf932346e55502d21a38422b97d93 GIT binary patch literal 61983 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 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/modules/gantt_image.png b/activity_dashboard_mngmnt/static/description/assets/modules/gantt_image.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae7cfe3b43751d4332e7a88714ecd0f3a8f7ab0 GIT binary patch literal 57860 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 LqIiXvQNaHL1h*$5 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/hero.gif b/activity_dashboard_mngmnt/static/description/assets/screenshots/hero.gif new file mode 100644 index 0000000000000000000000000000000000000000..736c6701691770f44169c1a799ebc782176bb7d1 GIT binary patch literal 153347 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

X{`YA^u+>S_R6 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 b6klB4vXh^zZ>0Q_8KI@FuZDc~@~{5^L}a;x literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-2.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6fafd6c1d148adf5ab62760e6777c25d7c431f GIT binary patch literal 116487 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


Cix>x0W|3ufKHSBv9(fnXQ)VJkuDDD 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ªo@h;x{Gz!ycop2*YFQ>guuwyslLM7@oy>9Ux8f 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 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-3.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-3.png new file mode 100644 index 0000000000000000000000000000000000000000..ba44266aaf15cded9f1d688cfab912e72a4cb4c0 GIT binary patch literal 105877 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

-cV@_6!G&^Fh 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 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-4.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-4.png new file mode 100644 index 0000000000000000000000000000000000000000..7126dde6ccc12c9d522364e8975eba17bc5214d6 GIT binary patch literal 124434 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 U$Z0I`$5Fnll#*nzgz=aE1x%DD7ytkO literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-5.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-5.png new file mode 100644 index 0000000000000000000000000000000000000000..c81b06a37613b8b5a77d945882b3f0fccc767a54 GIT binary patch literal 111342 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

HBYm653dz?MsM^asSwp>p(NVyBv2 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 N;pyt|_r={o=b literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-6.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-6.png new file mode 100644 index 0000000000000000000000000000000000000000..bdaab2cff5eb674bce985f7dec855c625e040e2f GIT binary patch literal 47041 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%0D$-AXzh|CRW%u{rWhjXEB1O~TC=x= z*0iffIrDl94`N9q!>3TGmr7k57hZ?I8^ln(H{HPLLhVMfLUTA9s6;^Il`p;nzWtq`SZPH^$ zh)W(f6zJbT&`s4#>YWYESI%O;kp9FP=hDCQ(%iCVKB(C2d3`h2-vXO63~07dHtnvc zi=8F?)Og-wYyWvQv$7>~mN1TiOCv6k{U=@QXtz{kC^^M9&(a*M>}P zN3n}zgVA&CdReZR^(M5`z;5^X%h;oxT4mkucp$-&J*+Rbk3RewA;BeNJAgVJE4urBzJNkYrLz&3Z^qm^x zV;**Iu+;gM{UqTcBWR_71#zYZZ_<&zDkfwtt?I393qx1{ zzRyo1Z5>B$&zjDDg!xolUQi*c&K{T}0XzNEA-^UAq6%V1#|Z+GZEV@Icj?? zy|okiQRh!4fi(D@YVL@H^hg7sJg}*Hd%pjyry?_#cqzAdp`p6`=QQn$;0eF{uiB>; zUlH6TbLZI_rY}eFqegdWLEb`2tOVHjC)Y$$kWP$-ER#d7t%cD$h+{>}x#&kkDsT!KAm978sqk9Zcrlq-+wFy1CGOnDa@v z@ux_yVS9++)PPXxeN<$%!qwNqFqG4qRbZV=ASISaDJom}de)b#J3M)5(faNCf779z z!U+($jLOMW3HX9#t8tQXpp}Fl0DB`3V;4UIt-Mk#V8FDoZK)meoUY-l(1re~pd|}@ zW|Nv^)Nvaode}&$T$ukF?>4iTLB_XBB{B9`!>SUCxbk&%*VNqa;uz1z)#`LdP48cb zItX;scRri8Nk1e4bVJlij5D3i%kEwS%As_AYA~t%ra<3pP2hi1v8TmLS_>eG8hk8- zm6--|B6W{k4UfB9*1|jG=v?q%PA8^R!)XlBGRZjY&E`@m?_UyZ%r9&9Yt2zowGY`m zDW6*7p3y^w#20K#^nKzI3R_vz=NIWorYwmN&(wNRF9uYIPIxhDK$KP00g!99M+^zE zV)`tjLZVTHu*Lsok|%_My-VE`so=*mr3x>6gl+*uLSkqhuCD2Cm*)!XmpVQ`mtMrn_0dP z=Q+mt^lUR*L&?cW(hR1+6j(cZ?nM++MLE6ni<$B?6dx}0!O={k_ijOhjxZ(F{{ZyJ zw7mjf;*KJ;V=Nn9)*$Hr^@}q^;b|jq4^Ev-_F~%>HbaH3tL>rC-k9yTI@uM3RJU#p zcL7#qKBD|j+RgnMKSG&kJfcP=&Vl1p`ryegUq0l20Ts~uJuG;x<}c+P0}$;Rb5!W- zwGnlpQ;)TA?BGk5#<8*fD_QR6uh7*Gasb>?WbifS*LPhjJ>spmcg3eB*hhgb47IiC zF`kkym)_v@bwhF_Ugu>$`4=o7D<7kG-hZB<7ELoB0F-IHpjBg@?OZi#H_q?oG5#I) z;A8oh*gtg$f1432&Hp^&0g3$k|5?a`ZhY1M0{#DHT6A5mvcS}Rjl;j~3f_eg!1=%T ze2qZ=_xAtynu7nor3iI;#l^*tX1}7pnGSE>zI{77I@;m;k{07v+;^Nm3v9#9tgeoO zA-1=z;=6FW{&X3!9*Zu|&GlF8JAKxn=>5aa+Nu>xr)e|(Amd|UyOFp^K)Tne)<0k_ z@q$|YLGH?Ht_n#tis65=>>oS`%Z|#e((4*H9l!UrVy7+G)Ni04U;DyQJBUfbw04@L zC9Sm7iDcZUJ9^!lKGE%Ls>oHC_ z9KM7t-9azL{SW8s2I`#hsd@I_0!P8kl?NpQT4Be{huM_VINr_o8~RTJh2u?)2}jt? z%+aRS?N5o6re{=9>(o}>71`*Nz*aTo>N*Ya`XPV!BVhv*Bt z^F71s9mP`@*Atf~{- z%S8V7X!SZY$wJsJ} zw5zODwsx$GHnh1X?vEHHNG&Zzu4f@yy$zA0@N|UmQ91bDIhINX=*WM__XHb@HyPJX z!c4#7gCr2>a}#l}=`+zh9T}tA)0a)s3J?21&dmZIx`|x8u2ntH%D%i6RkC23zuJ_) zq|Ea<4keENQW4-cez$PiI&V$@TDkycjH#C&pGNwhs>!s?!Ey^_&Yt~&d)s8FG0DtdT4Zdy<-MMJ?Jl0Mi><@mtSW(UdDUO zHFfs-tTPN7dR(4hu8yhbcDz^BX|M7>V2|jJog1=S*H<<5M zW;sOG4v{ONhMW1MfYlry#8}X@Ps4d%0HLhV&Z?Y=@4Bli47)75bX~~2s?ESdiZA-kx^1$%UORw^F(lI@CbL0iyVkliTP;(fCCUl{EDwxp(v9jQnB6rt5v zcyqeyZrFSocV$@%v%$;z=U5(LbkjN_5gfYni$wrIaW-`mTStebyDka2eh|vP)iB9r zRNg^93C~URMOfoBy!?7dUnkETN-|W{HSQzYwO8YI1O)0GM5GEIU(Lg*z!fUe1Z}r$*L$bk5ghZD+5^Y!T`%?@4U)>2B$LosK6X8*apb48oe& z>Nk8z%gjVF0d<=jx@PvdHrSWP!S|YKaRgQG51Yz}%YV|ZqBT;6ON%%>u#FVVH>@+?|Q@VUn<~|E6vpOk#Ic1^cppYQ?3GS`% ze8Qgi72<|G(n4IA=iB?T_(R7g2L!?N*M5;&l&gm62^;Pr{y@#a_1UQgI>1jju6N$0 zi2LR+9cfrr=yRUDyk9^Hw%yu3XF$6rrjO+?d)wb$q^#qMfHdJ{oHOVmMC3S9|3{K90 zU~D=m*nM2)!AEMmK*Dk$1&naGMgIsQWNg+|0OK1p7F_H;-(32b7|NKg(Oa0p?H`~1 zyUy8^o>3`Xh^^E2DpR?Tf)QRth1fsGZOP{?RH80Rt5nS8OxnTDVG{Q6MRjkP9LJJx zJvO+)xD=($V;o7!v%0xJ7K`OJ1PT?1L#{^+TOn<%3?+vhJqZg}6S=|;N9G4FvJ z#mmQ=L_=RNd4}1F&8xniV!xbk(OxXjzq*|DgGv0R6#jK~M1%WW=k|=Y&=J|==r~4Q zXY2v_R&28fv$cIh)a(OlfX;*=PS?f#?k0n%;SI(%8PwBWK8vtacy+R~$5~?S` z<=lY7;p^`5B2dYqv`DVFj7(AV$-RJd5UBxCi_?a__(#9Ho#8_9IHa@`*xf`-8=QIH zuErsLVg*+6!u{cK%JTbmXKP;TX2jI%s?SQ}YaqxRVH&f;wc`_4xQdbiZ-?RbOjG&9 zP#`N}UdBoO7}hT3;C<}P`4;NGBd8DVBFLWcWZCctO3C05*$ z$-t%adbUw|Kdj!BfhS|9_w*k{txO5TPP@%L0kn^4YA-E}ARp-dgPu&eMA!Mdg`|S} zOjrmiUl$HJJG`N)L+%LFY^OXrro5SgA6!KA>yW%{b42~aQ^`DTua1w`dvKe-8k4}^ z94xVkgxH9nQ#7fQQ^aVOIW1jr3P}c3uJ>M_quU6Fr*N~{Uq{o&WWMw<>`T%}9ym9U zGWyj?dVGyTZes!x=kZ_p44T982ixX+hxU$xYRrc&qBS#r1otP_+Bqxz`0!sHD~ZM> z!SB{irJv_gQN70A=eRfrQ(5euIdkp%u2Tn@QbDd8ND2@qBh_^$E4cON`>1MIv~s@oGFkT#{8_@vMm&ot^i z=6~MxBK++4%fIM z-AM{F;LWpg*3ch+ti-_S;~#~YcUVKF6YlP3$;CBC^wjWwa{*ZJM)C1FI6wJ`gYx8v z??*oflv;TLta4&AAqjl^j#Tiz=l9Xgn1N(Z%d=5JQLP^9KZDvP(RwVL!he*9Im@W_2wOxw5901w6=X#S}N`kJRAv1h0P@_ zEup2iTpl0pQq^*cns%pNmVT!=Nu5wBJM=o2JY15ov{lAk89TV$2rqp;eQ`RMx4(DT z;4Kvo_qUhbVREc{ZF{0j9h|$Cd2gNX5u==sR_;cYe1l{)D4$V?^XTpjs6Ni3eLwz@ zQ2ntwD+WHH{Jx32-Erk~o{A|B(M#`#d@oeWScu*{jLO5vcn@YCOIWHI9K1v~YOiKx zHJG^cJ(2O~ueY>>c{QD`57x7QMYn!6>uN5XJX{y45=5TV;M95vvXQwXA2!}vN9tb) zBKzw5(*5r--^vl!aG!adciC-sz1({fS)x%mjsTrmU8fR^b{2giPMHGVUNk(SsrQ_b zP!fapef1YUxDGP#DZg8U9VSYwz!~pcJ^gIRsRdg)%5j@SEGE27m;7%g(Ul5L4&4(j z)1ziI(dCCpug`v$`rn3$HBTbYWPDD+6g)1ygx>Mms^RdmW47|tR)Pmc$?uC18}&ig z{_1OqQZ7q-zHlnt-b=9oyC++}Zld^g?m zz%+8fPxgk7W9j&)(HycCosa;YPrXYM@JDGzoQ|=SUhLf|0Lq7yoZexWH^uWeLvl^Y z*r-oV+ExprX}**R-_5EBO;gqw&MUW4)L$e|3$lr&F`>HXdD$v$s`tb2@qK6IiVY3F zVbR1fF)=Mn<(A(cVI5Ulm||Lkk-kkOPm`8TTwpOd%rCdCn}=m%W8;6d_vKMdX4{_B zvn?zsgepW!5hw};WmJ?&hLkvaX0Fg03fQW(! zVKNMX0Ex^)2w}(oBqT53z4vv$UU%K@`+9Z1e#`t7vN&g-v(Mi9{LbFL?|e~&SzUVQ zIt5_Hb%ox~uHzTW`sgC8*l!b6; zn}iV7<8inkUfQftzNZP#srS5wxc4btzUSV0*F@q48ygMf+;>N6jzF@+f@8 z=sPj^!ACw#Yb=C$qA;BFjM9b-MSwPHlh+^%kmlyD;#RZj^VWte^kdUQgeq9$0!=-V z-n4$totPWk)Tnuimuiiw-dHQ*>AjIQt5#@}H|Ea>qn&%b2#Y%Dp+F!tMhf6?{rd9n zwD>Z@5~Z_K(^y~55X4#@XU0iCl4&hO2M4=QYFw_mq#^ZyxMnT;S%NNP0H<1!z`q5R zJb_ZX92dT33xljjcCygiMW-`MGi?X-8BJUz2AFZZDSUi36?ka5HPOCETAkKl&hzID zlsTJLM~?G9?=qLl_Tc6{h7`FU%Z#$!{E~6$+Mmqc`E?UYb+OBdI?yIB`$xFfQZNzt zo!I&hMR82FfY;@zXXKaYrF(Ws;8Qk=?XWK0eL0HV@`F!z<8l|Gigxmb0E619ruDbB zTh?Ro{=HW5`w^Q{4DP<_f8-cdaf?^f8A7XX>R!{Q z3Hm?zT2AUh3>WzsT7W!38alGj0nX|~mEz2LAe$3 z?Nl8hY-{;VN~2WwUZv{r-a}(;tRqz3t5c59!`IhX9ZasAE+A#3WUa^%80Pj^MAff2 z<~S<}3%ggmWmr17CY}Xh!Qu)1+!u$-r3Zh+FZ@ZZUV_atOKX-qt%3(7k_k0$!nf3u z8v`TpwhKbiemtb(%ZPvUL}`MA1d$AiUiJuRXxNIijAVf~*4JkBEG3lc?)Ije0IATM zgwvqzUm7-uH~3?O`QDJ(EXd5LMAn$!a!-TI`^|amD4eJq5M5qtQ0O~bS%x2f;qA2+ zBqNsd6PC1WjZVJntZK}%X_vYj5d7{3qchn0@gqw1c6LXI9n`3v{P$O~%lwCxxkj@; ztypMEEe+I1Y`k6Zjcc7B9`@?{ozOvq&5gJ1-MiOp4~$Vgdq9;UZH7tHeE1|hV3_13 zqY7WK6Bgp!-)IsoGHfa>kkjf1utMsSI1G9JLuoVP*zm1gFS{0mgQd1)JEL0q4~Py# zQ_q(ouv)cY*`#mdUKmY3%$``&hO=%Mg!RVe`&LU02|Kg8RH$cH(qU>q7Izivrtj^N z^FC`9>W^DW_3?jET|!EVM-Qx2y(cfhJTXRopy60@JiMkPaJ4f>+U)XlGA!bz@UXKa zhe0jBwLe3YX21S$;z<&rkoi)gyOD>WW$J&dILxWtN+If7R;dGx5#)pVTTiJA6G}a- zO~K`I(AZMcU24#*Ruc;ersQiL2_DanQ3Hn0N{IIZInB|IZftG|TxeJc-_t51JiTsB z2CUC0=oYf)H+nlf6{6YW^%(Op2uG947#J^$=?G}YN@F0Qw3PURM=jn|`5tn1mb3H< z{>+-kWU%g*pZZ=!f?TF~wZQC+olhG}(x*CMxJT*}eyQx>*)x}gb2X=#FQVR+T8|Fu zg>1f(D{ENxs0KDM-YFWv$A^UbOjgna0X0^_+wXK8-Ise7dT2q{ySYI86kkxdL`6(W zt#rULc}{Jh`DrfTtuqa3u1(*V9UXdEe!gu=VKs0~lmC0F+ezMU_C(kYVbQ}L{t0I-rP;US% z^}}1FelLYy4hz~t2Skk%P09j#tKRn~`y>&BgYWs%7nPJTH~nlX+#KqdN$%AGpcSeC z)>UPQF>_iOzyzFWTDl)O@KDR60hz8>t;H-g_m2!YxAL%$+R^~sq^|nMxp#wuUWmZ{ zvXL~VcOlU<`oqWTazxP3B*$DBbeYj*U7{Y=xP`=w`0<^jEwvp_D0pwpy=ag7@Gy$B zP(p@Pl^vGQ-Pg!Ud@U}R-7;*vwpS^SIlPwG2=*omn09Z*e8H}!8l$B>VT}LQf&Wb82v`Nv)sYbqlG3A%IE09qh@=QavAyOvkVPm z?QAfB?2z9-SiHX5Ne?(E4JiYgN$2-mR4-@>=IJ8vp!iuPV{rcd$LRPc&Yvfj zSyD8?D{qu)hW~tgx>LSIoD5K2M^89%1MP;txhgzxb>k>*?AVy-Hi~BymcuMy>s>;a ze$>f?Rvn_x$JBTs_$GHDtl0b5U`dJF3H%ofGR{yQzZk)*{IJ@6j}rKK8CO^{&%wGR ztVki3D?&?H4B8ofpmzN;+7E>aFD#CcXL?*~i=BxOq5fSvojl7bG5$~cwbPeDw0Ms! zAf{~q;m6%V^h>s${;2KWfIvTM`oZ?3F!wttlMTv*cVn4BIl}?5b!WygLJClE;T6_`^LtiS>*~@= ztxbyO^&f?o+_Jlv{Y0`U?#>y;isqVvlxA z;$dvxWRkh#!K|PUZ!gMqZ{D7E&7{sYKZfv9qRT{wh0+B3yI~*E2jN50*|{>+$&KSL z6;&wLNljG%5i@=&CqhEPbZKnuscD9PkzHZyOS?Tvz+BEl`k}&VQ+g6cA!4eWpct`H zJUWO@GUn#ka>|-6X5<$*Jdx|=b=w@XrzAQc0ua3qE#$C3aQr&`wD++OTE0pxP*ZMQ zPmiS1{s!1|v-Lf`WC&5qa2(xM=c7;HII*e8!TkK_M{&PzLu*= zRnv2L&7S8Prv=SBLz953es7-S4=e@_oQGx(m5g!~w?0JsN~9t5zR;{20iJ#i?0QKO zIj*4P;VnSQyg;0mWdM}9NX|W-#qq9ws)4J!IEMmivTi7~ozk8oUB5Z~RZAu;D=7ALr z-mFM*%q=?kch1Fd0EtxzyA_Rt`eG*46u0Utc+40P!(lRs?ta(&}r zYDfP=qF&x!2doRvhR}SzKxA7=xl!o)c_K=*B6XASc|}0rR$~4|rPB5+6q?i6YzrR5 zI_u94fN8vvUt^^wkiiS~E&%LRPJS0C_%<{Cv9+0+>YY8o#Lr#u{~48|ZmjG;iAH`%ggm%D|L=Zp(okl}ljs#l^+j-qC@ zM?wqGZf9ocfAr?L?NKre=xzvKde|nY4c9nerjzoB%n1Fxv5*=ui(V!~#sjY-=s<38 zmvt>`%F(oeCrbI@@~Y3ylP2}8tBzgnmJi(m0LFMJg}lWZhMLt;%MtMed9y$5mjXWl zai*vFxt*UQ7}gYmg~tA^Iby|pfXg4E$fAUpA<4r8Yb$FydskHneY{n007eMP_BR~t z`$%JF%q}S0i8pH0y>NX3;IA?RH^y};>iO$%{tGnZG z56%d-Si7t*^X^Q=9wVCNABeA_yRqrbOl_-&%*@oItE!2XnL(i=Mb>arKQG8y?pb-X zQ4usdeWfbA`0d-1KatePcM*Xxqa}56J%*=Ar*Dh!DJOP!sg!BK$}^PrtPdlw*I6EN zSm>P{K}XzC18CQUvy{06(~xL2Su+j%_&Ax)O8)X_cfV504l78%^YdG;o zCAU57>~67l-xvMCrl%^E!VAyKvFSXf{sNj@M6F**b_?nn>P|Kp$s<7(UaaTPE($I9 zv=~Q4%CC60OP9Uwc=^vedo?HC+C|HhS=)d) z2hjxkXl9#k5|SI1oxSTGWtgbvT9IQ&+L2#Ub}gW(DxQ=O?vKD4+B8GGrJ~sG5n`ix z?xHxP%z&3~4$MruTQ@%5&c`tkUtV3Bt?F72eus`pV?wQXUE)6$y|2bNmR^%mvah4Z|p{c0g)cr;ghGehl4Pp2hqAVKub{a-J`QpT~}fiqbR%wb~&{M zcSM!RL)K;Oax3d0*$0qJyQh1R>dX-@tn20|pLU@TOmSTQj5>C8v-}of0v)*U=wMlW z_{SCQSR}vOdHVG2B39>BR|T$rx-UZo?Emr*hJBUNlq|AMRPewR!6;dZnMcf5QPci23w=W2<^ z8O?yp%%E%yt2m|u<>?Fd>f3|KRNmXiu&hk?s=K5qpG_-|6pK=L^x|_MqpSf&tCpBW ztk1LrvAM<@{Si2UPkSe_)Ve9RFNB;JF8pjWEg%(;yLf5ZK;5+%sVq1cqa~lVzS?Cj zG`iDw_`#66;#K3>&RyUq4VzOBWYUi5mni*7?mU}EHf2N^{vh^6AL~Zk2eX4QKa?I; z27*y0!P!lDL|Oet$jAxkXw|}?xb_@;aDCDdR#iNI)z^FbEr%6tz9r}5|(PL>(NXSeQ`;qPr)+?u(j%8IU^QRV`|=(Htg zC#Nz9@tUf~>T;ZA_97l$8U4Pann$3b#=>U(R23^;)w--jUu)zRYt@xYpGAkQyhV%- zMQ01uKi!4j!!;7MhnMGA2gamMz&97m9JR2$wUdTi_mIGWt{BhY=68g!Bfp52xN5PO zO@TB{7fdd+iIBuYv=L+dou^^Eyb}zg>~~v`m<~R@P(|Os5jc032cC+Hu2}N_n7F%r zYe6{r$(Nm6UqY^xyT)7%cj$5uM@LfHO9L8sLIuAO=3)Ww$ep zS@WU(Fke*Z&nHSkfun4JY&JdD;Q)```vOBSM-6;BFr?~=* zpK$>;rz9TGbr+ygGw*6e_|)oSTBoT}{=_YC>-Cd`0YN$JF_lm=HXMW6I>{c0 zHCL-%myk(DG=CurH+*54)Vjz+QDXpLW!D2;!di%fsMgv)ym{-p`?P#!*&Fxr+ZT1x zM<*=s!R&>c2|xTJNDRO~-wGT}#mIC&juhp=-)>o82(%yEp>G;?BXtd#ahBI=5#tI7 z0`FIHgs5T{Eoa7%3)p9p!y9+4oNO*Db_s7fM~8;A2q_-owIR0Lh6KKjs`C)OxwxBt zx}pNHH7P3C@c)~lz1aQBc|I++1c43tK$*6O7M%>x5)~Y*mu+^7{TUnm&kiEr+~mP^ zR{P{EYpeEG_Li$BQmSD+4OnUcXq|c~bT%R6jQQ3tYgBm%+wpT z*XCgh$)1uPav)YZ@(AUGW>bWj)zQ>RK(BJaw5gQ^)gzdcPc!mic`rm<1*t)OXlm^*ytyXwaV8Lb_=;=>s=(LZoQUA1wAzm{9j>5^4K3CH=jDGZmxYrN{WC%HV5l4&HUj7ta~ z+rmRj&_9WGln&UDXo{g`S|0g|lv3Vc6q^%rp2|NH;Csu#|AV{Ke8g0I13}k_V+%f0)`vbbpUfvbbu(B@plV-rvWL=g>lw~r)HiLBT*b=Y*vf6+ zZ!4wde8REEX)2!1l7|O23vxbUbVslsOc^ijlJXA_c-ON9x!#40DyEYB;liH7Ypk*4 z#>V3tB7+qMFUw2q+X}t7lqC+KRBjfp1c+|SMW|v&&a79F#T!x_-OBhg5*CPrIjjOl zStmn2cwx7*(W0HYCIGwsI3;xzrR|Y&RRe~Ya*UH5$qs9#LDX@AN*^tJ0Bb=p0!~Rn zCyg*;M$DUxLs4V;V`;@zmfR4!V+r22x_@Gx2#`PRHSj1Oqt`O%#PM%)3+i4V(>?DQg+w&QD(q(5{Cpm+AWX<*z-KmIWquQ}T{d=pMoilCj5$D=K<^9do%*MrG-w$n_%m%W)l(TRcrl@t* z-e_)7!Wx_+yVupn9Y!MITg62BZi!V-73Ixi+m?zPoa7MpvgY+a;Zmo zV8ppg`JkV7Hdj8Rg}y|o|43(c9yVm9Mq5)WLB@FwNwDZoM8z@?B&uymQ$+qPiVK<5 zveqp-V5ynSV?VMhxip|wzRdpU)222vmDl!6!YA5&KcxG|i)-GRmp_s)Q}-+?%cVyq z0;mCnNYVW+`E6#mIpVv-v7cV9jH}XZUq|U2B4seDUD-CwH|P&HildBi(*|lj0f!>{fqid>iyz%Z>Kz#RfSM3pBuy*>w;QwOPKG zr+@XD@Meqf0NGGLv8=a0p6cgg8r319=i=&z#9m$dKE40N|X zq*$7Ke?5)W{WB>@bfK6_RP?G+!~{!tEQWGgQKttjNpm( zjY(B4!EUr(DV$uXy*Q|&%-lK%R4~E6_gD4c<32z~uX&u^4nVK&ly~5>BUijkMszg^ zw<$g{s@mGLd$e3F0)NO|y~V7-8x_)H&+@J4xf zor_;&W>~m#!VWZCXQ++2P^8~?8cKL~p*<$tMa}%(u!Gu%?$8Af&e}Kl4^-H<4jURG zb^MG(QlB3J`+j%-^7GAwTTkc%n{g)~8439)j9ac--q-8sk1G%6Y|~!;H^6BA!DF5x zsMSZxG5j}_b>R%yx9@c2Z~wzjNIgvx!i2#)o_S%{X+Y-vZ(EKv&V!QMW%S)r1Jqa*cpx}Y%Tse_G-QnYRE6++( zK0+v)>q3KjiAq3ePqx(~#y_Xo>0zTXxp=*_LmLq|KS;VJ>KAFj-nNXWwbGw|Zl7B3 zDHI9AhrZU+#F({~NSlG&9b7cFzgx)SYD)_SuSU$KlL1Hcl>+Q52VKwZu!5K4(|E}t zxZv1);i7AC8>);n)0OUcJ4aF}uXWPTg~=ynC|fjU)*Pk#5QKIFG9a_O>NwsdwGqZ= z=Rv}B%#OR9TpbqlJVD#O7^xsGjgOt^3fQ3jG3<0{;31yr(HOBrOpa<~e_ii&-ECVq zrb5YX#Dv~>Op5^ZE~2gR^w*}zqk(pe9`S~gieSADXQszWC;SX3X|+$`1YmhT)!wAB6fUlb9V$8e$D(Znq)JN!CU@&)8*}o}|d=Y27;x*W3)l5$gB z2rW8ER7Qt$YSZh+uu*RvjbkrRC4?o{HT8`g-d{!OLGw~-zF#gQ$kBbf?S0a5_t|^Y zJi*kV%I(ONz||8qj7Z(|I$88AAGZ(z;re6|COgj2D?v32!QJhC9e$ObJD{F#VbOTF zTJ*0YI<11|PH`&n=#bW1DMv&vh!JtnMurry3Of*Rx$X5oI^LD*f(I{{?6~E9#{2ht zSudULeFMe(RdLK;4tf=nJ2L<6$ouzVz~4PH&tu54m;NFHQ0AnDd=$Au+!RB&K|};B z(dQqZv;Qj8BAK(?n!1UO7?XSaj7HEc?LLL0Mnv{ik&@C}^n$+R_B5Hosg#n1F0RSK zVk!sx)ZO9q4mEH{<#v%>v7PlV!q)!u%9*rq$I0)*Myfy#^^>Z52TRni=9z(3jP%`3 z!?Rtr4f9+yS|*&Q)$SnmNCgf*;Ce{sAb-`{6$LhA_yi+9i z&GJLk%?&oj5ziM^@-bDXeY!MHeSRoSnpn{*g~I2%e#!@4bA1*T@j)SaG5>R4+5s;| zaJ_YpL?pveUpY2sLpdvomHxR>0)tzshc0$q(G*5Uqd>GvV`q8j-bz7|T<*Ofn;YU&6I#4iYF5WX**9WY2mlu^^#KeZ0E=IB6K5Gp= z>mE-3u1;6Y=jdQ**>xpM;L<|Q^-TSVm@ik>>3dLcDE3cq{t%|%^6-W5SOdnV3 z#nb5C4M#;6%eP^`WZN=?+f|Xh8=IQ5Jk72e??y1 zAD6I&t>Tj-A4qp@imbp>o|ethsb~;$lPbV zy-Vd80Kyk8An}p(pMTogeod4p*z|I0)AWG!`#^Im_?P++ajzLYKQiN!G9>bqkRYy0 zSQ$#yHri^B4=_PocFEn>rqDYvS(Khmi*UG2%`~JJBoihYeDubiQRjwCq4EPaVL$F{ z6=HJ8dXmbs_Nwsq@zW`zQ8IscXgO5U(YxyXH(#64bG2d1a{)_>L*up5H|VRTFM*6V za#@>TD$G;Qj9tp8s?Q zq%{=w-vWQRoto_5;O2H3R`mJ%S=N7A=wH*c|MxqXf4qt^|J$a=N(@)~=U4YcP1CEB ze{1e+xnsotrL^^b%*y`XE%>)7{PVH!KVi7~W=Q`5#Q)6~{?qxwx)AaeBi(#TV4vjd zza$n|@%4nK`gK3~_U8@=`KFC+HGDIMZ^j@d_RSZ*`NFqQ@NJhAdBL|(@GTU43kCll vg@Ru1FQP)*cQaQmoU{Apy#KYGw@~bp%JjZvopIhC+w|?EDk0aCK?(Vj=UUD9SseG4-M_FvL_GjAxXA_ zU+#aNy2$CdqoLt;|Nj1!$cjsjhV~Lo9{5JnJ7W(H@}^jCvBzxz4!9<3HCj%df|G)jKy$uuP19U}!(^ za1^^E5fuLd&;mneU|Ii7{=j>FqW5p|J*{1p;XfFgp4AS(O)!wtg&EpU zIkBIbJqj)%FfMnQF35NzJ{;37Dxt(VHaGPM_pHCgNt?vCF`dZQVv)P{BQ3)iZ8ICH z$pr_e*p5X9i>i1C%1>@ss~jA>fg4Mw9g$O88xlA5A_T8UQX6O8$~~0k>A$zTUvnEfu=rVDG2~U3*l>5{D3izr+4$RYbh+=aTH| zT1ol=8^4kUma0aS=}3&vs-S*KZ9oO9vx3frD=NO$8@fPQD<$y<9;+yi^qVWg=EfEs zC|bn23N^n~ely<)S&xjm-Y}6Jh{~Z({%1H}e+dK5-wa7{#`cbg``UXwkpfEYf4du; zw-!v~azqL&EfM-MN8w(5UmRayi)E-i>SUBLS3J_LoQ4I7X zqdWtZShT`vSW46B6`k89JC!rIHW~56S*rPc+0h4;jPf%j^!44oZxtAF93D{H>{Ol2 z1O$y*lFs}hZn$6>JQD80hsj~8)2nB;XNY({2!~7`R5SqraZFmmM9_>Tg`-(z4rG6| zto&dKlSJ>lx_Oui)?h!@%&gTK=S6R%(gAhBfyCv0(5TjFM>bjie$)Hy3p?!+lu0xw z!+W?AGjq;_A>Q!%FKikFg%D!$9da8>&~vWyC)BDN?q8paJTJ<^l6dt`KQ}Cd^YQZt z)bz(Z#lu`C_hRSdzL4|KSC;A`=hHMmLnV0ZlD)w`CFmwvT{01{Sg-75va?St-YrUNm>mwq? z6H6szruO~3RlssJjZ)5wJ*WQ?Y++g4UnbF#7jx(H)=WidO~!ma)Lm)Oo;uJeJAQhl zWmH*q(7N2H9vrZIohxKJ?oOti=|ldbB=*?fbO5q!P;y;WB=RiJL=d5`&!4r8X zzu`)zKZkHGDA{Z5*HDL$gAQwiTzj331z9d(?2pdL#l^RpxT{<94ut=7(tGNp$Lkd% zz7A$zB#2XPJK5tCdW)7Ex5_T25VXVA^qA7=RiG_;@(@24KQfL!W+OHtbO- z+~c#4k+Pj_6x&Ssyn_~#P$RG4s7ZWca&|_Rxsx~~mWR7HTMgx7h}!|pvs&xzmJw_j z9_xLf7{lyjmo{QzhV=4EYZ7e>eMhS}#wdz%X|YE}gUiG+dnzh@RK*j^m}ik=)<(>m zDkQQt6o_W804Z_xXsNog4z=g1#S=(JKPZd#@V{xd|8 z+`=#4(~pO4Fe-=3Psg?v)K*S^xBaQA5IzveZf`HXO0)a`z%VpI5>K^U{*3am`Tj}~ z90QwQjSCUm6EUs}P`EoTZEw%9hMzV^+gDNhF=#B*t(zD)6oS~>XqWshhH#{+`K1>V ztPjHK_7`q9d^N6Gp-#{}-Q#)m+R97SJG#kidPt*Uz^Yp}8mIBn(f`DUwf*74vb>1-_4T74l7+i*_pI*d>e8 zQPd36;K`4~iNRJIAYFXN%SSZ5H#aG?Obajz8mGS2ir(DyEN)tL(of2Q*xa0r^ci@^ zZAmf?jP!4p98&D4n$jcdv^E4M?N~R@ezL8r)ok;Fx!?XlwbQm;f!?(JIeujabNv#> z(w$dNf4g2IZ&73=5>B+xR=ak}IfSbc|5niISjz3tUUr8gZZ*y;F%IzD!kf>;-A;C<$_!M6 zEgat!&AVF2J+@jYyI_>A-w#!1#xu3-e(Um;I_D?ulP3{jiXH~ah%DTWodhmy)_QMB z6?F{!L!5}vFh!LJX7(6`Cp@}FE%WS&p?1=(ef*-?^nhQ|M%tR)!EFe_OEkhHqHRV@ zQGD3;r#G1r#|IZvp!S2NlkAAxu*Q|^_Zo>rgtfz8+dthr-H0|SZd{DjK5(VAcXrX% zd1<#w&ZDaIaeK>{8(PAndk`%++%HyA(IBETRmR@gX7xg7j$QN zmt#MFmx*q4_5I}5*DgS!+D2FLjwcUJOux@GOr=Q+|@zxTHJl3HX+HK`buH zv#|87+<7;_&OAORZ-JDIykWPi^u`zvccJWWIu)duI&W&jRQELSO_&}jbgVOIakjDA z@)cOi>c(cc^b%85RTW;TLY(tNIlABI6`xG=ZfUunDrFlT?|R*5`LyV=UsY7qa*-Uq z$MNxf4`W;B-)ih?1A|o>H-oX!xjfFzm|(k}f(xSfLQOILl_rRZ7SecoyZW^9)T#DJ zprj~xHY<*}8Tln+>wVr%d9!-*x{MtjpZ+i(z6=EOEf)oT*ak!EC56EyHhldt0FV^F z{a`(3YFD2?a6M1=w3odY54%pQ9trjYA_s8@tDw8MA|vhwR{dCXeF_UsA<3aYjhsc^ zlgkPMV?ld$_Hnx!%p_8`X`}A5|4fEX`R81#V+@f|Dq+)1bU+|veo<{+&FkyI zR!$#?>ikj^VxbYTS@+}p>%3CGeg@+WhS+wU}x^ z%``;gOJ6`D>wsZ2u6em}rz=5Y-}bS$x1OnH&?KW?wRyeg!Uwcd)p^dBL{~T zQC<}mRRX%Kql${<<(E8~gQeWuJd7UH-^dFnEDJRkvm~T*`GsHes zv!e%!lJjwJsqZiaf}uM_9lVLh+1#r?EoruyPjY04xlYbHFJ5yy1qAfncIX-t)vhIL zoc8ugJM!0IA7sRSlJ%{>cHivia3=HeT0DUknsWnk=!}#KRW1O4M48&xRB%73|GEWEm3)j>en@Z77rZG3_qCeUzL^S&Y9ZZcEqp*INp$ldA7`9j2z(4$jM=prkd~}_(@xD=S zM`~W2RZZD2PJ*UOb(=Sds~7A3zXG_tI^nYN6#J z5e`W)=!G-;H&;C6VPtYx4BK1(wpyQsU(AjM({c=AY2U!BrM}gIGj#8~CKhp)DhRMP_6#W}bl1F!RyO}iA`FSmSA zfytxZ^z*XoLW!X*L&r#?FV;q=dNX%K#rO}3I#a|iwn9zbD94~yE1bP&&Pe)Us8%f8u=?_7PHKa7G4jzLd9vK}4YzgWL#ORAx0PHj4XuvsW}eI@ zUD560+H#0Lfpu3_Gw3o1Q7TcqoYdRjM0OQvy!R+=>)AP>hMa^bH@VcW|`Z zJKY8d68c@y8kwvg+^OhYPs>tU3|&c-i5UlMU|3}y4&)_0D94LJ5K0?c2MZk~Ko$TvVtQ1wC1s<$w9Ck|vh9>R{|@RE`qA(iQ~g&UJ+L1#IK7W5&v(XZgOp zT|q@Hc1M1WASC=qUl(0QYabDVtG&qb5sNxSSV&qPT@0l|u~?2IkPqrx8_uRAB&2h# zsXsK)a4WgFrcOw-<$5|ie5VO|SRa|1MP5_;^Ipx;PUW@U%Lx0{p{{eEY>($~?!)HyGJ&QpIg{oh& zgeQw^X?^d_E09*SOkY$4(&2hc)jW+f(X_e_vuq-{+v2iSS5=;@!|V&oj~?-N@RQOg zmMtN_B#mCpKv7>6Uw(oeEQv*LXzw3hVboQ&e zniUa;A$`M0R2XOhFhlLDN$U`==?puWm->FCDzSovpJ)KTo?`|-%pu3=CK$ zzbo1n7ISo6w&{u0uw3Raw@>cx|2{Up+vsD*pM)J;4P4uH&}|=DUJt5r<7LYkV0sek z(}XM`#kLNU^O(@tWAm)Wuhjd9OdRpPkO`Pyn)q7dZN;FrrK@;<9Q`G_WT)7);oh`tsj!G6lb*6Mf=LW zl}QSs0mv^$VlXnCB?Me_HX*0eA;~H!Bo1O{2OVbd>&qhP{Fye5thfpF=RoP)EfRoP z7i8QMo}0*sI@dL5^Ucre8>>3u3}I~&v2S`XKK2|4JgF$r1Zn;Jk;q}Z5mYN2(c^6u zK~)Za=lTR_*cqjcpx%HcrXs_&EOh{z8i-!NbHS^X)D!aL0G8N`c4(k6BjE`vSkbl&R0y?PRAp|;Bmh<+5z4nL-_+2 zQfAJ0>W&dDjVDX^Bkj)-SK-9xUF3MZjpciN672JY`}aoA6x}11YO@EYhS6U)szS1S zEv{!;zJ94lLA#R=J8rD3gl-IltH?Xs7CM%2I+w5r>FZ5d)-`3Sl=ow1bnmZ`eyG8O z&LUoV>3GR==Sb=S%pP#l67f-HTHltWm5U<|9)HX)+B!#)4c^-`aN^CmR^<6+eMzat zP?HF&j3m%u=0ebFIyxC#e+w1fAAD4)AKcKeH=q2_t90oYDdDK6k&|}*`c2c0zbv#r z&aKNZ(UDRdB$ca{NkrI#k54GtdW3N8ti%&&J2_do8vVr9PRNLvgB4Rre76eLZf%@Q z4495AYzqh91)if&JqwLtU66Eqe=BR*6O`_vuAW7eP>a)Mp#+s;aa)tr5pTVgN0VVb zC$foR7_qt!r|mZ-u^mf!lDk#FEHwL7r)F9U`zVrIjMMuSMgs8RXT?v8y=~uWH_Ot- zVs0DlWp8|naRY`d;VRn6X+kMQa)j<(YsOMOv-RnZviE!0DbKYT1bMha=>ZIM0>Yn2 zxhErNV->=H*?m$#NMT`Z%Z#a+2|x6SZf-@Vo2R?x&;t*pS+`W*t*WfCt+yG1c%1y!DEw zNWZl-3jIOxQ>@L<(2Tq$vjC%foxE`wIvI;-#neXsftv1>*@WVpJI&$l$B#Y@{DjQ} z$Q(W^udLiAV?q)3wB7jKoy!M=O!i@k=WDzzumA$FyI6<<^`j4+4Nj9Mmo%|eGMyJR zW=(%R+I$_5BUP5f1q7O*4&nf<-b)H7YQ%j7m z-ZjE**&WaM0oj#xbL8oSh417Dh?8>;W?FN{w~nwUv`cRw$0cx+?ps7r*^e{q9@F@T zp2~_JSJ~2Iw+f0YfYu?!Byst@4El2{&E?*&M>1}*4FQ0-ht``FiRmnMI8J@94?o~2 zM@KdQh490oPj=9UII=+X+UG(EZauTTrd{UM=*>vSU9yU1-{@p&TcHssh54bV{|}q< z&`nVs4i8^C5`6>}nG0r6V^L0gEOYFC&JPSp_yxTTgZD%*iHI2)@tVJ@g153jODdPB z_RVs3aYX57NPK2E7TnW9@=XbF&v~Jy5vh41%*udz;H&~{M4SdkCwE)$d65~3p_}C^ zdmIsH7^wwEdaQi=R_H3hLO~7{uH7g*R{L;_@4AXftenNmNzdG#Us$AJvShy%gL|w| zxQ6~hw*Keh!hG(bo$xNl1tR*fo`pV>RHQJU)S{-XC@8S+;d*aKt)??4*L>#i6uhr( z5w>dtOEaj&dWhysyhwBAz|8X4b{x%nM?MCo`U0dY#F zZ!av&8%tWrRyh~x-;SW{kuFsUnbobSt2>{#zF367AB&9OO^{z1!DW$Tlr81;!=_2l z;D9{p4r?zbx}IuCj@{%`Fpm0xhgja0yPv2i{&u@htrT-|Ml|r@;`&+Ccc2PsY9fQB z?shk$bGr8i-&{#b1D{xw@h?sFXqru-Bt~IQkd#5I7>5Wez%*o*2@5J0@3Ui2G&1XP zs?^q&W;Z=^tXBA8GB~h3(t(oatw|xZ8vDy)%p+@Hy1R>>xD2`QdJQ&fG|if379=@yGKFtDolTt6y?&a z!srv35zhtb+7NQr?67i;F+S9hAuq5R3eb+#ZLhG!iYI)aSKnh5TVe4MP-%|(Fyvl^ zd1z9jw7pYeH`m%$H>*PD%eFzNIyC-h6*6KWdO5aJMdrv|D^mu0wISXYmb1ElV`Uqe zL?0I%1x-&P{<;RY`lu6N#{ro)`xO?d#X12QngP4L`q%?7JR){Y4muy{hyCngygqRz zR5AP&rZUN&WUFNdeQ$dd`@9uSGz0`L1%?q)^5y1{&f=%#+>p+W&DDxIL8@Be)GyM58Q6Yats^nIRsFV;gG%0NwpsT$SDPimt?z4Rrsp&ekjUQ{{IrBJ#V7uzh zVg6Td0cpi^!DXB;N^x#& zUym+fL~gcTYDREeblQ8$e$r@s^kKpHMDX)p^{mV^L!9C=%;Pi7`nfm0iIeo30k^_J z(18bm#(1mAuPjZrE16T1W*(MK(>D2Iavpk$6tw=lDrHI!4fXF$)8Afj*cS)s z7J)~^#Z+Gih_~8n`o~uH3w!&(!;)SVV>}l`8@(?i)=62y05n2h~OQHERNf{ z_&$v5j`88v0$n|Z}-LuHW8&v3zls!u9CsDfQG?u?Q|AE9J%qHz>9+0XRiN zT(E`-i0SIWikw&cp1>R$EYqN#t0}qWiUIC2w!8n7x=D!N zcg9I&MAE|t4#?5MLj{M&{uBz9Dg2Z)X|Z;7K6$2}`d&|B;9R2SW>o^&QB}`d5#9u8viUp& zm}&hboDF9vI5|n)5Y}mJtn6TUM%;K-pUM~_2s6^J5OP$~G<_*02Eca}PE2bgL*m`r zy7;ELcYQ{($^iUW-s`-()U?z>wr%&u8WwiN#~(r)3Z8CvWKQN9Em6JZ)v5CwiBM41 z&R3kD7RWqJeTe`~AabqOxzI`B)VFMDHWMP+GqcK|(&ir(xV(7V3t5z7BExxImC9)}w zGrZ=RY47{#bI0EsWHO%)xx5;gmKQt=2!bySyiQKgb2k^vLT4G;v7#qaI!t!w*g0ZD zb?@Ynkx+!WCXK@zqaUuVpzMPZoWE2cbOIOu_yVNZ!J?{-ZJvpm9n)aSSUks`-aOMK z^{JRrEro@O8MWOWpsyzywW{3xD3GG(gL&~cC@-~|@19{~<79C4z+ePFr9F^y^g(h2 zNh=S{9^Ga@jh^nW!;7S0uESs6_cm#B1{BNhGvCWh?N6+^Kv8`8>niKdx_H=0>sdk# zTkbQht<9htzjVEqfMBf9vGB)u>lvuGq&{xODZ4+0liPOA@$tEC$F0PK#DsmNK29=3 z;U%ekj0lx09Aim2^fevkJC9fh1h%s4-CfXKR#4+qH;p#Dk|84^eyGCju0(5PkmEPIt45BKQ1926@N{}_(`_ydmO6EcDiUw8wqtHFA=KRkvW ziAwnoSsLNWo9YL1Fbf#k9x@dlXWYp!`jE|&Q#xpBYpOeWJee(0M9C72aEC|Q9{&|t z-}W8KOt4CwiVtmMRcu?B85>&_ReJ=LS4n1pJ~-J}AEcmWVm#3wx;p8Fvx2}C!#|)8 z;t4D^7oe}=-hb-;M$R*raO4s;3U?y#R#c67`4lfoD5oGMLLSrNk%4MVOlZ__)L7Vt z)SZxTL($!uzza5Hrpd~a8+0)ab@~ul>>EVTWDkADIS8(U+2xA)S@YW$TS>`Yj%@C( z@&M$U>K_#)z_UglV~d1X*U#oRx$0q`Qu;|X4)qDB^Q<1l#4w&*4mXJ}h0%s(X6ZaD z{Zf46?mVo(TchpemlobU8SlnO&$N!|dD4=>)>aCUe)+TuQ@mcs^!rYCYN5PBn1`;t zv!9OTN8iq0HG&d_+=4s7La{pQxMrR1kQ@E^ok2!Cn0-MZqIXTENZ+8ig^Oq7(xxP3x%d|w42U|dbCbkK z*mONuN@uy#R?!+Ljlo*mLGuX8Ky>AKC}BZx(H8DT;}@vy_EobCE7ik1u1RLeql1$E z)9@6g`^5x#rw68Pa*#f=9RxFXmKLb)JXi3IQNDF$mA^J#zDKe%6NZI zw&6}#o4x(vQE!=)k5V|`^droD_2#w3(%RwK0iDh$-36Xh3*veXs7=b^M3L}+X|B&3j*pLTdI^*c z-Wfndls{V2{CUc-l)$(-KY&calj(xUbr0mK2S0`e>uHUy&2s4nKYolHf|@Z{Mq7H` z)M5-gHsE@dVe&PSCL8YCG2~3DcNNs)5ug?&PY2KgjzJo~WmH$!EHH;FDa$Y69OLu6 z=&LESAzuy)h2?DyQ_&JP?XZeS1A>778Gug3M-$U$@(A{F^AGsf(NN z-knO1ZX{7L9`yl!SY=)9s|f1mSd^*x>X+2%B%DDL0NitdcaMfhNv4(E@zR;0{1V!M znQv3FN0E}f!e%RAl1uOwrtfi z(=&~r9vDEu50NyOY@z2&M0xGu?Ap3@o>lTVFt|?~ z(bD|hF=DC~iQC9OlkZdI(ox!I2-Vq@5O#TEPiy3*BEE32U2)=+AA#RG0dV`kefO{! zX1kMEMC2A1FQ3H4Ws-|y)P8^!p=n-qej-leJD}NG&%a=$&GLMW&?k9h+Sg2>@S$wh)ugUu8VNFgJWQbeNAW|jHaL8{3v zT*qN3yWU~=3~dTF>vPn#TFarHg_6@Evc&!fN5MGPNr*WWT9LqD#BmG z7LH)2eQBJKh6I>O+U@xIyJ+<0yJM}9qtVz&B_Fqy7D4B2zumU76W7>n&>bD8@y1Tc z?g7cO8^WCUE_(D3WIM_---u3r?!rVgPEHvoq!>kpyVd;hzupQe(sG77F-}eHEgATG zAxjGtmD>~Ov_G3bvyQ2htbu-C2V}bo7{w}W-jtNuSt}~K@51H?SIPm-13buXCXz~P zXi~iZUQBKLzk4Kb(Fr&-L6Zj8i{Dr)0iQX1Yp1< zyOwW#_mTvch!V^?w)@e*92v;5P)L9ENxI19hs(c8h9)$vd4=W3iDJ{f66ixE{Bw%N zWlw?%N8m*I$BP0>nwe?QyoVk1iiGpxcQ@bkv*~shEurH9D%uR7^mO|u?LrQ5cEQ&> zMK^AJ#37{*@LdDrsoUNeS53^0kB>UsYoqb%HNo@QqZM^wP=18rKJl-91}7cW9?n zycxZt=WxUGcbiLf`@20OwP2={_X(&#d^N;a)++7A=O2915M`=jE+WvmPZ-JMr@qZT zYQtv8+8S%pCk;98WDG|BKdai0+F;m*vhUh~F6E&^`7THnZ5yxS6h!@*!vB$y|TPMVGwfxm1I{tPMY9p&Tx!V zajJhQn~h;lQVe^SOLxLi{zWLDaiF+FAH~1RwZUka{5*Z_uj8=Q-g7}ES$?qiesAhr z=!MtEwpNovSHB5;`o2(Zf)*;(Z2F%zLnN797gS_wceB;a{>2lo2F|!>)M08GW`c^+ z1*YZ9>-^z7OMnX!ECT!N4&DfyU-TBb;{eXbLK`C}tRuV6* zp{;n)p*VEdpFP(I;d)%uR#$bX3s>~e+;sn z+`wW&xAb^gX-@DMgRWz{=-Pzh96`2KL|b$+GmejS`% zaw8_6ys7_$uWv3p1 zz(IOR(@H#*TqI!UW77b;0U5b(D?qxYww;ti~?kJ}dX^^>Z@n5qCG0 z1UK$NnNsz_)&M7dCYklgI>g+9-M6KQ=VlQ@X|KYN9!wAbF6E+Z$w##T!4K6)pA6jO z7*JC{OAL0P{M_WZ&K8K*hoD zH}5v1o5#&3vBQGqcWO>Ev>B5XLj8xYa8TO&+n^}B_r0zmiGeLZ22dr1OTa>Q{Fg2Fxp`KDaKwa;S9D;E=;9=cAn5U9*>iG~Pxe)Wn;&Fv^uhN^T`+ssl{Bqe`dN?c@7dTxtf1*q9xh;T*{$_gk^vOT$;YeIQHrlom z?b!7+Onq{p{t(FS;e$buv>~4JtrkvBOf`16BA5gLcp9hEG4a#0@Ua4DzRj_n*)jNi z9_}~QspvDS)Qtz+WT-eQqZ(l1L5I}xEhZHjNA!7v6#J?EBcYL>Jkxd%$t6pcE`Y4R z52n%3-tPt}#5>g1Bby!8&bwtkLACx;$=<5c3#$15V-^xNvU%(Mb#cWW21-nx?v82C zZG$q5f0n0%MX|d=`lAtN?clc(BHU&s^0Q5Guzzbs`(a7HlJN8=lE2QOKNpR6bx?FHzrtPkbxaODXo7O%HXOlVX^~dDl#rA-?tS6XKnMTef*_Fl<+#LhyF6?mY ze|_+m*(5*yy8k@BTe8o832>(M3G=7|!i1VMnpG+w{r_LoK*e{me;fU=^;-O&@r8!= zO8CqF2@!Zv{PEv5&>}IDLV=wG@BS@|rb7;W#`OuH|1acyG0x3@u|ku<5V*+B62I9R zM*laMnYL47s&((eDQCQWjk}V|E-cm7a)oHpZJO57%Bcg zoSBZAn$rH*@oMgG`SA72moGCjGpA0y`1nZ}zX^N4``X^V_~nz!%S$$B^xq!#%NWYf zK280(PGxHTL)rAxj~&m*$s=6;U?D>Zt*Wf7Bt9AEXz}@t>HA%b&OZn=$QUjgXtaR; zFZ#)I;G}YIPh%M?Gv5^+gA!tY+Kvh&T%xU^s8d7`IGzr5_!8dLcnJ)8mz zVXer_QlxRGRpeb%xkLLg1o=M$%vTo@5u*{}LS@{ZE6e|GI}^FUtG6!L;3a!UN>t-N z@&ObW(AUzrmr-fH3BQS`M|k>%buX$OvZmZAl3f`lA|dbz3On(6XMC@Jjs~bGobYzGLhh|Y5!nTZh{<8b;?Z7*7+jfcnoh3bT-L9 zT=RysI>EEEFJOCxggjM@O2*eScc`YRKwCyM=B1^ib zAz`P1sJ4xqB{8JdQT(AOj|jiCWN$pW9o8nXoxuK**Jz#hhosQZPl)~bfzK%zPGqz> z(S!zEe=U){k+9ItN<(J1oR;UNg()7~=>;w5*1cP2#XBhXzl=zJ5mF6#w+e>eNzAVi z9yIK3TO>A`b!}4LT`>-S<>OSDj=V7bP0@S%Bpds==6CjL<~r?}ns2!DG>C_(i3=OP z6MSB2$<4klWIAueV6@@bt@xeYWeDH#d|oHuY$$6?r8$PA5#0I7NAb{rUtFF4ghmJw zTaL$&hAf@6of>NJ@j~kwts&31<9A+aX!N^mjb+34fl7D>TFQ2!Q~MtmKfsZqTNGBQ zT&tYScJj${@li0g`W~)(*L{8MK#vb*$)bt!di2-c zw^EYtG}h5C(^O3u&q^+#64AEFH#g~<){nS>Ks@%J*T;_KEf*Unjo_3$u?E+^*ISf_ z?Z+YVZU6%3Xe9g+89c_Ybhe;)aQ>Srv}qEU_fd5WE|b*~VoMBW7x?vZbdGZg6^Gi6 zIrR)x|1Ce3e}(3CIp1xM7|e;4aPxA}8rnHKJ1ru6?vfIgj_(5N>GoR`?K8V_OYT|V zRXXp8l~Qd{6is7RGyX#P^z=nJe1YZ}{&DR*XsfYOqRn|QO!$F}z)huu_+2`E;nJmX z3hV_3lV&RNQ1BNWfS?KF$V@!uY?$EnO%WWnfi4o=pyAXE_Feu-DIcGFX9Ji9UA(1K z<&Kh}NgME@-ggNDc0XLaIN2Ct&6fG29Jo*tP%85|-mY%EV0cuxhUw_tyO*AK!KcOF zC@V-Yf|U#k`c3;$08JVKd@+}VEABC-!FhAq+J3V{Y;wJea=tW7syVL#fyt@9GLWes3+ zgPj1?LG=kIqt;9Bh_Gw(D(l4-8>J`s_|Ap%XNRRB=UyCi?u+|S#!sue;QPkk?}ppV z)PCz94CcI?ReizGkHNWmU47t>2)t3ft90&5f{2V^Y0;9VkRM-}N+Rp{WHW+_uj3^W zvR$Ru^Kg{$L=z<+sCFxGh$Ag(KA+|l)$cE=9b`UlHMb|#INF1xM3Be;-i1MZ_RjCp zR>2z$4yFLv?(gu^-YXwVzq&nPm!l(?r?cbLT6X!!#eTE%ouHmCOykcgVV}RN&JHN z_z@b70lnldc_0u#ogu&@Avtt3)I%R#LhsHKlnX2rU~4b!^X-H?s5X)-k35U{~$qWs&ZmUB)NgZ-If`HMj&W zH)cCF1D*Yn@Ok5{l;73`oZcp7#lt%?w5Y{U-Qc@`_Rq9!2VMCumQGGp&##xY;(pXb zGLbgIvtl{o9{=vkX|~1h<#s!#6$4){_I|o2!|$q1#9Ch#_&~EB-v<}f;ZfXNaB{XB zbzWF%O*%XlY_SnKI#w zvIz4o)Rb(y+GiE8?~BRiYRO1~DQD^wEL@!zX~Tos;m=$U^$k+8DO5shy)+S70sfPj zcc^p&9F%h#4NtdmE#j1q?+unotAK{2!&HmUQ|k6RWM9@!laGQM+LDjM{-y!^7`epz z0{%xzl}WTpo0OV4fxYy0!ko~nMlWp65r5S)X%#+yH%=Y66a4C4X$FCKh1 z?OVqtYZxxwyVLC_>tXLmgkzhk?4ri3xUrrO5X9#1Z&69DMN&wz{Z^S=TFoC=FK`D) z&(`giw^JNVn1dp*bhuk;eU|*n1N48HniCIE(n{QsSocJiIMn#Udxg0ih9Q;VE7JuG z>>2n>UJi3_ciwfqxI51g$j)FBy3M`|SXoEnMZ{-$@5kTqbY zbpdh2qBjRi)Y*mh`lsc|w@26H#dg;l;>an+ktk|4H zX>VOs)NYI~&q>^OLo?&x)zPcgD0GhU)@qwc5$c1(7xK>@Y8QQ}0yx`?Rn?pQSfxau z_~ado`E}X?WN+R>&7Br%y);U-e4{0w!eCk&#?CGgKuF){TjTNVXJJ5l14|!w2`~}v zA6<@vRcq1c&eOVSO1t`3Pxg|}At6%i;wUCNz`c5rK5n!U1kZ9>>JPTe>-&!M%Um~N zPj;{RJtNR`;Facmz0s5+dy`7g&m_gWHjq=@iKc6`~|5o~dS-=?V$ zmWTJJw0R$YC&?Yvsq*c~bNi@Dn!)={2J-IaD(ylfD_!8I!`@K?>}Sm{3tZc0op13q zkS~^>=v^B!YGUHlWxH8Zl`b3+6MWP4%tt{Yu#IW|ULPx%<8Qh48o$Vv;NnT)I`BCK z2I@+6TTyb3`O*`gdh=8bczLQ$R>2Oo zn^KGtrzl3JClWbE9ePV&al4dae!lXhBr;;xahm#@*pAOFH-AiyhC$$XEGP@?sv$z% zc66z8I24=NwjsIrwF-dW*7)C$a+0UL;7;21%k#L5?LPTL1qsA{BM1|0npIw}OrUpJ#6TPdyFT z58sgNGyi#hW^`nrk(5G6%Kkg~1F0`3CueWZ`nP#X;u-Yv-fJuP)29rOV)TE4+sm-- z?XS|((w?5495MVqm0&)78Wt5Lc4(Cm>hZ@)DWz~hrJ)oG79RvF+U zaU_b~I@8=WyJzj#@SNF5@0MFHu)?Y44?}dMK%jc)I@!LSA;D)!d@8CypT4sTf5`hs zE-R>zcci3!QHb9dnLd9t4&k{9hz>7HifEcuyhEm!MSo!B&VjN6Se6?l*hszJ-M6rP zT9`|)kv5#n87&8aLs^Az@$Xsp!?V1(d4BiYZRwP^Z}U_>cMM7b^Ys^h^GuE|xG`{X zwFB=1Q+W3?XjSNMYdi40F2L#`Uxg9njgA?=PN!bJ-HCTuwM$YciP?nu&vTvUzx!@! z!>zIHaD@%ul>+3W_+I)AP!MZL7Q5?<9MjGH;&buNOd5h;D|kWGx+{j#EU$L)8uj#f z`oVroX&K3%0@kUl5YkHgX8?PmcS%Z_Qu+_4OSGLV93}JmwO# zmDfdBcSu?1o%K0Pp}M`>WnXQ(+=`=lnZxGmuWhAiTHL-H9~@25-*w&s{M*sZn`Ut4 zj_L}$pyR2?+x^-NE!VE8qROKs$AfpKGsfj(*~j0ZVJm$hv(9dt=tLkdkK{>?p>OyM za;L2|K2u*7>o$^%_A!)A{18TNQab5KyTU~ISuY-L$0eBSKy*HA;jytTUqJ#Zp>q2b z#d&12^U>P0&Sht4Rr$l;bjw1GLBPWLb5|pPIbWN~e0|-=zOY3N2r%Y$05N;t+E)Cv9X#mRs#?aMxD;3r5lKq2 z*<&DHY*rRg#q~6KEhKwIV#j@}D81G=q8#VTTJo9pDB*D(KglvqbAQOW$k1iMe;oa) zZ1L-FN;c4zcb(tY&MotLr0Fd?!n$^s0qgDhc}BE+X)o>LRdr|eJprGdEmO<)xrKJA zqWT(9j5kUWa7CSkaC};KoyI$U2SagQo=(lwpbw+`Qk`CXq4L5C0SeSQ3q4)Symf58 zy%_Rmo#4{~tC=nf<}O64iMX(qU4GxLcKo&q;v#PSq=r%zmYSM+(&0iyLG||StLvEn zm*;7KqUHn=0p%3xgIOAUbHC2cO1J9(MGho@dZ=@svY}bQOr-~PAwN9nOKPE_qIbk0 zK4NoaCv^p>>7!2wV;EQM$>JW64h1w4*JJzxY^A8>$LKe{wZpy3c#bUGpsxVe8cm(u z=F{3B=jjSE>s|x$iSLohVo`=D`_AM_=B!h=1QbB0zq90b%!2HU;B#`aj?I*qRGtyd zz&hpKXWVJ+;Hn+k0ez|FpvcJ4g*aY99T#pyNn78F;aIH|W}oPy zc7NW+cc=0h+;IhinQgkKf63&J7OIUJjutr_ogH26-Jt-Gd4|(L7l`6rP4=mna+5b% z>wc=X7UUVvqjYaF80x7HhrTTX=8Q;%r@xH!(D}%gv|P5HfcEmXM~l6^;#yL=v5yxs zFC)Ei4{WHL?NBz4uIfsdB?!t1t2M11pDf!1|{QZ2U-pnQxaGR%~*AcDq zzJo)cD(lvNSnr?ZbpV0w!60RECE;Jt(KxneUHpECM2xOIf=to&lICp=t8Hi=rqZS5 z)`kW*D<}q~OCAcZiZLOj#?Ja?l`ZVIU`aRVY65%0Ha#jxvLY^ov2veYPsLLc*V}Tm zG3bNBJSZ_a@xc&O*4&`!;I4?KFxvh8RN zygOw*{yH&Vv9?&h6=~&$4eBeM=p1|FHlMEw5!!P%SZrGD3Wx9xDC_w-+)d9va^ra& zzwEe0QYCGL_9b)IsSKq`(2v>e?EK`o4QeZfXoA4yb@68>&)d^FUdqOI={&tbBbk&K z_PF3ktA?j;{LS`~6j(r(k9T>&9&-vGAFl>TUpAcEdFX#9O|r<*y_p&#|TZ8o8hG{$@7{YpDhOfZXY71$?)fnWP34EHYc~4lU>; zfteCVbV@myRNtxNd6aHAMRa@LLEpig4n_Q}^Y9G2V!-`4zHBe05VxhByY1A}rGth;fA*5BR#w|Sa;NScG32swB zn=lItM*<6RP$@=Xcvb{=HFEC~5%NO}~MPvkMYH7`X1^dB1K6=#X_xu?j zMuvyycRcmt3pU69?m;c1q|Hsm*|l8(P+{+;g&YQJuNDq5cvSK7I4>lE^P*#x^KDjxKv_pCSTK5n&Zl-&; z`D!8KSA1-~)B6VzEi2KO(_TFYR%UW(%tjAQwYJl)7yRvRm)wi#QlS}693^W#G;;Qe z+s@`Yd72GH@;HoV1f(x6gKzqhk&E5!Im#n(9rEYuH-Nq{7)du*>19kO4=5DIJ7E%p6ItHIXjNK zao(-)!Xipzc~M^;G{4xho)L@uXyv!nyO!%@$&Ln>183aMqum6m!Q!DF&4-DDY1YRN zLMgzc$ghvzJ@4%Hn&jQRk@?+jcBj3Z7ph?N7n~zdFGXTnecaBp267hK@Rm%@BBdij zsV6z6=@6ilJM#kq0-lA_3(6@qKGER(UTr0qIr8OqR)z|H{_$;L;enO6Ifz`Uk%-j;>`@q_Urqc0;HL2ZY z0nXZQ)b`@)ORCV9NbT4vWX;%FdAsQQLmn z<(vcs?Bd))Bkx;f*iQHYFYVvo^WH|qM`xYhPmg`i$!9KK-9ud+nH5~z3B@1)NxPTN z2|hjDpLA==Ib{aSmLl|S{h#+U1P2U2t*oOCS2igrcN}R!FSZk_Y?&th;F*wyY-c%D zODC;KrSw%(PO^!Ey`_0p4Xw&tXiDtiLu1f)P#W*gP04zMD})}PFcu87;z<-mPjtO{ z9d|j2Ku&BdCX7?59}pKY$FNcfX;h zHZda@NW#g(6JuGl?s*!REg0X2l1&^mpFo9A%?u&yd3*G9x|ks;M3q#}`AKo0fj3Gt zCzOM)IlV#}gJjwGUc1cck8~2#^Y)E;`;on;4F&qo(mPC*v#!^$giCKdyks31TuT;+ z$S2u```Yp_CuguKkGhwzX5w>nJQ7)?i`ZA}!n&;-xLoj$SWj!`N6}4Qb{DuI`I4sU0(|#s_ zP6tCgsv?{w%Vn!8D4y`rt4bvO$mNrTDYfw&wK}3%6@_>JpuMm))iff}1h%*@iwcSF zQVSOFlSR+tsm~3NZp&<5+=UHupBg0yZDu;tOGgS&eFYT~AMy_YqkQuOrN@ zakuAb-r|+ha{D+NDHnnM&%kBYqXHz@GoQ^Eowl*tLEo_>mb+bd#uGh=yuU*T(H8^c~ zJ;?rjs@9xa4+>kgNT(f^l^$D|YSDLEje;~ySi}K$blykB2V4o2>jnGvcm*Hct~&PY zI@Pkm8mI_1wU$%^Rj1LqEvi;sB7oBwaBs2Z48`D5q=;%uv@$X9fG(?juqSYsby6r*} zoMO?ePp2vuV`%JqDOAL{GUXo0DREg$MI=m0kGLvR?FFB`q|C%k%yuxT#OXC(n!h!n z7q9d^dv$x!HPy#t6qS9R2({jDjd*XmX}GjQ&+Dv!4xlh#wa0V*CON93+vruv0C*T8 zaX0r79B;*h@Xa1d-_!KF$@6l@^9q~t;Y~sqI$19oZQxKWND~Dqs1z5Y%>Z zs*LoZladpMZ$PZ0e+?hV2-LcSKLLiYX{BWWfZ)H^S#&YPuCHe2Jr54S&4GLLnUg|! z^7z5ycU_%kDLQHwTFJcv9DLGS4TS;q=nvE^$&h3p0U+RbQ;Z|P@5w=|M#bbzQCv$4 z5#X1Rq_o(lTlFlWI-^*`U%2P93RT|7qAVp+RS6oKoK?p0ksQerysT)sq9zCA|H(XDh`-Gr^ z?Dl4QeJ^Kc7g~SKd)MZBTxfuYj43GtvY@2vsZHBerp(H0_gS`>c64nDRja-l5PLjj zq7h!r7ejJv>dl6c+r$3hTrLg$gc~Kb)4aXPqf4&{5$vCMBrFYrp;KRv#)hO>b-sBG z`>jTR00$RMuB53b8ORF(2nc}eE*#ddfj%wq6JCXIXo8)Hk0(IJiZc*}$^iHU1bmL& zR?Sf^)Bf}44_2=hPY3V@J(EH0Q~s*&z9di{sHk}UBO--L9``Q7gasnEduAelnekLb z$khs;<}JnDuVS6q zJAWLa=VxwYNRfLiw`;F0tmS&`P3QCnUql#BR?tf$RbKMkz+QmBI`d2JRcq4wM=kU2 zOoLoW4Q*p~6(#9(`5wU@|1ddVa%KD8NfDFm5(407D5G&v>1I?fDx@qA=SL2JRng~< zQr(}QDz&D7mQWTJU4GmSh<1PmOuAdxTUe{5aoMV?d&Hw^Geh_d4~;)DoZ-HEdB$Ry zH~*w%oVf{xesXEiFviGT?TQ$`K;c)anaECHIng1?+4#VtpFiKkGDXHFC&cYHU%%dFZvp^)m8BcjczPe*e8S`%Rkk9osZKgOal=&t zfIyw*pD6O#vLa}*ogvt%(yL1vn{4IbyXR*iGMbNBj#j{)J%FI3vwiK7OYcC&36U{tbp;#5vn8ht5*adhIFqo_%GfLx zCpc=Yj85WszUnpTUG?_9I?LyVfQ=73q;l8Wc!Pi>0!cYY`71kZedv55xgah+5ncXV zgIG}krNA#Hg_0OAn`pnF%wp_4ea*()7#ajWe8M>LiXxhat3i1RJ;v3HbP6wT>3uj6b>SgV{rjGg5UR8wwOT-NRjd%ay7{gpGWKGDI@-T_LGi4 zkW@Nh?`)zCp~=skH`6~8I`LJB_vU6YJbQKA>#L9Or}+KZ->@D}7DJ|gh0~SMcbs+u zE7((C%kElkHignLX(GN#R&Gw%fZ$GnZUZ~GySrnZE)bIx0D$g9Pmg6`W|i}5nqZ(T z2ui^_sJEXOph^pp)M=;=xRW3bCda}m@$vELqr+#_cpuEAmWTy)6*!2KXb{=!t49!0 zX>i#KInW5Oa4!%DIM+5RYm5wVZb##+4Gq)+d|9!LhtvA|FY_TRM@9*6KOe>iM>q4o zPt3qDLgPe0046CYlBj_7h@MU+-MrpwbZxcFTU&EmF%Fd{3_abO{W(#)$%%?TCmT;z z4_D(>V?-Ll5is~r=u?|-oW~as-~%TZGuuvlG&yoGv5X64D6laL zAF@_m={g*V@!^DJ(?x>aT1((c^GiDh&w^4Wh>KZrh`EnHpTUd&fagllo`^xB!b7bz88ku5MNnBQG1oq5I4@<1$yMi#ASvX&X$Yw9Bm1k-(2RF}ZNS3Zh9Ds)zurD*fb`!8sVR>N4IRQ5 zFLC4L2VA@CgDT8o444}HmtdT-W0ukU?caO|O%bup5M-wNjDcqtFR^02d|Dc~o@aAe zd4!MjL>&5wIkz;|eV|a?bVj%B8~5;=@UEm*sA3^fzcd#YcGI>D+KLIQFM1l@Fe$1VkR`R7F5uXKh;%O20}|&*+gy zH8Txsf}U^MYuz0>h-&xX(zPI(! zz=Q1W7PL+vFJ2!Iew9nY!7pW31`P?HKF4Q|a0;yO8}02r+eqy307s1~GEj7%dcvyk z6d$CkH=7aWAAr1UO?SRODzV%3D33F3^an9k4*L9bBv3jTs=vL`FUMM}FO)v72)JZ? zkr<~V5^yqIKK3r-{etDad?6FfFvRU$xSdgH_-#Jomi}qI`echx8TzuFkm}R`q!JCN z&Fa3NYmbU1#Ie_ECwp{7ouJlBFWcKE;Swk~3nvJhUo|BHhwR@jS3@T`n7Fjifo+P2 zs(OFpnQw-KWjsL85(FwIbV)v#(c4MsZ|K_|D*c>Xep3r-_}CoT?R~$CW4 zBW-Gqti>_l+P|GmC5DOQA)CpzX1BE_MkPBjZoXU>Gv+%HK)|UJs@kJfemeECk@2&z z#Fn7TXkoKE!~ssr=BQUk-Q|t3I0|g&Umzss{NH4y1h(0Xg&}n2tbfHT{Z86dhA((Y zXsVpETK;HwfNa2g@vAP16__m9c+BnodamvaK8htS?y;5$3W+8d8yccVnv&1ry}&V> z5*HOGbmiAV%RD)mJkpS^5Oh*rnApYnP$K#^JA$piqsLV7#&^r5@VbkZQi$jtcQ!#= z@GYA#{f$iwmMunS)GSnr8P4TtYJn1WZU?$iJpRuPsEn4)g#lbw(%IT?-@b{8mQVaN zKzFep7>=O${acr~r4*ee5Lm36V>n>(#Cc;2`sHBY(5B14P~|}vHTZTR3{b>$a2Y^* zeSVo);%I_ylY<*$qQ(rD2~P%+tyQS4${*?R@aPxFFGosuv$&@o`SFAVH{Z`akgBHl z$Yd&;Atcok`ej^?^MS!+*fa5kQFv{}B4habH0k*DYg-YiHehmQCX3(MA&V&v6$8WZ z*8z0QV4w%mxUkl%mTK_qVbg|BmyOQ56DUvob2+Qa!Vl6Q$=9tW;;cS~5GLJ)G$rBi zusM;wIe~!IwO>#$zMYE((S}me^D>o+nu%GPo~Poi1K)XmcyPJLsInbYYaVommN#`B z*5LfxDF`UDDmIc(W)%*{jeZrHGMHC#p=z)ngL3zHv zl!8@@$pg8|8c>vRI}wx?X2|>|kZ!s+vyEBOZNmFEd-)^Y zG&nkYy@2pQBn1VrZtxB8UIN%~{QFRZBJ=;fPyc_vzY7*pmjAtJ|2J7wAT;9S|DW;! zL>m9!6#s~!Ak@Z(zW?uY`z>Vtr8;)act4yfs%cj<*Mx0e;%wpnHSpHF^Pa&n`@G`4 zq?e|{R9|&5x$3owX~FW!a>NY1A)HsEDcMi^!rh9&W5DC^cj#2w8x|f84;}EkdY}d! z7CJva-|2-^GJw*rj|;~VXrBHN5*Gbx{5^YLviyX0AC4X_E{elFeTn{RB-eP1hIE%x zZEZ0*AShT!ZGMW0j45RB=|s&^lf}BZEI`$G0rLIP9uaA2X(=hGfz@5E2YFRhRV}SH zpOI}iXf`#Ji~y2!2RfV=f7p0K*0d-+gm)RTLxRf^;^<-KqG+$P3iu}g%Zjh!#u+@3 zi~ppS7wkv&pRmTH#J+RTQ3=%K*4oourNqW3#wPqt1iD8~|CjJ_02MD@8vu&lq!yn-1&&y>{ypTIIvru4 z=0jeSt0<)YsUWBaLI@SUetKP2?e!Hy=wFgj;Lz`Cz`qVImvXijL>zzRn6t4&ocga4 z1`?3+*<$Z0Ez7%O0Gp#@zm<2A2PgiC2lnMNy5G;|hJP8!p^8IgkUT4*u5GXL|DRZZ z_k0y!Xvb{*Y^2}ilUH06%ti7M8ea@)nOFer{U=gYGja$nPwamqp{#$yTE#C1^1u4H zl1Dut{gYvOs%@X|deDb2T#MA*p!+#*@qcB)zF?YKI0WwBZ~v}_`}Yj3irjI{v2S{D znye|A>d_fCVU8>+G$8R63Q*)q=jDj=UJPvB615dbCNzS5`0!x`Jvr38pz;%GP`7`N zBrLmx?_sviSN+_>`FJ9HcjiqK)SC0mh3+#Ipev_};b3Rw0Jt-hqH z__6^2NIx--aX2lpPIUV(apGF+!m!>@zHz9Q(XT^%DaAeCbIM!w>>c=!*ie63bsoMn zX_6xeri7U1@#4y8z>iGh=8KhneI$F&6764>9PbO`@MLR0beisq4z8G-p<11(`w z+urxN!lhx4{38%@GdCF6n7=a(>K`2{YcGxI6AsK4oKt$?a_8t)@1cbzuT#qElWfWU zN&32B`2TSH^nkPenstSYs*3PRgr43JqlM0TJ6sISQ{BA7! z#WP#49>jm83pf3O{)tWg{=Z^^`d1bmTNQJN)ckm5f-n!7L(fJ(rtiY`^4g|obAlE3 zW3(Ke&b?ayiViviT;ad#EiAj(I<%3mO0!Bk*T(jt_lJVpS7Qn&yor`7-&q&Xt-g{@ zGW7nU<2oj6c}AuXoQ(VXWQUKp7JnhgKyUd~Es%K1;3EbF_agmf%kk832L zKAfS*o_OYNGKv@v6_af>MGeZH)IQ%IptNrxOc;!xwVB3ZcTmG$t_dLGwR`QYsIMq! z+!8Ol37wwL&gU>4+eg>ycDi>H(Y^kO3w+Cp6{xR;Lhw6!yB`ZZ=y0(b34`5HHshOI zuWyQ3Ax7=2eAY6&d>2XSX{*2dNS5vuY}4yV3({1jJ+y|Rvf?OIa!?_)2(G))TsGB8 z^vE0Md}%o-SoLz|=IHcSOU@?SgmU60Hs(2Xa%$pY3?-$qR12p~7aG;`u90a6n&)d% z!eAipBSY%FoXES1Sbp}IAqTOnZ|6|pTHAjFgdWA@0PF9E=8;I2%uL?q>2o3cRP9rl z7gfPtTBB)A-@ASyQsWQR*#V3Q!LEuXP`HSMwtMyC{XMOL6qAjKpr30tJGg*z8;w0% zKeYFmwA7S>)Cb~$4Uo0DM=T(z5>e@+B(%MA^JMVlWC2K6EMljfrscfZ5?^NOF04E7 zYe`x}B^!c7*6Ve>SmHpvAzGf(bWRsvShjz$zTwjcCt$0BCM`vU)ttCLKv_(y@YEJ9 zFK4E3cS70TwWX>pg9I8t0!yhQEi}_wv1K08JT2E8rZeUzoA(sgMkSyu?NY&kxPS!# z5ZXvn8#j+3`57W?<59%kXWm}K&E)5=1J}f8%FXR z7l{bM%u03lY5TkoTuccpy8%~YgknP+c(2cM20eL( zE9%M7=trdPX4#kuln;+K#;3aQjj5~p1YkFcf_#Z!I@s;jI4i4Ufd^-SH+7uoL|PgP z5G*Pw!XN-mpUB4g+HI8#)5Cx_hw@;-NwskhF8x94d=3f?jj3T8*k)-NZ>XkxLs-AN zK7{fqC*yqK5!^v}l@s#?lczH%1UUB&rB#d=1EjkP8KT0n-(Yt=`S{ED4+-MW^+D*; zHr&X#{G*9yn_f5G{74%oUW&>W0#_(jcf5aHbh}rFZCAU^222rL^>`2 zPxR>U`~YgZQgy#17HmaKWID-UK|-%Cd8hyjb|ct1zo`*uymCrr37PRObzdk~j?WTa z9b4i$=UuHG8@O&3xZMrlQyn$zL)LVSj6YT&E;b8a>^@`gm#+@u{SvSXE5Ov&xyEIy zZwSUEmA&(IyXaOhSLQDe%NURD57DB1&2q;Sp@z{di|xj=a?vvgbeAkYlIZS9rb zC$`h_s%GFX#-3N7U_T@A6a6>bT z{Q`Y29;~~vSWT%p%J8zzySf?Yp~M9fx996;@2d}8+84sry64|DnWk}UMruv1yS!$! zE&Pb+PA?u(+)Wc?f0b*>NWr!E6hD0qnmn5!Syc{JU$B^A5QEs)eKXdPZ~e&ci)G7R z8NN%Q7oU`7^c^I zJlviQ>lVxZ1hc!GqLvp%Uzr(W#8)7WLjnTH}~YS(7BI>5;hvr&rcM99^hlTE+lX?O}p z+~mJJf2~gT18so==%u~l{I~hQgBWE(;FQAHvL@{iE0r?QX2I2oiKfPC!F$@`p&5CL z3VAw-e7{p6#&*T-i6BGdPcz4nz&ATiIVIZLwP6MYhf$cA?_E8Av*bsbPdPmLhLZi0 zK7QYh8Do2S%$1UCvZO%U^S!b!e2}b?j!{YTM;TwchLs=3sW)Lmv>A*#nv(y#ZZcuH zr#Lt6qKuYp1d7BijwU;PsF4?VP8?HZIpqYJ#w6$a6?}nxad|f@to`2_{C24xJ;WND zrqnSpII~(We&MF~n)>IC+dy3u!tkiC$y?48A&}kciTZ~I-~6mAE^A@zM5e=>VIyXC z3}~WlC=cu)pV*qL?}s=HEKV=tyF8{K@+nR4IAIr-wopa@2 z#9KIjq+O)|A&ZH^S*x+IDO9q;9%EIVxXrT33>GkxTjGA0Hiz&n;;Rj}+zNBAB4+MO z5QWM_CQqFuuwAjZ>5t#s47VhP;`1CWF2l{TX{JtBY=`Mt>Ac*PQ|VI0*9?eVZoz$& z8?_eIn(d`Nz3ND!2$vXOf9^Dq^{Ug?HN)|4P}VP>YHu+~{F_?KzZYC5Gkf&fDvU?V zfuV#q_lr#mkbc`{@@9pcmAHl4=iW?MzV?b&s+UtwDx`LmvO0A;MPqEhkbw_AlBWfE zzmc4-#wZhE5A@GAv#5Doe5NJ|ubF^_XZWnvu5A$;t9>&q ziolA0;`uj@7^=ZzSkyawqv3`D$v3esXrr-(86Dvn_4*6YZ6trA_H%G?k~;!AIs{5D_}98GIpXq_4YHOTSxF4K zW@2BH>!pC>p5yMj$u@=gC<@s-R;l=OLLU454GO~K?TiM?3JF4?pwUN0a5M~bg<6b} zdgknct3jbx8Cuq!A)lB?!0px8UPYQXa+0{z+I*q3>qnUq-N&r` zy&O>p!Gp=uWl7=X<`8EY{r&!}!PDO~$oi~3A@oAc``s>2uwCIK&<#mVZM;g?Ac0Jn zpEYcaI>E8k&obYNfx!86A*v4_N|XinUPdPwv+!{-sh~G}@RmMM6D}d4vNu~&rQuyZ zul&(L^LqXwK@w&0|0TgheX`M_1*?Imb^|`3owFsR4jc z%iHv(-v`?V8D_Vq+KU?RJiV@3#2Wxb}?4qY;LeVt?-zv{m@g47@H7zs~*40 z?w=C$kEF8K7cvE<&y~6ma@ z)a1#D4QV?~n!*{s2$=f3;_82%t`_keN0H!yg@eK;v!}gL5fs)nlq4!MG1bbB$Vr@; z+(rci6&4qNmcrRJDKXntajG6n%d+CI(Q)k~i^_las`bDQQv$aAWjWX~iCKsed-v@g zd-3T|rcA`8zjG0mCy!7bT6@CmHptyRVtsKEA4^?UAqq#ttnn;@b#!M>mKt`+taD4` z4~msR>Bdf%*W?`t$MUwgc_T70F@;yo*Cmq{bw2S(->);D3kaQ12-Nj*s9XX7YHvcS zUrP!w3oEQw-Do)2+x+HVgia_%VYv4n*WBy|ePzXflELMxzsj278Jd28%0<(??GU+;faZcf;fH;3`L4qrX1pK*l#o6YqpaMCtdqyv_nr%<{D z)Uo7!d+|m4D~)%%q$4hLQe3>eKcyD> z!*07oeWbyA;1t*1_*2Mj{e6H0(SFNWO5re17XL_gZTJQL&6pvtlzYjYDhFWC<9 z@M70va+b~}kY9}HpvFB7dQwh1os^g7MeCl$R9(IaLsU_G5Q7Ulz@({|6fV{bGNeY< zZ?P=>2&Zaqs!e2|s*SenUOIp1<6XP%KQ1+bIawIcNgqd;Bm$vRP=pR%vws;&hA(tg zHpS+oq6>jk!ZNXd1pIP-RG5VTpx)0b(vmWg3PCE82SPy0#P>szNQxg6BGdBlMdU{W zG64}74KhcEhiO*-XiY0`LIW5+GfD##RT;#EB?rdIj@N-cE^m1(J=Q1r$N7^B8fzut zmWTV)iu928NtTo}@&IOBasVkKg%qSBqWA&w*vRNmiFr48)DrDPusYOV(x46!66JkV z=4hnL+HiSD#mQ3PZ{!jD@eDM_0sF^k)Uf-_E!Kn{2D&yjLfvk`s&n+bmA5)#6!%KZ znw0MYG+$WWQxObMvIpzQ+^TXMH0jTjJiXZ2Syl3v&8zwuns?j8SWeEvn!}WDF{9Ih z0LIq$W`i7h2sanVdkeTZRb@7c-Jzl&p>zmAJ1%r+)X_@{OYYW$aBiFLxF%w%O%)t4 zL7}F5K8SLoK>?_bJl+S%@ruej=+66V6L0!^MjB~}@NoAg?~KAiwh$66 zJ&j{rlb_J-TonVD(3aKGNqZ8ejCYVh-=y=1i71{J&vfJCdZ@7p+k>tT~Y%+>M5%#KW047 zWU+G#-2ZTGkIgGwkdG#IdWGTpb?8xsbXSaKiR&~~a@RXRVq}u1;uHR*%yM4;LSH!` z#@AFJe2%*tnU?dZbOmM&a@;JtJPRY-4{iZ zK5FH6W{fYGkVYcKM6sF7BG5sf^Xlx@L7pmED;TfIaSIPu66%0K1|h8g`bE& zT>W@3AmEh+2p10wiLswGWHvmHFZ(q>^%`?}UyrH1tU$!uNj7dLA&>{R%bBa(2_%X! zLx7*|7b%#gX_i;u@#YXpcjf57xqZ!>In{NH%8y+*Lr6R9>Nu#y#Hw;S6N6c|=Z-fa zLECy@Ni^f?E`j}{u0&oI)G{s+vBZq=>~#fU>AK5U1~jg^*dFh=8b{Y_Dus<%IGa(E zsM4A)NgwDTj4gA(lS;_*UiNB5A7|(qA(6^eUK8jP|3lt=H<~XPgg&2dDyxT25GAzl z+LxynlunAKw;UaQX7Dk4rG9WiQbalyZId`tZU_Y0uN@lYZbq`qyM?*4bX5a8cjRP} zR+UMx5))HVH=S*W^G2lJwzGtxpe)z5Fn+gZ^J590Ut#p~OPI|NBxK*FlY{T+6bdq| z0~_Ltsj(h!gDqOmvKNX^#{DGM2(b274=`hUzBjlakHtsF{^8TcX8e|M;K~9My2XrZ zZ+Ewe>(VjT^Nxk`ANv#1!C{j!E^Ge3iY_5})&gdM-bG0=%`PDBnzm7QErOW_Wi>rf(!5j0DP#4b&HWG!Y{Pld_M~enO^C{=?XQBD<2cHQ8 z57QxMf-hF;oF4*I9dTzSz#BohYvkQeH%FRJuP7o7XOSOXZnVDG+O9dqBrxOmxViMu zGF2b~OrTh#KOc0vu2X2_ocO7pa@2M>fVT0Hg>u4HwWYR$TEX`$9?x_UVzlNF2et`R zr-hzwP^g?V{>Y0t<-Hv;Hxh9FO91Y;(%wXrlS5zD#*tifuV+>YhTrsr3w1>#&jT1S zTwe-$9Zk6`nf>yBt5sQ$Y4^KIg1;AfU<CD*N)~qFvKE9^r3Z$3zhJJ{E(P{ox^w`$zzC%c+$WF}d`WKq4&cGc1 zc~OC2r2?b|rVQ*~=A2}9ss^K(ZE2G6kFgSq=2p8+wEC-)Pv~e_SH{L>PQ1<0s|*c! zcGoTDFGZbU(1PU$t8I!t!v2o+i? zUX%i$_^>|A2@a1EZs18InT=$NdXd@K>-0KA9Nx$}16DC2z0OcJC> zIGKjVzhw3UQfna-8mgdOktQ*C@RUln>>46MtX!^C#2V|6~;b+ zkJD_F?O>(=c>PQ|%ll&F2^@PsqK(Hl^a)(AaqtNQ&$@tJPQlW&r+#EG)1di}X-qD9 ziT;Oe{^gY?E(qx#Hu{h6{O_X_ZG)ogeTr_i1-tM7~=}`H#t=(hktS z#3-4YtGkqGw<*>|U-ckt8BeZQc|$CN@BeXt220pwoxB-xS#rT-8(Rt!)~2zbH~ZW4k7 zKwP7wSdqv!OBz@GznH0Y?-gFZGzDkDY17S7+%Lsos%2stvO9NPtWGVe9gmjfu*n0A zQav~Fp!0$Q-*cK8dO*UJRo_wvLtEN^wM9E^>+vJreDF83T{;bA zt%#Nb=_EICC?j83v4Wd0CPJmUa$(- z*}Vyua-*VE56)rmxG@-wXv#Oq_zs zr~{E~17!lc7vdhgFWw74o3utMI+ymc2~C$#RhEN4abupqW`1UPLENk1uB~#Uy_DWT z)(j3kmlmD%E;ci4kq!}w141JI0X^$q{=}!dBFm%f-@UqDa~u=L1gugTO@8z8)HyC& zfVvv0C^FW|q8+B=p@m|}rBpvK_kg32z(c1T106Q^h{_-D-#1GRx17$kD>-ibFv!p} zCuY<~jY6(m3z`Q1uI1q{!GI8*#Rz?aH#jiFxik zVSNF8;c#_`Rpax@5N81q5N>(;Yoo|69^Y#tGA4n?xGE+zQXjVb$vi_JIzndo?f-+E z!oFOTlen4x5bNXec>tfl_ucO{1TV$M5CL06nk#>_5do6!?(XP-_ib>rGQ!35{AZbg z{0?|O5)4TYwu1>y8bxSLgUJ_dkmeuj3uJl=ro#iOHH$Fhf_pV_pQSxM6| zyq`1|KmIF77#5J4`u2}6?$`7qIA86$YP&d?NWg(T=Nn_=zR?~&^!3f;V3+{DM@(2c zSOqs_;DaHgAM@XnD%3XqW`JV1A-B}o`8m?}2WeNGie3_Eg6P!UpL0*aWeEU5 zoD$IzRNBq|wM@7aQwo6UC-hHm^Lk)87mxVXYaKnq>Ysvw%9^?--?H8`v~2JgY^+rS zPP08zR5jy?U-vgJILi>Hh{e?LK4n=Kb~5Q-s~^v*B|#hFIde>Sdi_;b^dRLFIGhVp z)5-Z|xQy|iU2%~8#QgR@gYe^NY9_^&cS<&Y6D`2l(t?`n3|rG$+v2OZ%-~$ay#&)U zr-eXDfyq~w3q?Ij=;vHJ<(Vbv*Cjqs?|e8k02SR7V?L5=&&%s13DG|>`5|@(qtfp2 ze<2b(uvTgX1V+7szreS8|Krb->(Rvr!<_r&ikM>Uf=kn_o*_I+Fx8 zo;<7^08q-l^DiZZct2$f))xc1u0|0I3!%%+)#{wKH&Xg96+sLoCM(Xft*^WA;P7tX z%FN8(>HRM(X-g1dI`f=*781ZoXy~N@d@zmT{QFHiau)lNa2y0cwRoMOWW+XbM$&|A zIc(-*a|$IuF!u5^@``XFR9ETd_JvAre_cEiu<^Ttn`hmVIB8(7G~*Wai-#-nLY4potbOR@JW zQ;v4CUQ0Qw-=c-mw_{RlqrvglBqr;NO@d&YLnXWizTxt}djW9tFi-I5jLJ(iT?oqB zGvEMyr5QY(vMDj@GInil$H^L+*bGI$S=W_&QgIgY^R<(lj=82%>+PsKj&IA&7gcxw zz;muK4Ejg<=Dn`hS2eXe{e$Be4F!D<^jKZ${M=>x$?Li-HZcIS1yRa`t`|mnAC?CD zJ_~So5;=VI_o6;n*gjHvz8w~eT@OCe-_+IW^t83)fPb_HbD|!Tq4k!WK2JOB2DDKQ zR|d4YE@Zme?AfkybTUK`dz?(Bab20{?3MjmTlYCXcOGLf)=Bu$jpMpDcGhz&z!MhR zz!QCvFmqp1gZ{mZh<~4!+w_l+N?yrTw%&Mn2##xFal$Df*Fg!p&5`cO=$`!Yo$k~k z-+(Cj-_yLSI1g41rs*U}dr-^OhE$SX1jE2ls}MMHg+RG%p}0z9Sryt9Hl9L#A(yty zlE(;IlXSLmGHp#iPZ^#iY%MzsijDoX@FjZuins2|tmP53h;lO@EPe+!cnaA= zr|faz#{Ie>s^yhjU7rEg>7)(fns3~p(XDk?szFo7b23rCFbufPR!-;}%%o62U_z%} z(#Auz{{;d7TU@BCWvq-!6kBA&MC@)hbypKFRh@rFoBs6ptCyf|D-hqyDCcUv zf&p3HJmGcGq9>(qcBi9q$B|c__<5Z_j8EtBO(}#QJXiC?I(P8)pN`$Bpf^;cxyclg zo1U$Cy-`JAia&ka#=FazRFaX`O)My#aXe&>ATX$LBZckLTS2G_LFQ0NRH`H3SRp^E z(rH8ue_6W^Uqr?)q+=?XvIsD)u;V=Y9zK5U@>aTH)#)wc{xI(?0UG(>cE3H-ckfz* zv4n(YQ$$%|$m=GlF}ycMMU;i{DRp+qsJ5**vaqu{Fc5-?g%`_{8#a$gvbnX8JVfP{ ziiS~}hF3--Ge{Rds8JrKVLqNqj5rVc2D>g_oU$onVS%de3N_@1%Vxf&6E9zd{d0Sn zJjAeeios#A0Ab;RyoDd&UZmot+gOTwW6<`b2-3Nz(0As<0CUk7R0`W_q>JuX5GB-a z*V)7^YFs4TDG}~jo*;z2$n8<=C2m^UVd?ij=}Q823;#aY^~m{R_%OAu^5HeQbKy1L z#FMW}y^>PW;xiu8f`Qg=Ki!0?-$FD`e8@bTlTzYmTyPgE)GB=ivGx7Y!0Sa~)7AVB zbEBCrrv5p?l2S5oyz5=zlSgyn;c$R&>M~hX06+PN2nNNLIYz$3ux5*jbSzW@5<}5J zrKK!3u=WK-HaGX}w7TWR5@roqu(mqICaBH<`(2{s^DAeJRg#t(fK&T;pSIML4q@{=2H4@i|g|u*5@wS$b)@*C6fXDqhzNu#9jlysef3rK=Ms-HU5_D-}6QYng zDfNRPlKbvVYd#c6vtYY-z0%q%RGshsOYWNM$ZL?DRzY?wHv@Rla1EqNPJKAedQ!A~ zN?rq>w0K+Xy@**NTv@F6(5v9obLjQtEeWqt-n6q3W=x$^(q~+%$wo@}uFbV9=mh%|lA%4gLl2JxBD49a}G2e>R zYr{BWQ`LlPB>hsG@+?AB<%uFH&(r3AQU6&YCMpIiZq=a_e)2u69ugW-SyXk~)rJ~8 zRo#?a|38$Sbx>Pf|KO@ z5M06rp7;ID&d&a^dnd!>CfsvR&OP!ypRZYm3PQ_+mP?Rul`v{(*eD=FS{r&svm6JEE0N&@%pWhR#69mb~#-OUbkdb-u;e&VJ zTd@|2kCnG7?K#h-pzpx%wbVW%yK{_^o{5ZXCC1B_7XAq(Po*S?eSD^76Cr#e@swOm zNKLAZ_&@3yQIyQ&0+V)HS4-O>tR1;ZG*_LLYz~56c95p!l|vR=^{ss;!KQgm*ow#$ zbJF02pcC_F(|Lc0IW{bPg7xsP)0A*ZhwrehxVfu`U$M56no&_wav{BIiyU+M2PS#f za~*d3tz)u5rhPZILE%uM(ZcYs)Nqajx8?RoaR*1^L4Erk3!_;Bs#OzyqV1IOa(P^{ z_WXZXhwC#ldvrPvNPf^eFZOaLpNQq(33Xa|iB@cVe20VbKH+3v#=fgVX!86TFU2ov zc}#c6znY@@Zn-S9E%vDa8ljq@g~4=aX?|8!SDEO_>5?#{pQ&-MnJvTZ$<#&jR~$Xa z*8U2?U7~IH0tU50r!Dz};=JQ(Gp%#b^w$snWcq&q6_e;DxUj1fJFZ5T7Xj%|-=Lm}p%y}f6bi8H8#HPW!Ae`ImXzrawL zDlQC+MXi(pv%?qHeH_~3`;c(HtQ!Sp1&7$4!)z)!$+d$ zL}jDFDL(6GVXYt$A*Hk>QL%%~P_ii#<8wBVx}LIuDiW_-x7D2)neR-7ieI;pc_IVc zftqRg=3z(&=3ag6V!>38IkYAIIxAS7gSTq3*6I`{N^jF=AB}I;^6j`BQL_g+b-}3X zt9v%yv)TIiL?%zv&x$SWr3yC_8F?i8k7H*Of-Y4;1E&+lWqBem!HUmOY_ZZ^u8gA` z7BZcgE3p4KS>x!}ofITTQ_D%vVD1m+=H*gF%Gvnzt-T~T_7@(Cf4#n0m?Cm}!#rDH z^8Bgj@X*(*RPW$|8pC}gik~Xr#F89b&pBR>+pP zmRO`ZRAEEEh?noY_6TH%Z!M%qj{B2C3I&BS`$TX9ywvRcj1A!aozLWSy#`Yp-C56j z;Ms9e4B17m-cyl*lwZmG=zKfub<5X9w()nKMH?v%Dh&7UmHVTq#3dMWlW6c>FhvH+ zajFXfp5Puc=IXqQ1N{aRN|%Jh* z6yi1IN8|V2(#BTr^soT~rF}~xwFO-7;i01SwSzSCNXOk=${b+azL~dSd&SPIitsP8 zxv5Bx-xq8++H*qfWaUYAd^1ct-MO%2*mz^+9(DaA)^O@Q#K8k7CeJJ#G4ah--&NHh z#eOSUxr=eAGiiL{=C`lf0~)a`r_9&8SM{QNSqPJ zET9S>i^2~J6k`n((|2&FNH{-JdQ#>>LybLA6H-r!as42F`>ACUp|n&bK! z>MYDIoh;zq@ciHWfd(K(5_}<{!lKWGYYtfy36s|5N0l1Jh0WWsAWhnRU8tjNn$i&1 z+@%1hV;9^@WUy3&OkQr&)I1i?;}Q)>Kt;Lae-UT^ZvKF(WIH!|CbCg4>z^454-=O6 zn5cw=7n(SO>$GeK_sJpA@(#!6?>Dj_r=(R}b&EL#l<`=Xgiqi(%EW^!CRpg;mxB_IiOlT`dD zOK&{0wPw_*MTfg?W@_2<*B4YJpncNC6|3Hi+RpTn;0-Q^ze-_+Lsub2qhO^3w2YsL zA-aN#wMWtHw$Xd6K`ei;`D(5Kwb%!qFg9_!1ocEdRJ^C=B1UxCVU30GJyiomUpY~3 za~tDOuo?CX?$S4ty<2JeE$bhSVt)Kl@dt6w%rH7gInco*p;eM(ZSmEBNJ!dt>_+gQ z6!X=@GDO=!r$N+>uG<{Z?7l*f9O>ZCQ{`<1?tF^U+IW$NZ)~&l{e0K&Iex`TGOc+a zaUU8>Q9eu;a^?9^@<$dspU8Q4XR6CSnIHc@zYPXRgV-pA<1!dk=S3>nCZQH4d`|*@ zCQULT;PKJnva)d7eSs9cY8eoDU&0jdb%dSqR4i0Q;k^DXAO4ecB8sy_waHBJ7#(Mx zm6=IV0MVySms6jfIn4A9)L6AQ<>5w~8#InF7nWByej?@c48`>)8W<5UYhje$uaI3GW^g7XY+Ud=Xypk=^54-AJ>29j{-?XAwzBkYtxGv!d}CK5QG2=wf7kZ5kEj*-)}XQ%?)$@pEdI zY6%H6Z>*oeVRuk5Rw?x?Y2haCPH1+IFu~IN-Q7=pP0sO@)?w-QU%zOH7BYcHz8&R0 zMLAO3!QzrzGw!>!j0xA8SVXK<3730$n2Q>wrPB`$MQ<_n5_6%C{lyom(d+$e@w#Wr zd(myI`IC5l)^uYhkEaBi%_sM4O#|-@>6lN+tRGa=JJL?F@DwkOP6N@?Y=kcVA#fv* z`n<~b6lK}ul#rtG;aMl-N~GNo!3}QlLrlk%@3XxkZ{ouYl?#kIcn_bH(uKiR0dMhK zT`0$pVgLFgZ)DpCL(#%^b{XFS>^{SK4yM4@$Ydxs1hCDvuIegdP&agCyCSiVR}t2j zQhj2}Wv72@5WwF1UqK-?A&VYIFt1%q5Vk;r>L!8d>pQSqEQ|#Q<{y*U3Z3c4k zMQ(j8lzXa%ev>6^(ev?_A11sVwp?!aBtuHPFMd>5nTJ#KsM(dw@K)&_ZFakf-LMtG z!OjFIAka{lVER{8+q$;sBATc14b{vz2F=&ysu5{uKZ_QmYP2iddJ4!HB{yFUd#)b| z(n-+3alVf%a-P`nz3nVX3OBW=H2JJf4dArpcmB9CYg61ZulIhF0_!GhZ_ng?3Sy9b zR3|%+P@-gsd!-ieYzs|a$Ccg`KXSNM9M;fR8%|lJEj}5lgQk=F3YQvtm#taItzHxBdj<7wIzZ|rq9nm~EwUHxjTdgB7|JY=JBW z1qC{9g-u-Tbea70n@{6Is(@B{*|(#~DUSg%eU)C_xKCKn4Q_wi`*I$Y*x{;+4hiH! zY?6OL{->|fGirNm;Gub72s82&S(dakn@lAF%b(6W0Q2Fa)+MfUpvd1FFPDGAPKru1 z-|3S-CJ=bM0OgXe{M3EzF>>VcTE~Jmm+|&3ld00=_Gpa~@o5{wgsw;^ui3z~oyVxt zP{}$xd|;RN!t+>H1pndsRw-F&VzI~2{V;6mbJ(Tduh5m7!^h~KtpV@5zuZ373kuqD z^S=tfIdQWgq33>ufTUs_+$B%9c(*)O0wMQX8fg@YEDm4qWD-18qw;6V;Qp2|H-c#HikpHvPZNZy>uI(!T(Er1OEjrhesAA{44@-k%y*9) zt!%bQIBqxW>r8eB|^UWSc_`kIFpIw1=mX386OT8Na}Vb{tnl+y_{GbL7++G zG}Kv7^Y&53ojWTE)C1v>eJ|Vu9l&NH=vda@!Xs-QDtbiefA#0#&9b)MEG)mOiLhj; z6~q(;rS<-7 z``FZv+Axl>6;x$cR9>c7+X|K+Ph&*s@9+X)Ab;zHz_qiirHv!P71GanCNed*ZpMujUI-A zzmZlR9pb$lJE)Q>Q&1l>)Ho<@v1_nkP$nj+UX<=xr%+(>9bG6Pi zt_2*#1K|YMt$j^XVkA=s>n6{AKmI@&pCVVALW*6T{j<-lgP}G*j9;Z5!%9U7-kE-S zP|gYd%Z}M6+S4x@nx@bP`1DxM`-q6oOOG8vwN1K6y8d(*yEQl7+UrB_%~4D0LqmE(fP-A)|U3Lrcs0=+J(n$zlxy?wxwp z=y1L=%R!MG-vR{Y#!K?GgZ&d{V5Abnbg7oz6a>=zD%{QEh=6YlP3>y{0hX|aZDNBgsQVi}D3u2q#}R&@KWAlJl;6h#IW78VaP z^dE9f?#_1TwR-M3jLP$3P@98v?WZG4*w5GtG}!9)Z{rS*4F-1Aj6jj76BkNXrUS4G zco5IY<MLniGNvD`B9QzHMIhd;%noG|dPt zP+U5EI#f=jKvl|1taH3I^PJi3PDf*zkk+@lNFAP# zlCJQX!Vynzpz04Cd*Wp&M*=YJCksthdqq)izn}M%^TK-E=c7-0d~V2-hl(ID5(Lkm z`01E>PX4-Bc$k}fm1c`4)14eDJ$zE{){(QXR-%lu&ttgW#ReazO~Z%F{ykg^aV#59 z6=r7^$guUBl3Cd}xLt}za$N2et4n@MNYFA!@mVkW@O)x$DqeCMJ~9jQf0$L?%+?)l zhgPY;cNH2!cXj6^-%B(=_dGN{rPU`6Orvs>aYG$47{n!JLxRZw=c)CE@9bahbGv?# zV&f3^{Bu0>Omm@tIhF2|tl=vVT@KR;1qCpgqC4-fvN4*kSrKO>#(D>BSa!nhLQcwN zzj~$|(CTPxE-iC`{XdOF!A_51f?d&F)s5AH`0E-JIzV)HMs&D#fsN*dm}!$!9Cu&W zcSYh4d!0D*eb1kvIm7u(3r|;9Be{kOm<+;R@t-I0x%f8vf(n>{XHiu{bk*-f&WxFw zMwpJT?1TU{f#m@sbjaVF_@*{M(CI2;u&B9Zv3Ut@v1mS|Hc)%}@%eghWVY zKW2|Mifc%<1($;&-%yvEnm-S>_d*V%)sppRwoD#_$HnmSpKp|@I!&h^ru~C%nZbPh zUqRCG6scy05DXumi~X~UXOccbGlsWE?Xv>#zXNfe3%$Z(Tyq&K(|*4^{gAi$Y;0i1 zRoLXBe>gJ=FuIRttKsY$#%~IGspQ8d)bFQYFh5^#V7IRomYFDVn*G&@hZ!8jO1sB zB%N*Vn^>&OfB#Hhdt+Yqb^8*^w6$t2j$ZY>y8LK+xY5t8zrOfonq1R&#({j@^jA_` zeZH&12Ik!I2GZNTVd?E&mbh z*U$O3#N2A^lF5a;eM7Vta&lAwVZsrxVa_3dliOcpJBa*b9y_ZZrEIbU8isLME#%wy zhW3x=E=CMCpX_m1%>LZA>PaJauPw8r;<~^jf3=%Licj73dKt-CD5=D6t!OauR7cxB zCco4Y+0lQ}hj#5oDeQht5HQTCE}uK!5lnxmiE|e9BCwl(eJ_+sqTM{7jwv|Lg-Kd|LxfBN(~IZqw0u4;s@Kk6W=92FwqY`^h0dnb29d#Wq7`6BtVuK2 zNW^`{N69zvCq_@7Jvy?qPoU{*dtCcd>N!#tkMMnsHarp?luIk5w9`{u`7`B^vOXp= z`l^bOqkm1ZJx>gOBB}^U+V|GjOsc|JZ=seq^}5=m;#~Q&=~yIVlM4xrWXB!u*)kCH zIw%b3(2HE|4cTjo2uJ_Uh*uiPnbHccs+{>H(%>HnaJVQu6Cy45o6yBMhI241rLr+i zy!-@s0v_yTR-uuS7x>N=Uws0cbr|-&u0hUgxq2S!T2npmb#n66Wr~`&Cx)7h(t(56 zv2C_}RnW+85Ux8n%w$dVnDm{YMxJSiggvqIqjv_N1Qt=H;U=FN5~C@Z{hXHk>_V2Ycvy9hvpf5gS}?Iu@xlQ3>z;4*mpKe;nc7=T-byVO-@Qt!Pgee@PH|>E(?iXecPI z4nqNno<^rO*~^hxT~<6Knzi7WOI^hYD%ESWKqMLsu!ZS2_hilZF2;9#GLU|=d=P6V zG9y@!eMDPopC+X4cB*4HnWGUe6USMOoUNjJT=cIm_`FyT?hk7pwAcBE% zgnRwv1OjEGJqIRQMdT;S4dfx&q4OJ^S53y(QQfMgn^V!UPA^{aDEVXJGQ?U&N#~Ym z(XsZZ?0}w2v=_%PW@<6w1?2!@RdSiwO8SZkEb$Yy-m*rrGv)@-WB7xrWK9#>6;G^5 z<0{G_94dqi9KBd56ii^T;{5%<;qHuErr$=|)Z)rl`rkJkX!2-wPHR%PqF;Y3jBT=8 z5!!o9A8^a`Tm{LV`j}RM|J;i4u`UJlLCaUVCPqf%o)Ib(@6otZ$@L~o&-AGI$)*hj z%CZ;FEH0atw%eqjl>XNiK;>?P3Ea@)va-71HsP+2IyEv?1&G?h$fhP56#K)oeR0qm zcStORY>>$7?`XkAWiXwZbG^g0=M1{JmQLt3Id#7u0Ak*P+$eIYqGMQzOe}^-eA_zg zr=!cUlaTOKR#8c7DlY!Kyn3j0`nK@)9TFY3t4O)fYpm}ZC&ymCAHc`8W4KTa(bF$| zcXlx&c37{iJ#*~eY>n=ow|R+5Rp?mKHf+7qHIQ=k7?rzR;z zWAPk2FPU{^rOJM<9Fa`n;CdG}haI{n`0}@UG9RAdtPjlxb&c2ebBn~mW}ypyG%tY~ z#h0gl@NwiGP}?<2Pou>nYO_#V8#zvmhs*NJm|vttq4O0|n`&)c52UPKz#8>GYowgq zWOB(b5PD0NRHrf@99^eY%ye{|+|UEO-L$elk;~oYJZUw7)@YS#h+HwTjv#(4J#XVy`aCzsP9s_I_x5X~=~x6DP0v35Ui&*KPa$Or`Bed>;l+$#iFv?XZH;4% zGrlBw)`P)>a3hzN3%&TPuiQ>R`<#hZ z(pwg7NlDbm5gfk587@!xeZ7$2DGY%@=zr%#EjgLdwVZIIot_R*?b11zbq3dS*gNOk zk4E@Z7e96;n2`Y{mz+t~xTr`!F#yo~j;Hi38}O=}>jChjL4lS{gJWIaCSmD9j=8h# zR2g^Uf$0JTiU)*fSVVWGOd=ypE@CXD{8VPW3EjP3en649`>*M@(q1gaqrRZtYBXdz zsTK=!|GI~M)iz#%^KP7R4MG7`fp`Td`TOw_lwSud*$XcG$`Er(*Npfu6%Vr}OCOm^dR-I#XhQQ*B8~cW24DEwkE3XyckVRbsn*xJv8*XU!jL zstX+3F$OL=x!8F^!X9@k4?h*lad1=BPa+7k1ZyY5YfYUSfFs{^5_WQtRGS zI@W1v5X~dakqVSs6g*BoU_heskk*2rRNG(Jzizng_}pf6uV#z;x^DN6+WxXSQ}&MsPi@bz z7Tx*&-BOLQqdY*F<+1jELTNb*)#$ifiWb-5;2ZZYO8)PS`)6UfsvG8nF-JZv)DL$+ z5q|bBNb)6y&xU%|><4;uU)8_lzpBFl)9$P{3`nukukZ9XC7r$DF3)UQ@wm}?ESge~uYz}j@ zXkpg=K2S1u`YAcyYeL7xbF)%aKnX~4X3g>sMP<1m&zg>STYhb&a@X&nnPg3e>D41s zIC_0&0NXU4;WdTW<6f{8J&YER^OzDe<4s#`nrNzizDv6QAZK8``L}ysMVGS9cZ{~g z_wG!Q*VjA2W;RleM-@@h|TEP`<@7Z%3Js7=(4RKu?^hU8?_rq*s$84*_Y%7H;#pbr_Poqd&dia9u0&e$`(rjpR);^ocY1xF?Um;z;L#7@+EG97tU(x+p!=Mbrr# z^GFQ9sdrWX^4f^UltaF?VYL0&50c@($B}5cu+r_#;bSX5e$-08JzyU9-|vwFcS<=e z{gdB=X#Vfv>!KiyITE0Vbc?=daT5aqPX(R}H;aA-!5*O}me zhqLV=%iSJZU?oOy*R6)lVE<>h<`w4(JbZ}UF6%mLCN+g|$?{!e6%>Y~qw%NbgwS*P zw*Zwi1NKwT1E;ZMb{`Gq+kwYtiDHoYIu(FjWTtOtdp^n@EjKT8VLu$Rh`p0v;|FW> zR2uAib2oRkx74u|lRGLW*VQjrTn4H|#TGFeI)t&l1uzC<7{)DHe1wmVvDE-a5p4n!lfn|CweAEwpjZEf*Z+u^Y>g~4iPdmo-lpG zyUUkj1*$&s(qlu80qT#dJ7=9kogHG*@-kD6JqsNpOI>T~I9hlY@OuEoIO4XC<3|lz z@3>s!r{CIRbqA8Z7mO=N8-`50UsZd6DC5fC4O&+EbNJEKyz0=+? z7vl+4NMt{zHU>&ThRi&d!{L)MgQXAncd0Z<{l9}-4zCX9Vr0ay%UIep9~P5VACh=G z_kk1iQ~=`%-gnzaHmx-a5kkMFhIH%>Ebz%@<}L#5c|bzg0wI# z?--2ax{S=|O^x*^Cy28S3*~a6!`Fe)zBuvxez2ADccZlvRJrzGGw1Ig3B-}xB&-|v zYOK{&%I|N82xqJ08aIdT{QP(~_*q#If0!tu_UrxQ-gmd^PH<2op55(1>)P4kI%%iLzA3u`n&$l7yj`L16~a24-6l>X$~z_ z*(|iw2mASXG#U&Hn6T-o9!bo$i}4QJA?E7o9nwh|_2N?1zwIecEKYU~KD=h<*9RmE zpS1b}u-i0^HwUCXM#l=U5rkaOJ-sO8PH1>8J>DTfo9duds)lCWh&?xp25_xEI z-`arqu0x&bFSjA&F5KZJUGaX25)CB<62VCnF@)sNl+%SiUgi#kxjy+6EXD1HP1#he zeAGj|*+r@PZrv6pR6Os*-p0R5-J|$=_1Tb#^#D2D!dRR3_!G3z91lmeTn>ija@E|o zdKDlVO>>uX-SVk>*e~G&;q{SuEFpoi$KRG9vGIQW^Vte5lRyTJiW8jm1LQjBiuy4v zf2zPXA|Z-`a8|8#*NvV2%glQ**e@ximep4}k{X}#np}6jeypBM^I>Ar4pKij#|NV@KAb z)Z{(WjI2CK&Lu!4E3l|&rea!TcHfo5OhI=Jl4JO8iby$Pl}q>&qJX3?wr~BaiZTr~ z_`EH1hcgv!S{L?M7bv#(94wBHwwLXAi2$tAq59)fySrsPLTvLrRC79+JWNYp)(Bj1 ztf%evB`rm*$cHPpwiceUpw4ddtl=gT7X=-;6TcJ2N^XJ(+X~Uo>>3uqxy;qc`HZuFTq9C6#IKND$PQM8l5j5A;};T zlGrAAFB_D#R$4|=JiDHN@X!EQX&Kw7+DHC{B$l#qq50-lLg{E_i@+p96?@0#b1Zik zr%Lb}?_!pD_GFf`zy}UI37HbreX|aZESIFW}|=YC=4PF@>;e7y^0Zc z!lS%Olyg4&_X9eO7v0t4AHzV>`6};7D%x|h((wutVq|j_wR1S*Kun75(lo}UD#}^v z?_}HY>^7)6RPdc5RixT=T+#f-v5PDjTpNgO%&Re!@sqRd`D2sMp}_6VX5qv$7z_A+PB{(mmNGo{Ml^3`?23ry4i);q}}{fy-IwoI8ig`+a6)5gDqLlY zO~11n{9@ih8~TVVZVUCkI9fn6|Jl*x(xVy1^06>VYnN2F=ey`%xYXzS!fxI-w^hk} zK)vw5nU>RKx<=kHv(w|PK>E!@N|H1-7`OOPX_@eNaAUKy)>`lxEWqATc;@|lX<2WOa2dcAj zCM5ZRS|WVPlC$hUtMN*@Y$~It>DecVG!acHq%Q00VwK?#6TWwI1b0S}dFR>J;*9g3 z@m0MmZtir54L5yL`C_IZu^O9=L9$L3NhKQ-Rg!v32NNHR@JpUQHEZLzR72s&71=lZ z4?0&ZHCVRZ4%|;WJk~Ez7wGUk8v7SU8Ti_HW+-20u#hSC1m|^!FbStbj!KaXAhH}U zv5rPHmm2RCE?A|=&p1%}T~yF`Z>KU_8Lga_R$bKH@Iq{M4^eQO)Yp5sEZ0(QSL`mdReVbqc(3u}Oy9;F{}~ zIya^*i0hv~Hj4U+>9M^%A#6?z>MbjN4-Jd*L(MRuhsn0{#jU?)OxtQDD=>+~TYnb1 zbjv`cm_<~X6B3x3s-|8rek`DjBX3p1<*Ln8q4u{ZhB2)lX*;FX%UMzSn`%}4#SJ0b zLh{xad~b%lC|P6v_}Fi%mPOlDMHdV^H62*Uc~GHyru+u$E-sgZR8=(g;hsh~q>O zEi>oDeub=_LDSpDfp1)&AFRT3+o1$4?gJQ6G6TusNqkui50q6*K;6V>U^vz1#`vL= z-`2iJLE8U4vMR8Wo4^y+tKpRDK%V9#0h-||&b)Ppp)$jhx30adUyy3MqKLZ&8iYt`0 zp4Wz=uFN0Q^Xfdl8kV??bpoH_q4Jcf-)^zdQ^v+@E=@b|*IP!v5{lyhFT8uZ)?UWs zmYcNiaHF(^%2RX}We$44Rd?N;`h1naa_cYXr|wSJ%iV1HaA?kTS*j54 zpj#0-4r)I7t4Y5D_!e-W818nln`M4+T0*I^F}pZGM9CP0aY!-eO_K-$RhQ1RA~wTV zh@xKdbj;YzZQi}MQ#d9vWS2x>k+E+9CeuI)eSPuf^8yf?V+7`sS+xxbAS-GQoi9~M z^EJ`@o!8!v*Wr@Y%yO&FK72k~8<;%w+}wDtNQhth0kOm}2d(EkHX?3cw#Ah|B9X#sc8 zx`P-DYO$1+sj9rMzeXzh0L~^04Y=|zf1v}3;t2BJ+;1@BkIoN8#2X6WnU3ViMX0G) ziL)rJmC{``Q+ zG9&RZ2d2)F0sQI9>Qv#pQmnqD3$nyIyEZ+da#c#BXaUBja_7 zF>Cwb)}~q5f&Ij$g@ST3L$FDcm|y-hzI0zOlspB(XuST`FVpM$#j(h3D5x<#%^>QP z(1FYWbEZ`-t=Me7Fk_gGnCa0q65};zYbsa;KTtdqWNPgJ;& zvcG6$F2*8bL9)q-kF-pQGd-mOGjgZ~NfMfOP)Uz{Z?!a_S2yO4S}zTu&pj@K;t zV;%F*y~EYZPOpc(zON5XJlW0O=0bip#d;iZlEC%&!D5RQwN!SC?S){KW_n_oe6`pLI_;-goAc*7*675=-yjBbaKONCfpf;Y$ zwYAOmS8V#s7(+Hg3#i+s9}$MHOTOpr{$9+hi;Ls;c*yoK?3^7x zoW6Rn|3dt#3cTSptUBcK_^4|Y2kP!UghvWQBVh4;B38AWcYV)UhTyJV|5mKjZQ%M5 zcpM$CMuGMEix(R!&Z1YYo=#ER*S_xwBFS1^kH+1@PHSOf!`F75fSq?l_=lm*Ch!;@ zMET7aE+9Mv>1!@vf|ib&l=%Ld^lujM5OR){z3l=SR~akhcSzCwb&KuYd3HtNRf*I4 zVuNgt=h|7nc^{gkRj!=)?%~Z*A;Um_H;>ErS0a#6X)_}#j<=#WTJ1wU6Otv(b2) zdJSe#S%nq@sPTe}ky*UPts{G?2W9$WZs+A}-{b$-vn=%W>2l;Lw4^M|&&!&%5-@cb zXOB9Xl0@R-s^$W_SSO193G}qOlD1_~Z}=;ezq&s+gmuPk+Rg2FMBIknsdpHQU%TK@ zV!2Ce(p`dxC?i6@BTT*0ZgjbvdH884qI6&ZF=WPQ6ckS=W=W~S1`Z`5+#ss!;zvW3 z3DcCYCA(Kd`YNIV3q5;G7E__r#;?P3>CH-oh3;issJwK^NO+Ov9 zFk2HdN0UyyfvyIl0RVt9c9Bf!O}dO*m#gE4UxXq`!EAK;h^+HFTl01AGo&KnL=+9q zeB!J_ATh#bdnJR=!%{sh@_gE7CXo>%1Y%J4qi%8=3yVTTz*UHLs=sJY3-F#=TRBTs ztl9?t<7;Vqvj%lQ-9hpoJ)va~#MU|$ZgM#Rn74T}Y=p|Y-D%T--yf$5J)9r){GX)L znXxkq(Jk=zF8SO#twO;75Fw~h%y)7_F~CgXZ!4N3ciT&n?LwC1F>x?lAHCJfg5h%0 zUr+>lJ6S3@^x4*c&-~UhH>}9K)}l9nAQ=MltpahlwUrge23KJY)!`1ZufizP$tV z4+aHak))A0?m;iWh&wWNFWU6jB1g3eI?hi%rR)MV{{F{AkNyCu@H+i!mOeDHxz03? zoPP|>#RQP^kA|5Fa{f7&F*~<7wbmhI(0M4~GN4z=AOrDeQ2AJ5YvZ}UEi!-Ge~(rx z#-X9rGp7HZqac~%WwX%ZsgDxBL*AFo{;vC2XjhqM)O^|<+r>fcdnWlE%{|7FJK^8nvzUT3GaTo8DD;x}b@7B?D$>p{#nUf2dg119 zke-HtrL9-K7iltA*-1wSYka)>(Gr!XWk#n*=fb_)xJ#lJpW-*;7>{qAntST0g#CLf zrk|UYwlJQ8+n7}DvYF8Ye<@>t3ZBw9A#~Th$zjmW%U1;)RD+xx7=kd2+iNIGpU62tQ&j+PFMC z#buin^+08Y)#Y7Y0xruvoKp};ZeHZZ_^7HmY=@p&6ISo2Sr#pTT1ClTp4`G9mrFzx zp5i8{kL!T(#$zB^s8#>{DL>Fg*?qS|!z!Z& z9(f7^(DT}Wc?YXc6J(Q|pe9%Gv${UL(b#RkQo|2*q~7hIY0rM>J=s9$8T`T&9aFo? z?CP(Px@s*;P+i`tQ#dwjD5&O8(0rzZ&1(G?`bA2f1J}@%(Q{^{(m$FAtaUHWmt5y0 zb^z6sY>*1jWNBvJ5w;oG+`tziPDyXs{+<*D0$tv2yGAEXV5uwXn!_~5$@o0ZF35A@ zCz(Z)I*=P*^EfsElUITk6H(wKtMH-Vy3einJ0fhc3p4fB;z3g&0gSB+mj(!MW>Dgg zHuZ_`#fN0??}PmcJz=RWx87$biA$$vePUH#&i^2`HRGc zsR5(8Qu#AejvFvodK04AVaax?G*ze~ZMPMABzEGu3g?1gk%sBld7q7*6~~tu3Y0>k zGgdDz%KAi}vEZFnyEEA#hmNP(^b}Jl!T-ftYmxsG)2YpC=B1W1*FlGR6YBeGp3v1Y z2~E0h^)cH_SBqGdy~ML*Rml0_-?#t(z@fKenN&pRp|=|M#K9PKcaPfUXNX67L&J7K z`{+1E{-|fe*$X>v2`!SPby%MrQc*wU;QX$5pD@f70fT1%9c|gQ@xoLaYyU9 z7fvpim`mJJ9Y;CBKDyeffpwRPSy;k05rZ|8=b}zRN~Fv2?)&TdG>^J9MB^nift+d6 z`)uHRF84Ot>H4V%0H8lvEfK6k5ku-EBF1k08Ahu!J13KUKZ*2M|Qq5Ih}dJVU`%jheyKkF?`dj0ZkLy z)gK>gK|&o#h19{3)lQQ()9INRGs1QbnBM}7nwm@GYm7iSB6XcO3$9fl<38r{h6Y7W-g{1jr`JOy zJiW)yQB4A{vG)WVTYvjC0vW#(VIt>{BT6G{b(Wk@>1k&NY0n$4pNRlg9gGi?(5{Kg zM|VpDs?G}EDGbENTKWMZeKpNZ2^q>H<#)!+zqi;qOzL+tm+~99&0A*F#x7nS6CmU3 zpj>uu%akL;-J>BsjXMPFmDhKT9`n-_B*orz7e?D-8F5DY9m$Mi4q8Aymo<>gV?XvT2CAi^T{HQfkwc9^O)yd}``k$n6RFnZ z8kE|XI|b@=DZVY9ta7q>^m&ajB_+IWT86D7*)h`(OG= zgESu_(ZWv*Y>@6LJWJIqR(nT`(^!8#(5?`>FfSmB6nP z5_Ee*v>AhEAnP$k(-(ctKpp<3AMQ(WsyN3KNC$tU+U4p0Sb#;*KQra``jHj}8fx@b z!dthI4pDy}%wf0_L;B?2U-L;_| zClhNno_~qd5hn%-fEOLu41QKy3zzIAz97S?N|=HdYFA=%E$)be0$~?Ka}~6AeZ6H`KqT8FaOjA0E3U znp?>o2`(5qp`k3&BG@(+U%R@b3Uy5n&L{M~?!+_EDE;h}VVH$%6O^M#Van}ezmeL| zpHiYP)c>E1zmBcvul0&kwiM4uAIGcpZ;AF6cduVApO&Yc-%qD=O(9f#PF1b2ymtLT zaVagCMM;#Y`vfZa$Z?sDANxfE;`QkhrNS;{@aC=OQs%-XYO3WN@vBHJMk6((Pb(oN zu0?DwXJG1Y+Ew+73sya-5LgFX2p7Cg(zumB@f(T6*h*g}J-u-@mAg1Gk4T!UU`$s; zdcso21l(E!@&?R)UTYBzKyk`7ZMRFf!|x6MTjOBet?I z?=X<>TkgK=c{RH_9qOQ@jd`7wZ86!=txvy-A#Dw`E!ylk6gfvme??kIn?5Z}dmp|* zV8{0yk^X=IIoYf)?VPHrHhe#g?Ft4O{8RDZd74=Cxkn7YcGu!;^RclUwE)JVwd#W8g3&VbL?8#;PN;cRe)m!|mi08gR!WOKX6 z;d(Qvd!N*QF%tvurt5_ufiE^3T#i4<$he)Cm3{mX+-NfLD`);h_Bc@{FgNT_v1Aec zvOiTn*Wx0o*PL{ehE|xtj1}X(cQ2oT&&i8l1T$*%5+qfkE7t?784UoqsC>ohp4ZEP0kpYSe9m`q z>kHiNVW$0i+(pORmxFx|zz*V})blHOJd)FWNbYaZ09hd0fml=qBU8}5jcv#$Nax|x zrc}2J%{M5Z3d`Bz;{DrO?K#EvT(hk$I)eov}amn4BUmX&>u$-z#n$I=~oe~SW_MVV)*w5oWX}!tj8y=enF`VHrD+O8F zrt`;Aj%PMOSjE7Ar|K~rW?||t!)%uvk0XmDB0Zhw!uSI;LQ{j%+DqMaN0K{B>)4Q9 z(f_;%6y4uveh4PuFC&f?2qAy3=iL*G`Uhb?+G8D z0?=WB3iPa&`P_@l{jK!7x>SFnUZl=a8DG^>w^gfq>UfJbSMwlwTxeHFpI#-<5|$fc z`hI(zg9<71b|O09cqEsO_x4{TF7HF9bpg&6!k58^z^AN=hUSEhb|0{Gd|ifyo3=uB zM!QoRiM(p%|B&c5Ojrw9%$uuY1^#Tn!ZfHkhX24-@mS(bZA%iJ7BtUYYM_8MwxOVa z<-2qA8&f9!RM_*5j$T?#O+5WEGAA6sdeD1?$z|2kYxkr|ixw?Xpm=dBZY@$M?k+7_ytrF&EAEow1TF4_7AH6ax8fe$ z6Xwv~@8176b7$_FvsiHQ@}8WNtjONa``gd9yKK=8xAS>*V0Fvm`4r_anuG1BM?QzL zC5W6LAShgA9PM}|30v@_!C!f`Z?|A_SI9fk41sJE*DRKQ^>9`(^D;GHXX2p0;Vi%G zv@`ln$d-&0DKA)!E!+v{oSW>mdzSe2;mz9E2H=^t4*I{0JR(e7p-|B6)G66zaOnf~ zeRd-9Tv1V8t8GBEYos?cG#qAmU*7nahTF#6F)SHI+D-qdDwa%JhHtu5nT3Y-+m>e5 zP>wUwcU+|tJSs*RGYehQE5IMwcK?Ef1^IsL zoujQiDAUC;>GZgGOME+XP!%F?Ns9Dlf=>%fAdR0si)^=u-|K))XpKtN^;OCC@OR7KBzu^b_}=ysCrLWY~Fj!J5=brtVQ z3**O;l>p17*eQdA)*O zZoZMjXi{GEIi4wvPGlYJ?H4Dp@9lu})^qsYX1~*`dz7tB0jPI0hYzKAW&1mx_=CLh ztyy1-u-U?c$)s}PtF=|(b%^eBAnf!RyAOy^e(?P4oXWc^tq3W3_nPnP+S;OcPs!~o zJ_nW8FD^YAkfh^((FtD3z0vl~(L^Y*5Ds{yLP7>Xs*_O2esvo`s$p19#Ob)3#Ld*x zL~pm?Ocza0C9-*oB-*q`hmd_TtfK=t+Cb~A;2~Zj`BI6%(q=NQy~tph_9J1I!uF@f zbLMQDhX96uRm+rH8ayyxWwEUpb>bRKCa*DmQb|`(uv2=f#|js_#P)Q2D2k-?g7J2c z!OK7wjzD^f19Cn%M3_19*v;^Zs=0jLT})?Oss3K3=MX3+Vpzqwm#!2L!Q{&q6HZrm z|8SL1pBuLHa{-Tx>Nz@a`|!Z1^DID^2T7Q^(Aa9Qvi`-soqlqUVqMYV=DWc%1Mhh9 zVON(*Di6ULQ`qB9M?w~lx6Tu$q4ZSF2WR_B83L4KHAVFiF12{b`Brosi!%Y<3FA=v z=f_i5t41ao&6B~MCtel?AI#cjyUI4F=0umDuvym*Cm@)bTsG2do9#S2h|xny&UY8~ zPSaHDpL*!vRw`uP@YE%-n`~2js$R8wGHfpKs(E|bTs<^`Rs3m`=$`xMX?Se3$j>@4 zUEll1RAe0Jj6C>szk3M(M6>w*OatN0Qc^qKB~ACWCGj<61)S3vKj)GqJMgk!p1BrS zAb5r$hirrP=E<*~Bxh+lC!L;evRvOEpCGm%F7*#9=j00EwfUlwWkissMMTiOkq}3VQ(~v( zBl-%^%cxeWI5}mFI_RTsw);Nh(P0HOl=0tR?1ZqG*f&C8XIZ#w%MEoBTafI?^_*bH zwKUVuHi2dHWXQ(AY4PwRHR9pv6E%{?FKfu-2N=5B)5_DIwmOyN$#><_YY#q+2YK%? zEipvOhVy|m03w{NIbi`-LSqK7m7C>jHFkO_te7NcHdBg?w+U7^gv^*+PB(SUGmhV- zW#I;)179r+4W(SfK_7h+vgyEnp$(BzGe+L6$KD#m!~IU{vky8nea0ljBs$j%76-?j z-`#27Uwe_K){3(9{oY}gky8svGwt4zTlom@2-x9TrOW2nwst?f0sSp-4EL)M&9}d2ntVd!JO|l)YbLqoWW39gWx$Fh?4wQy+FO|(ZQ|HFK z{3yZ9A*Nhg!%)G>!u&>w5P!|Iz(DwN^&9m>rK_s(hq(%{;t)viyvOV%VV?d%<4xr2 zqQ>+MTm4eWPh2G_Wa&e+YlJTg^zSSV25OT}loIbR7sdI-HR=7|mL4Lop?LB-Q~Yd{ z13oS|iy3A!X6`mIJ3|3_?Y-NsK<0@WXqQ-w9{K;n;3p2hcEZ64n_GP87{)$a3m{VpCTU9;_SSrN6$_)Kn zTNAbCCE#-|X@_k?HD)EWQZg_|s-ZBKMa^!HM#NDDi4JrND&Vh7%8u`O^V?;Z1j4Ea z9jIRK9TqPe^}K(npzOTvUYe&jENehq+S&}?e|Rsqc55~jgZDTL!=#z%a(;h%SgSL5 z;^pDe77!&_Hh6}JPdOgxd^dD2Ud{>#NT{jk4XBApnBM6Y92?)?rQhbKu#u(vy?@&e z!h|IXW)`l(I`hAxb6d%q?6M+IKD~O4hJ-{yQmX1X6GwyAosH~pKMPZ0t>?9-hYE|X zGFQaP-`9qlyIAm_uwH3HgE_AIZw|L5_2FTSH@dcYY;3!BF^QT=R@GjH#5;Zc*Q9Dl zbz|R0YyS%M*DC`_1MiRcw@o~)JI?$EA^#m%F8geM1-MQAkL_JqdnWCF-9SOHMEwWA z{u`+k?>&)l&VOX{v43VE-KW*##z!NzcVw~I9r9lPVI)x6*wrW1QNIU?D@~X|^<_7a z2(1kbb(7qyNasc3#OoL-Rk#n2A|A;7v+gT0h?4%DXE}9*?Go#UZ}i8{!vx5 zRqfO0Ziu^h=96La!f=C&?J3{2L!jtMEX=>me7sHE<89r@wWc{bO5#yaAHB2SM2M1X_S z5xxchlVmqoyIaLKr40729fhUqJp*J1PM(OublP|`ET{GvCx8k3&L$lx7k3TgV!6Yb zd}W4^6IYzRJGv#&OvYeXg+ zZ5AN1M{L4an#c>NI|fpNkY?kR6}&hVZjtpb=KJdhr^Teq;WJ3Y_2p9vMWRis@_gyG z1}5uY^JA%w9?f48yZ3b(8Tdc#>>Uw)gbe8)t=i6MKO)mMU8}o7J#LmmWaqziIccet z#kBF+GWnow?xSb_f%8*8n&^Sp^vaXZ1)>VJr9Gm24PG7GH_>L%j{UcegY#XYbIjKx zn!AhT?o4b=QMa~|-XHtJD3V#1j5s_K3LCoZo}t{DKhwKmUYgb)j2Bp)9;nD69n6|o zjG+xCun?u^*9{)E5&3-e6`N%xyegg=%Ub^&Vr{nA^UGuF6!TD{=zt>QuEW5R+u956 zQSf`dQ&u#DEvpc@5n?;Zc6+Mvds9!){nt|C8*k_Z8c{o|BuhZ9vKkKpQus^D3_{hq^ zDKOj&jp;rQ7Qk%;Tg~CLK6IpF%m13!#QY5=-vn^I3Y-#^sbTd4}s2p-+6SUb_{?}`W83SaZqaI&8t zEao;|_k+`E^~UlYw++0X^3=c*Q$3tWCN-SS*9KQKedtk^A=0mt`b``f&o@$l6O<5J)FsJEbKZ$L3b?`K1X~gZr)z!jhTYuq>5K9cCw1P zj;gZtKd|YrkAaTUYb-GIkmJM(Iz|=-f~}oCBB~EdWwD^vnz3x$3Kjc13=gnX43WPU zV=~mV>8V+Hl&2yEK@4*D*R%DAU`~(n_sH*@84C|k+)6G>xAaR06|S#0r&q$+EC=r^ zjjxYjk8@Gz=|t!hUQK{=o5S>M3FbL^g}6nsQ{HxGO91R*)WFwMt~Ltd#Qiy&ug1FK zjg^}9A~vThtUZKQO&ny%}jf`dFvr1TY)*FWgXJM7HYmqo;uXRF@4 z-+vXClT*FZzg`J^&mUWAiKfRSkjzp_v|I9V(0|f4RIGm_rO;;doF%uUu%zkh(dB~2 zeui_9MBc(-^-rMcwvd*dp;SDhpY=r&U$d5(WZ@gNZ=EK!s(88&aBy9Ii0ziKwx7@^pT|0#@w{Y&P$Om*AdVJAjHd^~dt=UupNK-22k`!9?t8xS0`E`x5 z@dg2?sHx8z^K8baUe+A9RNwSwQpJKjccVr3RYh5?yUX2zEEiHF5u5Vtth;t2Qnx)X ztH%V+*L@dA;G)hA9#NNg~>v`CrhuK5Dj`ODs)ZZ0FGaXj>Y@ z+j<@vI?>n%b`Lh&pkkDn#1DC@RjD@y3(Js5(R7SHJ)z$j?HFIrUkse|5o97(W5O9LmTj`{ee0BSzTXa4FiHwMBIW$$EsKO@p(Q#sNTQ^BllZ8m+~5;v4fENJOm zLhPGU{G_a#tLUi9gDU3pzIk;u9KOY4`ag`nlrnt|Qxt4->SHK?O|O@1`VtiTuJ;gl z#_>^6v7SZ87q^{EA#izG)%z;trBrLaiKLD9d?b8pd6q!ZJcjzn3^s z+@7*BtjMLAFa7#;?x7;SsnOA_)sxklboKkO&5S5)pX;TX{LPv57cdhqc**-yDD$zH z+UQ&gPy0>Y-sQX1B?l2ie~?zQ0`;r_Y2WEy`YC)h(dFETQA&d5bbpMxU5jR<(rVdM zFQ&q4V^V!%u!+|`#)?CtvzNrla{mp%*0g&AG0EGViQfvkuN}{vU<_*bEtkE;*5N_Q zg{&kscSY6dVQOXsBh|jSzh!ay^kC}5jlSZ;kybd^{iOK~JkQ_uhYQ(5{fk{p{d{p2 zEm2-$el|O()v7c^gs01K;cmuci=$$FDMB*c);Fw}cV_4Lxb0_!fxNqBI#)t8d3;4z zZ@8|-3(hYRg{<&#aKI-kSQS~E-n*+mD&yzUg~8!Ks7a9`?7TrJK< z6Srj|$QfV~4}qGj@Q2xIbT~3=ao@t*L)nz@w|es*TEs@GGbY?4%bg4a`6`aY;*sCI zdoQ&qSHnUlE-vouqO)Tkq>-Yua~(GFyEhe>#Z|%Oy4wdN64K*y=~g$n^Vhk?Ibl!B zKj;~_#QOKd&uv!~m=)|ymwIK@>~{0AxBEV_GO_)wC+FT9+X3KBzqba_6^Sv4_meW& zc(_?0niSL=T=AQxo5y)lkrPUgQZPyf=ddu=3z8Hfp{oH-u}Y1ZevA$or+!iBo-Bc? zLuzz&ZB$f^!%8(;ybR54c1xU>!IsXr|9tE7iEPz9;5Ou|O1&krll ziwfg8ZTF8FvO3m*NJ<1@+2ZrAu~XJ^p6v7^SRIu?B=Jp!S_i1o5pYnK7Qm#i)BWUBb}x1t3mw#UPn<1=|e zouiIm^R7ik#tlrHeN)K7M>Xd|7!{*Jr0G1Zf}rI}cKM=C6gb~3X}J8WWT&)&%EfgQDRsBBX@GvJ2(yZC?%EqVkFFmQl( z&*GA==+E=7zwLQZgwS&fE7I@S%R=Y#Bsw<>OcS;QwnXmozF&_9Mf4^4P-95WT*vK6 zZNEyb2J$26;ZJK%8?G^y2aVPM5{2g#AMuHQtDUfv9d6i0v zh8kXi!pZc;!J*;fV+5SC3sq#_A+++3;Gi;eFiHa zyOIA?LOEc9W@K9=jM_^C=yKEFhN;t7uMKs*gG06aV`vE!adk26-^9B!DjbX(+y_pA ze6IT6hC8(>u6HzFsad}2I(7%TqafsW17;lOrtci7qJ2+$b|i7kayNY@CTfD~lOCY> zHNBJeTKMv{oru>$-}hpYJN@jY{(^m6d3`Zrx}IyYY7m9VUumHV?6l#ZOQt`Yo=?6= zYD07!72u}@iD{3r@)agOwnyLBg}iFooJESGCuKh!Y;h%#$<4E1peIKLqoW_;Ut?3@xvWZ9LJRycKJKo&b1Q;5I z%bYjgZ6LJh(`rkResgYA`dJN*(#~AU%i%sdF!M{>d8e&z z+MIi=MJ+AG`+Abt1S|xvLjJ&PS-aVRcqn_STi+Ct*1IlI6Bkqa0b`n|{DR3&RUxQ%An&nQgH2ZZ$_2LdGYxh^P0s)a8s%jp=5O#RgP> z3nV&&5CyZV^L=Zmxw&cb{zn?#n7J>Z23MuyAr&OGcioER14C-}rG+-a+TDG|M?+)~ z=a(DiW{EcMWX)dVty(=tS=Og6o$aWdWbdXlZYylnyc&*TJ$Wco=j zPkPQT|2(Vy0B4DtZy1b8b~q#=CF_qm#x=_*gqaOZwwF9rDA+h~h-+@Qa`V*Z=%ZODYA-BBw^v=d zomVq~SKY@?OIH28zoTy2$m;8)&9-4H@gHsEOA5_T6j;cd!b3j?8hKj{7l6DLa${M= zY0k;t+FvG>k+x;Tlux=IZgV0!f;}$#AGobbV0pKt&@Huj4p%`mHXLWWv5@=p-ncse z1X(>9Prp&NP-!jKpklN!<}?tPb^fq;cK>YY*TMp)=>#EFFf1-r;Hh(_0Jyp=CKMz6 zJ1C>sc5df+x?}GMc)MK@wIM<}-vV7_n9ktO9HJRBROnK}41=xU`WQN!1w^gFa%b$- zGy+xaWt#3wq?1kKDMvGZM7>Y?a#YB;=$GD)KYbg+DFItiQbvZ6iY-Oc0RA67GL{M& z1JSudYI`5%t@~$(Ni9MR8U?{%N!MI+x#@Eg{cP`wd@h!Fa(sgYcALv!df8f`?(($J zQ530E6kw^FuKhQCv}&hF!BulsRx#%8(y|oIYD9yYvT%mWPo( zov~8a#q3v8_&GM-H?vcsZg6k8fwGK=i+jY)H+1UY8XguQ`gJX@+nj8_v~@nyz|rh} z0-Qhivzt8q7!zAX2FIFv+ny#Y6R}hl&S}ll5YQSEN>4)wD)aD3%3{qfYul*)yBvU` z^e7V2sFf5>d1gg*E@C`OMD&i~emSmndGB#d+SB%_+TK{|aL4gf|_w@3+1+_+^ zx|~1_d*yOTAN&=Iz6oxc>4ms2BFB!!Ri!vK>FIu(>=1^T+|8`;# z=6xQKU_>x%$)HP1DeJa-KWkYYFNv(qd}D3uSmN*PuzoP?xF-==vG@7xu8i}$n;!j{ zN{Y-~QOiYgFg{Bny(NKlnJ~t zSVS-R0@hLdFBz5ldDw{my;%I?pm=`#hfMs8IqhSRZ#>7y7C$dqZt_1O(C#!bGU#|T2EInKFx=wj z?uBW-TmO3xE%stro63I;Qy|bmvh=l^Qh$`peQa>qM;Qce8Kr&<(UCZ)9Ze=b;#6{bXG?i%=cfTXZ`-E}JN& zip>sCj6eo7KS_HQ78)M+-Fm(S?hq$-Fw$`IGnS=H60k2c!VV50Ys^wH(t=1As(=uB*5tZOq)Fi$yxKpm_(PHgopagL%!pliF5A9i_!CU&y;|OIoSFHhS(lxO{B7y%fRq%Jz2Pi(rX?UyD{U59|bPBRO+*hHl)4+#5WBRJ!83D%Q&qh zsn4y}F(2KVH=Mu^iXe9MH2IcZ{i8#(QypjOyjpJFbM;oM0o`&WaC5qTMSh6mLd#6P z=m31TSe>NV@v1wo-NKPxi-sbl)#*y1nLmI`dmRSa*n`4(yoX*2RHko~Ya5ve7FH9R zW*JnT)|iZ#m)tfw?h+0e+STn;)2;goxUa(iQkY2bxf`P>)I4jcZ7Xk>lR}o`d-;PO zxRa%b(#F;drsED7a!_(APG>mxAE5sS$Ib3xUJ4dWBEOZxQxIj@Q}hvaH0>8I^p~d^hvKrs#yb%$ehZPeU?* zPhyfJ%L#9u9r)aHp<*Ob^g!c^rZy&8e)X>ScKus7B<<`v))FOHp zF&(Jb=p6H!yjMy&8x*5axV)iHy|1rLGX>&*2eX)Q90RWxsfg&q62@FFM$V!AqrkEQ))g+op>uEpsS$ z>Rx6O!%Um^rw`Y9zxkH&dsarcb+z0s9StKAOIlbd6 zJcfhTr;oKsi99d1U>VVTSFXTfwY@79SH^9mYJ~yx9FuIeb4Yq>TCm1W5YZ4iZ8Vr0 zZf6kA@rCzCZhdNboBmFI_Mk=2g%FQ1NE67_4LZBa#ipd--~g==O;9P zCIMT5g2Z;RG8=r#M#b~_=GsvtR_iOw0`YE!@=c{#t%^|FGZu@%bs5hIPABW>vCfXK z!~F?qt(Yi>$Ug^&x6UwQ(R9HOHW9VmCRg&a*zvQobOl=cUOmC@8654h$;!ff5O3J` zYF|-Spv2L#c>k2@giz#UrydxHjC3w3D893l^bw&>+)kiCgRZHlyh*S$ZBwC2PJ)NV_U9Mp-BKmKfk>O(<#|6S z$t_Wh$ydU&Am+azRc6S1sn$On*E_({8#xRW?0yY=nZSxDkOJVTio07@v`c0$OD2xk z>t8TW%IeAJTDKZFl#S2}E_fSax*LV-;w9pEw~dvRDfyDOw9S^|^9Ban!Z%${v!NyD zg1#D;u~|=Ilta)7r?$=|?`tmfLy=ETrCuajVEEEf7mbK^_qr7p*UW%by{Qk2q(q+8 z7wMMc{vkDD|o_xpL3QcmYKa#NAwB)v!S zPXGV|EZ*8d43-_Xh-fyW?~yQ!ZXs+m-)@WAAcNex{NPm=e6<0yq{=FiaeR6f&ld!4 z!T5!aG9g`ytkwZmb6??5TTM5X#jCwL&pLQYuisQtGfo(jo}4};9~5VP>LtZ?n2^3L zd%0o+mPWmDm4z1=f-#jaZ%)R)v%kWV;=8Km{iQ@3IcA|J3;V;L1!16 zvJzhJef+8#~hO>68)XZ>wV2C1_xL z;edg|O!b$(g8>gj!7zL$+mO8Pq%l_aB@16SH}NSf+UAw=z4PJsV!=k)^;&)CR3>5* zsb899<;_%A^fQ#VrZ%~7UO^4eU+q^GP=T(lOyI-$G$DpV+xV){fZc)~JndNx&5A(U-7EVLm{@S~BZCmtQO zfX0EUp@c-9%)F?l{5SX-e|5;yxdhPhlu-Ek$xxZTmr}`1i#y1vLV5`IZfh$VomD3? z^A2)k6ARe=yM| z>u^oXcejVY!#FKx=9Q&!?~?q3=&@fl8>+>5dr!f`Y$@LpG8<3-OdSpobv5W`W>65U z-jqo4jR?NvdV<2;QG$k!mT-5APY5>1VU+)Wa43>2_vlA^v#fE7wwG{mCscFj1&;AD z=_k*dk*pJNe_YPM?#(%f7WAR~;bfh?Y-MJy-VD;x63(lfeBF7l28tBJx;=fN&yuzrOx%vA7QD_fik?6vcI!o8_U;tY zZX$~ctbg(cbn5crMeKy{@+s@CrWdzInaptOU{CyPDyM|WwAXxLbW*T991_WKe!%Xm z7ehW)jiN-oBNYN6a%dQP=s&j{6d?u@4ITa8Q!ZB8BM<@g`?&k^f*sZ|5LZ<4tV^np$%WchgxlKVYppWw%0XTp{$f-bkL_-}a}bud#_cC}`1@apXCO@N zI}>oy=4Gv+3+Fow4B)--`F7Czn6E3drn%y+H9UJ2SVDeWx-t16L&tl$w~rh!wGJcx zo7~-BGO!9#*(v1h*qgli#T>}62@5qeeZy5ta&6}wYN~x6RX_SW>;Bgz+~{_|`vi97 zN)FLMFyjCbnII*D`l{-8m&rEr@(SU(R-i2?9IPBF+i1-!<_xg z5d9ly-!&pOx}44W58E`)&~^8Te}?vd=S)0Idba*I>G^j^tzX&x-$d@;&6Ywfqmh3m z?tce<5CRDfr3`ccybov<|FyLk26moEnB=il{P)rScBISCPIe)Zk^lA7v^X;l<8jmi z&XxbQ`CVW`*(HkpTEP7qbK3=oe5HR4FaC}kPF4mUYyZ~)D1NiAX|gJ)*Q@6jKt0|! zU)sCF1|?G=-h%GN?~|__Jp`>1g~4t0yCrPoXS25)%^vg7{hwtEcoT(Fd0ZXG&F?&? zy%$b5JTR0k24>g63v{kAOZ-i?lz6b&hcyc^*#os?$g=S4Y}O5&dAy z?UmAw7e_O^F1FJ?G}qZG)_aSW0kMzLr^Cb4EH+)OXI&T%lqOvA*%R?K&^<-aMhu}AhJm5UdBY-8`mw-s*+{{va8`oha!KBd`Zss zW8a>Q%RV7&^-1BK&_3L=FWzzn`5>gQ6eTdI6Nsigc=iSJq>Rzae4T-2%GsCmRS#sT zWEk1TEZLpMJ2zH#c8gi>_&yiHrcOlJ8+DNF-@J8C9s`Qrf8aQCKlp)aKGx5}EwVo2 z*Th|WGYwa6dX{Y?6D$o&ha!We5~rooF^nsd8npEFWec9$E`$|U`!I`iAVUH>!fgDz}yn*m{tj6fCg>*~xxX;yzw=q~T`7c4DAxz@OPSwGef z^uG^OEGSeM`s@fGuBwW zos70`2}qd<pJRRcfy5KeD7D~O_VXg~VDTN)& zpfw(p+rt0O;%ssJpI96c>i0SH_9e=<$d9COkEp9-F1E~@p5Gg6Xyb-L`BBIY-WT`P zAc8@(D^?>*ujyE`RvUnXQdpq2_!w`NGH|sarQvcaJ>{p5Dr65a_dQ=THM5s%TG4Cu zxc1xey54aul)pR*(LV;fgL^TgM7ho~tzz*fAjuWAS>@{QDv{W+ zg2W9wl3bMh@30@`L_Al7zwyn%gSu-@>WlMzVVM=U(1ror`>|izi_m<|R6W-5M488t z@2C=?>zs{pQn$ZPnQ^GcCKI7+4#If46+_0N`!+;JC!h-$8#yY9-7}`K*uJ%6dQr|k zK|QI?skPVp>-FUtQzj>h!(bXVVJ--MYZZ_r2MmWV)>{6_tML8KQhw<${%Q+YhNUo+ zXGi;Lv|_x{`94#iDZO`H;}==Lfa)q<_(w+?=~Eh8?*BL9=In1>XNzti1}yJ^jhKq% zmyj0^O8#_a_?dbOFJQgmze=O65m*#%9@}%)r6!TbDAseQE2o%v*K&M&_S@{2fW*#? zW`$`(?ejOf0kTckBaFQ|?Ly}V{7S=>La$e4WMM{tmlXeYWomVG0wvX0m8;_$BsYWp z{^yxIUqw>rabARsdjEZPw>(`10;j*9vAt4B3JWN5}`W{GW zi;qA0zJ~uDk9ILx(3MTFt6xWeKVpbRM2S~s>Zjol9skGAWGiYeu0!^N${LW zf86WLswow(yG7&ffhCkpkq0|iuw1BU5M0!A*S>O~zgn_FS-2GgbcaLmf53A%0p+%Z zmhI|KS)C5zv~1jL;}kpn#cSmSJucfJum>nu5hLNN{jP|10a2TY!=sN~TF(7QhU)5& z3ZerR8kIt%khj4`JFW5l@Gbmgmz5<#5n<01!tG=;?|s_dJ*fygDXz}JE}gTd+h|jn zo6rAP@hc!;AW(0tZhIG9$9-|edrcv>ccS&I2XuZ^;l$p#nKjY?ECk=Yo1P4a1$q@u z%$LoKaJ26BATE#IH#a(p*=SM0_A%o%2qU%lWEwrD?K`lF(NR~?Y6c#KL|N%OeH~|0 zCN?<`bz14MDGQRwzZl-fn0twHQ=~Oj`9Avdqd7s#+SfR5es zQ$np83za0kn$2s6fW7J0BTxRW+m3~5-; zJgR~!0{k8)A@$Sv`+!wiPHI*=;Dj< zuOy3aZ>hj?IwFc1j8hD~s$ZX^okJN;2qM+a^KN3~SZRaAep!+dLA&(&E704JZUYy- zB$z}qdK6creof#0cYIK>&L2ZeV-vFhGgGtThzdL1DvnW~Ue}1<8yMIFSI$Gh(5pAL zD3>n*8RA@f$zR_y5rJ`YP~nB76>TBWfI1wORX8*8_*0*C%+-g}-tJGkeV@QyHA2^W zw9~5gcwkc>DLm=EH=n-?*|#AjMIz3pSNeww$PAm-@W(Cpj$tPdG#KP~HC*`PE1;#q zb+wg96;tf7g*Cp?m-hN_x_+bZYn_&MCuHg%^>Rj2&v)P@%^krxq7b^OC#A5p`i3UU z_qyxYtIO1Tr=_8zq)=|@n(xcr+PRrx6|^{V>rr*#(0oU2x(K5*h>|fpiqW3UF8^Jp zQ08=b!#o_Ue+YztLPzS0SK(GfKy#^u8{fA-TjhUe$(wV!1=Q{vvAs?N?YpU(r@6;f99qAN?<8PB4?N$=wX(n(uv zwi|8!vPL@cs%nKJHSz^)Yz&huAk zAy0|I0-uUxO&Zn594tN+W5F|2j1ZH2pjezvKkUfz^z?!&9va!&bZ*NMCPGn2MKzgY z0pdC5^iQ()1I6pa8U_a7qqsrT&`%vIy224VntHOoq%*{WvB>y-WM5YtF0F)vaGq;K z=tfW&%-kX(;lo?lsk2L($EC^=r(^fkz%5pRUh=b~E!+=F&I6jWvdGRo54U7wB@fRN{d? z1~Ju#0wxxZJT<)M01C&57O0Xc@g`Ol4PUX?`|6>j|93sc7($Ebig$F$Cr4L7LSaNy zDvW5-bn##`2iZV})Xss%wp2&q=HGLx$fmT>me%LU&W95ZylfS+%E765dyo2vQc^=5 z933W1Zd(d!yv%e8X4_$*P$(ysz_X`A*Tsvfq&J&e z;oOz%4ADO%Hwe3f>Z@hK`XLw-jWbt9s^iC#Pa-=9fW9BRTu^*c@sXlO0e z;H_#B=5hol=kd558)8eZ>t#Zn>&NGcog_pF7y3q8gi8h}hvYcD+>bq&D;jX94_|@* zQ)Ro<@|+m|NL+vJrZ@bDgnFcKMdRQoNWOZ~AikcY=95lLRA4qQ&fmaS>Qe2QGOESQ z1<~Z~z_&6f1k)20ogw*0U5>0-qUoTuiLW)Ewcp0N3j-8S8*>svTci80^7$CBtVffY z-XdjXEth8okzxB>FVRZe0bRuYT*^r3hM&~&hr5>>(q!N2ECYEzsr_R&(tJx7cu|oUySg9R*c1kNXoO^&Q9Fj zp~+H-;?IzW;<}zQcCNVUWL~wQ;drYQB(pP?J&4;Ql0Op!;zExlBuf2g&mbPgF97G` z$gDP7WJe8^Lp&}HC_PCzXZOd=tu5=0)Js-6-RmfJeA8XoDvEqZ6QJT5qZw49#-#4rk*DxRhL5Rf5haYH?t>#=Z z+lmUg0daP8wNolG2n+9{^HmNL;2#&?t|9)T2fuS($rCH)UUsZ}0+M>Ge+sF)#=xn3 zNGZ!`;P|-TB&#@7x6u=Ivt0Htm2X!Zz$F9vr@rexKv`bs;KWd^MpoNJ;5x_`dsf`|0DNSY+!7iKQFa^43r z8KVt`xJ@t1d>U>E4G8=h867XlWg=dnE{VaN#8+nsA(oLhfR$ z{xMfSTf@kuhV?=4+@*dwhBt>`W%ZT!4vXA6&e`#DqT^#z*B>;z#y~5-P<%X?^7v^p zEg6=mJzKp}tizwph0*T8Z#G$)35M@G%=igE6y{(%WtQ)f7G6rUVG6rXj@;CS>=L9Z{ z&Y+~~Zl7A(IRDf7QYDdAGL_>7JA)ej`lWw?v{H%6d~ws&R3G!wP^Qh*-fLi+3VFk>M>~!slaQ_SXGgeruJqisTehc>&*vEHte32|<)C?} zL7KdBq-}rtR9K=%RWr$Fo(Mm`uOz$!XY!U_o6QR(X6cs1g6cRvhxY#5o<53B3i0Lm z`owAl=F^`N>;bezR`!NS=-9UQU}EWtTAeOZfo-a@S3PFYL%l>Z=1pxb`zuA69zWH{ z8thTn)nP$C0x;B{aBfqRKi%F--*t6qs!uJC`ts@uVB^*9g-KWfl0flTWm~QJxMJJE zsB|(Vt|xXHpBHoz(@;TLb64=vDHZuyTsXt~ft%o4UpIBOdJ>KTgSO!21HpzFbm>p~ z28K?re?#Z8b#mf4tT~G=&Jxi@5UoGd=E}T(LIaNJ1JC9j=h<9&sHnuwgO6hDo_b0% zMsr#TyBjUel0mxznP|;e<$L6|EZAO`?{sq)wP`<~5Gb8li891oWaMzR8WXHJ+y9B_ zc;|3kSNr*scwz0-i2!e%H~5s9Lk04l%fn`&;ZL*vHe+L};RRTnWQ#q`@n@;Ku4K*zCKuo$@9I|Q{|nJ9z5r^ds7SUe(;CeE>p z{qg2bLUO);voLSNr0bS%N3P4ZbFiQk(GnYcd9=PdSy^J{^tN4@4tTi)A8}puX)>*l z&wJ#5M*W_Jw*P|a6E{6Jf9-X9Y<%{TYerd(G6ZsW7-_8xWL%0($!$OWvv1D-$~a0`_XZ)X>i8 zeg^#2hdlkPj555-xZB8P2t}g>?CrDUwfldeOvsA`r;yB33_uqc=va}!g^+-pYpTy3 zTs;O;??I!MaiU6__@Re$yxt3UP`e~eJ?*orU|kn|Q7iRUihnxq#Pdi{qg|W8o%+px zD%Dm-#4A?+DfFULgsq2B>K*>2qyC=$a5DQp)b1ZHKZS7q(LaCxi?S#}IP)LEu+A^s zrvEs>#8XNf9K}@rtJ;5!l>Z*%cM7~D;?KeTRVj=%anD^6Z$Nhu#`QKUYf7hb? z!-W2g)CTFZ2~uddWy!DR`>#{}p`xI{ZmJr7DB5TffC^_URGV0~|0{1)|Dwcbn8AGRPJB znY#IAhf5;Q!|n6xb!#DfO~%@*8IxibCV8!C zqcOurKV=dAHhT(Rn3cb{GOv*tW+6f7BA!$WlC<@wvWeVmW#IJeu%%!455|{}$gnZ* zUc?{m5jWcl^E!Z>@Nd*1%29o&$K`;t11Yu|#RNzFiL()=AEoZn{p6sIQu6;#tfL z!PsBV9~Lpj2a%neT-$`?kmH9&Eu;eu_(kB%K&3U2)@_u5e{(@Yf{D>alTezn`{W-G%7K^#>K8=NA?(z&%OewheEba-{%Z3%b zb=f?Q`pBBQ!K%YPO~+$>HT3v7;l13{k6Ab+N>SBjMhxN$PDQoy{t{MLG&39g`W%vQv z{4WAN5BO^|=}N!w@M$GwBe*`ERb*Nb2OURPH=)&D>jkd7&xhQ~m&~uj(RgBVUboIa zK&@|vh`!4`V*kG?I}4z;zINTyQl$loTY(a+xD_bHiWDjC4#f+>EjXnVhf>_36qn$Z z;1Jx3LkRBfZg;o;^Ue32Gk4D1yC=g8o4qs4WM!{+{nqn7&rm{M_t{ZGr+^1 zD6^S&?m7wl{#fht?rWp%&-J?+TDJL=duQeStB;i9ND zx;vU3YGwnS<3c%tYSPIc$A2phZeOdCrop0aRVw z>!%hI)j8S97IUT6=*h<((%J<=SS!1T)!N6}S)IDw*g>0fT~oRiO8f;LOe2WUr`k8! zmAq_-LhTbvm1%8@P1Gkv$@F?Adkgs2$=)+TkVo|)r$&;S_;IM6ba-g5*k@pie%GxX zLK&qzoC#_bFG@Qu4l+ge1aAvFftowFObbk8WeHFhN0NJ^A^WN!!CkLiTj8HTxaG=w zh2+UFG9b8cbfi~Em{ksnN1Kg7ks%MLsXIp7W{hM$GIo;Cy!b@fri|`g^lIM zo?0#+bHW32f%=Ej?!;wmSD|}h3kjIwjR&{$_mTzjz5Gz{04;5vGEFdfbv#|BwmtMJV%^n*-}Locl|!ei<)z0a{C^=Dz}4jN zq@+RZF`Fr4@tXI~B3aEg0|6$T-VA^tb|Q>wEbpY=zvo-U%De!>_dQ1;A&RE!FkC&Xn}`?0a#+##?zS5FKdonaT)8f06a`eCDd8 zw=puX>)(H3NR&n`f0WeNugHH3aY)rxq0wGr^%`)D)K`%oiOW1(*}%30 zDrzGB-y@~&5I3~I{AjJ|J~q~JOlN+#pGj1SC|0`@+Rfjh$K2yy47KQmP}avNcj4e1 zY%Ur}(D4>q=IT;WS82C_L%5awi!3F>WT{5-LwlXt+f5zXm-xIijkE2gBa@gI)Sq#} z>MaX>MQ!pJ#(|!F!E1{Rg(w^JWSz!K0c^B=HiT)8X<{ur;kMW(240JdHxYP^A0$O~ zb|f8bR+*HS=O9m@2 zPsQg^3+;41oYPZxP86_h`xT*mAeqDRE-m~3@6QLq=EqTeR-(b1Rqc0OLna~*L^$9* zg=yIIqJxQXNf`V4!nFEV!YLz2xScLC_ZP^)LEknP6n-1)i9 zOKt$|8`O!3H!(>|r5~7vUrq#_A|0eoL zje;c6_}07HvgrKQ)+XZ;9xMbSP3Z@5bJ6==M# zRraora}d&@CWvcnWUO|AaWB)Mlv^N1=atQfejfR`gC7+ITEgY#XFRNKTCk*b zTH`Ch?rTQf9+~vQzhhbdyHo~!pNaqCIT+N09TpVCqylyg9-c(B@HV&9#My7|n>Nw8 zkQDvK3oI9P>C;n7b$JAg7SlAHtNwD$524;iLYVe3oZ>ViIw4ZOQBz!y+hSCbAYH%B zp0T#GFatiY`OLredLnNyhL#1z?gE(3lb?hf4c=nD(QsjXH(@tWB-Psk#sDv>^`_A~J(Dtd1R1G)!He_sLw7gKrIFPr649TruIlhz zaU_6Bh>I^DMKv55+mm8VK|8~Qld}BWo&lmv!^*-^DGiApS!$%PyS7JPbqT{ttiQ-q z^y77T0$3`yAbBl6*R1`{K$Plpr$7IbOma<3jY+a*{Qf=;M=Tetl#$ESTOuwlB|JE2 zaIhQj$c<$pkZ^v)N--n#Q5->#GsmI~4|!ee@O*cVL*gSW?=@Qlb!UO^3(?a|U6F-i z6NZRyt&&r;Uu&YMa51>b8D&xU$Rev8ml`(eM~Adp2g1;Vi<^kFxrYn{W-Jl|H_ei= z;;L!!Datm6?Z5k*u0H))s$ACv|H&qimA-bKEvZQX-syWEDJ41lllE3m=Q)T&>|I)x z{9tEBoa{jN1Am`yR6vOOMWAgw{ll&$yOW{rGG(Gei3CSj#7;@vh1tE)bt<@= z*ldY-*8E1NzdOcl6+UAFPqrOs;@p=qt5Foa_1Unq`K}p0KGAYkC%JCLO^#Rei^q|Z zO!Z~V?sJ0>Zh{ZNchh+0vqizl30Wfjn{jEAKF1 zqBby|t>d&MHxaolCgSmYL#|E)APFN>jmf!on8yc_H#7>YI4tfOcOIWv3)k9iMNzPZ zOr9Z%W1zrj$~pRL-} zbyt!WSsc{4iEykp5)mE@6aB78@3KUxdsXjJ%gh%`x)}{{5t->Y%VW98 zTm`IfQ${N$;#J5`cW({b!&WZd89&p(ZgMdQ|GaU9O3??>Na(Ryv>LsT&HgEBHv@v& zrm1wGaaK!|-N~ljhy)aHx;wSzaT1L|mw|7dc66Z!dR??s%ROFIm`x}lNS>VdJb5)3baH7Rd7`%oBUc3gM!If zzs_HOs^Qy(nwNun!cM>nB5tH}dV!(OfM@RpG zNa{(Lk8*VWbqg?|&wcwRn&Y2SwvYbP#_E6k7H}@dJ8!XKVeSIG<5)fQtLGHsibu-1 z9|sp1Q_+Ejb13v{4g!1gNntX6XP1~*j_fobk<|UAfT|`$ZhWC7&xSyexgHZx`@%F% zS?63fB?!SwMB_eEF-_gJD%*!sPdO}e;l<@Wa-RCv#m@X#dcCi?s`+4}TsL%AZs%{O~P*@-pXP3OLqr{l9QF6`w1`2>>KcOFinh2h3q4FmFl zGMX0)k1`KNuHX$n&(P7%CvZMS8LOE1azhJPUyTJM>JF!A5#6UhWsjJvaA_+;92=FX zg+CH}dt)CS7y!EP4+?=Q6`)QCBXs=cla!wFB%pdlQO}NaoefC++(SvM1 zgJ~fz{)@!&u^8OLl0D6eliy>{!x61@3m#$~ybe(>Hp&OAb(&U8jB>^&2XgJxMN<8s zvjxPIz*iAJG8~no`iS#ovx<0VDYN%TRy(BL9h*|P zQZkn=E$Z7%s1M_z?W!?rffS0zaY1lyC>?WeJ?5e<#Lxe>-?ETcZu@eOhbSQ8#>C{A zTI+Z2&dGT@1-_NkOBXHNP9D9NDdtVZcF$u{w4N$fh0KEy7 zOOg(jHARt?-aY!oHwh6P$5x-+_L_eg^pJgbLr+$+PTL3wXX(+K<|^hpkAD$b2}hU*1mwN5KssJeDy7~JFW%8|NU{Ch*ZY8+2hffOcvThi3ms5&+AHB0 zrXmCGb`?~`i978Ng3t8JKeFi{eC3t#>7cQV+!Y%=J)++EJ~C-&-3TD>%ZRcID?U`5xX<}^9H})13>JBG~i?< zN~O`01(KkNWx&UPiP|t<;AM6ai&1Bb7Aq!bzPqR*UX?(8%CxZniWcSPsNgBUQT;8zRxTEAs-#Br>eixS+Z$c5Em5mEw_-sX(gpB zUs+Zhm%oXwsxQ59F$F=SC6Q98dz%M!Qshb9b^~Pp< zZ5ppq;j(J8RTgxsBpc;M4q4Ur{6$l1O=c_O-`XgW{OK>ySsebQkTtPBTG80h^UI}E zUhce?-Zl;oSR3>5bh7+j6tU9vejnI~nc9a>=uHl4+io1)kp zc`Ec@o`*}t*&7&3M#`vZXWI>n;x~@AGr6(gkEk&Lr%r&zr)hYeQ8Ca8GJ<3gnX8fR3OF(#9456uz4v?W0IYdN8XBJ>THk_6xcZ| z&dGQFwX8bZptQ0i+c7#bW29qA3Q!(lMOUEJ=&65|;~Bd^>h%wLTJYjF<#=NpIkf&* zM{Eb|zF#+B(4S9|)mP`qBeFa-a%ymWN{x2y4DXXk9>1|$9jAt(W@{|s&-kwr8)_$B zOz~jYBXJzLN-F$5xFLtalYMGqV)~Qem%KoNO4S+V8b8{+=@Z&A^OEjlc}tVi>F##o zE9``Kw1dq-K|zcZDKlm6bM4<`p~F!9+fx58SdH&1+^>h z)S_rGF9qC{H<0V>`4+OtfLf=`9NABVI=5)=FxKE=Qf0ljb9rX5WQGvX$gN2kO4ED0 zp8_`U!vhblMGaGBO_vTWwEEh{rT1xs=6DyA@K))4T)BSad(hiSVfS*|$G8{!ksjeh zg!f&7*0m0*wR>G65Tm;3Diap@y`iBQ{4!?t&0u9)bqfS(R=zCYx~ z?7L05b21Z!?c(rpU?PZWZPQxiP6{2zIsKiC3BdFIu&dC%zwC;8C9*0|a;3e!IXj^6 zv@^!4@w;GeHo|1`F+cI^5N*ukd_!FrUdFGlcrw|bn{3Z*(v$7&&l=pC?{f=Z&?rBp zb^wpJ6-bORdx`qXcYe%@^4XTUht>=}+I%YA&^;x5z5bA;3_Mj6;eib3&b<77xj7x{ z;oX>`{Rd_x8F5ob3pb9%Gnr(m7rHq|c1W=nB5|nWd!05HIrZ%A6J=RFbhBj*b(OPL zgEbu^n&;hp^$CCFf_T(MfaasjHSEoqlC8YrEV}-{V6i;0vxS(DVJL3-q8$yC_JF)m{06ShNjOZ#6=s9 z5+E=9s?qqXvQk_{xrY(TykZoPcYV5RJ3$9KyR{lS+{pBEsOg`zlOA1P8U*R}iPAH_ zJXLjwt6io9BBQxIY+K9snuxWJT1tkd#v;B>IJy+ZW+)U`i%+Qc&nA<-S+84pW`5!f ztFoM3MI4%I-|WY0&85aV6E|6HR4Uz0=@4z#wX01Ve`cd>P(EsN*3n=iTmDh%HrMWu z%bJc2E^yf8JW0OgPWN6Pn7O#9t?ow#T;`$?5VqJIeP;Z%y>C zgYCVx25X$e2{g`_-&qi!w6{XRtFo4w<+dXS&p+g)wJBRucFnx?Y%%JB)KxPl%%@j* zT}|ma*#O+eIBW+z0ma)kzZ;EqDo$co>1uG0q?k9AGRb4-;xgmrNTv@X>0uDm&e(lRVV7edWJ==XNLDlbxxRjAj6`dY+ zpE4hqzm8ANG}xL1R+AtQ0lfG!pHqYAdoB`t5My?-}S0( z#&TepU%6`fE;v#>teXHPWL+B*np@#ncV<0r1mZe+LP@;w!)~>QGKVUm$H%EgA$`LC zbX|8&KEJeRtPGMMaO$Z$B|K#Hq-&n(Cu322Z9R zu$S{Vd0wgB#d3{=ShF^`vnu75Q0(p|9>JX7VOwrzDJNWspIU9{-YnDkIJv|lQp41% zD29szvSn=yavcYM3_l}MNrTVLQ;MfcpW4hdWn>1+s#V-Hmyv_JE62vWkpV8?1rQO5 z=IB$WwXt^7u~QMFxqW$WLS-DB$gV1BRdPqMvYxpK5oPKkW9!(-X3pk`YE?bZi{N@7 zZCi*2rNoL8n(aWX6s!#`87DgS?V0cTK1*j5S*}jb<}U$tli6jyho)cihYK#mK9K&z zvJpL)O<{O*b+)UPe&;-+5RB|Wi*?JvXM1r#qOq&<2rdAt{LIB_dww}mqL6%gm1X{= z60QtzDy8e9dAj_@ko?c^1pfUzucbnUU`G?R_u&MQb$xJsTjEBXxe-z2cx=920A5=?Ve_ zfuzpCnso6Y*%%hV@T|>4+L%096W4c_;R)9XP;?Vyg(!e`qlO z7}6QKhkh-?Zl+#vc!YiU?cMnE$Sz1TTn|0yTdToZy$=wC+}q7C(Ae;)Yl?m?RcXhe zfeUfy#^=xIu~on;t|g5@YYAMKhf82_?WR>VtCf0=(YD5#dRDj@!K zxZF$6YjRIZ(%f)ed*-sE_x>qkdEECC0Y^EDQ36gfK5COr6c==)+Tl`Ycj)3|L|s?u z+gTzPN3BCUN8+rq_}A6l*^6gq%kGeLcIt9i#w4DMTA&zCYZN=c8*rlmIq zQk*y)(`0S;m#b1jezoF?NSOQ_^>G0+HFb2wat1?cE>v3ONIoCdyyW;ixkTJ*fYVZyD*!jsxuwz_$Jp&vZ| z+B`@Gmdt2xVc5N#CaZd013X_BcPSHKoZWYs7Jm0-(^0CMEbSN{%r#ifyXPBh&8zJ$ ztOK;Dj^a%n*|f2f`DjKr3F80QgVo%-sy3k|36IAUOm^;CMt8Wa{yNN~?23@({2($iA*idl zMoDpK0eZDq!HrzZS}M%#d*@{E3WUp8i8No0CvXcG9Mcni#cRXFa%sgue9 z<7pYp`_qyC^YH5P-N9+~bazA#_&QqfQKx-TMx;2+I>sKw<$-cswWZ?09#(JqHu^oZ z+wkLn#FYaLCeIs!=Qtb%UtV=i3-1Z07c;Q+hTj?9X%&!fGZ>MRy>XO9-L>_%h78A0 z3#XZVZS%rBEScpzJd4A{*|52F2eJLs(Sc`1kEP_pwStk6sh`@T-XJZJ^lH`ZTD3glb*3cg4PoCS4HgtSmJN>SA_6 zZ-O4Tk$Tbllv>~HGEm3GkxT(;o_yIAOlf@g-&cvV>UChV z=+*7@Ml$s*yLih%c)C}wFMk!H4+aO}r-B5m#G2Y9T?9k4`TtdsnN# zIlF!147&IEy@yNEIK-BBGX>syoG%WAO7OVV6UJq!pA81u=rvj+f3};b+%*LK)R_pD z0vaG7p~>K!lbQUn#Pga$Tc7Yec!dtTkMd5C(h`P-jn?Txz>a_JnwpjoIYPb< z@)VgmWu_hTdsPncaKTQOLqZv1FK5fUI5D#qqxrV;iT zbXB+I`A*4bV3H|XeI^=pw&E3TTU?rGzbBR@E-q@X?JlB!9d)K4JQbdGa87_Hn#M#+ zwJY!LJ~dOA?p?cb0BL8{BlI+mKP-J?){pQ7Q`mCvlaw8g@GzoGfmz%*0gdd=NZyNS zXjcKW;`^^_`91AKJ}Y;&?#uE113Pb16W;&%4^z*h{u6CB8z3-f z>dCkK{%rmHb6nSye*IEK{_hjBXs5ApkN?d~zchuIJ|X!l(fNDF7v3*_?9Bgl%!hw^ z2rBv;qxH|J{Xye7r+?p$cAJTa^;sdrZ<=!X*FC_t(}e1ZIkZo1&WiuvCvU-;pjO=f zM9uajKJWX-0ZTRW#G>wzWc`w19f6rcF zXO7+Ea5X{{a~7fS_)AUj?rH#4`dv!9aGjdTgmXuVZ`v=Sm{1)d%btb%Y5&Dzxp(<~ z%24Y#F`?bP%%EAB{GKYDA|uO&yR6RYtnIu*sio5Xw0L+rT4P>RlXy?R!Ta*l~1@<1&C$#k~fiYppgr3 zG;x)CAg3%F!kic9tX5MZ45)TkEhfT_MAA>oYpcO0a05Jwy!JS5(o<4YW^e=5MyOa} zh#G=T=f~-6XMb;mt$sECr8-54Q_)PZ!5yo2jum(Ix9jtr!s?e{9-5%CeVfsZ8=;H= zWgupAiUrJ@D&?wbW3@I?xi`;BHNME}&1Ns@->>1gN08+JBI3Nhca!^X|vjv(% zy_V`@M2dS=FM*3XchU@l)hvSdyLjzr)8ZXFFdm?v%9H*p5Gw;UA zc&Z8~pdO!QyGNwoF@_7`P+N>cGi&@|D(hdciXrlPee?dPQ1eA=&?Ps7gBKF9J%wW4 z?aMaul@Wvp^w-Ihe0m)FVMkss=?Ren>UR_n$!={8HvaRXmVW2dQV+Si%-IwD@c_+- zKT@1d<23a4 zJCb?}d*zBEQc%Y&k*Qw* zborq+tD}7-WBLJ_>skHc^&@G94FH3K)Cc|eaC#q|k5BrnBV@2LO#fG9oJJ${>yzX1 z!3Y_ZEph4muabGu0GQ-Bv8$Pkit4cs=-$8>98hP*!2$1W7`nc@xMvWT8fCGxz+fH} z^jx<=uj)$0;T*2;$T&uSriwRrsy4^0Yv6u!=sG8xjc&!6>LN9?b(XE@>apH+pMijY zhzS|;x7+keGE9%0r7B;N#|r7e!H~>r|Lik|on3O0!!aLPN$gLU!)=a5=Ac)2nw1eg zrm&{Ain*$D!6rqj9L z5l6RpNb#KKp;?mlCO$rgs}#S%N;HUI=$XX!NrI3>jjOEHdU=Vq7N@u;vRWZ$){=Lx zH%GT`?-^%y?kd*zr=(ynn+v|WA(d?xPuyvzp{yqaVydJKcH8bpPh~D^1-(PELbWaz zymK>dCwO}aSSZn&e?+- zPwhfUCJ7rw*`(QNz*|vIhuZ~ag*t24W@8~Pn=tMu;`u-(q;LLPklAr9?Q7gfqs@mw zUS$t6@3~AfYnY=j4d8<@PWGn2bn2Fyzhs%6$N4gXY!<0hw3on+6bI^X!Mc zRDKt5Oe~b+e?DL7FX=Gar-8>!+5d9W?XEMH?6f_Lu$-~v_bw%t<)^dL@SsOue4bMG zCbjgZqE^7X>H@Qf?9FFf(hRueOE!s*DtTWhMU*t*B?kouowtrwigJO;#296ubXY6O ztin!D?B6KjSCKAnS^p)my7X}$KU~UOApK7_7flSt&NdjGzKSy%B6b%ViW<~p)gBVO zlK_qJ)&M)s^(*@J*UUH@as#&ul5C%Y^$KsjP%0A&q_bcI(Ma5$kSjy>55S*kti3%< z)<$3CV%@o^~%#I2!RL}+r@nfLN5n=!*6~v3?VZ#qrQn=VACzSh zm7=TfVSQ9TCe4c8nAqfUIuC#NIHv@z`K<*Lt%N8&HLZJ^4=Lm*LPV0R^}6t|0y&vp zGC^GPc`Qzge0i;UTVYwMiy!WKONEil?sKro_DgjrG2WzNJqF{ThDh>l(_SNg-saWGV+DG1>DR$J9A1u58tHsYgag|k{yXr>7rpUfjOBJmn0NnH??@p-Uij5TmUIoDm< zWDE?>cH7lpQ;bw6*KcONfLDPpH)+ni(@V6t9c2{<;z+hw^B(FAH~7;5WLGuh~~ZLoW-o%(0$;>CHEQRR-AC-V&Knv*oG z%(Lj7bY@)-vz2iRBTJ2E4ymwsd3PIrR(aU=B*YP7kvFBBGzvSK50>vFNvOmXO};4% zblyhx$M@W#?f^L&Tll|(m2D~t!+c(bbP6=f`Y;ykB0~W0zWIZ9<9WRW%tn8&M6?D% zil}f4Ld9T}wW@V!8aT#Ub#7n-0x@yXgYcQ@2qix|gR)y?<+YBTO@2T`9BZDUSH+tz zq3NX)S#G9T=ni=LU}Zj1HM!lu+oXqxjz zxZpE7?6lI0kEZwi4AWp;PXr9Ox6cy$74)-=(`M-eYQi7ryW;w(qR!{oHtDSWIDTNF z=>ycmjnY3_@{(Q+QOa5UasaxCBoml9EGW0`cL)^ zZ#7AfRd3^IO)KYAVs8k$D{^^&KpBfI3m0?6QcsC*MM_sH@_!$mR}B54^K&1!S7hAT zbl$-$FbWEi5wr&tdJpPn$bW<-N&@jF-=D@WhWN~hcNFO7$qZjiiu%^ZtjjzU3Ev{k zR#Q=Y5hJ36lV*k+M;v;2LXOL(%R-p9Y%rosr69%V5?MCo&ELmi6ThJ zd$MfQFBjD_LJ50wyh?~ddOvj9SqjfQwiQ+5RpP?xv&&cY^XSPQz7aj%(b(;~ai~Qn zoG`#BwkbU`OTv}j=O0#FtO~^`5T+~ATcUvKE`!i};UW}Y;kDa|=(InY!G{$`J*~Rg5*YFTeOl_;2Gm7sI5(d;YT$|e*e{ylcAV=DXFJHwsFL#=wO zBe1{&_9oEBq{T&4wfO3_FuC+Zyz_fH3kq@#p;krb-vp}Oci4V-{CuCSMSD`ad~JmD zt;5w$J#z!xX59YhUgmUfFv2WO%@921XTZuvUn5{RQyZB~;iG4^p{*PfuVJ`gtL2v4 zoZ!y=`D0cn{cX$2+lbYZjpIfYrCS!}w09o}S>a%PWyv}vO7Yg5adf_KY_-i~wXnsaPqUK}NgQaGM$Eo!i`zma#0})^#dgNYRRni=Dt9 zM-;{hdK6a5vO78`y{t_w0^@ytpC#9LrMR+4Lo^NND_h&kv8S>DaBftz2)zt&=&#-DCU`F2z{%9gQzuy3_1jus@u&y=i`$8JSA ze`191+mcpzO5QX+#9g|%5UBVPve_lLfc`A5XZ?a9RTHLcsA@jHI1~;*99_f98Blie zVLhmSCSg6MPII+m@#+MRk&DxoXS4>yrj&x3~ye%J^` z*O?S;eVcsw7IF*1vmL38-#Kc)QAxx#rNQuzR2emY27jyCcrQ6IrF*ic95?KUtGsgA zN><#{X4Q6t>`8=yRKaUTW*n1CFm!ifD3$1z*Ig-}$SIfrmT0=GWW0K6+~cr&U2fL0 z4VB-LI47&O(*VSC5nWme3EeRWgS8v?UJ_8od{@!IP{y;IDjw6IAcA0$;R71yVZ1<2 zK6*U-TO2^(4_~Hi)Jwx>x9OOFKSDoKJF8rz=w#MjkNzmttlx6uaGL3X=;{Kk<1cH; mJ__XI<<8R`pm96g6AjBK<*Lyjb+p*Z%_%eK^Me literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot1.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef95e30196ae23de7d5c7fad877a7e8be806fa8 GIT binary patch literal 86820 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

$`H7QZ(390mC&=Snyc%Lo^F_c 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 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/banner.png b/activity_dashboard_mngmnt/static/description/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..3e85445913361c6086ee45fa7835e466fb6c3e79 GIT binary patch literal 59211 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 kdOqx#7lf64{8s +

+ + +
+
+
+

+ Activity Management

+

+ Advance Activity Management and Dashboard View +

+ +
+
+ +
+ +
+
+

+ Overview +

+
+ +
+

+ This module helps you to manage all activity. +

+
+

+ +
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Activity Dashboard

+
+
+ +
+
+ +
+
+

+ Manage origin of activity

+
+
+ +
+
+ +
+
+

+ Activity tags

+
+
+ +
+
+ +
+
+

+ Mass cancel and Done

+
+
+ +
+ +
+
+

+ Screenshots +

+
+
+

+ Activity Dashboard

+

+ This is Activity Dashboard.

+ +
+ +
+

+ Planned Activities

+

+ View the planned activities table. +

+ +
+ +
+

+ Activities

+

+ Details of completed, overdue and today's activities +

+ +
+ + +
+

+ View the Activity

+

+ We can view the activity By clicking the view button. +

+ +
+ + +
+

+ View the Origin of Activity

+

+ We can view the origin of the activity By clicking the view button. +

+ +
+ + +
+

+ Origin of activity

+

+

+ +
+ +
+

+ Activity Tag

+

+ We can create manage the Activity Tags. +

+ + + +
+ +
+

+ Mass Done

+

+ We can make Mass Done. +

+ +
+

+ Mass Cancel

+

+ We can make Mass Cancel. +

+ +
+
+ +
+
+

Suggested Products

+
+ + +
+
+ + + +
+
+
+

Our Services

+
+
+ +
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

Need Help?

+
+
+
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/activity_dashboard_mngmnt/static/src/css/dashboard.css b/activity_dashboard_mngmnt/static/src/css/dashboard.css new file mode 100644 index 000000000..335e5831e --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/css/dashboard.css @@ -0,0 +1,34 @@ +p, span, a, ul, li, button { + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +strong { + font-weight: 600; +} + +h1, h2, h3, h4, h5, h6 { + line-height: 1.5em; + font-weight: 300; +} + +strong { + font-weight: 400; +} + +.sub_title { + font-size: 14px; +} + +.sub_title div span { + font-weight: 600; +} + +.chart #canvas_graph { + height: 400px !important; +} + +.highcharts-background { + fill: none; +} \ No newline at end of file diff --git a/activity_dashboard_mngmnt/static/src/css/material-gauge.css b/activity_dashboard_mngmnt/static/src/css/material-gauge.css new file mode 100644 index 000000000..7f553df9a --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/css/material-gauge.css @@ -0,0 +1,194 @@ +/* + * #### Gauge Component + * + * The standard markup for the component is: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * No + * + * Yes + *
+ *
+ */ + +/* + * First define all of the relevant rules that aren't dependent + * on the size of the gauge. We want to collect the size-depenent + * rules in one place to make it easier to adjust the size. + */ + +.gauge { + position: relative; +} + +.gauge__container { + margin: 0; + padding: 0; + position: absolute; + left: 50%; + overflow: hidden; + text-align: center; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); +} + +.gauge__background { + z-index: 0; + position: absolute; + background-color: #d8f0de; + top: 0; + border-radius: 300px 300px 0 0; +} + +.gauge__data { + z-index: 1; + position: absolute; + background-color: #00c29d; + margin-left: auto; + margin-right: auto; + border-radius: 300px 300px 0 0; + -webkit-transform-origin: center bottom; + -moz-transform-origin: center bottom; + -ms-transform-origin: center bottom; + -o-transform-origin: center bottom; + transform-origin: center bottom; +} + +.gauge__center { + z-index: 2; + position: absolute; + background-color: #f9f9f9; + margin-right: auto; + border-radius: 300px 300px 0 0; +} + +.gauge__marker { + z-index: 3; + background-color: #fff; + position: absolute; + width: 1px; +} + +.gauge__needle { + z-index: 4; + background-color: #21242c; + height: 3px; + position: absolute; + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -ms-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; +} + +.gauge__labels { + display: table; + margin: 0 auto; + position: relative; +} + +.gauge__label--low { + display: table-cell; + text-align: center; + color: #00c29d; +} + +.gauge__label--spacer { + display: table-cell; +} + +.gauge__label--high { + display: table-cell; + text-align: center; + color: #979f99; +} + +/* + * Now define the rules that depend on the size of + * the gauge. We start with sizing for a small mobile + * device. + */ + +.gauge { height: calc(120px + 3em); } +.gauge__container { width: 240px; height: 120px; } +.gauge__marker { height: 120px; left: 119.5px; } +.gauge__background { width: 240px; height: 120px; } +.gauge__center { width: 144px; height: 72px; top: 48px; margin-left: 48px; } +.gauge__data { width: 240px; height: 120px; } +.gauge__needle { left: 120px; top: 117px; width: 120px; } +.gauge__labels { top: 120px; width: 240px; } +.gauge__label--low { width: 48px; } +.gauge__label--spacer { width: 144px; } +.gauge__label--high { width: 48px; } + +/* + * Increase the gauge size slightly on larger viewports. + */ + + @media only screen and (min-width: 400px) { + .gauge { height: calc(150px + 3em); } + .gauge__container { width: 300px; height: 150px; } + .gauge__marker { height: 150px; left: 149.5px; } + .gauge__background { width: 300px; height: 150px; } + .gauge__center { width: 180px; height: 90px; top: 60px; margin-left: 60px; } + .gauge__data { width: 300px; height: 150px; } + .gauge__needle { left: 150px; top: 147px; width: 150px; } + .gauge__labels { top: 160px; width: 300px; font-size: 20px;} + .gauge__label--low { width: 60px; } + .gauge__label--spacer { width: 180px; } + .gauge__label--high { width: 60px; } +} + +/* + * As an option, the `gauge--liveupdate` class can be added + * to the main gauge element. When this class is present, + * we add a transition that animates any changes to the gauge + * value. Currently, the app does not use this option because + * all the inputs that can change gauge values are present + * on tab panels that are different from the gauge itself. + * Therefore, users won't be able to see any gauge changes + * when they make input changes. The code is available, though, + * should this change. + */ + +.gauge--liveupdate .gauge__data, +.gauge--liveupdate .gauge__needle { + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} + +/* + * For a given gauge value, x, ranging from 0.0 to 1.0, set + * the `transform: rotate()` property according to the + * following equation: `-0.5 + 0.5x turns` The default + * properties below represent an x value of 0. + */ + +.gauge__data { + -webkit-transform: rotate(-.50turn); + -moz-transform: rotate(-.50turn); + -ms-transform: rotate(-.50turn); + -o-transform: rotate(-.50turn); + transform: rotate(-.50turn); +} +.gauge__needle { + -webkit-transform: rotate(-.50turn); + -moz-transform: rotate(-.50turn); + -ms-transform: rotate(-.50turn); + -o-transform: rotate(-.50turn); + transform: rotate(-.50turn); +} diff --git a/activity_dashboard_mngmnt/static/src/css/style.scss b/activity_dashboard_mngmnt/static/src/css/style.scss new file mode 100644 index 000000000..d861d3e66 --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/css/style.scss @@ -0,0 +1,64 @@ +.o_action_manager { + direction: ltr; + webkit-box-flex: 1; + webkit-flex: 1 1 auto; + flex: 1 1 auto; + overflow: scroll !important; +} +.activity-dashboard-card { + border-radius: 0.3rem; + display: flex; + justify-content: center; + padding: 1.7rem 1.5rem 1.5rem 1.5rem; + margin: 1rem auto; + height: 100px; +} +.activity-dashboard-card__icon-container { + height: 50px; + width: 50px; + border-radius: 50%; +} +.my_activity { + background-color: #229db9; + border-radius: 10px; + font-size: 35px; +} +.all_activity{ + background: #88dfdf; + border-radius: 10px; + font-size: 35px; +} +.planned_activity { + background-color: #e8c5ac; + border-radius: 10px; + font-size: 35px; +} +.completed_activity{ + background: #a7a1f4;; + border-radius: 10px; + font-size: 35px; +} + +.today_activity{ + background: #f3bdf4; + border-radius: 10px; + font-size: 35px; +} +.overdue_activity { + background-color: #a2d2fb; + border-radius: 10px; + font-size: 35px; +} +.cancelled_activity{ + background: #beeecc; + border-radius: 10px; + font-size: 35px; +} +.activity_type { + background-color: #ecb9b9;; + border-radius: 10px; + font-size: 35px; +} +.dashboard_main_section { + margin: 20px; +} \ No newline at end of file diff --git a/activity_dashboard_mngmnt/static/src/js/activity_dashboard.js b/activity_dashboard_mngmnt/static/src/js/activity_dashboard.js new file mode 100644 index 000000000..a46e38d3a --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/activity_dashboard.js @@ -0,0 +1,257 @@ +odoo.define('activity_dashboard_mngmnt.activity_dashboard', function (require) { + 'use strict'; + var AbstractAction = require('web.AbstractAction'); + var core = require('web.core'); + var rpc = require('web.rpc'); + var QWeb = core.qweb; + var session = require('web.session'); + var user = session.user_id + + var ActivityDashboard = AbstractAction.extend({ + template: 'ActivityDashboard', + events: { + 'click .all_activity': 'all_activity', + 'click .planned_activity': 'planned_activity', + 'click .completed_activity': 'completed_activity', + 'click .today_activity': 'today_activity', + 'click .overdue_activity': 'overdue_activity', + 'click .cancelled_activity': 'cancelled_activity', + 'click .activity_type': 'activity_type', + 'click .click-view': 'click_view', + 'click .click-origin-view': 'click_origin_view' + }, + init: function(parent, context) { + this._super(parent, context); + this.upcoming_events = []; + this.dashboards_templates = ['LoginUser', 'ManageActivity', 'ActivityTable']; + this.login_employee = []; + }, + + start: function() { + var self = this; + this.set("title", 'Dashboard'); + return this._super().then(function() { + self.render_dashboards(); + }); + }, + + render_dashboards: function () { + var self = this; + this._rpc({ + model: 'mail.activity', + method : 'get_activity_count', + args: [[]] + }).then(function(result){ + self.$('.table_view').html(QWeb.render('ManageActivity', { + len_all: result.len_all, + len_planned: result.len_planned, + len_done: result.len_done, + len_today: result.len_today, + len_overdue: result.len_overdue, + len_cancel: result.len_cancel + })); + }); +// this.$('.table_view').html(QWeb.render('ManageActivity')); + self.results = '' + self._rpc({ + model: 'mail.activity', + method : 'search_read', + domain: [["state", "=", 'done'], ["active", "=", false]], + }).then(function(done_activity){ + self._rpc({ + model: 'mail.activity', + method : 'search_read', + domain: [["state", "=", 'planned']], + }).then(function(planned_activity){ + self._rpc({ + model: 'mail.activity', + method : 'search_read', + domain: [["state", "=", 'today']], + }).then(function(today_activity){ + self._rpc({ + model: 'mail.activity', + method : 'search_read', + domain: [["state", "=", 'overdue']], + }).then(function(overdue_activity){ + self.$('.table_view_activity').html(QWeb.render('ActivityTable', { + done_activity: done_activity, + planned_activity: planned_activity, + today_activity: today_activity, + overdue_activity: overdue_activity + })); + }); + }); + }); + }); + }, + click_view: function(e){ + var id = e.target.value + this.do_action({ + type: 'ir.actions.act_window', + name: 'All Activity', + res_model: 'mail.activity', + domain: [['id', '=', id]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list,form', + target: 'current' + }); + }, + click_origin_view: function(e){ + var id_ = e.target.value; + var self = this; + this._rpc({ + model: 'mail.activity', + method : 'get_activity', + args: [[],parseInt(id_)], + }).then(function(result){this + self.do_action({ + type: 'ir.actions.act_window', + name: 'Activity Origin', + res_model: result.model, + domain: [['id', '=', result.res_id]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list,form', + target: 'current' + }); + }); + }, + all_activity: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + var options = { + on_reverse_breadcrumb: this.on_reverse_breadcrumb, + }; + + + this.do_action({ + type: 'ir.actions.act_window', + name: 'All Activity', + res_model: 'mail.activity', + // res_id: [1], + domain: [], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + }, + + planned_activity: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + var options = { + on_reverse_breadcrumb: this.on_reverse_breadcrumb, + }; + this.do_action({ + type: 'ir.actions.act_window', + name: 'Planned Activity', + res_model: 'mail.activity', + domain: [['state', '=', 'planned']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + }, + + completed_activity: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + var options = { + on_reverse_breadcrumb: this.on_reverse_breadcrumb, + }; + this.do_action({ + type: 'ir.actions.act_window', + name: 'Completed Activity', + res_model: 'mail.activity', + domain: [['state', '=', 'done'], ['active', '=', false]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + }, + + today_activity: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + + this.do_action({ + type: 'ir.actions.act_window', + name: "Today's Activities", + res_model: 'mail.activity', + domain: [['state', '=', 'today']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + }, + + overdue_activity: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + var options = { + on_reverse_breadcrumb: this.on_reverse_breadcrumb, + }; + this.do_action({ + type: 'ir.actions.act_window', + name: 'Overdue Activity', + res_model: 'mail.activity', + domain: [['state', '=', 'overdue']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + + }, + + cancelled_activity: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + var options = { + on_reverse_breadcrumb: this.on_reverse_breadcrumb, + }; + this.do_action({ + type: 'ir.actions.act_window', + name: "Today's Activity", + res_model: 'mail.activity', + domain: [['state', '=', 'cancel']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + }, + + activity_type: function(e) { + var self = this; + e.stopPropagation(); + e.preventDefault(); + var options = { + on_reverse_breadcrumb: this.on_reverse_breadcrumb, + }; + var action = { + type: 'ir.actions.act_window', + name: 'Activity Type', + res_model: 'activity.type', + domain: [['state', 'in', ['today']]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + } + this.do_action({ + type: 'ir.actions.act_window', + name: "Today's Activity", + res_model: 'mail.activity.type', + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + }, + +}); + core.action_registry.add("activity_dashboard", ActivityDashboard); + return ActivityDashboard; +}); diff --git a/activity_dashboard_mngmnt/static/src/js/lib/Chart.bundle.js b/activity_dashboard_mngmnt/static/src/js/lib/Chart.bundle.js new file mode 100644 index 000000000..33a955afe --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/lib/Chart.bundle.js @@ -0,0 +1,19288 @@ +/*! + * Chart.js v2.8.0 + * https://www.chartjs.org + * (c) 2019 Chart.js Contributors + * Released under the MIT License + */ +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : +typeof define === 'function' && define.amd ? define(factory) : +(global.Chart = factory()); +}(this, (function () { 'use strict'; + +/* MIT license */ + +var conversions = { + rgb2hsl: rgb2hsl, + rgb2hsv: rgb2hsv, + rgb2hwb: rgb2hwb, + rgb2cmyk: rgb2cmyk, + rgb2keyword: rgb2keyword, + rgb2xyz: rgb2xyz, + rgb2lab: rgb2lab, + rgb2lch: rgb2lch, + + hsl2rgb: hsl2rgb, + hsl2hsv: hsl2hsv, + hsl2hwb: hsl2hwb, + hsl2cmyk: hsl2cmyk, + hsl2keyword: hsl2keyword, + + hsv2rgb: hsv2rgb, + hsv2hsl: hsv2hsl, + hsv2hwb: hsv2hwb, + hsv2cmyk: hsv2cmyk, + hsv2keyword: hsv2keyword, + + hwb2rgb: hwb2rgb, + hwb2hsl: hwb2hsl, + hwb2hsv: hwb2hsv, + hwb2cmyk: hwb2cmyk, + hwb2keyword: hwb2keyword, + + cmyk2rgb: cmyk2rgb, + cmyk2hsl: cmyk2hsl, + cmyk2hsv: cmyk2hsv, + cmyk2hwb: cmyk2hwb, + cmyk2keyword: cmyk2keyword, + + keyword2rgb: keyword2rgb, + keyword2hsl: keyword2hsl, + keyword2hsv: keyword2hsv, + keyword2hwb: keyword2hwb, + keyword2cmyk: keyword2cmyk, + keyword2lab: keyword2lab, + keyword2xyz: keyword2xyz, + + xyz2rgb: xyz2rgb, + xyz2lab: xyz2lab, + xyz2lch: xyz2lch, + + lab2xyz: lab2xyz, + lab2rgb: lab2rgb, + lab2lch: lab2lch, + + lch2lab: lch2lab, + lch2xyz: lch2xyz, + lch2rgb: lch2rgb +}; + + +function rgb2hsl(rgb) { + var r = rgb[0]/255, + g = rgb[1]/255, + b = rgb[2]/255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + delta = max - min, + h, s, l; + + if (max == min) + h = 0; + else if (r == max) + h = (g - b) / delta; + else if (g == max) + h = 2 + (b - r) / delta; + else if (b == max) + h = 4 + (r - g)/ delta; + + h = Math.min(h * 60, 360); + + if (h < 0) + h += 360; + + l = (min + max) / 2; + + if (max == min) + s = 0; + else if (l <= 0.5) + s = delta / (max + min); + else + s = delta / (2 - max - min); + + return [h, s * 100, l * 100]; +} + +function rgb2hsv(rgb) { + var r = rgb[0], + g = rgb[1], + b = rgb[2], + min = Math.min(r, g, b), + max = Math.max(r, g, b), + delta = max - min, + h, s, v; + + if (max == 0) + s = 0; + else + s = (delta/max * 1000)/10; + + if (max == min) + h = 0; + else if (r == max) + h = (g - b) / delta; + else if (g == max) + h = 2 + (b - r) / delta; + else if (b == max) + h = 4 + (r - g) / delta; + + h = Math.min(h * 60, 360); + + if (h < 0) + h += 360; + + v = ((max / 255) * 1000) / 10; + + return [h, s, v]; +} + +function rgb2hwb(rgb) { + var r = rgb[0], + g = rgb[1], + b = rgb[2], + h = rgb2hsl(rgb)[0], + w = 1/255 * Math.min(r, Math.min(g, b)), + b = 1 - 1/255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +} + +function rgb2cmyk(rgb) { + var r = rgb[0] / 255, + g = rgb[1] / 255, + b = rgb[2] / 255, + c, m, y, k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; +} + +function rgb2keyword(rgb) { + return reverseKeywords[JSON.stringify(rgb)]; +} + +function rgb2xyz(rgb) { + var r = rgb[0] / 255, + g = rgb[1] / 255, + b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y *100, z * 100]; +} + +function rgb2lab(rgb) { + var xyz = rgb2xyz(rgb), + x = xyz[0], + y = xyz[1], + z = xyz[2], + l, a, b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +} + +function rgb2lch(args) { + return lab2lch(rgb2lab(args)); +} + +function hsl2rgb(hsl) { + var h = hsl[0] / 360, + s = hsl[1] / 100, + l = hsl[2] / 100, + t1, t2, t3, rgb, val; + + if (s == 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) + t2 = l * (1 + s); + else + t2 = l + s - l * s; + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * - (i - 1); + t3 < 0 && t3++; + t3 > 1 && t3--; + + if (6 * t3 < 1) + val = t1 + (t2 - t1) * 6 * t3; + else if (2 * t3 < 1) + val = t2; + else if (3 * t3 < 2) + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + else + val = t1; + + rgb[i] = val * 255; + } + + return rgb; +} + +function hsl2hsv(hsl) { + var h = hsl[0], + s = hsl[1] / 100, + l = hsl[2] / 100, + sv, v; + + if(l === 0) { + // no need to do calc on black + // also avoids divide by 0 error + return [0, 0, 0]; + } + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + v = (l + s) / 2; + sv = (2 * s) / (l + s); + return [h, sv * 100, v * 100]; +} + +function hsl2hwb(args) { + return rgb2hwb(hsl2rgb(args)); +} + +function hsl2cmyk(args) { + return rgb2cmyk(hsl2rgb(args)); +} + +function hsl2keyword(args) { + return rgb2keyword(hsl2rgb(args)); +} + + +function hsv2rgb(hsv) { + var h = hsv[0] / 60, + s = hsv[1] / 100, + v = hsv[2] / 100, + hi = Math.floor(h) % 6; + + var f = h - Math.floor(h), + p = 255 * v * (1 - s), + q = 255 * v * (1 - (s * f)), + t = 255 * v * (1 - (s * (1 - f))), + v = 255 * v; + + switch(hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +} + +function hsv2hsl(hsv) { + var h = hsv[0], + s = hsv[1] / 100, + v = hsv[2] / 100, + sl, l; + + l = (2 - s) * v; + sl = s * v; + sl /= (l <= 1) ? l : 2 - l; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; +} + +function hsv2hwb(args) { + return rgb2hwb(hsv2rgb(args)) +} + +function hsv2cmyk(args) { + return rgb2cmyk(hsv2rgb(args)); +} + +function hsv2keyword(args) { + return rgb2keyword(hsv2rgb(args)); +} + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +function hwb2rgb(hwb) { + var h = hwb[0] / 360, + wh = hwb[1] / 100, + bl = hwb[2] / 100, + ratio = wh + bl, + i, v, f, n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + if ((i & 0x01) != 0) { + f = 1 - f; + } + n = wh + f * (v - wh); // linear interpolation + + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +} + +function hwb2hsl(args) { + return rgb2hsl(hwb2rgb(args)); +} + +function hwb2hsv(args) { + return rgb2hsv(hwb2rgb(args)); +} + +function hwb2cmyk(args) { + return rgb2cmyk(hwb2rgb(args)); +} + +function hwb2keyword(args) { + return rgb2keyword(hwb2rgb(args)); +} + +function cmyk2rgb(cmyk) { + var c = cmyk[0] / 100, + m = cmyk[1] / 100, + y = cmyk[2] / 100, + k = cmyk[3] / 100, + r, g, b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; +} + +function cmyk2hsl(args) { + return rgb2hsl(cmyk2rgb(args)); +} + +function cmyk2hsv(args) { + return rgb2hsv(cmyk2rgb(args)); +} + +function cmyk2hwb(args) { + return rgb2hwb(cmyk2rgb(args)); +} + +function cmyk2keyword(args) { + return rgb2keyword(cmyk2rgb(args)); +} + + +function xyz2rgb(xyz) { + var x = xyz[0] / 100, + y = xyz[1] / 100, + z = xyz[2] / 100, + r, g, b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r = (r * 12.92); + + g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g = (g * 12.92); + + b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b = (b * 12.92); + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +} + +function xyz2lab(xyz) { + var x = xyz[0], + y = xyz[1], + z = xyz[2], + l, a, b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +} + +function xyz2lch(args) { + return lab2lch(xyz2lab(args)); +} + +function lab2xyz(lab) { + var l = lab[0], + a = lab[1], + b = lab[2], + x, y, z, y2; + + if (l <= 8) { + y = (l * 100) / 903.3; + y2 = (7.787 * (y / 100)) + (16 / 116); + } else { + y = 100 * Math.pow((l + 16) / 116, 3); + y2 = Math.pow(y / 100, 1/3); + } + + x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); + + z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); + + return [x, y, z]; +} + +function lab2lch(lab) { + var l = lab[0], + a = lab[1], + b = lab[2], + hr, h, c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + c = Math.sqrt(a * a + b * b); + return [l, c, h]; +} + +function lab2rgb(args) { + return xyz2rgb(lab2xyz(args)); +} + +function lch2lab(lch) { + var l = lch[0], + c = lch[1], + h = lch[2], + a, b, hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + return [l, a, b]; +} + +function lch2xyz(args) { + return lab2xyz(lch2lab(args)); +} + +function lch2rgb(args) { + return lab2rgb(lch2lab(args)); +} + +function keyword2rgb(keyword) { + return cssKeywords[keyword]; +} + +function keyword2hsl(args) { + return rgb2hsl(keyword2rgb(args)); +} + +function keyword2hsv(args) { + return rgb2hsv(keyword2rgb(args)); +} + +function keyword2hwb(args) { + return rgb2hwb(keyword2rgb(args)); +} + +function keyword2cmyk(args) { + return rgb2cmyk(keyword2rgb(args)); +} + +function keyword2lab(args) { + return rgb2lab(keyword2rgb(args)); +} + +function keyword2xyz(args) { + return rgb2xyz(keyword2rgb(args)); +} + +var cssKeywords = { + aliceblue: [240,248,255], + antiquewhite: [250,235,215], + aqua: [0,255,255], + aquamarine: [127,255,212], + azure: [240,255,255], + beige: [245,245,220], + bisque: [255,228,196], + black: [0,0,0], + blanchedalmond: [255,235,205], + blue: [0,0,255], + blueviolet: [138,43,226], + brown: [165,42,42], + burlywood: [222,184,135], + cadetblue: [95,158,160], + chartreuse: [127,255,0], + chocolate: [210,105,30], + coral: [255,127,80], + cornflowerblue: [100,149,237], + cornsilk: [255,248,220], + crimson: [220,20,60], + cyan: [0,255,255], + darkblue: [0,0,139], + darkcyan: [0,139,139], + darkgoldenrod: [184,134,11], + darkgray: [169,169,169], + darkgreen: [0,100,0], + darkgrey: [169,169,169], + darkkhaki: [189,183,107], + darkmagenta: [139,0,139], + darkolivegreen: [85,107,47], + darkorange: [255,140,0], + darkorchid: [153,50,204], + darkred: [139,0,0], + darksalmon: [233,150,122], + darkseagreen: [143,188,143], + darkslateblue: [72,61,139], + darkslategray: [47,79,79], + darkslategrey: [47,79,79], + darkturquoise: [0,206,209], + darkviolet: [148,0,211], + deeppink: [255,20,147], + deepskyblue: [0,191,255], + dimgray: [105,105,105], + dimgrey: [105,105,105], + dodgerblue: [30,144,255], + firebrick: [178,34,34], + floralwhite: [255,250,240], + forestgreen: [34,139,34], + fuchsia: [255,0,255], + gainsboro: [220,220,220], + ghostwhite: [248,248,255], + gold: [255,215,0], + goldenrod: [218,165,32], + gray: [128,128,128], + green: [0,128,0], + greenyellow: [173,255,47], + grey: [128,128,128], + honeydew: [240,255,240], + hotpink: [255,105,180], + indianred: [205,92,92], + indigo: [75,0,130], + ivory: [255,255,240], + khaki: [240,230,140], + lavender: [230,230,250], + lavenderblush: [255,240,245], + lawngreen: [124,252,0], + lemonchiffon: [255,250,205], + lightblue: [173,216,230], + lightcoral: [240,128,128], + lightcyan: [224,255,255], + lightgoldenrodyellow: [250,250,210], + lightgray: [211,211,211], + lightgreen: [144,238,144], + lightgrey: [211,211,211], + lightpink: [255,182,193], + lightsalmon: [255,160,122], + lightseagreen: [32,178,170], + lightskyblue: [135,206,250], + lightslategray: [119,136,153], + lightslategrey: [119,136,153], + lightsteelblue: [176,196,222], + lightyellow: [255,255,224], + lime: [0,255,0], + limegreen: [50,205,50], + linen: [250,240,230], + magenta: [255,0,255], + maroon: [128,0,0], + mediumaquamarine: [102,205,170], + mediumblue: [0,0,205], + mediumorchid: [186,85,211], + mediumpurple: [147,112,219], + mediumseagreen: [60,179,113], + mediumslateblue: [123,104,238], + mediumspringgreen: [0,250,154], + mediumturquoise: [72,209,204], + mediumvioletred: [199,21,133], + midnightblue: [25,25,112], + mintcream: [245,255,250], + mistyrose: [255,228,225], + moccasin: [255,228,181], + navajowhite: [255,222,173], + navy: [0,0,128], + oldlace: [253,245,230], + olive: [128,128,0], + olivedrab: [107,142,35], + orange: [255,165,0], + orangered: [255,69,0], + orchid: [218,112,214], + palegoldenrod: [238,232,170], + palegreen: [152,251,152], + paleturquoise: [175,238,238], + palevioletred: [219,112,147], + papayawhip: [255,239,213], + peachpuff: [255,218,185], + peru: [205,133,63], + pink: [255,192,203], + plum: [221,160,221], + powderblue: [176,224,230], + purple: [128,0,128], + rebeccapurple: [102, 51, 153], + red: [255,0,0], + rosybrown: [188,143,143], + royalblue: [65,105,225], + saddlebrown: [139,69,19], + salmon: [250,128,114], + sandybrown: [244,164,96], + seagreen: [46,139,87], + seashell: [255,245,238], + sienna: [160,82,45], + silver: [192,192,192], + skyblue: [135,206,235], + slateblue: [106,90,205], + slategray: [112,128,144], + slategrey: [112,128,144], + snow: [255,250,250], + springgreen: [0,255,127], + steelblue: [70,130,180], + tan: [210,180,140], + teal: [0,128,128], + thistle: [216,191,216], + tomato: [255,99,71], + turquoise: [64,224,208], + violet: [238,130,238], + wheat: [245,222,179], + white: [255,255,255], + whitesmoke: [245,245,245], + yellow: [255,255,0], + yellowgreen: [154,205,50] +}; + +var reverseKeywords = {}; +for (var key in cssKeywords) { + reverseKeywords[JSON.stringify(cssKeywords[key])] = key; +} + +var convert = function() { + return new Converter(); +}; + +for (var func in conversions) { + // export Raw versions + convert[func + "Raw"] = (function(func) { + // accept array or plain args + return function(arg) { + if (typeof arg == "number") + arg = Array.prototype.slice.call(arguments); + return conversions[func](arg); + } + })(func); + + var pair = /(\w+)2(\w+)/.exec(func), + from = pair[1], + to = pair[2]; + + // export rgb2hsl and ["rgb"]["hsl"] + convert[from] = convert[from] || {}; + + convert[from][to] = convert[func] = (function(func) { + return function(arg) { + if (typeof arg == "number") + arg = Array.prototype.slice.call(arguments); + + var val = conversions[func](arg); + if (typeof val == "string" || val === undefined) + return val; // keyword + + for (var i = 0; i < val.length; i++) + val[i] = Math.round(val[i]); + return val; + } + })(func); +} + + +/* Converter does lazy conversion and caching */ +var Converter = function() { + this.convs = {}; +}; + +/* Either get the values for a space or + set the values for a space, depending on args */ +Converter.prototype.routeSpace = function(space, args) { + var values = args[0]; + if (values === undefined) { + // color.rgb() + return this.getValues(space); + } + // color.rgb(10, 10, 10) + if (typeof values == "number") { + values = Array.prototype.slice.call(args); + } + + return this.setValues(space, values); +}; + +/* Set the values for a space, invalidating cache */ +Converter.prototype.setValues = function(space, values) { + this.space = space; + this.convs = {}; + this.convs[space] = values; + return this; +}; + +/* Get the values for a space. If there's already + a conversion for the space, fetch it, otherwise + compute it */ +Converter.prototype.getValues = function(space) { + var vals = this.convs[space]; + if (!vals) { + var fspace = this.space, + from = this.convs[fspace]; + vals = convert[fspace][space](from); + + this.convs[space] = vals; + } + return vals; +}; + +["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { + Converter.prototype[space] = function(vals) { + return this.routeSpace(space, arguments); + }; +}); + +var colorConvert = convert; + +var colorName = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +/* MIT license */ + + +var colorString = { + getRgba: getRgba, + getHsla: getHsla, + getRgb: getRgb, + getHsl: getHsl, + getHwb: getHwb, + getAlpha: getAlpha, + + hexString: hexString, + rgbString: rgbString, + rgbaString: rgbaString, + percentString: percentString, + percentaString: percentaString, + hslString: hslString, + hslaString: hslaString, + hwbString: hwbString, + keyword: keyword +}; + +function getRgba(string) { + if (!string) { + return; + } + var abbr = /^#([a-fA-F0-9]{3,4})$/i, + hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i, + rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, + per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, + keyword = /(\w+)/; + + var rgb = [0, 0, 0], + a = 1, + match = string.match(abbr), + hexAlpha = ""; + if (match) { + match = match[1]; + hexAlpha = match[3]; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match[i] + match[i], 16); + } + if (hexAlpha) { + a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100; + } + } + else if (match = string.match(hex)) { + hexAlpha = match[2]; + match = match[1]; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16); + } + if (hexAlpha) { + a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100; + } + } + else if (match = string.match(rgba)) { + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match[i + 1]); + } + a = parseFloat(match[4]); + } + else if (match = string.match(per)) { + for (var i = 0; i < rgb.length; i++) { + rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); + } + a = parseFloat(match[4]); + } + else if (match = string.match(keyword)) { + if (match[1] == "transparent") { + return [0, 0, 0, 0]; + } + rgb = colorName[match[1]]; + if (!rgb) { + return; + } + } + + for (var i = 0; i < rgb.length; i++) { + rgb[i] = scale(rgb[i], 0, 255); + } + if (!a && a != 0) { + a = 1; + } + else { + a = scale(a, 0, 1); + } + rgb[3] = a; + return rgb; +} + +function getHsla(string) { + if (!string) { + return; + } + var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; + var match = string.match(hsl); + if (match) { + var alpha = parseFloat(match[4]); + var h = scale(parseInt(match[1]), 0, 360), + s = scale(parseFloat(match[2]), 0, 100), + l = scale(parseFloat(match[3]), 0, 100), + a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, s, l, a]; + } +} + +function getHwb(string) { + if (!string) { + return; + } + var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; + var match = string.match(hwb); + if (match) { + var alpha = parseFloat(match[4]); + var h = scale(parseInt(match[1]), 0, 360), + w = scale(parseFloat(match[2]), 0, 100), + b = scale(parseFloat(match[3]), 0, 100), + a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, w, b, a]; + } +} + +function getRgb(string) { + var rgba = getRgba(string); + return rgba && rgba.slice(0, 3); +} + +function getHsl(string) { + var hsla = getHsla(string); + return hsla && hsla.slice(0, 3); +} + +function getAlpha(string) { + var vals = getRgba(string); + if (vals) { + return vals[3]; + } + else if (vals = getHsla(string)) { + return vals[3]; + } + else if (vals = getHwb(string)) { + return vals[3]; + } +} + +// generators +function hexString(rgba, a) { + var a = (a !== undefined && rgba.length === 3) ? a : rgba[3]; + return "#" + hexDouble(rgba[0]) + + hexDouble(rgba[1]) + + hexDouble(rgba[2]) + + ( + (a >= 0 && a < 1) + ? hexDouble(Math.round(a * 255)) + : "" + ); +} + +function rgbString(rgba, alpha) { + if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { + return rgbaString(rgba, alpha); + } + return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")"; +} + +function rgbaString(rgba, alpha) { + if (alpha === undefined) { + alpha = (rgba[3] !== undefined ? rgba[3] : 1); + } + return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + + ", " + alpha + ")"; +} + +function percentString(rgba, alpha) { + if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { + return percentaString(rgba, alpha); + } + var r = Math.round(rgba[0]/255 * 100), + g = Math.round(rgba[1]/255 * 100), + b = Math.round(rgba[2]/255 * 100); + + return "rgb(" + r + "%, " + g + "%, " + b + "%)"; +} + +function percentaString(rgba, alpha) { + var r = Math.round(rgba[0]/255 * 100), + g = Math.round(rgba[1]/255 * 100), + b = Math.round(rgba[2]/255 * 100); + return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")"; +} + +function hslString(hsla, alpha) { + if (alpha < 1 || (hsla[3] && hsla[3] < 1)) { + return hslaString(hsla, alpha); + } + return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; +} + +function hslaString(hsla, alpha) { + if (alpha === undefined) { + alpha = (hsla[3] !== undefined ? hsla[3] : 1); + } + return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + + alpha + ")"; +} + +// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax +// (hwb have alpha optional & 1 is default value) +function hwbString(hwb, alpha) { + if (alpha === undefined) { + alpha = (hwb[3] !== undefined ? hwb[3] : 1); + } + return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%" + + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")"; +} + +function keyword(rgb) { + return reverseNames[rgb.slice(0, 3)]; +} + +// helpers +function scale(num, min, max) { + return Math.min(Math.max(min, num), max); +} + +function hexDouble(num) { + var str = num.toString(16).toUpperCase(); + return (str.length < 2) ? "0" + str : str; +} + + +//create a list of reverse color names +var reverseNames = {}; +for (var name in colorName) { + reverseNames[colorName[name]] = name; +} + +/* MIT license */ + + + +var Color = function (obj) { + if (obj instanceof Color) { + return obj; + } + if (!(this instanceof Color)) { + return new Color(obj); + } + + this.valid = false; + this.values = { + rgb: [0, 0, 0], + hsl: [0, 0, 0], + hsv: [0, 0, 0], + hwb: [0, 0, 0], + cmyk: [0, 0, 0, 0], + alpha: 1 + }; + + // parse Color() argument + var vals; + if (typeof obj === 'string') { + vals = colorString.getRgba(obj); + if (vals) { + this.setValues('rgb', vals); + } else if (vals = colorString.getHsla(obj)) { + this.setValues('hsl', vals); + } else if (vals = colorString.getHwb(obj)) { + this.setValues('hwb', vals); + } + } else if (typeof obj === 'object') { + vals = obj; + if (vals.r !== undefined || vals.red !== undefined) { + this.setValues('rgb', vals); + } else if (vals.l !== undefined || vals.lightness !== undefined) { + this.setValues('hsl', vals); + } else if (vals.v !== undefined || vals.value !== undefined) { + this.setValues('hsv', vals); + } else if (vals.w !== undefined || vals.whiteness !== undefined) { + this.setValues('hwb', vals); + } else if (vals.c !== undefined || vals.cyan !== undefined) { + this.setValues('cmyk', vals); + } + } +}; + +Color.prototype = { + isValid: function () { + return this.valid; + }, + rgb: function () { + return this.setSpace('rgb', arguments); + }, + hsl: function () { + return this.setSpace('hsl', arguments); + }, + hsv: function () { + return this.setSpace('hsv', arguments); + }, + hwb: function () { + return this.setSpace('hwb', arguments); + }, + cmyk: function () { + return this.setSpace('cmyk', arguments); + }, + + rgbArray: function () { + return this.values.rgb; + }, + hslArray: function () { + return this.values.hsl; + }, + hsvArray: function () { + return this.values.hsv; + }, + hwbArray: function () { + var values = this.values; + if (values.alpha !== 1) { + return values.hwb.concat([values.alpha]); + } + return values.hwb; + }, + cmykArray: function () { + return this.values.cmyk; + }, + rgbaArray: function () { + var values = this.values; + return values.rgb.concat([values.alpha]); + }, + hslaArray: function () { + var values = this.values; + return values.hsl.concat([values.alpha]); + }, + alpha: function (val) { + if (val === undefined) { + return this.values.alpha; + } + this.setValues('alpha', val); + return this; + }, + + red: function (val) { + return this.setChannel('rgb', 0, val); + }, + green: function (val) { + return this.setChannel('rgb', 1, val); + }, + blue: function (val) { + return this.setChannel('rgb', 2, val); + }, + hue: function (val) { + if (val) { + val %= 360; + val = val < 0 ? 360 + val : val; + } + return this.setChannel('hsl', 0, val); + }, + saturation: function (val) { + return this.setChannel('hsl', 1, val); + }, + lightness: function (val) { + return this.setChannel('hsl', 2, val); + }, + saturationv: function (val) { + return this.setChannel('hsv', 1, val); + }, + whiteness: function (val) { + return this.setChannel('hwb', 1, val); + }, + blackness: function (val) { + return this.setChannel('hwb', 2, val); + }, + value: function (val) { + return this.setChannel('hsv', 2, val); + }, + cyan: function (val) { + return this.setChannel('cmyk', 0, val); + }, + magenta: function (val) { + return this.setChannel('cmyk', 1, val); + }, + yellow: function (val) { + return this.setChannel('cmyk', 2, val); + }, + black: function (val) { + return this.setChannel('cmyk', 3, val); + }, + + hexString: function () { + return colorString.hexString(this.values.rgb); + }, + rgbString: function () { + return colorString.rgbString(this.values.rgb, this.values.alpha); + }, + rgbaString: function () { + return colorString.rgbaString(this.values.rgb, this.values.alpha); + }, + percentString: function () { + return colorString.percentString(this.values.rgb, this.values.alpha); + }, + hslString: function () { + return colorString.hslString(this.values.hsl, this.values.alpha); + }, + hslaString: function () { + return colorString.hslaString(this.values.hsl, this.values.alpha); + }, + hwbString: function () { + return colorString.hwbString(this.values.hwb, this.values.alpha); + }, + keyword: function () { + return colorString.keyword(this.values.rgb, this.values.alpha); + }, + + rgbNumber: function () { + var rgb = this.values.rgb; + return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2]; + }, + + luminosity: function () { + // http://www.w3.org/TR/WCAG20/#relativeluminancedef + var rgb = this.values.rgb; + var lum = []; + for (var i = 0; i < rgb.length; i++) { + var chan = rgb[i] / 255; + lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4); + } + return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; + }, + + contrast: function (color2) { + // http://www.w3.org/TR/WCAG20/#contrast-ratiodef + var lum1 = this.luminosity(); + var lum2 = color2.luminosity(); + if (lum1 > lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + + level: function (color2) { + var contrastRatio = this.contrast(color2); + if (contrastRatio >= 7.1) { + return 'AAA'; + } + + return (contrastRatio >= 4.5) ? 'AA' : ''; + }, + + dark: function () { + // YIQ equation from http://24ways.org/2010/calculating-color-contrast + var rgb = this.values.rgb; + var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; + return yiq < 128; + }, + + light: function () { + return !this.dark(); + }, + + negate: function () { + var rgb = []; + for (var i = 0; i < 3; i++) { + rgb[i] = 255 - this.values.rgb[i]; + } + this.setValues('rgb', rgb); + return this; + }, + + lighten: function (ratio) { + var hsl = this.values.hsl; + hsl[2] += hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + darken: function (ratio) { + var hsl = this.values.hsl; + hsl[2] -= hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + saturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] += hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + desaturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] -= hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + whiten: function (ratio) { + var hwb = this.values.hwb; + hwb[1] += hwb[1] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + blacken: function (ratio) { + var hwb = this.values.hwb; + hwb[2] += hwb[2] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + greyscale: function () { + var rgb = this.values.rgb; + // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale + var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + this.setValues('rgb', [val, val, val]); + return this; + }, + + clearer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha - (alpha * ratio)); + return this; + }, + + opaquer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha + (alpha * ratio)); + return this; + }, + + rotate: function (degrees) { + var hsl = this.values.hsl; + var hue = (hsl[0] + degrees) % 360; + hsl[0] = hue < 0 ? 360 + hue : hue; + this.setValues('hsl', hsl); + return this; + }, + + /** + * Ported from sass implementation in C + * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 + */ + mix: function (mixinColor, weight) { + var color1 = this; + var color2 = mixinColor; + var p = weight === undefined ? 0.5 : weight; + + var w = 2 * p - 1; + var a = color1.alpha() - color2.alpha(); + + var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + return this + .rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue() + ) + .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); + }, + + toJSON: function () { + return this.rgb(); + }, + + clone: function () { + // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, + // making the final build way to big to embed in Chart.js. So let's do it manually, + // assuming that values to clone are 1 dimension arrays containing only numbers, + // except 'alpha' which is a number. + var result = new Color(); + var source = this.values; + var target = result.values; + var value, type; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + value = source[prop]; + type = ({}).toString.call(value); + if (type === '[object Array]') { + target[prop] = value.slice(0); + } else if (type === '[object Number]') { + target[prop] = value; + } else { + console.error('unexpected color value:', value); + } + } + } + + return result; + } +}; + +Color.prototype.spaces = { + rgb: ['red', 'green', 'blue'], + hsl: ['hue', 'saturation', 'lightness'], + hsv: ['hue', 'saturation', 'value'], + hwb: ['hue', 'whiteness', 'blackness'], + cmyk: ['cyan', 'magenta', 'yellow', 'black'] +}; + +Color.prototype.maxes = { + rgb: [255, 255, 255], + hsl: [360, 100, 100], + hsv: [360, 100, 100], + hwb: [360, 100, 100], + cmyk: [100, 100, 100, 100] +}; + +Color.prototype.getValues = function (space) { + var values = this.values; + var vals = {}; + + for (var i = 0; i < space.length; i++) { + vals[space.charAt(i)] = values[space][i]; + } + + if (values.alpha !== 1) { + vals.a = values.alpha; + } + + // {r: 255, g: 255, b: 255, a: 0.4} + return vals; +}; + +Color.prototype.setValues = function (space, vals) { + var values = this.values; + var spaces = this.spaces; + var maxes = this.maxes; + var alpha = 1; + var i; + + this.valid = true; + + if (space === 'alpha') { + alpha = vals; + } else if (vals.length) { + // [10, 10, 10] + values[space] = vals.slice(0, space.length); + alpha = vals[space.length]; + } else if (vals[space.charAt(0)] !== undefined) { + // {r: 10, g: 10, b: 10} + for (i = 0; i < space.length; i++) { + values[space][i] = vals[space.charAt(i)]; + } + + alpha = vals.a; + } else if (vals[spaces[space][0]] !== undefined) { + // {red: 10, green: 10, blue: 10} + var chans = spaces[space]; + + for (i = 0; i < space.length; i++) { + values[space][i] = vals[chans[i]]; + } + + alpha = vals.alpha; + } + + values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); + + if (space === 'alpha') { + return false; + } + + var capped; + + // cap values of the space prior converting all values + for (i = 0; i < space.length; i++) { + capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); + values[space][i] = Math.round(capped); + } + + // convert to all the other color spaces + for (var sname in spaces) { + if (sname !== space) { + values[sname] = colorConvert[space][sname](values[space]); + } + } + + return true; +}; + +Color.prototype.setSpace = function (space, args) { + var vals = args[0]; + + if (vals === undefined) { + // color.rgb() + return this.getValues(space); + } + + // color.rgb(10, 10, 10) + if (typeof vals === 'number') { + vals = Array.prototype.slice.call(args); + } + + this.setValues(space, vals); + return this; +}; + +Color.prototype.setChannel = function (space, index, val) { + var svalues = this.values[space]; + if (val === undefined) { + // color.red() + return svalues[index]; + } else if (val === svalues[index]) { + // color.red(color.red()) + return this; + } + + // color.red(100) + svalues[index] = val; + this.setValues(space, svalues); + + return this; +}; + +if (typeof window !== 'undefined') { + window.Color = Color; +} + +var chartjsColor = Color; + +/** + * @namespace Chart.helpers + */ +var helpers = { + /** + * An empty function that can be used, for example, for optional callback. + */ + noop: function() {}, + + /** + * Returns a unique id, sequentially generated from a global variable. + * @returns {number} + * @function + */ + uid: (function() { + var id = 0; + return function() { + return id++; + }; + }()), + + /** + * Returns true if `value` is neither null nor undefined, else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @since 2.7.0 + */ + isNullOrUndef: function(value) { + return value === null || typeof value === 'undefined'; + }, + + /** + * Returns true if `value` is an array (including typed arrays), else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @function + */ + isArray: function(value) { + if (Array.isArray && Array.isArray(value)) { + return true; + } + var type = Object.prototype.toString.call(value); + if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') { + return true; + } + return false; + }, + + /** + * Returns true if `value` is an object (excluding null), else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @since 2.7.0 + */ + isObject: function(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; + }, + + /** + * Returns true if `value` is a finite number, else returns false + * @param {*} value - The value to test. + * @returns {boolean} + */ + isFinite: function(value) { + return (typeof value === 'number' || value instanceof Number) && isFinite(value); + }, + + /** + * Returns `value` if defined, else returns `defaultValue`. + * @param {*} value - The value to return if defined. + * @param {*} defaultValue - The value to return if `value` is undefined. + * @returns {*} + */ + valueOrDefault: function(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; + }, + + /** + * Returns value at the given `index` in array if defined, else returns `defaultValue`. + * @param {Array} value - The array to lookup for value at `index`. + * @param {number} index - The index in `value` to lookup for value. + * @param {*} defaultValue - The value to return if `value[index]` is undefined. + * @returns {*} + */ + valueAtIndexOrDefault: function(value, index, defaultValue) { + return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); + }, + + /** + * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the + * value returned by `fn`. If `fn` is not a function, this method returns undefined. + * @param {function} fn - The function to call. + * @param {Array|undefined|null} args - The arguments with which `fn` should be called. + * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. + * @returns {*} + */ + callback: function(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } + }, + + /** + * Note(SB) for performance sake, this method should only be used when loopable type + * is unknown or in none intensive code (not called often and small loopable). Else + * it's preferable to use a regular for() loop and save extra function calls. + * @param {object|Array} loopable - The object or array to be iterated. + * @param {function} fn - The function to call for each item. + * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. + * @param {boolean} [reverse] - If true, iterates backward on the loopable. + */ + each: function(loopable, fn, thisArg, reverse) { + var i, len, keys; + if (helpers.isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (helpers.isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } + }, + + /** + * Returns true if the `a0` and `a1` arrays have the same content, else returns false. + * @see https://stackoverflow.com/a/14853974 + * @param {Array} a0 - The array to compare + * @param {Array} a1 - The array to compare + * @returns {boolean} + */ + arrayEquals: function(a0, a1) { + var i, ilen, v0, v1; + + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + + if (v0 instanceof Array && v1 instanceof Array) { + if (!helpers.arrayEquals(v0, v1)) { + return false; + } + } else if (v0 !== v1) { + // NOTE: two different object instances will never be equal: {x:20} != {x:20} + return false; + } + } + + return true; + }, + + /** + * Returns a deep copy of `source` without keeping references on objects and arrays. + * @param {*} source - The value to clone. + * @returns {*} + */ + clone: function(source) { + if (helpers.isArray(source)) { + return source.map(helpers.clone); + } + + if (helpers.isObject(source)) { + var target = {}; + var keys = Object.keys(source); + var klen = keys.length; + var k = 0; + + for (; k < klen; ++k) { + target[keys[k]] = helpers.clone(source[keys[k]]); + } + + return target; + } + + return source; + }, + + /** + * The default merger when Chart.helpers.merge is called without merger option. + * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback. + * @private + */ + _merger: function(key, target, source, options) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.merge(tval, sval, options); + } else { + target[key] = helpers.clone(sval); + } + }, + + /** + * Merges source[key] in target[key] only if target[key] is undefined. + * @private + */ + _mergerIf: function(key, target, source) { + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.mergeIf(tval, sval); + } else if (!target.hasOwnProperty(key)) { + target[key] = helpers.clone(sval); + } + }, + + /** + * Recursively deep copies `source` properties into `target` with the given `options`. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {object} target - The target object in which all sources are merged into. + * @param {object|object[]} source - Object(s) to merge into `target`. + * @param {object} [options] - Merging options: + * @param {function} [options.merger] - The merge method (key, target, source, options) + * @returns {object} The `target` object. + */ + merge: function(target, source, options) { + var sources = helpers.isArray(source) ? source : [source]; + var ilen = sources.length; + var merge, i, keys, klen, k; + + if (!helpers.isObject(target)) { + return target; + } + + options = options || {}; + merge = options.merger || helpers._merger; + + for (i = 0; i < ilen; ++i) { + source = sources[i]; + if (!helpers.isObject(source)) { + continue; + } + + keys = Object.keys(source); + for (k = 0, klen = keys.length; k < klen; ++k) { + merge(keys[k], target, source, options); + } + } + + return target; + }, + + /** + * Recursively deep copies `source` properties into `target` *only* if not defined in target. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {object} target - The target object in which all sources are merged into. + * @param {object|object[]} source - Object(s) to merge into `target`. + * @returns {object} The `target` object. + */ + mergeIf: function(target, source) { + return helpers.merge(target, source, {merger: helpers._mergerIf}); + }, + + /** + * Applies the contents of two or more objects together into the first object. + * @param {object} target - The target object in which all objects are merged into. + * @param {object} arg1 - Object containing additional properties to merge in target. + * @param {object} argN - Additional objects containing properties to merge in target. + * @returns {object} The `target` object. + */ + extend: function(target) { + var setFn = function(value, key) { + target[key] = value; + }; + for (var i = 1, ilen = arguments.length; i < ilen; ++i) { + helpers.each(arguments[i], setFn); + } + return target; + }, + + /** + * Basic javascript inheritance based on the model created in Backbone.js + */ + inherits: function(extensions) { + var me = this; + var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { + return me.apply(this, arguments); + }; + + var Surrogate = function() { + this.constructor = ChartElement; + }; + + Surrogate.prototype = me.prototype; + ChartElement.prototype = new Surrogate(); + ChartElement.extend = helpers.inherits; + + if (extensions) { + helpers.extend(ChartElement.prototype, extensions); + } + + ChartElement.__super__ = me.prototype; + return ChartElement; + } +}; + +var helpers_core = helpers; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.callback instead. + * @function Chart.helpers.callCallback + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +helpers.callCallback = helpers.callback; + +/** + * Provided for backward compatibility, use Array.prototype.indexOf instead. + * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ + * @function Chart.helpers.indexOf + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.indexOf = function(array, item, fromIndex) { + return Array.prototype.indexOf.call(array, item, fromIndex); +}; + +/** + * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. + * @function Chart.helpers.getValueOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueOrDefault = helpers.valueOrDefault; + +/** + * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. + * @function Chart.helpers.getValueAtIndexOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + +/** + * Easing functions adapted from Robert Penner's easing equations. + * @namespace Chart.helpers.easingEffects + * @see http://www.robertpenner.com/easing/ + */ +var effects = { + linear: function(t) { + return t; + }, + + easeInQuad: function(t) { + return t * t; + }, + + easeOutQuad: function(t) { + return -t * (t - 2); + }, + + easeInOutQuad: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t; + } + return -0.5 * ((--t) * (t - 2) - 1); + }, + + easeInCubic: function(t) { + return t * t * t; + }, + + easeOutCubic: function(t) { + return (t = t - 1) * t * t + 1; + }, + + easeInOutCubic: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t; + } + return 0.5 * ((t -= 2) * t * t + 2); + }, + + easeInQuart: function(t) { + return t * t * t * t; + }, + + easeOutQuart: function(t) { + return -((t = t - 1) * t * t * t - 1); + }, + + easeInOutQuart: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t; + } + return -0.5 * ((t -= 2) * t * t * t - 2); + }, + + easeInQuint: function(t) { + return t * t * t * t * t; + }, + + easeOutQuint: function(t) { + return (t = t - 1) * t * t * t * t + 1; + }, + + easeInOutQuint: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t * t; + } + return 0.5 * ((t -= 2) * t * t * t * t + 2); + }, + + easeInSine: function(t) { + return -Math.cos(t * (Math.PI / 2)) + 1; + }, + + easeOutSine: function(t) { + return Math.sin(t * (Math.PI / 2)); + }, + + easeInOutSine: function(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); + }, + + easeInExpo: function(t) { + return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); + }, + + easeOutExpo: function(t) { + return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; + }, + + easeInOutExpo: function(t) { + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if ((t /= 0.5) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }, + + easeInCirc: function(t) { + if (t >= 1) { + return t; + } + return -(Math.sqrt(1 - t * t) - 1); + }, + + easeOutCirc: function(t) { + return Math.sqrt(1 - (t = t - 1) * t); + }, + + easeInOutCirc: function(t) { + if ((t /= 0.5) < 1) { + return -0.5 * (Math.sqrt(1 - t * t) - 1); + } + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }, + + easeInElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + }, + + easeOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; + }, + + easeInOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if ((t /= 0.5) === 2) { + return 1; + } + if (!p) { + p = 0.45; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + if (t < 1) { + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; + }, + easeInBack: function(t) { + var s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + + easeOutBack: function(t) { + var s = 1.70158; + return (t = t - 1) * t * ((s + 1) * t + s) + 1; + }, + + easeInOutBack: function(t) { + var s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }, + + easeInBounce: function(t) { + return 1 - effects.easeOutBounce(1 - t); + }, + + easeOutBounce: function(t) { + if (t < (1 / 2.75)) { + return 7.5625 * t * t; + } + if (t < (2 / 2.75)) { + return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; + } + if (t < (2.5 / 2.75)) { + return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + } + return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; + }, + + easeInOutBounce: function(t) { + if (t < 0.5) { + return effects.easeInBounce(t * 2) * 0.5; + } + return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; + } +}; + +var helpers_easing = { + effects: effects +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.easing.effects instead. + * @function Chart.helpers.easingEffects + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.easingEffects = effects; + +var PI = Math.PI; +var RAD_PER_DEG = PI / 180; +var DOUBLE_PI = PI * 2; +var HALF_PI = PI / 2; +var QUARTER_PI = PI / 4; +var TWO_THIRDS_PI = PI * 2 / 3; + +/** + * @namespace Chart.helpers.canvas + */ +var exports$1 = { + /** + * Clears the entire canvas associated to the given `chart`. + * @param {Chart} chart - The chart for which to clear the canvas. + */ + clear: function(chart) { + chart.ctx.clearRect(0, 0, chart.width, chart.height); + }, + + /** + * Creates a "path" for a rectangle with rounded corners at position (x, y) with a + * given size (width, height) and the same `radius` for all corners. + * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. + * @param {number} x - The x axis of the coordinate for the rectangle starting point. + * @param {number} y - The y axis of the coordinate for the rectangle starting point. + * @param {number} width - The rectangle's width. + * @param {number} height - The rectangle's height. + * @param {number} radius - The rounded amount (in pixels) for the four corners. + * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? + */ + roundedRect: function(ctx, x, y, width, height, radius) { + if (radius) { + var r = Math.min(radius, height / 2, width / 2); + var left = x + r; + var top = y + r; + var right = x + width - r; + var bottom = y + height - r; + + ctx.moveTo(x, top); + if (left < right && top < bottom) { + ctx.arc(left, top, r, -PI, -HALF_PI); + ctx.arc(right, top, r, -HALF_PI, 0); + ctx.arc(right, bottom, r, 0, HALF_PI); + ctx.arc(left, bottom, r, HALF_PI, PI); + } else if (left < right) { + ctx.moveTo(left, y); + ctx.arc(right, top, r, -HALF_PI, HALF_PI); + ctx.arc(left, top, r, HALF_PI, PI + HALF_PI); + } else if (top < bottom) { + ctx.arc(left, top, r, -PI, 0); + ctx.arc(left, bottom, r, 0, PI); + } else { + ctx.arc(left, top, r, -PI, PI); + } + ctx.closePath(); + ctx.moveTo(x, y); + } else { + ctx.rect(x, y, width, height); + } + }, + + drawPoint: function(ctx, style, radius, x, y, rotation) { + var type, xOffset, yOffset, size, cornerRadius; + var rad = (rotation || 0) * RAD_PER_DEG; + + if (style && typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); + return; + } + } + + if (isNaN(radius) || radius <= 0) { + return; + } + + ctx.beginPath(); + + switch (style) { + // Default includes circle + default: + ctx.arc(x, y, radius, 0, DOUBLE_PI); + ctx.closePath(); + break; + case 'triangle': + ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + ctx.closePath(); + break; + case 'rectRounded': + // NOTE: the rounded rect implementation changed to use `arc` instead of + // `quadraticCurveTo` since it generates better results when rect is + // almost a circle. 0.516 (instead of 0.5) produces results with visually + // closer proportion to the previous impl and it is inscribed in the + // circle with `radius`. For more details, see the following PRs: + // https://github.com/chartjs/Chart.js/issues/5597 + // https://github.com/chartjs/Chart.js/issues/5858 + cornerRadius = radius * 0.516; + size = radius - cornerRadius; + xOffset = Math.cos(rad + QUARTER_PI) * size; + yOffset = Math.sin(rad + QUARTER_PI) * size; + ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); + ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); + ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); + ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); + ctx.closePath(); + break; + case 'rect': + if (!rotation) { + size = Math.SQRT1_2 * radius; + ctx.rect(x - size, y - size, 2 * size, 2 * size); + break; + } + rad += QUARTER_PI; + /* falls through */ + case 'rectRot': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + yOffset, y - xOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.lineTo(x - yOffset, y + xOffset); + ctx.closePath(); + break; + case 'crossRot': + rad += QUARTER_PI; + /* falls through */ + case 'cross': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'star': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + rad += QUARTER_PI; + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'line': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + break; + case 'dash': + ctx.moveTo(x, y); + ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); + break; + } + + ctx.fill(); + ctx.stroke(); + }, + + /** + * Returns true if the point is inside the rectangle + * @param {object} point - The point to test + * @param {object} area - The rectangle + * @returns {boolean} + * @private + */ + _isPointInArea: function(point, area) { + var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error. + + return point.x > area.left - epsilon && point.x < area.right + epsilon && + point.y > area.top - epsilon && point.y < area.bottom + epsilon; + }, + + clipArea: function(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); + }, + + unclipArea: function(ctx) { + ctx.restore(); + }, + + lineTo: function(ctx, previous, target, flip) { + var stepped = target.steppedLine; + if (stepped) { + if (stepped === 'middle') { + var midpoint = (previous.x + target.x) / 2.0; + ctx.lineTo(midpoint, flip ? target.y : previous.y); + ctx.lineTo(midpoint, flip ? previous.y : target.y); + } else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); + return; + } + + if (!target.tension) { + ctx.lineTo(target.x, target.y); + return; + } + + ctx.bezierCurveTo( + flip ? previous.controlPointPreviousX : previous.controlPointNextX, + flip ? previous.controlPointPreviousY : previous.controlPointNextY, + flip ? target.controlPointNextX : target.controlPointPreviousX, + flip ? target.controlPointNextY : target.controlPointPreviousY, + target.x, + target.y); + } +}; + +var helpers_canvas = exports$1; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. + * @namespace Chart.helpers.clear + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.clear = exports$1.clear; + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. + * @namespace Chart.helpers.drawRoundedRectangle + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.drawRoundedRectangle = function(ctx) { + ctx.beginPath(); + exports$1.roundedRect.apply(exports$1, arguments); +}; + +var defaults = { + /** + * @private + */ + _set: function(scope, values) { + return helpers_core.merge(this[scope] || (this[scope] = {}), values); + } +}; + +defaults._set('global', { + defaultColor: 'rgba(0,0,0,0.1)', + defaultFontColor: '#666', + defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + defaultFontSize: 12, + defaultFontStyle: 'normal', + defaultLineHeight: 1.2, + showLines: true +}); + +var core_defaults = defaults; + +var valueOrDefault = helpers_core.valueOrDefault; + +/** + * Converts the given font object into a CSS font string. + * @param {object} font - A font object. + * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font + * @private + */ +function toFontString(font) { + if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) { + return null; + } + + return (font.style ? font.style + ' ' : '') + + (font.weight ? font.weight + ' ' : '') + + font.size + 'px ' + + font.family; +} + +/** + * @alias Chart.helpers.options + * @namespace + */ +var helpers_options = { + /** + * Converts the given line height `value` in pixels for a specific font `size`. + * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). + * @param {number} size - The font size (in pixels) used to resolve relative `value`. + * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid). + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height + * @since 2.7.0 + */ + toLineHeight: function(value, size) { + var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } + + value = +matches[2]; + + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + default: + break; + } + + return size * value; + }, + + /** + * Converts the given value into a padding object with pre-computed width/height. + * @param {number|object} value - If a number, set the value to all TRBL component, + * else, if and object, use defined properties and sets undefined ones to 0. + * @returns {object} The padding values (top, right, bottom, left, width, height) + * @since 2.7.0 + */ + toPadding: function(value) { + var t, r, b, l; + + if (helpers_core.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + top: t, + right: r, + bottom: b, + left: l, + height: t + b, + width: l + r + }; + }, + + /** + * Parses font options and returns the font object. + * @param {object} options - A object that contains font options to be parsed. + * @return {object} The font object. + * @todo Support font.* options and renamed to toFont(). + * @private + */ + _parseFont: function(options) { + var globalDefaults = core_defaults.global; + var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); + var font = { + family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily), + lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size), + size: size, + style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle), + weight: null, + string: '' + }; + + font.string = toFontString(font); + return font; + }, + + /** + * Evaluates the given `inputs` sequentially and returns the first defined value. + * @param {Array} inputs - An array of values, falling back to the last value. + * @param {object} [context] - If defined and the current value is a function, the value + * is called with `context` as first argument and the result becomes the new input. + * @param {number} [index] - If defined and the current value is an array, the value + * at `index` become the new input. + * @since 2.7.0 + */ + resolve: function(inputs, context, index) { + var i, ilen, value; + + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + } + if (index !== undefined && helpers_core.isArray(value)) { + value = value[index]; + } + if (value !== undefined) { + return value; + } + } + } +}; + +var helpers$1 = helpers_core; +var easing = helpers_easing; +var canvas = helpers_canvas; +var options = helpers_options; +helpers$1.easing = easing; +helpers$1.canvas = canvas; +helpers$1.options = options; + +function interpolate(start, view, model, ease) { + var keys = Object.keys(model); + var i, ilen, key, actual, origin, target, type, c0, c1; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + + target = model[key]; + + // if a value is added to the model after pivot() has been called, the view + // doesn't contain it, so let's initialize the view to the target value. + if (!view.hasOwnProperty(key)) { + view[key] = target; + } + + actual = view[key]; + + if (actual === target || key[0] === '_') { + continue; + } + + if (!start.hasOwnProperty(key)) { + start[key] = actual; + } + + origin = start[key]; + + type = typeof target; + + if (type === typeof origin) { + if (type === 'string') { + c0 = chartjsColor(origin); + if (c0.valid) { + c1 = chartjsColor(target); + if (c1.valid) { + view[key] = c1.mix(c0, ease).rgbString(); + continue; + } + } + } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) { + view[key] = origin + (target - origin) * ease; + continue; + } + } + + view[key] = target; + } +} + +var Element = function(configuration) { + helpers$1.extend(this, configuration); + this.initialize.apply(this, arguments); +}; + +helpers$1.extend(Element.prototype, { + + initialize: function() { + this.hidden = false; + }, + + pivot: function() { + var me = this; + if (!me._view) { + me._view = helpers$1.clone(me._model); + } + me._start = {}; + return me; + }, + + transition: function(ease) { + var me = this; + var model = me._model; + var start = me._start; + var view = me._view; + + // No animation -> No Transition + if (!model || ease === 1) { + me._view = model; + me._start = null; + return me; + } + + if (!view) { + view = me._view = {}; + } + + if (!start) { + start = me._start = {}; + } + + interpolate(start, view, model, ease); + + return me; + }, + + tooltipPosition: function() { + return { + x: this._model.x, + y: this._model.y + }; + }, + + hasValue: function() { + return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y); + } +}); + +Element.extend = helpers$1.inherits; + +var core_element = Element; + +var exports$2 = core_element.extend({ + chart: null, // the animation associated chart instance + currentStep: 0, // the current animation step + numSteps: 60, // default number of steps + easing: '', // the easing to use for this animation + render: null, // render function used by the animation service + + onAnimationProgress: null, // user specified callback to fire on each step of the animation + onAnimationComplete: null, // user specified callback to fire when the animation finishes +}); + +var core_animation = exports$2; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.Animation instead + * @prop Chart.Animation#animationObject + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports$2.prototype, 'animationObject', { + get: function() { + return this; + } +}); + +/** + * Provided for backward compatibility, use Chart.Animation#chart instead + * @prop Chart.Animation#chartInstance + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports$2.prototype, 'chartInstance', { + get: function() { + return this.chart; + }, + set: function(value) { + this.chart = value; + } +}); + +core_defaults._set('global', { + animation: { + duration: 1000, + easing: 'easeOutQuart', + onProgress: helpers$1.noop, + onComplete: helpers$1.noop + } +}); + +var core_animations = { + animations: [], + request: null, + + /** + * @param {Chart} chart - The chart to animate. + * @param {Chart.Animation} animation - The animation that we will animate. + * @param {number} duration - The animation duration in ms. + * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions + */ + addAnimation: function(chart, animation, duration, lazy) { + var animations = this.animations; + var i, ilen; + + animation.chart = chart; + animation.startTime = Date.now(); + animation.duration = duration; + + if (!lazy) { + chart.animating = true; + } + + for (i = 0, ilen = animations.length; i < ilen; ++i) { + if (animations[i].chart === chart) { + animations[i] = animation; + return; + } + } + + animations.push(animation); + + // If there are no animations queued, manually kickstart a digest, for lack of a better word + if (animations.length === 1) { + this.requestAnimationFrame(); + } + }, + + cancelAnimation: function(chart) { + var index = helpers$1.findIndex(this.animations, function(animation) { + return animation.chart === chart; + }); + + if (index !== -1) { + this.animations.splice(index, 1); + chart.animating = false; + } + }, + + requestAnimationFrame: function() { + var me = this; + if (me.request === null) { + // Skip animation frame requests until the active one is executed. + // This can happen when processing mouse events, e.g. 'mousemove' + // and 'mouseout' events will trigger multiple renders. + me.request = helpers$1.requestAnimFrame.call(window, function() { + me.request = null; + me.startDigest(); + }); + } + }, + + /** + * @private + */ + startDigest: function() { + var me = this; + + me.advance(); + + // Do we have more stuff to animate? + if (me.animations.length > 0) { + me.requestAnimationFrame(); + } + }, + + /** + * @private + */ + advance: function() { + var animations = this.animations; + var animation, chart, numSteps, nextStep; + var i = 0; + + // 1 animation per chart, so we are looping charts here + while (i < animations.length) { + animation = animations[i]; + chart = animation.chart; + numSteps = animation.numSteps; + + // Make sure that currentStep starts at 1 + // https://github.com/chartjs/Chart.js/issues/6104 + nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1; + animation.currentStep = Math.min(nextStep, numSteps); + + helpers$1.callback(animation.render, [chart, animation], chart); + helpers$1.callback(animation.onAnimationProgress, [animation], chart); + + if (animation.currentStep >= numSteps) { + helpers$1.callback(animation.onAnimationComplete, [animation], chart); + chart.animating = false; + animations.splice(i, 1); + } else { + ++i; + } + } + } +}; + +var resolve = helpers$1.options.resolve; + +var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; + +/** + * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', + * 'unshift') and notify the listener AFTER the array has been altered. Listeners are + * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + */ +function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } + + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] + } + }); + + arrayEvents.forEach(function(key) { + var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); + var base = array[key]; + + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value: function() { + var args = Array.prototype.slice.call(arguments); + var res = base.apply(this, args); + + helpers$1.each(array._chartjs.listeners, function(object) { + if (typeof object[method] === 'function') { + object[method].apply(object, args); + } + }); + + return res; + } + }); + }); +} + +/** + * Removes the given array event listener and cleanup extra attached properties (such as + * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + */ +function unlistenArrayEvents(array, listener) { + var stub = array._chartjs; + if (!stub) { + return; + } + + var listeners = stub.listeners; + var index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } + + if (listeners.length > 0) { + return; + } + + arrayEvents.forEach(function(key) { + delete array[key]; + }); + + delete array._chartjs; +} + +// Base class for all dataset controllers (line, bar, etc) +var DatasetController = function(chart, datasetIndex) { + this.initialize(chart, datasetIndex); +}; + +helpers$1.extend(DatasetController.prototype, { + + /** + * Element type used to generate a meta dataset (e.g. Chart.element.Line). + * @type {Chart.core.element} + */ + datasetElementType: null, + + /** + * Element type used to generate a meta data (e.g. Chart.element.Point). + * @type {Chart.core.element} + */ + dataElementType: null, + + initialize: function(chart, datasetIndex) { + var me = this; + me.chart = chart; + me.index = datasetIndex; + me.linkScales(); + me.addElements(); + }, + + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, + + linkScales: function() { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); + + if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { + meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; + } + if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { + meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; + } + }, + + getDataset: function() { + return this.chart.data.datasets[this.index]; + }, + + getMeta: function() { + return this.chart.getDatasetMeta(this.index); + }, + + getScaleForId: function(scaleID) { + return this.chart.scales[scaleID]; + }, + + /** + * @private + */ + _getValueScaleId: function() { + return this.getMeta().yAxisID; + }, + + /** + * @private + */ + _getIndexScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + _getValueScale: function() { + return this.getScaleForId(this._getValueScaleId()); + }, + + /** + * @private + */ + _getIndexScale: function() { + return this.getScaleForId(this._getIndexScaleId()); + }, + + reset: function() { + this.update(true); + }, + + /** + * @private + */ + destroy: function() { + if (this._data) { + unlistenArrayEvents(this._data, this); + } + }, + + createMetaDataset: function() { + var me = this; + var type = me.datasetElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index + }); + }, + + createMetaData: function(index) { + var me = this; + var type = me.dataElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index, + _index: index + }); + }, + + addElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data || []; + var metaData = meta.data; + var i, ilen; + + for (i = 0, ilen = data.length; i < ilen; ++i) { + metaData[i] = metaData[i] || me.createMetaData(i); + } + + meta.dataset = meta.dataset || me.createMetaDataset(); + }, + + addElementAndReset: function(index) { + var element = this.createMetaData(index); + this.getMeta().data.splice(index, 0, element); + this.updateElement(element, index, true); + }, + + buildOrUpdateElements: function() { + var me = this; + var dataset = me.getDataset(); + var data = dataset.data || (dataset.data = []); + + // In order to correctly handle data addition/deletion animation (an thus simulate + // real-time charts), we need to monitor these data modifications and synchronize + // the internal meta data accordingly. + if (me._data !== data) { + if (me._data) { + // This case happens when the user replaced the data array instance. + unlistenArrayEvents(me._data, me); + } + + if (data && Object.isExtensible(data)) { + listenArrayEvents(data, me); + } + me._data = data; + } + + // Re-sync meta data in case the user replaced the data array or if we missed + // any updates and so make sure that we handle number of datapoints changing. + me.resyncElements(); + }, + + update: helpers$1.noop, + + transition: function(easingValue) { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + for (; i < ilen; ++i) { + elements[i].transition(easingValue); + } + + if (meta.dataset) { + meta.dataset.transition(easingValue); + } + }, + + draw: function() { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + if (meta.dataset) { + meta.dataset.draw(); + } + + for (; i < ilen; ++i) { + elements[i].draw(); + } + }, + + removeHoverStyle: function(element) { + helpers$1.merge(element._model, element.$previousStyle || {}); + delete element.$previousStyle; + }, + + setHoverStyle: function(element) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var model = element._model; + var getHoverColor = helpers$1.getHoverColor; + + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth + }; + + model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index); + model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index); + model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index); + }, + + /** + * @private + */ + resyncElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data; + var numMeta = meta.data.length; + var numData = data.length; + + if (numData < numMeta) { + meta.data.splice(numData, numMeta - numData); + } else if (numData > numMeta) { + me.insertElements(numMeta, numData - numMeta); + } + }, + + /** + * @private + */ + insertElements: function(start, count) { + for (var i = 0; i < count; ++i) { + this.addElementAndReset(start + i); + } + }, + + /** + * @private + */ + onDataPush: function() { + var count = arguments.length; + this.insertElements(this.getDataset().data.length - count, count); + }, + + /** + * @private + */ + onDataPop: function() { + this.getMeta().data.pop(); + }, + + /** + * @private + */ + onDataShift: function() { + this.getMeta().data.shift(); + }, + + /** + * @private + */ + onDataSplice: function(start, count) { + this.getMeta().data.splice(start, count); + this.insertElements(start, arguments.length - 2); + }, + + /** + * @private + */ + onDataUnshift: function() { + this.insertElements(0, arguments.length); + } +}); + +DatasetController.extend = helpers$1.inherits; + +var core_datasetController = DatasetController; + +core_defaults._set('global', { + elements: { + arc: { + backgroundColor: core_defaults.global.defaultColor, + borderColor: '#fff', + borderWidth: 2, + borderAlign: 'center' + } + } +}); + +var element_arc = core_element.extend({ + inLabelRange: function(mouseX) { + var vm = this._view; + + if (vm) { + return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); + } + return false; + }, + + inRange: function(chartX, chartY) { + var vm = this._view; + + if (vm) { + var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY}); + var angle = pointRelativePosition.angle; + var distance = pointRelativePosition.distance; + + // Sanitise angle range + var startAngle = vm.startAngle; + var endAngle = vm.endAngle; + while (endAngle < startAngle) { + endAngle += 2.0 * Math.PI; + } + while (angle > endAngle) { + angle -= 2.0 * Math.PI; + } + while (angle < startAngle) { + angle += 2.0 * Math.PI; + } + + // Check if within the range of the open/close angle + var betweenAngles = (angle >= startAngle && angle <= endAngle); + var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); + + return (betweenAngles && withinRadius); + } + return false; + }, + + getCenterPoint: function() { + var vm = this._view; + var halfAngle = (vm.startAngle + vm.endAngle) / 2; + var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; + return { + x: vm.x + Math.cos(halfAngle) * halfRadius, + y: vm.y + Math.sin(halfAngle) * halfRadius + }; + }, + + getArea: function() { + var vm = this._view; + return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); + }, + + tooltipPosition: function() { + var vm = this._view; + var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); + var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; + + return { + x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), + y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) + }; + }, + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var sA = vm.startAngle; + var eA = vm.endAngle; + var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; + var angleMargin; + + ctx.save(); + + ctx.beginPath(); + ctx.arc(vm.x, vm.y, Math.max(vm.outerRadius - pixelMargin, 0), sA, eA); + ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + ctx.closePath(); + + ctx.fillStyle = vm.backgroundColor; + ctx.fill(); + + if (vm.borderWidth) { + if (vm.borderAlign === 'inner') { + // Draw an inner border by cliping the arc and drawing a double-width border + // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders + ctx.beginPath(); + angleMargin = pixelMargin / vm.outerRadius; + ctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin); + if (vm.innerRadius > pixelMargin) { + angleMargin = pixelMargin / vm.innerRadius; + ctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true); + } else { + ctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2); + } + ctx.closePath(); + ctx.clip(); + + ctx.beginPath(); + ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); + ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + ctx.closePath(); + + ctx.lineWidth = vm.borderWidth * 2; + ctx.lineJoin = 'round'; + } else { + ctx.lineWidth = vm.borderWidth; + ctx.lineJoin = 'bevel'; + } + + ctx.strokeStyle = vm.borderColor; + ctx.stroke(); + } + + ctx.restore(); + } +}); + +var valueOrDefault$1 = helpers$1.valueOrDefault; + +var defaultColor = core_defaults.global.defaultColor; + +core_defaults._set('global', { + elements: { + line: { + tension: 0.4, + backgroundColor: defaultColor, + borderWidth: 3, + borderColor: defaultColor, + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + capBezierPoints: true, + fill: true, // do we fill in the area between the line and its base axis + } + } +}); + +var element_line = core_element.extend({ + draw: function() { + var me = this; + var vm = me._view; + var ctx = me._chart.ctx; + var spanGaps = vm.spanGaps; + var points = me._children.slice(); // clone array + var globalDefaults = core_defaults.global; + var globalOptionLineElements = globalDefaults.elements.line; + var lastDrawnIndex = -1; + var index, current, previous, currentVM; + + // If we are looping, adding the first point again + if (me._loop && points.length) { + points.push(points[0]); + } + + ctx.save(); + + // Stroke Line Options + ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; + + // IE 9 and 10 do not support line dash + if (ctx.setLineDash) { + ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); + } + + ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset); + ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; + ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth); + ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + + // Stroke Line + ctx.beginPath(); + lastDrawnIndex = -1; + + for (index = 0; index < points.length; ++index) { + current = points[index]; + previous = helpers$1.previousItem(points, index); + currentVM = current._view; + + // First point moves to it's starting position no matter what + if (index === 0) { + if (!currentVM.skip) { + ctx.moveTo(currentVM.x, currentVM.y); + lastDrawnIndex = index; + } + } else { + previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; + + if (!currentVM.skip) { + if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { + // There was a gap and this is the first point after the gap + ctx.moveTo(currentVM.x, currentVM.y); + } else { + // Line to next point + helpers$1.canvas.lineTo(ctx, previous._view, current._view); + } + lastDrawnIndex = index; + } + } + } + + ctx.stroke(); + ctx.restore(); + } +}); + +var valueOrDefault$2 = helpers$1.valueOrDefault; + +var defaultColor$1 = core_defaults.global.defaultColor; + +core_defaults._set('global', { + elements: { + point: { + radius: 3, + pointStyle: 'circle', + backgroundColor: defaultColor$1, + borderColor: defaultColor$1, + borderWidth: 1, + // Hover + hitRadius: 1, + hoverRadius: 4, + hoverBorderWidth: 1 + } + } +}); + +function xRange(mouseX) { + var vm = this._view; + return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; +} + +function yRange(mouseY) { + var vm = this._view; + return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; +} + +var element_point = core_element.extend({ + inRange: function(mouseX, mouseY) { + var vm = this._view; + return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; + }, + + inLabelRange: xRange, + inXRange: xRange, + inYRange: yRange, + + getCenterPoint: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + }, + + getArea: function() { + return Math.PI * Math.pow(this._view.radius, 2); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y, + padding: vm.radius + vm.borderWidth + }; + }, + + draw: function(chartArea) { + var vm = this._view; + var ctx = this._chart.ctx; + var pointStyle = vm.pointStyle; + var rotation = vm.rotation; + var radius = vm.radius; + var x = vm.x; + var y = vm.y; + var globalDefaults = core_defaults.global; + var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow + + if (vm.skip) { + return; + } + + // Clipping for Points. + if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) { + ctx.strokeStyle = vm.borderColor || defaultColor; + ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth); + ctx.fillStyle = vm.backgroundColor || defaultColor; + helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); + } + } +}); + +var defaultColor$2 = core_defaults.global.defaultColor; + +core_defaults._set('global', { + elements: { + rectangle: { + backgroundColor: defaultColor$2, + borderColor: defaultColor$2, + borderSkipped: 'bottom', + borderWidth: 0 + } + } +}); + +function isVertical(vm) { + return vm && vm.width !== undefined; +} + +/** + * Helper function to get the bounds of the bar regardless of the orientation + * @param bar {Chart.Element.Rectangle} the bar + * @return {Bounds} bounds of the bar + * @private + */ +function getBarBounds(vm) { + var x1, x2, y1, y2, half; + + if (isVertical(vm)) { + half = vm.width / 2; + x1 = vm.x - half; + x2 = vm.x + half; + y1 = Math.min(vm.y, vm.base); + y2 = Math.max(vm.y, vm.base); + } else { + half = vm.height / 2; + x1 = Math.min(vm.x, vm.base); + x2 = Math.max(vm.x, vm.base); + y1 = vm.y - half; + y2 = vm.y + half; + } + + return { + left: x1, + top: y1, + right: x2, + bottom: y2 + }; +} + +function swap(orig, v1, v2) { + return orig === v1 ? v2 : orig === v2 ? v1 : orig; +} + +function parseBorderSkipped(vm) { + var edge = vm.borderSkipped; + var res = {}; + + if (!edge) { + return res; + } + + if (vm.horizontal) { + if (vm.base > vm.x) { + edge = swap(edge, 'left', 'right'); + } + } else if (vm.base < vm.y) { + edge = swap(edge, 'bottom', 'top'); + } + + res[edge] = true; + return res; +} + +function parseBorderWidth(vm, maxW, maxH) { + var value = vm.borderWidth; + var skip = parseBorderSkipped(vm); + var t, r, b, l; + + if (helpers$1.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + t: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t, + r: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r, + b: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b, + l: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l + }; +} + +function boundingRects(vm) { + var bounds = getBarBounds(vm); + var width = bounds.right - bounds.left; + var height = bounds.bottom - bounds.top; + var border = parseBorderWidth(vm, width / 2, height / 2); + + return { + outer: { + x: bounds.left, + y: bounds.top, + w: width, + h: height + }, + inner: { + x: bounds.left + border.l, + y: bounds.top + border.t, + w: width - border.l - border.r, + h: height - border.t - border.b + } + }; +} + +function inRange(vm, x, y) { + var skipX = x === null; + var skipY = y === null; + var bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm); + + return bounds + && (skipX || x >= bounds.left && x <= bounds.right) + && (skipY || y >= bounds.top && y <= bounds.bottom); +} + +var element_rectangle = core_element.extend({ + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var rects = boundingRects(vm); + var outer = rects.outer; + var inner = rects.inner; + + ctx.fillStyle = vm.backgroundColor; + ctx.fillRect(outer.x, outer.y, outer.w, outer.h); + + if (outer.w === inner.w && outer.h === inner.h) { + return; + } + + ctx.save(); + ctx.beginPath(); + ctx.rect(outer.x, outer.y, outer.w, outer.h); + ctx.clip(); + ctx.fillStyle = vm.borderColor; + ctx.rect(inner.x, inner.y, inner.w, inner.h); + ctx.fill('evenodd'); + ctx.restore(); + }, + + height: function() { + var vm = this._view; + return vm.base - vm.y; + }, + + inRange: function(mouseX, mouseY) { + return inRange(this._view, mouseX, mouseY); + }, + + inLabelRange: function(mouseX, mouseY) { + var vm = this._view; + return isVertical(vm) + ? inRange(vm, mouseX, null) + : inRange(vm, null, mouseY); + }, + + inXRange: function(mouseX) { + return inRange(this._view, mouseX, null); + }, + + inYRange: function(mouseY) { + return inRange(this._view, null, mouseY); + }, + + getCenterPoint: function() { + var vm = this._view; + var x, y; + if (isVertical(vm)) { + x = vm.x; + y = (vm.y + vm.base) / 2; + } else { + x = (vm.x + vm.base) / 2; + y = vm.y; + } + + return {x: x, y: y}; + }, + + getArea: function() { + var vm = this._view; + + return isVertical(vm) + ? vm.width * Math.abs(vm.y - vm.base) + : vm.height * Math.abs(vm.x - vm.base); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + } +}); + +var elements = {}; +var Arc = element_arc; +var Line = element_line; +var Point = element_point; +var Rectangle = element_rectangle; +elements.Arc = Arc; +elements.Line = Line; +elements.Point = Point; +elements.Rectangle = Rectangle; + +var resolve$1 = helpers$1.options.resolve; + +core_defaults._set('bar', { + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + categoryPercentage: 0.8, + barPercentage: 0.9, + offset: true, + gridLines: { + offsetGridLines: true + } + }], + + yAxes: [{ + type: 'linear' + }] + } +}); + +/** + * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. + * @private + */ +function computeMinSampleSize(scale, pixels) { + var min = scale.isHorizontal() ? scale.width : scale.height; + var ticks = scale.getTicks(); + var prev, curr, i, ilen; + + for (i = 1, ilen = pixels.length; i < ilen; ++i) { + min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1])); + } + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + min = i > 0 ? Math.min(min, curr - prev) : min; + prev = curr; + } + + return min; +} + +/** + * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, + * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This + * mode currently always generates bars equally sized (until we introduce scriptable options?). + * @private + */ +function computeFitCategoryTraits(index, ruler, options) { + var thickness = options.barThickness; + var count = ruler.stackCount; + var curr = ruler.pixels[index]; + var size, ratio; + + if (helpers$1.isNullOrUndef(thickness)) { + size = ruler.min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + // When bar thickness is enforced, category and bar percentages are ignored. + // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') + // and deprecate barPercentage since this value is ignored when thickness is absolute. + size = thickness * count; + ratio = 1; + } + + return { + chunk: size / count, + ratio: ratio, + start: curr - (size / 2) + }; +} + +/** + * Computes an "optimal" category that globally arranges bars side by side (no gap when + * percentage options are 1), based on the previous and following categories. This mode + * generates bars with different widths when data are not evenly spaced. + * @private + */ +function computeFlexCategoryTraits(index, ruler, options) { + var pixels = ruler.pixels; + var curr = pixels[index]; + var prev = index > 0 ? pixels[index - 1] : null; + var next = index < pixels.length - 1 ? pixels[index + 1] : null; + var percent = options.categoryPercentage; + var start, size; + + if (prev === null) { + // first data: its size is double based on the next point or, + // if it's also the last data, we use the scale size. + prev = curr - (next === null ? ruler.end - ruler.start : next - curr); + } + + if (next === null) { + // last data: its size is also double based on the previous point. + next = curr + curr - prev; + } + + start = curr - (curr - Math.min(prev, next)) / 2 * percent; + size = Math.abs(next - prev) / 2 * percent; + + return { + chunk: size / ruler.stackCount, + ratio: options.barPercentage, + start: start + }; +} + +var controller_bar = core_datasetController.extend({ + + dataElementType: elements.Rectangle, + + initialize: function() { + var me = this; + var meta; + + core_datasetController.prototype.initialize.apply(me, arguments); + + meta = me.getMeta(); + meta.stack = me.getDataset().stack; + meta.bar = true; + }, + + update: function(reset) { + var me = this; + var rects = me.getMeta().data; + var i, ilen; + + me._ruler = me.getRuler(); + + for (i = 0, ilen = rects.length; i < ilen; ++i) { + me.updateElement(rects[i], i, reset); + } + }, + + updateElement: function(rectangle, index, reset) { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); + var options = me._resolveElementOptions(rectangle, index); + + rectangle._xScale = me.getScaleForId(meta.xAxisID); + rectangle._yScale = me.getScaleForId(meta.yAxisID); + rectangle._datasetIndex = me.index; + rectangle._index = index; + rectangle._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderSkipped: options.borderSkipped, + borderWidth: options.borderWidth, + datasetLabel: dataset.label, + label: me.chart.data.labels[index] + }; + + me._updateElementGeometry(rectangle, index, reset); + + rectangle.pivot(); + }, + + /** + * @private + */ + _updateElementGeometry: function(rectangle, index, reset) { + var me = this; + var model = rectangle._model; + var vscale = me._getValueScale(); + var base = vscale.getBasePixel(); + var horizontal = vscale.isHorizontal(); + var ruler = me._ruler || me.getRuler(); + var vpixels = me.calculateBarValuePixels(me.index, index); + var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); + + model.horizontal = horizontal; + model.base = reset ? base : vpixels.base; + model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; + model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; + model.height = horizontal ? ipixels.size : undefined; + model.width = horizontal ? undefined : ipixels.size; + }, + + /** + * Returns the stacks based on groups and bar visibility. + * @param {number} [last] - The dataset index + * @returns {string[]} The list of stack IDs + * @private + */ + _getStacks: function(last) { + var me = this; + var chart = me.chart; + var scale = me._getIndexScale(); + var stacked = scale.options.stacked; + var ilen = last === undefined ? chart.data.datasets.length : last + 1; + var stacks = []; + var i, meta; + + for (i = 0; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + if (meta.bar && chart.isDatasetVisible(i) && + (stacked === false || + (stacked === true && stacks.indexOf(meta.stack) === -1) || + (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { + stacks.push(meta.stack); + } + } + + return stacks; + }, + + /** + * Returns the effective number of stacks based on groups and bar visibility. + * @private + */ + getStackCount: function() { + return this._getStacks().length; + }, + + /** + * Returns the stack index for the given dataset based on groups and bar visibility. + * @param {number} [datasetIndex] - The dataset index + * @param {string} [name] - The stack name to find + * @returns {number} The stack index + * @private + */ + getStackIndex: function(datasetIndex, name) { + var stacks = this._getStacks(datasetIndex); + var index = (name !== undefined) + ? stacks.indexOf(name) + : -1; // indexOf returns -1 if element is not present + + return (index === -1) + ? stacks.length - 1 + : index; + }, + + /** + * @private + */ + getRuler: function() { + var me = this; + var scale = me._getIndexScale(); + var stackCount = me.getStackCount(); + var datasetIndex = me.index; + var isHorizontal = scale.isHorizontal(); + var start = isHorizontal ? scale.left : scale.top; + var end = start + (isHorizontal ? scale.width : scale.height); + var pixels = []; + var i, ilen, min; + + for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { + pixels.push(scale.getPixelForValue(null, i, datasetIndex)); + } + + min = helpers$1.isNullOrUndef(scale.options.barThickness) + ? computeMinSampleSize(scale, pixels) + : -1; + + return { + min: min, + pixels: pixels, + start: start, + end: end, + stackCount: stackCount, + scale: scale + }; + }, + + /** + * Note: pixel values are not clamped to the scale area. + * @private + */ + calculateBarValuePixels: function(datasetIndex, index) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var scale = me._getValueScale(); + var isHorizontal = scale.isHorizontal(); + var datasets = chart.data.datasets; + var value = +scale.getRightValue(datasets[datasetIndex].data[index]); + var minBarLength = scale.options.minBarLength; + var stacked = scale.options.stacked; + var stack = meta.stack; + var start = 0; + var i, imeta, ivalue, base, head, size; + + if (stacked || (stacked === undefined && stack !== undefined)) { + for (i = 0; i < datasetIndex; ++i) { + imeta = chart.getDatasetMeta(i); + + if (imeta.bar && + imeta.stack === stack && + imeta.controller._getValueScaleId() === scale.id && + chart.isDatasetVisible(i)) { + + ivalue = +scale.getRightValue(datasets[i].data[index]); + if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { + start += ivalue; + } + } + } + } + + base = scale.getPixelForValue(start); + head = scale.getPixelForValue(start + value); + size = head - base; + + if (minBarLength !== undefined && Math.abs(size) < minBarLength) { + size = minBarLength; + if (value >= 0 && !isHorizontal || value < 0 && isHorizontal) { + head = base - minBarLength; + } else { + head = base + minBarLength; + } + } + + return { + size: size, + base: base, + head: head, + center: head + size / 2 + }; + }, + + /** + * @private + */ + calculateBarIndexPixels: function(datasetIndex, index, ruler) { + var me = this; + var options = ruler.scale.options; + var range = options.barThickness === 'flex' + ? computeFlexCategoryTraits(index, ruler, options) + : computeFitCategoryTraits(index, ruler, options); + + var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); + var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); + var size = Math.min( + helpers$1.valueOrDefault(options.maxBarThickness, Infinity), + range.chunk * range.ratio); + + return { + base: center - size / 2, + head: center + size / 2, + center: center, + size: size + }; + }, + + draw: function() { + var me = this; + var chart = me.chart; + var scale = me._getValueScale(); + var rects = me.getMeta().data; + var dataset = me.getDataset(); + var ilen = rects.length; + var i = 0; + + helpers$1.canvas.clipArea(chart.ctx, chart.chartArea); + + for (; i < ilen; ++i) { + if (!isNaN(scale.getRightValue(dataset.data[i]))) { + rects[i].draw(); + } + } + + helpers$1.canvas.unclipArea(chart.ctx); + }, + + /** + * @private + */ + _resolveElementOptions: function(rectangle, index) { + var me = this; + var chart = me.chart; + var datasets = chart.data.datasets; + var dataset = datasets[me.index]; + var custom = rectangle.custom || {}; + var options = chart.options.elements.rectangle; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderSkipped', + 'borderWidth' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$1([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + return values; + } +}); + +var valueOrDefault$3 = helpers$1.valueOrDefault; +var resolve$2 = helpers$1.options.resolve; + +core_defaults._set('bubble', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + type: 'linear', // bubble should probably use a linear scale by default + position: 'bottom', + id: 'x-axis-0' // need an ID so datasets can reference the scale + }], + yAxes: [{ + type: 'linear', + position: 'left', + id: 'y-axis-0' + }] + }, + + tooltips: { + callbacks: { + title: function() { + // Title doesn't make sense for scatter since we format the data as a point + return ''; + }, + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + var dataPoint = data.datasets[item.datasetIndex].data[item.index]; + return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + } + } + } +}); + +var controller_bubble = core_datasetController.extend({ + /** + * @protected + */ + dataElementType: elements.Point, + + /** + * @protected + */ + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var points = meta.data; + + // Update Points + helpers$1.each(points, function(point, index) { + me.updateElement(point, index, reset); + }); + }, + + /** + * @protected + */ + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var xScale = me.getScaleForId(meta.xAxisID); + var yScale = me.getScaleForId(meta.yAxisID); + var options = me._resolveElementOptions(point, index); + var data = me.getDataset().data[index]; + var dsIndex = me.index; + + var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); + var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); + + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = dsIndex; + point._index = index; + point._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + hitRadius: options.hitRadius, + pointStyle: options.pointStyle, + rotation: options.rotation, + radius: reset ? 0 : options.radius, + skip: custom.skip || isNaN(x) || isNaN(y), + x: x, + y: y, + }; + + point.pivot(); + }, + + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = valueOrDefault$3(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$3(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$3(options.hoverBorderWidth, options.borderWidth); + model.radius = options.radius + options.hoverRadius; + }, + + /** + * @private + */ + _resolveElementOptions: function(point, index) { + var me = this; + var chart = me.chart; + var datasets = chart.data.datasets; + var dataset = datasets[me.index]; + var custom = point.custom || {}; + var options = chart.options.elements.point; + var data = dataset.data[index]; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + 'hoverRadius', + 'hitRadius', + 'pointStyle', + 'rotation' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$2([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + // Custom radius resolution + values.radius = resolve$2([ + custom.radius, + data ? data.r : undefined, + dataset.radius, + options.radius + ], context, index); + + return values; + } +}); + +var resolve$3 = helpers$1.options.resolve; +var valueOrDefault$4 = helpers$1.valueOrDefault; + +core_defaults._set('doughnut', { + animation: { + // Boolean - Whether we animate the rotation of the Doughnut + animateRotate: true, + // Boolean - Whether we animate scaling the Doughnut from the centre + animateScale: false + }, + hover: { + mode: 'single' + }, + legendCallback: function(chart) { + var text = []; + text.push('
    '); + + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('
  • '); + if (labels[i]) { + text.push(labels[i]); + } + text.push('
  • '); + } + } + + text.push('
'); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc && arc.custom || {}; + var arcOpts = chart.options.elements.arc; + var fill = resolve$3([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i); + var stroke = resolve$3([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i); + var bw = resolve$3([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i); + + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + // toggle visibility of index if exists + if (meta.data[index]) { + meta.data[index].hidden = !meta.data[index].hidden; + } + } + + chart.update(); + } + }, + + // The percentage of the chart that we cut out of the middle. + cutoutPercentage: 50, + + // The rotation of the chart, where the first data arc begins. + rotation: Math.PI * -0.5, + + // The total circumference of the chart. + circumference: Math.PI * 2.0, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(tooltipItem, data) { + var dataLabel = data.labels[tooltipItem.index]; + var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; + + if (helpers$1.isArray(dataLabel)) { + // show value on first line of multiline label + // need to clone because we are changing the value + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } + + return dataLabel; + } + } + } +}); + +var controller_doughnut = core_datasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers$1.noop, + + // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly + getRingIndex: function(datasetIndex) { + var ringIndex = 0; + + for (var j = 0; j < datasetIndex; ++j) { + if (this.chart.isDatasetVisible(j)) { + ++ringIndex; + } + } + + return ringIndex; + }, + + update: function(reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var availableWidth = chartArea.right - chartArea.left; + var availableHeight = chartArea.bottom - chartArea.top; + var minSize = Math.min(availableWidth, availableHeight); + var offset = {x: 0, y: 0}; + var meta = me.getMeta(); + var arcs = meta.data; + var cutoutPercentage = opts.cutoutPercentage; + var circumference = opts.circumference; + var chartWeight = me._getRingWeight(me.index); + var i, ilen; + + // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc + if (circumference < Math.PI * 2.0) { + var startAngle = opts.rotation % (Math.PI * 2.0); + startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); + var endAngle = startAngle + circumference; + var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; + var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; + var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); + var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); + var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); + var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); + var cutout = cutoutPercentage / 100.0; + var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; + var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; + var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; + minSize = Math.min(availableWidth / size.width, availableHeight / size.height); + offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; + } + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arcs[i]._options = me._resolveElementOptions(arcs[i], i); + } + + chart.borderWidth = me.getMaxBorderWidth(); + chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); + chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1); + chart.offsetX = offset.x * chart.outerRadius; + chart.offsetY = offset.y * chart.outerRadius; + + meta.total = me.calculateTotal(); + + me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index); + me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0); + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + me.updateElement(arcs[i], i, reset); + } + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var animationOpts = opts.animation; + var centerX = (chartArea.left + chartArea.right) / 2; + var centerY = (chartArea.top + chartArea.bottom) / 2; + var startAngle = opts.rotation; // non reset case handled later + var endAngle = opts.rotation; // non reset case handled later + var dataset = me.getDataset(); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); + var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; + var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; + var options = arc._options || {}; + + helpers$1.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + + // Desired view properties + _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, + x: centerX + chart.offsetX, + y: centerY + chart.offsetY, + startAngle: startAngle, + endAngle: endAngle, + circumference: circumference, + outerRadius: outerRadius, + innerRadius: innerRadius, + label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + } + }); + + var model = arc._model; + + // Set correct angles if not resetting + if (!reset || !animationOpts.animateRotate) { + if (index === 0) { + model.startAngle = opts.rotation; + } else { + model.startAngle = me.getMeta().data[index - 1]._model.endAngle; + } + + model.endAngle = model.startAngle + model.circumference; + } + + arc.pivot(); + }, + + calculateTotal: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var total = 0; + var value; + + helpers$1.each(meta.data, function(element, index) { + value = dataset.data[index]; + if (!isNaN(value) && !element.hidden) { + total += Math.abs(value); + } + }); + + /* if (total === 0) { + total = NaN; + }*/ + + return total; + }, + + calculateCircumference: function(value) { + var total = this.getMeta().total; + if (total > 0 && !isNaN(value)) { + return (Math.PI * 2.0) * (Math.abs(value) / total); + } + return 0; + }, + + // gets the max border or hover width to properly scale pie charts + getMaxBorderWidth: function(arcs) { + var me = this; + var max = 0; + var chart = me.chart; + var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth; + + if (!arcs) { + // Find the outmost visible dataset + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + arcs = meta.data; + if (i !== me.index) { + controller = meta.controller; + } + break; + } + } + } + + if (!arcs) { + return 0; + } + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arc = arcs[i]; + options = controller ? controller._resolveElementOptions(arc, i) : arc._options; + if (options.borderAlign !== 'inner') { + borderWidth = options.borderWidth; + hoverWidth = options.hoverBorderWidth; + + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; + } + } + return max; + }, + + /** + * @protected + */ + setHoverStyle: function(arc) { + var model = arc._model; + var options = arc._options; + var getHoverColor = helpers$1.getHoverColor; + + arc.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + }; + + model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth); + }, + + /** + * @private + */ + _resolveElementOptions: function(arc, index) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var custom = arc.custom || {}; + var options = chart.options.elements.arc; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'borderAlign', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$3([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + return values; + }, + + /** + * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly + * @private + */ + _getRingWeightOffset: function(datasetIndex) { + var ringWeightOffset = 0; + + for (var i = 0; i < datasetIndex; ++i) { + if (this.chart.isDatasetVisible(i)) { + ringWeightOffset += this._getRingWeight(i); + } + } + + return ringWeightOffset; + }, + + /** + * @private + */ + _getRingWeight: function(dataSetIndex) { + return Math.max(valueOrDefault$4(this.chart.data.datasets[dataSetIndex].weight, 1), 0); + }, + + /** + * Returns the sum of all visibile data set weights. This value can be 0. + * @private + */ + _getVisibleDatasetWeightTotal: function() { + return this._getRingWeightOffset(this.chart.data.datasets.length); + } +}); + +core_defaults._set('horizontalBar', { + hover: { + mode: 'index', + axis: 'y' + }, + + scales: { + xAxes: [{ + type: 'linear', + position: 'bottom' + }], + + yAxes: [{ + type: 'category', + position: 'left', + categoryPercentage: 0.8, + barPercentage: 0.9, + offset: true, + gridLines: { + offsetGridLines: true + } + }] + }, + + elements: { + rectangle: { + borderSkipped: 'left' + } + }, + + tooltips: { + mode: 'index', + axis: 'y' + } +}); + +var controller_horizontalBar = controller_bar.extend({ + /** + * @private + */ + _getValueScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + _getIndexScaleId: function() { + return this.getMeta().yAxisID; + } +}); + +var valueOrDefault$5 = helpers$1.valueOrDefault; +var resolve$4 = helpers$1.options.resolve; +var isPointInArea = helpers$1.canvas._isPointInArea; + +core_defaults._set('line', { + showLines: true, + spanGaps: false, + + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + id: 'x-axis-0' + }], + yAxes: [{ + type: 'linear', + id: 'y-axis-0' + }] + } +}); + +function lineEnabled(dataset, options) { + return valueOrDefault$5(dataset.showLine, options.showLines); +} + +var controller_line = core_datasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var scale = me.getScaleForId(meta.yAxisID); + var dataset = me.getDataset(); + var showLine = lineEnabled(dataset, me.chart.options); + var i, ilen; + + // Update Line + if (showLine) { + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } + + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + // Model + line._model = me._resolveLineOptions(line); + + line.pivot(); + } + + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } + + if (showLine && line._model.tension !== 0) { + me.updateBezierControlPoints(); + } + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, + + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var dataset = me.getDataset(); + var datasetIndex = me.index; + var value = dataset.data[index]; + var yScale = me.getScaleForId(meta.yAxisID); + var xScale = me.getScaleForId(meta.xAxisID); + var lineModel = meta.dataset._model; + var x, y; + + var options = me._resolvePointOptions(point, index); + + x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); + y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); + + // Utility + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = datasetIndex; + point._index = index; + + // Desired view properties + point._model = { + x: x, + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: valueOrDefault$5(custom.tension, lineModel ? lineModel.tension : 0), + steppedLine: lineModel ? lineModel.steppedLine : false, + // Tooltip + hitRadius: options.hitRadius + }; + }, + + /** + * @private + */ + _resolvePointOptions: function(element, index) { + var me = this; + var chart = me.chart; + var dataset = chart.data.datasets[me.index]; + var custom = element.custom || {}; + var options = chart.options.elements.point; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var ELEMENT_OPTIONS = { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation' + }; + var keys = Object.keys(ELEMENT_OPTIONS); + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$4([ + custom[key], + dataset[ELEMENT_OPTIONS[key]], + dataset[key], + options[key] + ], context, index); + } + + return values; + }, + + /** + * @private + */ + _resolveLineOptions: function(element) { + var me = this; + var chart = me.chart; + var dataset = chart.data.datasets[me.index]; + var custom = element.custom || {}; + var options = chart.options; + var elementOptions = options.elements.line; + var values = {}; + var i, ilen, key; + + var keys = [ + 'backgroundColor', + 'borderWidth', + 'borderColor', + 'borderCapStyle', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'fill', + 'cubicInterpolationMode' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$4([ + custom[key], + dataset[key], + elementOptions[key] + ]); + } + + // The default behavior of lines is to break at null values, according + // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 + // This option gives lines the ability to span gaps + values.spanGaps = valueOrDefault$5(dataset.spanGaps, options.spanGaps); + values.tension = valueOrDefault$5(dataset.lineTension, elementOptions.tension); + values.steppedLine = resolve$4([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]); + + return values; + }, + + calculatePointY: function(value, index, datasetIndex) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var yScale = me.getScaleForId(meta.yAxisID); + var sumPos = 0; + var sumNeg = 0; + var i, ds, dsMeta; + + if (yScale.options.stacked) { + for (i = 0; i < datasetIndex; i++) { + ds = chart.data.datasets[i]; + dsMeta = chart.getDatasetMeta(i); + if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { + var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); + if (stackedRightValue < 0) { + sumNeg += stackedRightValue || 0; + } else { + sumPos += stackedRightValue || 0; + } + } + } + + var rightValue = Number(yScale.getRightValue(value)); + if (rightValue < 0) { + return yScale.getPixelForValue(sumNeg + rightValue); + } + return yScale.getPixelForValue(sumPos + rightValue); + } + + return yScale.getPixelForValue(value); + }, + + updateBezierControlPoints: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var lineModel = meta.dataset._model; + var area = chart.chartArea; + var points = meta.data || []; + var i, ilen, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (lineModel.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } + + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + if (lineModel.cubicInterpolationMode === 'monotone') { + helpers$1.splineCurveMonotone(points); + } else { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + controlPoints = helpers$1.splineCurve( + helpers$1.previousItem(points, i)._model, + model, + helpers$1.nextItem(points, i)._model, + lineModel.tension + ); + model.controlPointPreviousX = controlPoints.previous.x; + model.controlPointPreviousY = controlPoints.previous.y; + model.controlPointNextX = controlPoints.next.x; + model.controlPointNextY = controlPoints.next.y; + } + } + + if (chart.options.elements.line.capBezierPoints) { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + if (isPointInArea(model, area)) { + if (i > 0 && isPointInArea(points[i - 1]._model, area)) { + model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); + model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); + } + if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) { + model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); + model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); + } + } + } + } + }, + + draw: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var points = meta.data || []; + var area = chart.chartArea; + var ilen = points.length; + var halfBorderWidth; + var i = 0; + + if (lineEnabled(me.getDataset(), chart.options)) { + halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; + + helpers$1.canvas.clipArea(chart.ctx, { + left: area.left, + right: area.right, + top: area.top - halfBorderWidth, + bottom: area.bottom + halfBorderWidth + }); + + meta.dataset.draw(); + + helpers$1.canvas.unclipArea(chart.ctx); + } + + // Draw the points + for (; i < ilen; ++i) { + points[i].draw(area); + } + }, + + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault$5(options.hoverRadius, options.radius); + }, +}); + +var resolve$5 = helpers$1.options.resolve; + +core_defaults._set('polarArea', { + scale: { + type: 'radialLinear', + angleLines: { + display: false + }, + gridLines: { + circular: true + }, + pointLabels: { + display: false + }, + ticks: { + beginAtZero: true + } + }, + + // Boolean - Whether to animate the rotation of the chart + animation: { + animateRotate: true, + animateScale: true + }, + + startAngle: -0.5 * Math.PI, + legendCallback: function(chart) { + var text = []; + text.push('
    '); + + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('
  • '); + if (labels[i]) { + text.push(labels[i]); + } + text.push('
  • '); + } + } + + text.push('
'); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc.custom || {}; + var arcOpts = chart.options.elements.arc; + var fill = resolve$5([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i); + var stroke = resolve$5([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i); + var bw = resolve$5([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i); + + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + meta.data[index].hidden = !meta.data[index].hidden; + } + + chart.update(); + } + }, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(item, data) { + return data.labels[item.index] + ': ' + item.yLabel; + } + } + } +}); + +var controller_polarArea = core_datasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers$1.noop, + + update: function(reset) { + var me = this; + var dataset = me.getDataset(); + var meta = me.getMeta(); + var start = me.chart.options.startAngle || 0; + var starts = me._starts = []; + var angles = me._angles = []; + var arcs = meta.data; + var i, ilen, angle; + + me._updateRadius(); + + meta.count = me.countVisibleElements(); + + for (i = 0, ilen = dataset.data.length; i < ilen; i++) { + starts[i] = start; + angle = me._computeAngle(i); + angles[i] = angle; + start += angle; + } + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arcs[i]._options = me._resolveElementOptions(arcs[i], i); + me.updateElement(arcs[i], i, reset); + } + }, + + /** + * @private + */ + _updateRadius: function() { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); + + chart.outerRadius = Math.max(minSize / 2, 0); + chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); + me.innerRadius = me.outerRadius - chart.radiusLength; + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var opts = chart.options; + var animationOpts = opts.animation; + var scale = chart.scale; + var labels = chart.data.labels; + + var centerX = scale.xCenter; + var centerY = scale.yCenter; + + // var negHalfPI = -0.5 * Math.PI; + var datasetStartAngle = opts.startAngle; + var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var startAngle = me._starts[index]; + var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); + + var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var options = arc._options || {}; + + helpers$1.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, + + // Desired view properties + _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius: reset ? resetRadius : distance, + startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, + endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, + label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index]) + } + }); + + arc.pivot(); + }, + + countVisibleElements: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var count = 0; + + helpers$1.each(meta.data, function(element, index) { + if (!isNaN(dataset.data[index]) && !element.hidden) { + count++; + } + }); + + return count; + }, + + /** + * @protected + */ + setHoverStyle: function(arc) { + var model = arc._model; + var options = arc._options; + var getHoverColor = helpers$1.getHoverColor; + var valueOrDefault = helpers$1.valueOrDefault; + + arc.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + }; + + model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth); + }, + + /** + * @private + */ + _resolveElementOptions: function(arc, index) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var custom = arc.custom || {}; + var options = chart.options.elements.arc; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'borderAlign', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$5([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + return values; + }, + + /** + * @private + */ + _computeAngle: function(index) { + var me = this; + var count = this.getMeta().count; + var dataset = me.getDataset(); + var meta = me.getMeta(); + + if (isNaN(dataset.data[index]) || meta.data[index].hidden) { + return 0; + } + + // Scriptable options + var context = { + chart: me.chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + return resolve$5([ + me.chart.options.elements.arc.angle, + (2 * Math.PI) / count + ], context, index); + } +}); + +core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut)); +core_defaults._set('pie', { + cutoutPercentage: 0 +}); + +// Pie charts are Doughnut chart with different defaults +var controller_pie = controller_doughnut; + +var valueOrDefault$6 = helpers$1.valueOrDefault; +var resolve$6 = helpers$1.options.resolve; + +core_defaults._set('radar', { + scale: { + type: 'radialLinear' + }, + elements: { + line: { + tension: 0 // no bezier in radar + } + } +}); + +var controller_radar = core_datasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + linkScales: helpers$1.noop, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var scale = me.chart.scale; + var dataset = me.getDataset(); + var i, ilen; + + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } + + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + line._loop = true; + // Model + line._model = me._resolveLineOptions(line); + + line.pivot(); + + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } + + // Update bezier control points + me.updateBezierControlPoints(); + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, + + updateElement: function(point, index, reset) { + var me = this; + var custom = point.custom || {}; + var dataset = me.getDataset(); + var scale = me.chart.scale; + var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + var options = me._resolvePointOptions(point, index); + var lineModel = me.getMeta().dataset._model; + var x = reset ? scale.xCenter : pointPosition.x; + var y = reset ? scale.yCenter : pointPosition.y; + + // Utility + point._scale = scale; + point._options = options; + point._datasetIndex = me.index; + point._index = index; + + // Desired view properties + point._model = { + x: x, // value not used in dataset scale, but we want a consistent API between scales + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0), + + // Tooltip + hitRadius: options.hitRadius + }; + }, + + /** + * @private + */ + _resolvePointOptions: function(element, index) { + var me = this; + var chart = me.chart; + var dataset = chart.data.datasets[me.index]; + var custom = element.custom || {}; + var options = chart.options.elements.point; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var ELEMENT_OPTIONS = { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation' + }; + var keys = Object.keys(ELEMENT_OPTIONS); + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$6([ + custom[key], + dataset[ELEMENT_OPTIONS[key]], + dataset[key], + options[key] + ], context, index); + } + + return values; + }, + + /** + * @private + */ + _resolveLineOptions: function(element) { + var me = this; + var chart = me.chart; + var dataset = chart.data.datasets[me.index]; + var custom = element.custom || {}; + var options = chart.options.elements.line; + var values = {}; + var i, ilen, key; + + var keys = [ + 'backgroundColor', + 'borderWidth', + 'borderColor', + 'borderCapStyle', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'fill' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve$6([ + custom[key], + dataset[key], + options[key] + ]); + } + + values.tension = valueOrDefault$6(dataset.lineTension, options.tension); + + return values; + }, + + updateBezierControlPoints: function() { + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = meta.data || []; + var i, ilen, model, controlPoints; + + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + controlPoints = helpers$1.splineCurve( + helpers$1.previousItem(points, i, true)._model, + model, + helpers$1.nextItem(points, i, true)._model, + model.tension + ); + + // Prevent the bezier going outside of the bounds of the graph + model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right); + model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom); + model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); + model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); + } + }, + + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault$6(options.hoverRadius, options.radius); + } +}); + +core_defaults._set('scatter', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + id: 'x-axis-1', // need an ID so datasets can reference the scale + type: 'linear', // scatter should not use a category axis + position: 'bottom' + }], + yAxes: [{ + id: 'y-axis-1', + type: 'linear', + position: 'left' + }] + }, + + showLines: false, + + tooltips: { + callbacks: { + title: function() { + return ''; // doesn't make sense for scatter since data are formatted as a point + }, + label: function(item) { + return '(' + item.xLabel + ', ' + item.yLabel + ')'; + } + } + } +}); + +// Scatter charts use line controllers +var controller_scatter = controller_line; + +// NOTE export a map in which the key represents the controller type, not +// the class, and so must be CamelCase in order to be correctly retrieved +// by the controller in core.controller.js (`controllers[meta.type]`). + +var controllers = { + bar: controller_bar, + bubble: controller_bubble, + doughnut: controller_doughnut, + horizontalBar: controller_horizontalBar, + line: controller_line, + polarArea: controller_polarArea, + pie: controller_pie, + radar: controller_radar, + scatter: controller_scatter +}; + +/** + * Helper function to get relative position for an event + * @param {Event|IEvent} event - The event to get the position for + * @param {Chart} chart - The chart + * @returns {object} the event position + */ +function getRelativePosition(e, chart) { + if (e.native) { + return { + x: e.x, + y: e.y + }; + } + + return helpers$1.getRelativePosition(e, chart); +} + +/** + * Helper function to traverse all of the visible elements in the chart + * @param {Chart} chart - the chart + * @param {function} handler - the callback to execute for each visible item + */ +function parseVisibleItems(chart, handler) { + var datasets = chart.data.datasets; + var meta, i, j, ilen, jlen; + + for (i = 0, ilen = datasets.length; i < ilen; ++i) { + if (!chart.isDatasetVisible(i)) { + continue; + } + + meta = chart.getDatasetMeta(i); + for (j = 0, jlen = meta.data.length; j < jlen; ++j) { + var element = meta.data[j]; + if (!element._view.skip) { + handler(element); + } + } + } +} + +/** + * Helper function to get the items that intersect the event position + * @param {ChartElement[]} items - elements to filter + * @param {object} position - the point to be nearest to + * @return {ChartElement[]} the nearest items + */ +function getIntersectItems(chart, position) { + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + } + }); + + return elements; +} + +/** + * Helper function to get the items nearest to the event position considering all visible items in teh chart + * @param {Chart} chart - the chart to look at elements from + * @param {object} position - the point to be nearest to + * @param {boolean} intersect - if true, only consider items that intersect the position + * @param {function} distanceMetric - function to provide the distance between points + * @return {ChartElement[]} the nearest items + */ +function getNearestItems(chart, position, intersect, distanceMetric) { + var minDistance = Number.POSITIVE_INFINITY; + var nearestItems = []; + + parseVisibleItems(chart, function(element) { + if (intersect && !element.inRange(position.x, position.y)) { + return; + } + + var center = element.getCenterPoint(); + var distance = distanceMetric(position, center); + if (distance < minDistance) { + nearestItems = [element]; + minDistance = distance; + } else if (distance === minDistance) { + // Can have multiple items at the same distance in which case we sort by size + nearestItems.push(element); + } + }); + + return nearestItems; +} + +/** + * Get a distance metric function for two points based on the + * axis mode setting + * @param {string} axis - the axis mode. x|y|xy + */ +function getDistanceMetricForAxis(axis) { + var useX = axis.indexOf('x') !== -1; + var useY = axis.indexOf('y') !== -1; + + return function(pt1, pt2) { + var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} + +function indexMode(chart, e, options) { + var position = getRelativePosition(e, chart); + // Default axis for index mode is 'x' to match old behaviour + options.axis = options.axis || 'x'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var elements = []; + + if (!items.length) { + return []; + } + + chart.data.datasets.forEach(function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + var element = meta.data[items[0]._index]; + + // don't count items that are skipped (null data) + if (element && !element._view.skip) { + elements.push(element); + } + } + }); + + return elements; +} + +/** + * @interface IInteractionOptions + */ +/** + * If true, only consider items that intersect the point + * @name IInterfaceOptions#boolean + * @type Boolean + */ + +/** + * Contains interaction related functions + * @namespace Chart.Interaction + */ +var core_interaction = { + // Helper function for different modes + modes: { + single: function(chart, e) { + var position = getRelativePosition(e, chart); + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + return elements; + } + }); + + return elements.slice(0, 1); + }, + + /** + * @function Chart.Interaction.modes.label + * @deprecated since version 2.4.0 + * @todo remove at version 3 + * @private + */ + label: indexMode, + + /** + * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item + * @function Chart.Interaction.modes.index + * @since v2.4.0 + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + index: indexMode, + + /** + * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect is false, we find the nearest item and return the items in that dataset + * @function Chart.Interaction.modes.dataset + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + dataset: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + + if (items.length > 0) { + items = chart.getDatasetMeta(items[0]._datasetIndex).data; + } + + return items; + }, + + /** + * @function Chart.Interaction.modes.x-axis + * @deprecated since version 2.4.0. Use index mode and intersect == true + * @todo remove at version 3 + * @private + */ + 'x-axis': function(chart, e) { + return indexMode(chart, e, {intersect: false}); + }, + + /** + * Point mode returns all elements that hit test based on the event position + * of the event + * @function Chart.Interaction.modes.intersect + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + point: function(chart, e) { + var position = getRelativePosition(e, chart); + return getIntersectItems(chart, position); + }, + + /** + * nearest mode returns the element closest to the point + * @function Chart.Interaction.modes.intersect + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + nearest: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + return getNearestItems(chart, position, options.intersect, distanceMetric); + }, + + /** + * x mode returns the elements that hit-test at the current x coordinate + * @function Chart.Interaction.modes.x + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + x: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inXRange(position.x)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + }, + + /** + * y mode returns the elements that hit-test at the current y coordinate + * @function Chart.Interaction.modes.y + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + y: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inYRange(position.y)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + } + } +}; + +function filterByPosition(array, position) { + return helpers$1.where(array, function(v) { + return v.position === position; + }); +} + +function sortByWeight(array, reverse) { + array.forEach(function(v, i) { + v._tmpIndex_ = i; + return v; + }); + array.sort(function(a, b) { + var v0 = reverse ? b : a; + var v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0._tmpIndex_ - v1._tmpIndex_ : + v0.weight - v1.weight; + }); + array.forEach(function(v) { + delete v._tmpIndex_; + }); +} + +function findMaxPadding(boxes) { + var top = 0; + var left = 0; + var bottom = 0; + var right = 0; + helpers$1.each(boxes, function(box) { + if (box.getPadding) { + var boxPadding = box.getPadding(); + top = Math.max(top, boxPadding.top); + left = Math.max(left, boxPadding.left); + bottom = Math.max(bottom, boxPadding.bottom); + right = Math.max(right, boxPadding.right); + } + }); + return { + top: top, + left: left, + bottom: bottom, + right: right + }; +} + +function addSizeByPosition(boxes, size) { + helpers$1.each(boxes, function(box) { + size[box.position] += box.isHorizontal() ? box.height : box.width; + }); +} + +core_defaults._set('global', { + layout: { + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } +}); + +/** + * @interface ILayoutItem + * @prop {string} position - The position of the item in the chart layout. Possible values are + * 'left', 'top', 'right', 'bottom', and 'chartArea' + * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area + * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down + * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) + * @prop {function} update - Takes two parameters: width and height. Returns size of item + * @prop {function} getPadding - Returns an object with padding on the edges + * @prop {number} width - Width of item. Must be valid after update() + * @prop {number} height - Height of item. Must be valid after update() + * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update + * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update + * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update + * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update + */ + +// The layout service is very self explanatory. It's responsible for the layout within a chart. +// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need +// It is this service's responsibility of carrying out that layout. +var core_layouts = { + defaults: {}, + + /** + * Register a box to a chart. + * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. + * @param {Chart} chart - the chart to use + * @param {ILayoutItem} item - the item to add to be layed out + */ + addBox: function(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } + + // initialize item with default values + item.fullWidth = item.fullWidth || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; + + chart.boxes.push(item); + }, + + /** + * Remove a layoutItem from a chart + * @param {Chart} chart - the chart to remove the box from + * @param {ILayoutItem} layoutItem - the item to remove from the layout + */ + removeBox: function(chart, layoutItem) { + var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index !== -1) { + chart.boxes.splice(index, 1); + } + }, + + /** + * Sets (or updates) options on the given `item`. + * @param {Chart} chart - the chart in which the item lives (or will be added to) + * @param {ILayoutItem} item - the item to configure with the given options + * @param {object} options - the new item options. + */ + configure: function(chart, item, options) { + var props = ['fullWidth', 'position', 'weight']; + var ilen = props.length; + var i = 0; + var prop; + + for (; i < ilen; ++i) { + prop = props[i]; + if (options.hasOwnProperty(prop)) { + item[prop] = options[prop]; + } + } + }, + + /** + * Fits boxes of the given chart into the given size by having each box measure itself + * then running a fitting algorithm + * @param {Chart} chart - the chart + * @param {number} width - the width to fit into + * @param {number} height - the height to fit into + */ + update: function(chart, width, height) { + if (!chart) { + return; + } + + var layoutOptions = chart.options.layout || {}; + var padding = helpers$1.options.toPadding(layoutOptions.padding); + var leftPadding = padding.left; + var rightPadding = padding.right; + var topPadding = padding.top; + var bottomPadding = padding.bottom; + + var leftBoxes = filterByPosition(chart.boxes, 'left'); + var rightBoxes = filterByPosition(chart.boxes, 'right'); + var topBoxes = filterByPosition(chart.boxes, 'top'); + var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); + var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); + + // Sort boxes by weight. A higher weight is further away from the chart area + sortByWeight(leftBoxes, true); + sortByWeight(rightBoxes, false); + sortByWeight(topBoxes, true); + sortByWeight(bottomBoxes, false); + + var verticalBoxes = leftBoxes.concat(rightBoxes); + var horizontalBoxes = topBoxes.concat(bottomBoxes); + var outerBoxes = verticalBoxes.concat(horizontalBoxes); + + // Essentially we now have any number of boxes on each of the 4 sides. + // Our canvas looks like the following. + // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and + // B1 is the bottom axis + // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays + // These locations are single-box locations only, when trying to register a chartArea location that is already taken, + // an error will be thrown. + // + // |----------------------------------------------------| + // | T1 (Full Width) | + // |----------------------------------------------------| + // | | | T2 | | + // | |----|-------------------------------------|----| + // | | | C1 | | C2 | | + // | | |----| |----| | + // | | | | | + // | L1 | L2 | ChartArea (C0) | R1 | + // | | | | | + // | | |----| |----| | + // | | | C3 | | C4 | | + // | |----|-------------------------------------|----| + // | | | B1 | | + // |----------------------------------------------------| + // | B2 (Full Width) | + // |----------------------------------------------------| + // + // What we do to find the best sizing, we do the following + // 1. Determine the minimum size of the chart area. + // 2. Split the remaining width equally between each vertical axis + // 3. Split the remaining height equally between each horizontal axis + // 4. Give each layout the maximum size it can be. The layout will return it's minimum size + // 5. Adjust the sizes of each axis based on it's minimum reported size. + // 6. Refit each axis + // 7. Position each axis in the final location + // 8. Tell the chart the final location of the chart area + // 9. Tell any axes that overlay the chart area the positions of the chart area + + // Step 1 + var chartWidth = width - leftPadding - rightPadding; + var chartHeight = height - topPadding - bottomPadding; + var chartAreaWidth = chartWidth / 2; // min 50% + + // Step 2 + var verticalBoxWidth = (width - chartAreaWidth) / verticalBoxes.length; + + // Step 3 + // TODO re-limit horizontal axis height (this limit has affected only padding calculation since PR 1837) + // var horizontalBoxHeight = (height - chartAreaHeight) / horizontalBoxes.length; + + // Step 4 + var maxChartAreaWidth = chartWidth; + var maxChartAreaHeight = chartHeight; + var outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding}; + var minBoxSizes = []; + var maxPadding; + + function getMinimumBoxSize(box) { + var minSize; + var isHorizontal = box.isHorizontal(); + + if (isHorizontal) { + minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2); + maxChartAreaHeight -= minSize.height; + } else { + minSize = box.update(verticalBoxWidth, maxChartAreaHeight); + maxChartAreaWidth -= minSize.width; + } + + minBoxSizes.push({ + horizontal: isHorizontal, + width: minSize.width, + box: box, + }); + } + + helpers$1.each(outerBoxes, getMinimumBoxSize); + + // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) + maxPadding = findMaxPadding(outerBoxes); + + // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could + // be if the axes are drawn at their minimum sizes. + // Steps 5 & 6 + + // Function to fit a box + function fitBox(box) { + var minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minBox) { + return minBox.box === box; + }); + + if (minBoxSize) { + if (minBoxSize.horizontal) { + var scaleMargin = { + left: Math.max(outerBoxSizes.left, maxPadding.left), + right: Math.max(outerBoxSizes.right, maxPadding.right), + top: 0, + bottom: 0 + }; + + // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends + // on the margin. Sometimes they need to increase in size slightly + box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); + } else { + box.update(minBoxSize.width, maxChartAreaHeight); + } + } + } + + // Update, and calculate the left and right margins for the horizontal boxes + helpers$1.each(verticalBoxes, fitBox); + addSizeByPosition(verticalBoxes, outerBoxSizes); + + // Set the Left and Right margins for the horizontal boxes + helpers$1.each(horizontalBoxes, fitBox); + addSizeByPosition(horizontalBoxes, outerBoxSizes); + + function finalFitVerticalBox(box) { + var minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minSize) { + return minSize.box === box; + }); + + var scaleMargin = { + left: 0, + right: 0, + top: outerBoxSizes.top, + bottom: outerBoxSizes.bottom + }; + + if (minBoxSize) { + box.update(minBoxSize.width, maxChartAreaHeight, scaleMargin); + } + } + + // Let the left layout know the final margin + helpers$1.each(verticalBoxes, finalFitVerticalBox); + + // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) + outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding}; + addSizeByPosition(outerBoxes, outerBoxSizes); + + // We may be adding some padding to account for rotated x axis labels + var leftPaddingAddition = Math.max(maxPadding.left - outerBoxSizes.left, 0); + outerBoxSizes.left += leftPaddingAddition; + outerBoxSizes.right += Math.max(maxPadding.right - outerBoxSizes.right, 0); + + var topPaddingAddition = Math.max(maxPadding.top - outerBoxSizes.top, 0); + outerBoxSizes.top += topPaddingAddition; + outerBoxSizes.bottom += Math.max(maxPadding.bottom - outerBoxSizes.bottom, 0); + + // Figure out if our chart area changed. This would occur if the dataset layout label rotation + // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do + // without calling `fit` again + var newMaxChartAreaHeight = height - outerBoxSizes.top - outerBoxSizes.bottom; + var newMaxChartAreaWidth = width - outerBoxSizes.left - outerBoxSizes.right; + + if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { + helpers$1.each(verticalBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers$1.each(horizontalBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; + } + }); + + maxChartAreaHeight = newMaxChartAreaHeight; + maxChartAreaWidth = newMaxChartAreaWidth; + } + + // Step 7 - Position the boxes + var left = leftPadding + leftPaddingAddition; + var top = topPadding + topPaddingAddition; + + function placeBox(box) { + if (box.isHorizontal()) { + box.left = box.fullWidth ? leftPadding : outerBoxSizes.left; + box.right = box.fullWidth ? width - rightPadding : outerBoxSizes.left + maxChartAreaWidth; + box.top = top; + box.bottom = top + box.height; + + // Move to next point + top = box.bottom; + + } else { + + box.left = left; + box.right = left + box.width; + box.top = outerBoxSizes.top; + box.bottom = outerBoxSizes.top + maxChartAreaHeight; + + // Move to next point + left = box.right; + } + } + + helpers$1.each(leftBoxes.concat(topBoxes), placeBox); + + // Account for chart width and height + left += maxChartAreaWidth; + top += maxChartAreaHeight; + + helpers$1.each(rightBoxes, placeBox); + helpers$1.each(bottomBoxes, placeBox); + + // Step 8 + chart.chartArea = { + left: outerBoxSizes.left, + top: outerBoxSizes.top, + right: outerBoxSizes.left + maxChartAreaWidth, + bottom: outerBoxSizes.top + maxChartAreaHeight + }; + + // Step 9 + helpers$1.each(chartAreaBoxes, function(box) { + box.left = chart.chartArea.left; + box.top = chart.chartArea.top; + box.right = chart.chartArea.right; + box.bottom = chart.chartArea.bottom; + + box.update(maxChartAreaWidth, maxChartAreaHeight); + }); + } +}; + +/** + * Platform fallback implementation (minimal). + * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 + */ + +var platform_basic = { + acquireContext: function(item) { + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + return item && item.getContext('2d') || null; + } +}; + +var platform_dom = "/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"; + +var platform_dom$1 = /*#__PURE__*/Object.freeze({ +default: platform_dom +}); + +var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +function getCjsExportFromNamespace (n) { + return n && n.default || n; +} + +var stylesheet = getCjsExportFromNamespace(platform_dom$1); + +var EXPANDO_KEY = '$chartjs'; +var CSS_PREFIX = 'chartjs-'; +var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor'; +var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; +var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; +var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; + +/** + * DOM event types -> Chart.js event types. + * Note: only events with different types are mapped. + * @see https://developer.mozilla.org/en-US/docs/Web/Events + */ +var EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; + +/** + * The "used" size is the final value of a dimension property after all calculations have + * been performed. This method uses the computed style of `element` but returns undefined + * if the computed style is not expressed in pixels. That can happen in some cases where + * `element` has a size relative to its parent and this last one is not yet displayed, + * for example because of `display: none` on a parent node. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * @returns {number} Size in pixels or undefined if unknown. + */ +function readUsedSize(element, property) { + var value = helpers$1.getStyle(element, property); + var matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? Number(matches[1]) : undefined; +} + +/** + * Initializes the canvas style and render size without modifying the canvas display size, + * since responsiveness is handled by the controller.resize() method. The config is used + * to determine the aspect ratio to apply in case no explicit height has been specified. + */ +function initCanvas(canvas, config) { + var style = canvas.style; + + // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it + // returns null or '' if no explicit value has been set to the canvas attribute. + var renderHeight = canvas.getAttribute('height'); + var renderWidth = canvas.getAttribute('width'); + + // Chart.js modifies some canvas values that we want to restore on destroy + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; + + // Force canvas to display as block to avoid extra space caused by inline + // elements, which would interfere with the responsive resize process. + // https://github.com/chartjs/Chart.js/issues/2538 + style.display = style.display || 'block'; + + if (renderWidth === null || renderWidth === '') { + var displayWidth = readUsedSize(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } + } + + if (renderHeight === null || renderHeight === '') { + if (canvas.style.height === '') { + // If no explicit render height and style height, let's apply the aspect ratio, + // which one can be specified by the user but also by charts as default option + // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. + canvas.height = canvas.width / (config.options.aspectRatio || 2); + } else { + var displayHeight = readUsedSize(canvas, 'height'); + if (displayWidth !== undefined) { + canvas.height = displayHeight; + } + } + } + + return canvas; +} + +/** + * Detects support for options object argument in addEventListener. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * @private + */ +var supportsEventListenerOptions = (function() { + var supports = false; + try { + var options = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line getter-return + get: function() { + supports = true; + } + }); + window.addEventListener('e', null, options); + } catch (e) { + // continue regardless of error + } + return supports; +}()); + +// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. +// https://github.com/chartjs/Chart.js/issues/4287 +var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; + +function addListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); +} + +function removeListener(node, type, listener) { + node.removeEventListener(type, listener, eventListenerOptions); +} + +function createEvent(type, chart, x, y, nativeEvent) { + return { + type: type, + chart: chart, + native: nativeEvent || null, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; +} + +function fromNativeEvent(event, chart) { + var type = EVENT_TYPES[event.type] || event.type; + var pos = helpers$1.getRelativePosition(event, chart); + return createEvent(type, chart, pos.x, pos.y, event); +} + +function throttled(fn, thisArg) { + var ticking = false; + var args = []; + + return function() { + args = Array.prototype.slice.call(arguments); + thisArg = thisArg || this; + + if (!ticking) { + ticking = true; + helpers$1.requestAnimFrame.call(window, function() { + ticking = false; + fn.apply(thisArg, args); + }); + } + }; +} + +function createDiv(cls) { + var el = document.createElement('div'); + el.className = cls || ''; + return el; +} + +// Implementation based on https://github.com/marcj/css-element-queries +function createResizer(handler) { + var maxSize = 1000000; + + // NOTE(SB) Don't use innerHTML because it could be considered unsafe. + // https://github.com/chartjs/Chart.js/issues/5902 + var resizer = createDiv(CSS_SIZE_MONITOR); + var expand = createDiv(CSS_SIZE_MONITOR + '-expand'); + var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink'); + + expand.appendChild(createDiv()); + shrink.appendChild(createDiv()); + + resizer.appendChild(expand); + resizer.appendChild(shrink); + resizer._reset = function() { + expand.scrollLeft = maxSize; + expand.scrollTop = maxSize; + shrink.scrollLeft = maxSize; + shrink.scrollTop = maxSize; + }; + + var onScroll = function() { + resizer._reset(); + handler(); + }; + + addListener(expand, 'scroll', onScroll.bind(expand, 'expand')); + addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); + + return resizer; +} + +// https://davidwalsh.name/detect-node-insertion +function watchForRender(node, handler) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + var proxy = expando.renderProxy = function(e) { + if (e.animationName === CSS_RENDER_ANIMATION) { + handler(); + } + }; + + helpers$1.each(ANIMATION_START_EVENTS, function(type) { + addListener(node, type, proxy); + }); + + // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class + // is removed then added back immediately (same animation frame?). Accessing the + // `offsetParent` property will force a reflow and re-evaluate the CSS animation. + // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics + // https://github.com/chartjs/Chart.js/issues/4737 + expando.reflow = !!node.offsetParent; + + node.classList.add(CSS_RENDER_MONITOR); +} + +function unwatchForRender(node) { + var expando = node[EXPANDO_KEY] || {}; + var proxy = expando.renderProxy; + + if (proxy) { + helpers$1.each(ANIMATION_START_EVENTS, function(type) { + removeListener(node, type, proxy); + }); + + delete expando.renderProxy; + } + + node.classList.remove(CSS_RENDER_MONITOR); +} + +function addResizeListener(node, listener, chart) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + + // Let's keep track of this added resizer and thus avoid DOM query when removing it. + var resizer = expando.resizer = createResizer(throttled(function() { + if (expando.resizer) { + var container = chart.options.maintainAspectRatio && node.parentNode; + var w = container ? container.clientWidth : 0; + listener(createEvent('resize', chart)); + if (container && container.clientWidth < w && chart.canvas) { + // If the container size shrank during chart resize, let's assume + // scrollbar appeared. So we resize again with the scrollbar visible - + // effectively making chart smaller and the scrollbar hidden again. + // Because we are inside `throttled`, and currently `ticking`, scroll + // events are ignored during this whole 2 resize process. + // If we assumed wrong and something else happened, we are resizing + // twice in a frame (potential performance issue) + listener(createEvent('resize', chart)); + } + } + })); + + // The resizer needs to be attached to the node parent, so we first need to be + // sure that `node` is attached to the DOM before injecting the resizer element. + watchForRender(node, function() { + if (expando.resizer) { + var container = node.parentNode; + if (container && container !== resizer.parentNode) { + container.insertBefore(resizer, container.firstChild); + } + + // The container size might have changed, let's reset the resizer state. + resizer._reset(); + } + }); +} + +function removeResizeListener(node) { + var expando = node[EXPANDO_KEY] || {}; + var resizer = expando.resizer; + + delete expando.resizer; + unwatchForRender(node); + + if (resizer && resizer.parentNode) { + resizer.parentNode.removeChild(resizer); + } +} + +function injectCSS(platform, css) { + // https://stackoverflow.com/q/3922139 + var style = platform._style || document.createElement('style'); + if (!platform._style) { + platform._style = style; + css = '/* Chart.js */\n' + css; + style.setAttribute('type', 'text/css'); + document.getElementsByTagName('head')[0].appendChild(style); + } + + style.appendChild(document.createTextNode(css)); +} + +var platform_dom$2 = { + /** + * When `true`, prevents the automatic injection of the stylesheet required to + * correctly detect when the chart is added to the DOM and then resized. This + * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`) + * to be manually imported to make this library compatible with any CSP. + * See https://github.com/chartjs/Chart.js/issues/5208 + */ + disableCSSInjection: false, + + /** + * This property holds whether this platform is enabled for the current environment. + * Currently used by platform.js to select the proper implementation. + * @private + */ + _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', + + /** + * @private + */ + _ensureLoaded: function() { + if (this._loaded) { + return; + } + + this._loaded = true; + + // https://github.com/chartjs/Chart.js/issues/5208 + if (!this.disableCSSInjection) { + injectCSS(this, stylesheet); + } + }, + + acquireContext: function(item, config) { + if (typeof item === 'string') { + item = document.getElementById(item); + } else if (item.length) { + // Support for array based queries (such as jQuery) + item = item[0]; + } + + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + // To prevent canvas fingerprinting, some add-ons undefine the getContext + // method, for example: https://github.com/kkapsner/CanvasBlocker + // https://github.com/chartjs/Chart.js/issues/2807 + var context = item && item.getContext && item.getContext('2d'); + + // Load platform resources on first chart creation, to make possible to change + // platform options after importing the library (e.g. `disableCSSInjection`). + this._ensureLoaded(); + + // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is + // inside an iframe or when running in a protected environment. We could guess the + // types from their toString() value but let's keep things flexible and assume it's + // a sufficient condition if the item has a context2D which has item as `canvas`. + // https://github.com/chartjs/Chart.js/issues/3887 + // https://github.com/chartjs/Chart.js/issues/4102 + // https://github.com/chartjs/Chart.js/issues/4152 + if (context && context.canvas === item) { + initCanvas(item, config); + return context; + } + + return null; + }, + + releaseContext: function(context) { + var canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { + return; + } + + var initial = canvas[EXPANDO_KEY].initial; + ['height', 'width'].forEach(function(prop) { + var value = initial[prop]; + if (helpers$1.isNullOrUndef(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); + + helpers$1.each(initial.style || {}, function(value, key) { + canvas.style[key] = value; + }); + + // The canvas render size might have been changed (and thus the state stack discarded), + // we can't use save() and restore() to restore the initial state. So make sure that at + // least the canvas context is reset to the default state by setting the canvas width. + // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html + // eslint-disable-next-line no-self-assign + canvas.width = canvas.width; + + delete canvas[EXPANDO_KEY]; + }, + + addEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + addResizeListener(canvas, listener, chart); + return; + } + + var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); + var proxies = expando.proxies || (expando.proxies = {}); + var proxy = proxies[chart.id + '_' + type] = function(event) { + listener(fromNativeEvent(event, chart)); + }; + + addListener(canvas, type, proxy); + }, + + removeEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + removeResizeListener(canvas); + return; + } + + var expando = listener[EXPANDO_KEY] || {}; + var proxies = expando.proxies || {}; + var proxy = proxies[chart.id + '_' + type]; + if (!proxy) { + return; + } + + removeListener(canvas, type, proxy); + } +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use EventTarget.addEventListener instead. + * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + * @function Chart.helpers.addEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers$1.addEvent = addListener; + +/** + * Provided for backward compatibility, use EventTarget.removeEventListener instead. + * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener + * @function Chart.helpers.removeEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers$1.removeEvent = removeListener; + +// @TODO Make possible to select another platform at build time. +var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic; + +/** + * @namespace Chart.platform + * @see https://chartjs.gitbooks.io/proposals/content/Platform.html + * @since 2.4.0 + */ +var platform = helpers$1.extend({ + /** + * @since 2.7.0 + */ + initialize: function() {}, + + /** + * Called at chart construction time, returns a context2d instance implementing + * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. + * @param {*} item - The native item from which to acquire context (platform specific) + * @param {object} options - The chart options + * @returns {CanvasRenderingContext2D} context2d instance + */ + acquireContext: function() {}, + + /** + * Called at chart destruction time, releases any resources associated to the context + * previously returned by the acquireContext() method. + * @param {CanvasRenderingContext2D} context - The context2d instance + * @returns {boolean} true if the method succeeded, else false + */ + releaseContext: function() {}, + + /** + * Registers the specified listener on the given chart. + * @param {Chart} chart - Chart from which to listen for event + * @param {string} type - The ({@link IEvent}) type to listen for + * @param {function} listener - Receives a notification (an object that implements + * the {@link IEvent} interface) when an event of the specified type occurs. + */ + addEventListener: function() {}, + + /** + * Removes the specified listener previously registered with addEventListener. + * @param {Chart} chart - Chart from which to remove the listener + * @param {string} type - The ({@link IEvent}) type to remove + * @param {function} listener - The listener function to remove from the event target. + */ + removeEventListener: function() {} + +}, implementation); + +core_defaults._set('global', { + plugins: {} +}); + +/** + * The plugin service singleton + * @namespace Chart.plugins + * @since 2.1.0 + */ +var core_plugins = { + /** + * Globally registered plugins. + * @private + */ + _plugins: [], + + /** + * This identifier is used to invalidate the descriptors cache attached to each chart + * when a global plugin is registered or unregistered. In this case, the cache ID is + * incremented and descriptors are regenerated during following API calls. + * @private + */ + _cacheId: 0, + + /** + * Registers the given plugin(s) if not already registered. + * @param {IPlugin[]|IPlugin} plugins plugin instance(s). + */ + register: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + if (p.indexOf(plugin) === -1) { + p.push(plugin); + } + }); + + this._cacheId++; + }, + + /** + * Unregisters the given plugin(s) only if registered. + * @param {IPlugin[]|IPlugin} plugins plugin instance(s). + */ + unregister: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + var idx = p.indexOf(plugin); + if (idx !== -1) { + p.splice(idx, 1); + } + }); + + this._cacheId++; + }, + + /** + * Remove all registered plugins. + * @since 2.1.5 + */ + clear: function() { + this._plugins = []; + this._cacheId++; + }, + + /** + * Returns the number of registered plugins? + * @returns {number} + * @since 2.1.5 + */ + count: function() { + return this._plugins.length; + }, + + /** + * Returns all registered plugin instances. + * @returns {IPlugin[]} array of plugin objects. + * @since 2.1.5 + */ + getAll: function() { + return this._plugins; + }, + + /** + * Calls enabled plugins for `chart` on the specified hook and with the given args. + * This method immediately returns as soon as a plugin explicitly returns false. The + * returned value can be used, for instance, to interrupt the current action. + * @param {Chart} chart - The chart instance for which plugins should be called. + * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). + * @param {Array} [args] - Extra arguments to apply to the hook call. + * @returns {boolean} false if any of the plugins return false, else returns true. + */ + notify: function(chart, hook, args) { + var descriptors = this.descriptors(chart); + var ilen = descriptors.length; + var i, descriptor, plugin, params, method; + + for (i = 0; i < ilen; ++i) { + descriptor = descriptors[i]; + plugin = descriptor.plugin; + method = plugin[hook]; + if (typeof method === 'function') { + params = [chart].concat(args || []); + params.push(descriptor.options); + if (method.apply(plugin, params) === false) { + return false; + } + } + } + + return true; + }, + + /** + * Returns descriptors of enabled plugins for the given chart. + * @returns {object[]} [{ plugin, options }] + * @private + */ + descriptors: function(chart) { + var cache = chart.$plugins || (chart.$plugins = {}); + if (cache.id === this._cacheId) { + return cache.descriptors; + } + + var plugins = []; + var descriptors = []; + var config = (chart && chart.config) || {}; + var options = (config.options && config.options.plugins) || {}; + + this._plugins.concat(config.plugins || []).forEach(function(plugin) { + var idx = plugins.indexOf(plugin); + if (idx !== -1) { + return; + } + + var id = plugin.id; + var opts = options[id]; + if (opts === false) { + return; + } + + if (opts === true) { + opts = helpers$1.clone(core_defaults.global.plugins[id]); + } + + plugins.push(plugin); + descriptors.push({ + plugin: plugin, + options: opts || {} + }); + }); + + cache.descriptors = descriptors; + cache.id = this._cacheId; + return descriptors; + }, + + /** + * Invalidates cache for the given chart: descriptors hold a reference on plugin option, + * but in some cases, this reference can be changed by the user when updating options. + * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + * @private + */ + _invalidate: function(chart) { + delete chart.$plugins; + } +}; + +var core_scaleService = { + // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then + // use the new chart options to grab the correct scale + constructors: {}, + // Use a registration function so that we can move to an ES6 map when we no longer need to support + // old browsers + + // Scale config defaults + defaults: {}, + registerScaleType: function(type, scaleConstructor, scaleDefaults) { + this.constructors[type] = scaleConstructor; + this.defaults[type] = helpers$1.clone(scaleDefaults); + }, + getScaleConstructor: function(type) { + return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; + }, + getScaleDefaults: function(type) { + // Return the scale defaults merged with the global settings so that we always use the latest ones + return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {}; + }, + updateScaleDefaults: function(type, additions) { + var me = this; + if (me.defaults.hasOwnProperty(type)) { + me.defaults[type] = helpers$1.extend(me.defaults[type], additions); + } + }, + addScalesToLayout: function(chart) { + // Adds each scale to the chart.boxes array to be sized accordingly + helpers$1.each(chart.scales, function(scale) { + // Set ILayoutItem parameters for backwards compatibility + scale.fullWidth = scale.options.fullWidth; + scale.position = scale.options.position; + scale.weight = scale.options.weight; + core_layouts.addBox(chart, scale); + }); + } +}; + +var valueOrDefault$7 = helpers$1.valueOrDefault; + +core_defaults._set('global', { + tooltips: { + enabled: true, + custom: null, + mode: 'nearest', + position: 'average', + intersect: true, + backgroundColor: 'rgba(0,0,0,0.8)', + titleFontStyle: 'bold', + titleSpacing: 2, + titleMarginBottom: 6, + titleFontColor: '#fff', + titleAlign: 'left', + bodySpacing: 2, + bodyFontColor: '#fff', + bodyAlign: 'left', + footerFontStyle: 'bold', + footerSpacing: 2, + footerMarginTop: 6, + footerFontColor: '#fff', + footerAlign: 'left', + yPadding: 6, + xPadding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + multiKeyBackground: '#fff', + displayColors: true, + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + callbacks: { + // Args are: (tooltipItems, data) + beforeTitle: helpers$1.noop, + title: function(tooltipItems, data) { + var title = ''; + var labels = data.labels; + var labelCount = labels ? labels.length : 0; + + if (tooltipItems.length > 0) { + var item = tooltipItems[0]; + if (item.label) { + title = item.label; + } else if (item.xLabel) { + title = item.xLabel; + } else if (labelCount > 0 && item.index < labelCount) { + title = labels[item.index]; + } + } + + return title; + }, + afterTitle: helpers$1.noop, + + // Args are: (tooltipItems, data) + beforeBody: helpers$1.noop, + + // Args are: (tooltipItem, data) + beforeLabel: helpers$1.noop, + label: function(tooltipItem, data) { + var label = data.datasets[tooltipItem.datasetIndex].label || ''; + + if (label) { + label += ': '; + } + if (!helpers$1.isNullOrUndef(tooltipItem.value)) { + label += tooltipItem.value; + } else { + label += tooltipItem.yLabel; + } + return label; + }, + labelColor: function(tooltipItem, chart) { + var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); + var activeElement = meta.data[tooltipItem.index]; + var view = activeElement._view; + return { + borderColor: view.borderColor, + backgroundColor: view.backgroundColor + }; + }, + labelTextColor: function() { + return this._options.bodyFontColor; + }, + afterLabel: helpers$1.noop, + + // Args are: (tooltipItems, data) + afterBody: helpers$1.noop, + + // Args are: (tooltipItems, data) + beforeFooter: helpers$1.noop, + footer: helpers$1.noop, + afterFooter: helpers$1.noop + } + } +}); + +var positioners = { + /** + * Average mode places the tooltip at the average position of the elements shown + * @function Chart.Tooltip.positioners.average + * @param elements {ChartElement[]} the elements being displayed in the tooltip + * @returns {object} tooltip position + */ + average: function(elements) { + if (!elements.length) { + return false; + } + + var i, len; + var x = 0; + var y = 0; + var count = 0; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var pos = el.tooltipPosition(); + x += pos.x; + y += pos.y; + ++count; + } + } + + return { + x: x / count, + y: y / count + }; + }, + + /** + * Gets the tooltip position nearest of the item nearest to the event position + * @function Chart.Tooltip.positioners.nearest + * @param elements {Chart.Element[]} the tooltip elements + * @param eventPosition {object} the position of the event in canvas coordinates + * @returns {object} the tooltip position + */ + nearest: function(elements, eventPosition) { + var x = eventPosition.x; + var y = eventPosition.y; + var minDistance = Number.POSITIVE_INFINITY; + var i, len, nearestElement; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var center = el.getCenterPoint(); + var d = helpers$1.distanceBetweenPoints(eventPosition, center); + + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } + + if (nearestElement) { + var tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } + + return { + x: x, + y: y + }; + } +}; + +// Helper to push or concat based on if the 2nd parameter is an array or not +function pushOrConcat(base, toPush) { + if (toPush) { + if (helpers$1.isArray(toPush)) { + // base = base.concat(toPush); + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } + + return base; +} + +/** + * Returns array of strings split by newline + * @param {string} value - The value to split by newline. + * @returns {string[]} value if newline present - Returned from String split() method + * @function + */ +function splitNewlines(str) { + if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { + return str.split('\n'); + } + return str; +} + + +/** + * Private helper to create a tooltip item model + * @param element - the chart element (point, arc, bar) to create the tooltip item for + * @return new tooltip item + */ +function createTooltipItem(element) { + var xScale = element._xScale; + var yScale = element._yScale || element._scale; // handle radar || polarArea charts + var index = element._index; + var datasetIndex = element._datasetIndex; + var controller = element._chart.getDatasetMeta(datasetIndex).controller; + var indexScale = controller._getIndexScale(); + var valueScale = controller._getValueScale(); + + return { + xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', + yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', + label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '', + value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '', + index: index, + datasetIndex: datasetIndex, + x: element._model.x, + y: element._model.y + }; +} + +/** + * Helper to get the reset model for the tooltip + * @param tooltipOpts {object} the tooltip options + */ +function getBaseModel(tooltipOpts) { + var globalDefaults = core_defaults.global; + + return { + // Positioning + xPadding: tooltipOpts.xPadding, + yPadding: tooltipOpts.yPadding, + xAlign: tooltipOpts.xAlign, + yAlign: tooltipOpts.yAlign, + + // Body + bodyFontColor: tooltipOpts.bodyFontColor, + _bodyFontFamily: valueOrDefault$7(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), + _bodyFontStyle: valueOrDefault$7(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), + _bodyAlign: tooltipOpts.bodyAlign, + bodyFontSize: valueOrDefault$7(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), + bodySpacing: tooltipOpts.bodySpacing, + + // Title + titleFontColor: tooltipOpts.titleFontColor, + _titleFontFamily: valueOrDefault$7(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), + _titleFontStyle: valueOrDefault$7(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), + titleFontSize: valueOrDefault$7(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), + _titleAlign: tooltipOpts.titleAlign, + titleSpacing: tooltipOpts.titleSpacing, + titleMarginBottom: tooltipOpts.titleMarginBottom, + + // Footer + footerFontColor: tooltipOpts.footerFontColor, + _footerFontFamily: valueOrDefault$7(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), + _footerFontStyle: valueOrDefault$7(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), + footerFontSize: valueOrDefault$7(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), + _footerAlign: tooltipOpts.footerAlign, + footerSpacing: tooltipOpts.footerSpacing, + footerMarginTop: tooltipOpts.footerMarginTop, + + // Appearance + caretSize: tooltipOpts.caretSize, + cornerRadius: tooltipOpts.cornerRadius, + backgroundColor: tooltipOpts.backgroundColor, + opacity: 0, + legendColorBackground: tooltipOpts.multiKeyBackground, + displayColors: tooltipOpts.displayColors, + borderColor: tooltipOpts.borderColor, + borderWidth: tooltipOpts.borderWidth + }; +} + +/** + * Get the size of the tooltip + */ +function getTooltipSize(tooltip, model) { + var ctx = tooltip._chart.ctx; + + var height = model.yPadding * 2; // Tooltip Padding + var width = 0; + + // Count of all lines in the body + var body = model.body; + var combinedBodyLength = body.reduce(function(count, bodyItem) { + return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; + }, 0); + combinedBodyLength += model.beforeBody.length + model.afterBody.length; + + var titleLineCount = model.title.length; + var footerLineCount = model.footer.length; + var titleFontSize = model.titleFontSize; + var bodyFontSize = model.bodyFontSize; + var footerFontSize = model.footerFontSize; + + height += titleLineCount * titleFontSize; // Title Lines + height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing + height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin + height += combinedBodyLength * bodyFontSize; // Body Lines + height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing + height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin + height += footerLineCount * (footerFontSize); // Footer Lines + height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing + + // Title width + var widthPadding = 0; + var maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); + }; + + ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); + helpers$1.each(model.title, maxLineWidth); + + // Body width + ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); + helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth); + + // Body lines may include some extra width due to the color box + widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; + helpers$1.each(body, function(bodyItem) { + helpers$1.each(bodyItem.before, maxLineWidth); + helpers$1.each(bodyItem.lines, maxLineWidth); + helpers$1.each(bodyItem.after, maxLineWidth); + }); + + // Reset back to 0 + widthPadding = 0; + + // Footer width + ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); + helpers$1.each(model.footer, maxLineWidth); + + // Add padding + width += 2 * model.xPadding; + + return { + width: width, + height: height + }; +} + +/** + * Helper to get the alignment of a tooltip given the size + */ +function determineAlignment(tooltip, size) { + var model = tooltip._model; + var chart = tooltip._chart; + var chartArea = tooltip._chart.chartArea; + var xAlign = 'center'; + var yAlign = 'center'; + + if (model.y < size.height) { + yAlign = 'top'; + } else if (model.y > (chart.height - size.height)) { + yAlign = 'bottom'; + } + + var lf, rf; // functions to determine left, right alignment + var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart + var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges + var midX = (chartArea.left + chartArea.right) / 2; + var midY = (chartArea.top + chartArea.bottom) / 2; + + if (yAlign === 'center') { + lf = function(x) { + return x <= midX; + }; + rf = function(x) { + return x > midX; + }; + } else { + lf = function(x) { + return x <= (size.width / 2); + }; + rf = function(x) { + return x >= (chart.width - (size.width / 2)); + }; + } + + olf = function(x) { + return x + size.width + model.caretSize + model.caretPadding > chart.width; + }; + orf = function(x) { + return x - size.width - model.caretSize - model.caretPadding < 0; + }; + yf = function(y) { + return y <= midY ? 'top' : 'bottom'; + }; + + if (lf(model.x)) { + xAlign = 'left'; + + // Is tooltip too wide and goes over the right side of the chart.? + if (olf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } else if (rf(model.x)) { + xAlign = 'right'; + + // Is tooltip too wide and goes outside left edge of canvas? + if (orf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } + } + + var opts = tooltip._options; + return { + xAlign: opts.xAlign ? opts.xAlign : xAlign, + yAlign: opts.yAlign ? opts.yAlign : yAlign + }; +} + +/** + * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment + */ +function getBackgroundPoint(vm, size, alignment, chart) { + // Background Position + var x = vm.x; + var y = vm.y; + + var caretSize = vm.caretSize; + var caretPadding = vm.caretPadding; + var cornerRadius = vm.cornerRadius; + var xAlign = alignment.xAlign; + var yAlign = alignment.yAlign; + var paddingAndSize = caretSize + caretPadding; + var radiusAndPadding = cornerRadius + caretPadding; + + if (xAlign === 'right') { + x -= size.width; + } else if (xAlign === 'center') { + x -= (size.width / 2); + if (x + size.width > chart.width) { + x = chart.width - size.width; + } + if (x < 0) { + x = 0; + } + } + + if (yAlign === 'top') { + y += paddingAndSize; + } else if (yAlign === 'bottom') { + y -= size.height + paddingAndSize; + } else { + y -= (size.height / 2); + } + + if (yAlign === 'center') { + if (xAlign === 'left') { + x += paddingAndSize; + } else if (xAlign === 'right') { + x -= paddingAndSize; + } + } else if (xAlign === 'left') { + x -= radiusAndPadding; + } else if (xAlign === 'right') { + x += radiusAndPadding; + } + + return { + x: x, + y: y + }; +} + +function getAlignedX(vm, align) { + return align === 'center' + ? vm.x + vm.width / 2 + : align === 'right' + ? vm.x + vm.width - vm.xPadding + : vm.x + vm.xPadding; +} + +/** + * Helper to build before and after body lines + */ +function getBeforeAfterBodyLines(callback) { + return pushOrConcat([], splitNewlines(callback)); +} + +var exports$3 = core_element.extend({ + initialize: function() { + this._model = getBaseModel(this._options); + this._lastActive = []; + }, + + // Get the title + // Args are: (tooltipItem, data) + getTitle: function() { + var me = this; + var opts = me._options; + var callbacks = opts.callbacks; + + var beforeTitle = callbacks.beforeTitle.apply(me, arguments); + var title = callbacks.title.apply(me, arguments); + var afterTitle = callbacks.afterTitle.apply(me, arguments); + + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeTitle)); + lines = pushOrConcat(lines, splitNewlines(title)); + lines = pushOrConcat(lines, splitNewlines(afterTitle)); + + return lines; + }, + + // Args are: (tooltipItem, data) + getBeforeBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); + }, + + // Args are: (tooltipItem, data) + getBody: function(tooltipItems, data) { + var me = this; + var callbacks = me._options.callbacks; + var bodyItems = []; + + helpers$1.each(tooltipItems, function(tooltipItem) { + var bodyItem = { + before: [], + lines: [], + after: [] + }; + pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); + pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); + pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); + + bodyItems.push(bodyItem); + }); + + return bodyItems; + }, + + // Args are: (tooltipItem, data) + getAfterBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); + }, + + // Get the footer and beforeFooter and afterFooter lines + // Args are: (tooltipItem, data) + getFooter: function() { + var me = this; + var callbacks = me._options.callbacks; + + var beforeFooter = callbacks.beforeFooter.apply(me, arguments); + var footer = callbacks.footer.apply(me, arguments); + var afterFooter = callbacks.afterFooter.apply(me, arguments); + + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeFooter)); + lines = pushOrConcat(lines, splitNewlines(footer)); + lines = pushOrConcat(lines, splitNewlines(afterFooter)); + + return lines; + }, + + update: function(changed) { + var me = this; + var opts = me._options; + + // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition + // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time + // which breaks any animations. + var existingModel = me._model; + var model = me._model = getBaseModel(opts); + var active = me._active; + + var data = me._data; + + // In the case where active.length === 0 we need to keep these at existing values for good animations + var alignment = { + xAlign: existingModel.xAlign, + yAlign: existingModel.yAlign + }; + var backgroundPoint = { + x: existingModel.x, + y: existingModel.y + }; + var tooltipSize = { + width: existingModel.width, + height: existingModel.height + }; + var tooltipPosition = { + x: existingModel.caretX, + y: existingModel.caretY + }; + + var i, len; + + if (active.length) { + model.opacity = 1; + + var labelColors = []; + var labelTextColors = []; + tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); + + var tooltipItems = []; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(active[i])); + } + + // If the user provided a filter function, use it to modify the tooltip items + if (opts.filter) { + tooltipItems = tooltipItems.filter(function(a) { + return opts.filter(a, data); + }); + } + + // If the user provided a sorting function, use it to modify the tooltip items + if (opts.itemSort) { + tooltipItems = tooltipItems.sort(function(a, b) { + return opts.itemSort(a, b, data); + }); + } + + // Determine colors for boxes + helpers$1.each(tooltipItems, function(tooltipItem) { + labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); + labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); + }); + + + // Build the Text Lines + model.title = me.getTitle(tooltipItems, data); + model.beforeBody = me.getBeforeBody(tooltipItems, data); + model.body = me.getBody(tooltipItems, data); + model.afterBody = me.getAfterBody(tooltipItems, data); + model.footer = me.getFooter(tooltipItems, data); + + // Initial positioning and colors + model.x = tooltipPosition.x; + model.y = tooltipPosition.y; + model.caretPadding = opts.caretPadding; + model.labelColors = labelColors; + model.labelTextColors = labelTextColors; + + // data points + model.dataPoints = tooltipItems; + + // We need to determine alignment of the tooltip + tooltipSize = getTooltipSize(this, model); + alignment = determineAlignment(this, tooltipSize); + // Final Size and Position + backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); + } else { + model.opacity = 0; + } + + model.xAlign = alignment.xAlign; + model.yAlign = alignment.yAlign; + model.x = backgroundPoint.x; + model.y = backgroundPoint.y; + model.width = tooltipSize.width; + model.height = tooltipSize.height; + + // Point where the caret on the tooltip points to + model.caretX = tooltipPosition.x; + model.caretY = tooltipPosition.y; + + me._model = model; + + if (changed && opts.custom) { + opts.custom.call(me, model); + } + + return me; + }, + + drawCaret: function(tooltipPoint, size) { + var ctx = this._chart.ctx; + var vm = this._view; + var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); + + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); + }, + getCaretPosition: function(tooltipPoint, size, vm) { + var x1, x2, x3, y1, y2, y3; + var caretSize = vm.caretSize; + var cornerRadius = vm.cornerRadius; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var ptX = tooltipPoint.x; + var ptY = tooltipPoint.y; + var width = size.width; + var height = size.height; + + if (yAlign === 'center') { + y2 = ptY + (height / 2); + + if (xAlign === 'left') { + x1 = ptX; + x2 = x1 - caretSize; + x3 = x1; + + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + x3 = x1; + + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + } else { + if (xAlign === 'left') { + x2 = ptX + cornerRadius + (caretSize); + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else if (xAlign === 'right') { + x2 = ptX + width - cornerRadius - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + x2 = vm.caretX; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } + if (yAlign === 'top') { + y1 = ptY; + y2 = y1 - caretSize; + y3 = y1; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + y3 = y1; + // invert drawing order + var tmp = x3; + x3 = x1; + x1 = tmp; + } + } + return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; + }, + + drawTitle: function(pt, vm, ctx) { + var title = vm.title; + + if (title.length) { + pt.x = getAlignedX(vm, vm._titleAlign); + + ctx.textAlign = vm._titleAlign; + ctx.textBaseline = 'top'; + + var titleFontSize = vm.titleFontSize; + var titleSpacing = vm.titleSpacing; + + ctx.fillStyle = vm.titleFontColor; + ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); + + var i, len; + for (i = 0, len = title.length; i < len; ++i) { + ctx.fillText(title[i], pt.x, pt.y); + pt.y += titleFontSize + titleSpacing; // Line Height and spacing + + if (i + 1 === title.length) { + pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing + } + } + } + }, + + drawBody: function(pt, vm, ctx) { + var bodyFontSize = vm.bodyFontSize; + var bodySpacing = vm.bodySpacing; + var bodyAlign = vm._bodyAlign; + var body = vm.body; + var drawColorBoxes = vm.displayColors; + var labelColors = vm.labelColors; + var xLinePadding = 0; + var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0; + var textColor; + + ctx.textAlign = bodyAlign; + ctx.textBaseline = 'top'; + ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); + + pt.x = getAlignedX(vm, bodyAlign); + + // Before Body + var fillLineOfText = function(line) { + ctx.fillText(line, pt.x + xLinePadding, pt.y); + pt.y += bodyFontSize + bodySpacing; + }; + + // Before body lines + ctx.fillStyle = vm.bodyFontColor; + helpers$1.each(vm.beforeBody, fillLineOfText); + + xLinePadding = drawColorBoxes && bodyAlign !== 'right' + ? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2) + : 0; + + // Draw body lines now + helpers$1.each(body, function(bodyItem, i) { + textColor = vm.labelTextColors[i]; + ctx.fillStyle = textColor; + helpers$1.each(bodyItem.before, fillLineOfText); + + helpers$1.each(bodyItem.lines, function(line) { + // Draw Legend-like boxes if needed + if (drawColorBoxes) { + // Fill a white rect so that colours merge nicely if the opacity is < 1 + ctx.fillStyle = vm.legendColorBackground; + ctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize); + + // Border + ctx.lineWidth = 1; + ctx.strokeStyle = labelColors[i].borderColor; + ctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize); + + // Inner square + ctx.fillStyle = labelColors[i].backgroundColor; + ctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); + ctx.fillStyle = textColor; + } + + fillLineOfText(line); + }); + + helpers$1.each(bodyItem.after, fillLineOfText); + }); + + // Reset back to 0 for after body + xLinePadding = 0; + + // After body lines + helpers$1.each(vm.afterBody, fillLineOfText); + pt.y -= bodySpacing; // Remove last body spacing + }, + + drawFooter: function(pt, vm, ctx) { + var footer = vm.footer; + + if (footer.length) { + pt.x = getAlignedX(vm, vm._footerAlign); + pt.y += vm.footerMarginTop; + + ctx.textAlign = vm._footerAlign; + ctx.textBaseline = 'top'; + + ctx.fillStyle = vm.footerFontColor; + ctx.font = helpers$1.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); + + helpers$1.each(footer, function(line) { + ctx.fillText(line, pt.x, pt.y); + pt.y += vm.footerFontSize + vm.footerSpacing; + }); + } + }, + + drawBackground: function(pt, vm, ctx, tooltipSize) { + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = vm.borderWidth; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var x = pt.x; + var y = pt.y; + var width = tooltipSize.width; + var height = tooltipSize.height; + var radius = vm.cornerRadius; + + ctx.beginPath(); + ctx.moveTo(x + radius, y); + if (yAlign === 'top') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + if (yAlign === 'center' && xAlign === 'right') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + if (yAlign === 'bottom') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + if (yAlign === 'center' && xAlign === 'left') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); + + ctx.fill(); + + if (vm.borderWidth > 0) { + ctx.stroke(); + } + }, + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + + if (vm.opacity === 0) { + return; + } + + var tooltipSize = { + width: vm.width, + height: vm.height + }; + var pt = { + x: vm.x, + y: vm.y + }; + + // IE11/Edge does not like very small opacities, so snap to 0 + var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; + + // Truthy/falsey value for empty tooltip + var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; + + if (this._options.enabled && hasTooltipContent) { + ctx.save(); + ctx.globalAlpha = opacity; + + // Draw Background + this.drawBackground(pt, vm, ctx, tooltipSize); + + // Draw Title, Body, and Footer + pt.y += vm.yPadding; + + // Titles + this.drawTitle(pt, vm, ctx); + + // Body + this.drawBody(pt, vm, ctx); + + // Footer + this.drawFooter(pt, vm, ctx); + + ctx.restore(); + } + }, + + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @returns {boolean} true if the tooltip changed + */ + handleEvent: function(e) { + var me = this; + var options = me._options; + var changed = false; + + me._lastActive = me._lastActive || []; + + // Find Active Elements for tooltips + if (e.type === 'mouseout') { + me._active = []; + } else { + me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); + } + + // Remember Last Actives + changed = !helpers$1.arrayEquals(me._active, me._lastActive); + + // Only handle target event on tooltip change + if (changed) { + me._lastActive = me._active; + + if (options.enabled || options.custom) { + me._eventPosition = { + x: e.x, + y: e.y + }; + + me.update(true); + me.pivot(); + } + } + + return changed; + } +}); + +/** + * @namespace Chart.Tooltip.positioners + */ +var positioners_1 = positioners; + +var core_tooltip = exports$3; +core_tooltip.positioners = positioners_1; + +var valueOrDefault$8 = helpers$1.valueOrDefault; + +core_defaults._set('global', { + elements: {}, + events: [ + 'mousemove', + 'mouseout', + 'click', + 'touchstart', + 'touchmove' + ], + hover: { + onHover: null, + mode: 'nearest', + intersect: true, + animationDuration: 400 + }, + onClick: null, + maintainAspectRatio: true, + responsive: true, + responsiveAnimationDuration: 0 +}); + +/** + * Recursively merge the given config objects representing the `scales` option + * by incorporating scale defaults in `xAxes` and `yAxes` array items, then + * returns a deep copy of the result, thus doesn't alter inputs. + */ +function mergeScaleConfig(/* config objects ... */) { + return helpers$1.merge({}, [].slice.call(arguments), { + merger: function(key, target, source, options) { + if (key === 'xAxes' || key === 'yAxes') { + var slen = source[key].length; + var i, type, scale; + + if (!target[key]) { + target[key] = []; + } + + for (i = 0; i < slen; ++i) { + scale = source[key][i]; + type = valueOrDefault$8(scale.type, key === 'xAxes' ? 'category' : 'linear'); + + if (i >= target[key].length) { + target[key].push({}); + } + + if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { + // new/untyped scale or type changed: let's apply the new defaults + // then merge source scale to correctly overwrite the defaults. + helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]); + } else { + // scales type are the same + helpers$1.merge(target[key][i], scale); + } + } + } else { + helpers$1._merger(key, target, source, options); + } + } + }); +} + +/** + * Recursively merge the given config objects as the root options by handling + * default scale options for the `scales` and `scale` properties, then returns + * a deep copy of the result, thus doesn't alter inputs. + */ +function mergeConfig(/* config objects ... */) { + return helpers$1.merge({}, [].slice.call(arguments), { + merger: function(key, target, source, options) { + var tval = target[key] || {}; + var sval = source[key]; + + if (key === 'scales') { + // scale config merging is complex. Add our own function here for that + target[key] = mergeScaleConfig(tval, sval); + } else if (key === 'scale') { + // used in polar area & radar charts since there is only one scale + target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]); + } else { + helpers$1._merger(key, target, source, options); + } + } + }); +} + +function initConfig(config) { + config = config || {}; + + // Do NOT use mergeConfig for the data object because this method merges arrays + // and so would change references to labels and datasets, preventing data updates. + var data = config.data = config.data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; + + config.options = mergeConfig( + core_defaults.global, + core_defaults[config.type], + config.options || {}); + + return config; +} + +function updateConfig(chart) { + var newOptions = chart.options; + + helpers$1.each(chart.scales, function(scale) { + core_layouts.removeBox(chart, scale); + }); + + newOptions = mergeConfig( + core_defaults.global, + core_defaults[chart.config.type], + newOptions); + + chart.options = chart.config.options = newOptions; + chart.ensureScalesHaveIDs(); + chart.buildOrUpdateScales(); + + // Tooltip + chart.tooltip._options = newOptions.tooltips; + chart.tooltip.initialize(); +} + +function positionIsHorizontal(position) { + return position === 'top' || position === 'bottom'; +} + +var Chart = function(item, config) { + this.construct(item, config); + return this; +}; + +helpers$1.extend(Chart.prototype, /** @lends Chart */ { + /** + * @private + */ + construct: function(item, config) { + var me = this; + + config = initConfig(config); + + var context = platform.acquireContext(item, config); + var canvas = context && context.canvas; + var height = canvas && canvas.height; + var width = canvas && canvas.width; + + me.id = helpers$1.uid(); + me.ctx = context; + me.canvas = canvas; + me.config = config; + me.width = width; + me.height = height; + me.aspectRatio = height ? width / height : null; + me.options = config.options; + me._bufferedRender = false; + + /** + * Provided for backward compatibility, Chart and Chart.Controller have been merged, + * the "instance" still need to be defined since it might be called from plugins. + * @prop Chart#chart + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + me.chart = me; + me.controller = me; // chart.chart.controller #inception + + // Add the chart instance to the global namespace + Chart.instances[me.id] = me; + + // Define alias to the config data: `chart.data === chart.config.data` + Object.defineProperty(me, 'data', { + get: function() { + return me.config.data; + }, + set: function(value) { + me.config.data = value; + } + }); + + if (!context || !canvas) { + // The given item is not a compatible context2d element, let's return before finalizing + // the chart initialization but after setting basic chart / controller properties that + // can help to figure out that the chart is not valid (e.g chart.canvas !== null); + // https://github.com/chartjs/Chart.js/issues/2807 + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } + + me.initialize(); + me.update(); + }, + + /** + * @private + */ + initialize: function() { + var me = this; + + // Before init plugin notification + core_plugins.notify(me, 'beforeInit'); + + helpers$1.retinaScale(me, me.options.devicePixelRatio); + + me.bindEvents(); + + if (me.options.responsive) { + // Initial resize before chart draws (must be silent to preserve initial animations). + me.resize(true); + } + + // Make sure scales have IDs and are built before we build any controllers. + me.ensureScalesHaveIDs(); + me.buildOrUpdateScales(); + me.initToolTip(); + + // After init plugin notification + core_plugins.notify(me, 'afterInit'); + + return me; + }, + + clear: function() { + helpers$1.canvas.clear(this); + return this; + }, + + stop: function() { + // Stops any current animation loop occurring + core_animations.cancelAnimation(this); + return this; + }, + + resize: function(silent) { + var me = this; + var options = me.options; + var canvas = me.canvas; + var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; + + // the canvas render width and height will be casted to integers so make sure that + // the canvas display style uses the same integer values to avoid blurring effect. + + // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed + var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas))); + var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas))); + + if (me.width === newWidth && me.height === newHeight) { + return; + } + + canvas.width = me.width = newWidth; + canvas.height = me.height = newHeight; + canvas.style.width = newWidth + 'px'; + canvas.style.height = newHeight + 'px'; + + helpers$1.retinaScale(me, options.devicePixelRatio); + + if (!silent) { + // Notify any plugins about the resize + var newSize = {width: newWidth, height: newHeight}; + core_plugins.notify(me, 'resize', [newSize]); + + // Notify of resize + if (options.onResize) { + options.onResize(me, newSize); + } + + me.stop(); + me.update({ + duration: options.responsiveAnimationDuration + }); + } + }, + + ensureScalesHaveIDs: function() { + var options = this.options; + var scalesOptions = options.scales || {}; + var scaleOptions = options.scale; + + helpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) { + xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); + }); + + helpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) { + yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); + }); + + if (scaleOptions) { + scaleOptions.id = scaleOptions.id || 'scale'; + } + }, + + /** + * Builds a map of scale ID to scale object for future lookup. + */ + buildOrUpdateScales: function() { + var me = this; + var options = me.options; + var scales = me.scales || {}; + var items = []; + var updated = Object.keys(scales).reduce(function(obj, id) { + obj[id] = false; + return obj; + }, {}); + + if (options.scales) { + items = items.concat( + (options.scales.xAxes || []).map(function(xAxisOptions) { + return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; + }), + (options.scales.yAxes || []).map(function(yAxisOptions) { + return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; + }) + ); + } + + if (options.scale) { + items.push({ + options: options.scale, + dtype: 'radialLinear', + isDefault: true, + dposition: 'chartArea' + }); + } + + helpers$1.each(items, function(item) { + var scaleOptions = item.options; + var id = scaleOptions.id; + var scaleType = valueOrDefault$8(scaleOptions.type, item.dtype); + + if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } + + updated[id] = true; + var scale = null; + if (id in scales && scales[id].type === scaleType) { + scale = scales[id]; + scale.options = scaleOptions; + scale.ctx = me.ctx; + scale.chart = me; + } else { + var scaleClass = core_scaleService.getScaleConstructor(scaleType); + if (!scaleClass) { + return; + } + scale = new scaleClass({ + id: id, + type: scaleType, + options: scaleOptions, + ctx: me.ctx, + chart: me + }); + scales[scale.id] = scale; + } + + scale.mergeTicksOptions(); + + // TODO(SB): I think we should be able to remove this custom case (options.scale) + // and consider it as a regular scale part of the "scales"" map only! This would + // make the logic easier and remove some useless? custom code. + if (item.isDefault) { + me.scale = scale; + } + }); + // clear up discarded scales + helpers$1.each(updated, function(hasUpdated, id) { + if (!hasUpdated) { + delete scales[id]; + } + }); + + me.scales = scales; + + core_scaleService.addScalesToLayout(this); + }, + + buildOrUpdateControllers: function() { + var me = this; + var newControllers = []; + + helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { + var meta = me.getDatasetMeta(datasetIndex); + var type = dataset.type || me.config.type; + + if (meta.type && meta.type !== type) { + me.destroyDatasetMeta(datasetIndex); + meta = me.getDatasetMeta(datasetIndex); + } + meta.type = type; + + if (meta.controller) { + meta.controller.updateIndex(datasetIndex); + meta.controller.linkScales(); + } else { + var ControllerClass = controllers[meta.type]; + if (ControllerClass === undefined) { + throw new Error('"' + meta.type + '" is not a chart type.'); + } + + meta.controller = new ControllerClass(me, datasetIndex); + newControllers.push(meta.controller); + } + }, me); + + return newControllers; + }, + + /** + * Reset the elements of all datasets + * @private + */ + resetElements: function() { + var me = this; + helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.reset(); + }, me); + }, + + /** + * Resets the chart back to it's state before the initial animation + */ + reset: function() { + this.resetElements(); + this.tooltip.initialize(); + }, + + update: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } + + updateConfig(me); + + // plugins options references might have change, let's invalidate the cache + // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + core_plugins._invalidate(me); + + if (core_plugins.notify(me, 'beforeUpdate') === false) { + return; + } + + // In case the entire data object changed + me.tooltip._data = me.data; + + // Make sure dataset controllers are updated and new controllers are reset + var newControllers = me.buildOrUpdateControllers(); + + // Make sure all dataset controllers have correct meta data counts + helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); + }, me); + + me.updateLayout(); + + // Can only reset the new controllers after the scales have been updated + if (me.options.animation && me.options.animation.duration) { + helpers$1.each(newControllers, function(controller) { + controller.reset(); + }); + } + + me.updateDatasets(); + + // Need to reset tooltip in case it is displayed with elements that are removed + // after update. + me.tooltip.initialize(); + + // Last active contains items that were previously in the tooltip. + // When we reset the tooltip, we need to clear it + me.lastActive = []; + + // Do this before render so that any plugins that need final scale updates can use it + core_plugins.notify(me, 'afterUpdate'); + + if (me._bufferedRender) { + me._bufferedRequest = { + duration: config.duration, + easing: config.easing, + lazy: config.lazy + }; + } else { + me.render(config); + } + }, + + /** + * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` + * hook, in which case, plugins will not be called on `afterLayout`. + * @private + */ + updateLayout: function() { + var me = this; + + if (core_plugins.notify(me, 'beforeLayout') === false) { + return; + } + + core_layouts.update(this, this.width, this.height); + + /** + * Provided for backward compatibility, use `afterLayout` instead. + * @method IPlugin#afterScaleUpdate + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ + core_plugins.notify(me, 'afterScaleUpdate'); + core_plugins.notify(me, 'afterLayout'); + }, + + /** + * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` + * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. + * @private + */ + updateDatasets: function() { + var me = this; + + if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) { + return; + } + + for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.updateDataset(i); + } + + core_plugins.notify(me, 'afterDatasetsUpdate'); + }, + + /** + * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` + * hook, in which case, plugins will not be called on `afterDatasetUpdate`. + * @private + */ + updateDataset: function(index) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index + }; + + if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { + return; + } + + meta.controller.update(); + + core_plugins.notify(me, 'afterDatasetUpdate', [args]); + }, + + render: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } + + var animationOptions = me.options.animation; + var duration = valueOrDefault$8(config.duration, animationOptions && animationOptions.duration); + var lazy = config.lazy; + + if (core_plugins.notify(me, 'beforeRender') === false) { + return; + } + + var onComplete = function(animation) { + core_plugins.notify(me, 'afterRender'); + helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me); + }; + + if (animationOptions && duration) { + var animation = new core_animation({ + numSteps: duration / 16.66, // 60 fps + easing: config.easing || animationOptions.easing, + + render: function(chart, animationObject) { + var easingFunction = helpers$1.easing.effects[animationObject.easing]; + var currentStep = animationObject.currentStep; + var stepDecimal = currentStep / animationObject.numSteps; + + chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); + }, + + onAnimationProgress: animationOptions.onProgress, + onAnimationComplete: onComplete + }); + + core_animations.addAnimation(me, animation, duration, lazy); + } else { + me.draw(); + + // See https://github.com/chartjs/Chart.js/issues/3781 + onComplete(new core_animation({numSteps: 0, chart: me})); + } + + return me; + }, + + draw: function(easingValue) { + var me = this; + + me.clear(); + + if (helpers$1.isNullOrUndef(easingValue)) { + easingValue = 1; + } + + me.transition(easingValue); + + if (me.width <= 0 || me.height <= 0) { + return; + } + + if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) { + return; + } + + // Draw all the scales + helpers$1.each(me.boxes, function(box) { + box.draw(me.chartArea); + }, me); + + me.drawDatasets(easingValue); + me._drawTooltip(easingValue); + + core_plugins.notify(me, 'afterDraw', [easingValue]); + }, + + /** + * @private + */ + transition: function(easingValue) { + var me = this; + + for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { + if (me.isDatasetVisible(i)) { + me.getDatasetMeta(i).controller.transition(easingValue); + } + } + + me.tooltip.transition(easingValue); + }, + + /** + * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` + * hook, in which case, plugins will not be called on `afterDatasetsDraw`. + * @private + */ + drawDatasets: function(easingValue) { + var me = this; + + if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { + return; + } + + // Draw datasets reversed to support proper line stacking + for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { + if (me.isDatasetVisible(i)) { + me.drawDataset(i, easingValue); + } + } + + core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]); + }, + + /** + * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` + * hook, in which case, plugins will not be called on `afterDatasetDraw`. + * @private + */ + drawDataset: function(index, easingValue) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index, + easingValue: easingValue + }; + + if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { + return; + } + + meta.controller.draw(easingValue); + + core_plugins.notify(me, 'afterDatasetDraw', [args]); + }, + + /** + * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` + * hook, in which case, plugins will not be called on `afterTooltipDraw`. + * @private + */ + _drawTooltip: function(easingValue) { + var me = this; + var tooltip = me.tooltip; + var args = { + tooltip: tooltip, + easingValue: easingValue + }; + + if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { + return; + } + + tooltip.draw(); + + core_plugins.notify(me, 'afterTooltipDraw', [args]); + }, + + /** + * Get the single element that was clicked on + * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw + */ + getElementAtEvent: function(e) { + return core_interaction.modes.single(this, e); + }, + + getElementsAtEvent: function(e) { + return core_interaction.modes.label(this, e, {intersect: true}); + }, + + getElementsAtXAxis: function(e) { + return core_interaction.modes['x-axis'](this, e, {intersect: true}); + }, + + getElementsAtEventForMode: function(e, mode, options) { + var method = core_interaction.modes[mode]; + if (typeof method === 'function') { + return method(this, e, options); + } + + return []; + }, + + getDatasetAtEvent: function(e) { + return core_interaction.modes.dataset(this, e, {intersect: true}); + }, + + getDatasetMeta: function(datasetIndex) { + var me = this; + var dataset = me.data.datasets[datasetIndex]; + if (!dataset._meta) { + dataset._meta = {}; + } + + var meta = dataset._meta[me.id]; + if (!meta) { + meta = dataset._meta[me.id] = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, // See isDatasetVisible() comment + xAxisID: null, + yAxisID: null + }; + } + + return meta; + }, + + getVisibleDatasetCount: function() { + var count = 0; + for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + if (this.isDatasetVisible(i)) { + count++; + } + } + return count; + }, + + isDatasetVisible: function(datasetIndex) { + var meta = this.getDatasetMeta(datasetIndex); + + // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, + // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. + return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; + }, + + generateLegend: function() { + return this.options.legendCallback(this); + }, + + /** + * @private + */ + destroyDatasetMeta: function(datasetIndex) { + var id = this.id; + var dataset = this.data.datasets[datasetIndex]; + var meta = dataset._meta && dataset._meta[id]; + + if (meta) { + meta.controller.destroy(); + delete dataset._meta[id]; + } + }, + + destroy: function() { + var me = this; + var canvas = me.canvas; + var i, ilen; + + me.stop(); + + // dataset controllers need to cleanup associated data + for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.destroyDatasetMeta(i); + } + + if (canvas) { + me.unbindEvents(); + helpers$1.canvas.clear(me); + platform.releaseContext(me.ctx); + me.canvas = null; + me.ctx = null; + } + + core_plugins.notify(me, 'destroy'); + + delete Chart.instances[me.id]; + }, + + toBase64Image: function() { + return this.canvas.toDataURL.apply(this.canvas, arguments); + }, + + initToolTip: function() { + var me = this; + me.tooltip = new core_tooltip({ + _chart: me, + _chartInstance: me, // deprecated, backward compatibility + _data: me.data, + _options: me.options.tooltips + }, me); + }, + + /** + * @private + */ + bindEvents: function() { + var me = this; + var listeners = me._listeners = {}; + var listener = function() { + me.eventHandler.apply(me, arguments); + }; + + helpers$1.each(me.options.events, function(type) { + platform.addEventListener(me, type, listener); + listeners[type] = listener; + }); + + // Elements used to detect size change should not be injected for non responsive charts. + // See https://github.com/chartjs/Chart.js/issues/2210 + if (me.options.responsive) { + listener = function() { + me.resize(); + }; + + platform.addEventListener(me, 'resize', listener); + listeners.resize = listener; + } + }, + + /** + * @private + */ + unbindEvents: function() { + var me = this; + var listeners = me._listeners; + if (!listeners) { + return; + } + + delete me._listeners; + helpers$1.each(listeners, function(listener, type) { + platform.removeEventListener(me, type, listener); + }); + }, + + updateHoverStyle: function(elements, mode, enabled) { + var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; + var element, i, ilen; + + for (i = 0, ilen = elements.length; i < ilen; ++i) { + element = elements[i]; + if (element) { + this.getDatasetMeta(element._datasetIndex).controller[method](element); + } + } + }, + + /** + * @private + */ + eventHandler: function(e) { + var me = this; + var tooltip = me.tooltip; + + if (core_plugins.notify(me, 'beforeEvent', [e]) === false) { + return; + } + + // Buffer any update calls so that renders do not occur + me._bufferedRender = true; + me._bufferedRequest = null; + + var changed = me.handleEvent(e); + // for smooth tooltip animations issue #4989 + // the tooltip should be the source of change + // Animation check workaround: + // tooltip._start will be null when tooltip isn't animating + if (tooltip) { + changed = tooltip._start + ? tooltip.handleEvent(e) + : changed | tooltip.handleEvent(e); + } + + core_plugins.notify(me, 'afterEvent', [e]); + + var bufferedRequest = me._bufferedRequest; + if (bufferedRequest) { + // If we have an update that was triggered, we need to do a normal render + me.render(bufferedRequest); + } else if (changed && !me.animating) { + // If entering, leaving, or changing elements, animate the change via pivot + me.stop(); + + // We only need to render at this point. Updating will cause scales to be + // recomputed generating flicker & using more memory than necessary. + me.render({ + duration: me.options.hover.animationDuration, + lazy: true + }); + } + + me._bufferedRender = false; + me._bufferedRequest = null; + + return me; + }, + + /** + * Handle an event + * @private + * @param {IEvent} event the event to handle + * @return {boolean} true if the chart needs to re-render + */ + handleEvent: function(e) { + var me = this; + var options = me.options || {}; + var hoverOptions = options.hover; + var changed = false; + + me.lastActive = me.lastActive || []; + + // Find Active Elements for hover and tooltips + if (e.type === 'mouseout') { + me.active = []; + } else { + me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); + } + + // Invoke onHover hook + // Need to call with native event here to not break backwards compatibility + helpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); + + if (e.type === 'mouseup' || e.type === 'click') { + if (options.onClick) { + // Use e.native here for backwards compatibility + options.onClick.call(me, e.native, me.active); + } + } + + // Remove styling for last active (even if it may still be active) + if (me.lastActive.length) { + me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); + } + + // Built in hover styling + if (me.active.length && hoverOptions.mode) { + me.updateHoverStyle(me.active, hoverOptions.mode, true); + } + + changed = !helpers$1.arrayEquals(me.active, me.lastActive); + + // Remember Last Actives + me.lastActive = me.active; + + return changed; + } +}); + +/** + * NOTE(SB) We actually don't use this container anymore but we need to keep it + * for backward compatibility. Though, it can still be useful for plugins that + * would need to work on multiple charts?! + */ +Chart.instances = {}; + +var core_controller = Chart; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart instead. + * @class Chart.Controller + * @deprecated since version 2.6 + * @todo remove at version 3 + * @private + */ +Chart.Controller = Chart; + +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart + * @deprecated since version 2.8 + * @todo remove at version 3 + * @private + */ +Chart.types = {}; + +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart.helpers.configMerge + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +helpers$1.configMerge = mergeConfig; + +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart.helpers.scaleMerge + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +helpers$1.scaleMerge = mergeScaleConfig; + +var core_helpers = function() { + + // -- Basic js utility methods + + helpers$1.where = function(collection, filterCallback) { + if (helpers$1.isArray(collection) && Array.prototype.filter) { + return collection.filter(filterCallback); + } + var filtered = []; + + helpers$1.each(collection, function(item) { + if (filterCallback(item)) { + filtered.push(item); + } + }); + + return filtered; + }; + helpers$1.findIndex = Array.prototype.findIndex ? + function(array, callback, scope) { + return array.findIndex(callback, scope); + } : + function(array, callback, scope) { + scope = scope === undefined ? array : scope; + for (var i = 0, ilen = array.length; i < ilen; ++i) { + if (callback.call(scope, array[i], i, array)) { + return i; + } + } + return -1; + }; + helpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to start of the array + if (helpers$1.isNullOrUndef(startIndex)) { + startIndex = -1; + } + for (var i = startIndex + 1; i < arrayToSearch.length; i++) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + helpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to end of the array + if (helpers$1.isNullOrUndef(startIndex)) { + startIndex = arrayToSearch.length; + } + for (var i = startIndex - 1; i >= 0; i--) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + + // -- Math methods + helpers$1.isNumber = function(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + }; + helpers$1.almostEquals = function(x, y, epsilon) { + return Math.abs(x - y) < epsilon; + }; + helpers$1.almostWhole = function(x, epsilon) { + var rounded = Math.round(x); + return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); + }; + helpers$1.max = function(array) { + return array.reduce(function(max, value) { + if (!isNaN(value)) { + return Math.max(max, value); + } + return max; + }, Number.NEGATIVE_INFINITY); + }; + helpers$1.min = function(array) { + return array.reduce(function(min, value) { + if (!isNaN(value)) { + return Math.min(min, value); + } + return min; + }, Number.POSITIVE_INFINITY); + }; + helpers$1.sign = Math.sign ? + function(x) { + return Math.sign(x); + } : + function(x) { + x = +x; // convert to a number + if (x === 0 || isNaN(x)) { + return x; + } + return x > 0 ? 1 : -1; + }; + helpers$1.log10 = Math.log10 ? + function(x) { + return Math.log10(x); + } : + function(x) { + var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. + // Check for whole powers of 10, + // which due to floating point rounding error should be corrected. + var powerOf10 = Math.round(exponent); + var isPowerOf10 = x === Math.pow(10, powerOf10); + + return isPowerOf10 ? powerOf10 : exponent; + }; + helpers$1.toRadians = function(degrees) { + return degrees * (Math.PI / 180); + }; + helpers$1.toDegrees = function(radians) { + return radians * (180 / Math.PI); + }; + + /** + * Returns the number of decimal places + * i.e. the number of digits after the decimal point, of the value of this Number. + * @param {number} x - A number. + * @returns {number} The number of decimal places. + * @private + */ + helpers$1._decimalPlaces = function(x) { + if (!helpers$1.isFinite(x)) { + return; + } + var e = 1; + var p = 0; + while (Math.round(x * e) / e !== x) { + e *= 10; + p++; + } + return p; + }; + + // Gets the angle from vertical upright to the point about a centre. + helpers$1.getAngleFromPoint = function(centrePoint, anglePoint) { + var distanceFromXCenter = anglePoint.x - centrePoint.x; + var distanceFromYCenter = anglePoint.y - centrePoint.y; + var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + + var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + + if (angle < (-0.5 * Math.PI)) { + angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] + } + + return { + angle: angle, + distance: radialDistanceFromCenter + }; + }; + helpers$1.distanceBetweenPoints = function(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); + }; + + /** + * Provided for backward compatibility, not available anymore + * @function Chart.helpers.aliasPixel + * @deprecated since version 2.8.0 + * @todo remove at version 3 + */ + helpers$1.aliasPixel = function(pixelWidth) { + return (pixelWidth % 2 === 0) ? 0 : 0.5; + }; + + /** + * Returns the aligned pixel value to avoid anti-aliasing blur + * @param {Chart} chart - The chart instance. + * @param {number} pixel - A pixel value. + * @param {number} width - The width of the element. + * @returns {number} The aligned pixel value. + * @private + */ + helpers$1._alignPixel = function(chart, pixel, width) { + var devicePixelRatio = chart.currentDevicePixelRatio; + var halfWidth = width / 2; + return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; + }; + + helpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { + // Props to Rob Spencer at scaled innovation for his post on splining between points + // http://scaledinnovation.com/analytics/splines/aboutSplines.html + + // This function must also respect "skipped" points + + var previous = firstPoint.skip ? middlePoint : firstPoint; + var current = middlePoint; + var next = afterPoint.skip ? middlePoint : afterPoint; + + var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); + var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); + + var s01 = d01 / (d01 + d12); + var s12 = d12 / (d01 + d12); + + // If all points are the same, s01 & s02 will be inf + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; + + var fa = t * s01; // scaling factor for triangle Ta + var fb = t * s12; + + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) + } + }; + }; + helpers$1.EPSILON = Number.EPSILON || 1e-14; + helpers$1.splineCurveMonotone = function(points) { + // This function calculates Bézier control points in a similar way than |splineCurve|, + // but preserves monotonicity of the provided data and ensures no local extremums are added + // between the dataset discrete points due to the interpolation. + // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation + + var pointsWithTangents = (points || []).map(function(point) { + return { + model: point._model, + deltaK: 0, + mK: 0 + }; + }); + + // Calculate slopes (deltaK) and initialize tangents (mK) + var pointsLen = pointsWithTangents.length; + var i, pointBefore, pointCurrent, pointAfter; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } + + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointAfter && !pointAfter.model.skip) { + var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); + + // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 + pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; + } + + if (!pointBefore || pointBefore.model.skip) { + pointCurrent.mK = pointCurrent.deltaK; + } else if (!pointAfter || pointAfter.model.skip) { + pointCurrent.mK = pointBefore.deltaK; + } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { + pointCurrent.mK = 0; + } else { + pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; + } + } + + // Adjust tangents to ensure monotonic properties + var alphaK, betaK, tauK, squaredMagnitude; + for (i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointsWithTangents[i]; + pointAfter = pointsWithTangents[i + 1]; + if (pointCurrent.model.skip || pointAfter.model.skip) { + continue; + } + + if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { + pointCurrent.mK = pointAfter.mK = 0; + continue; + } + + alphaK = pointCurrent.mK / pointCurrent.deltaK; + betaK = pointAfter.mK / pointCurrent.deltaK; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } + + tauK = 3 / Math.sqrt(squaredMagnitude); + pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; + pointAfter.mK = betaK * tauK * pointCurrent.deltaK; + } + + // Compute control points + var deltaX; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } + + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointBefore && !pointBefore.model.skip) { + deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; + pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; + pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; + } + if (pointAfter && !pointAfter.model.skip) { + deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; + pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; + pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + } + } + }; + helpers$1.nextItem = function(collection, index, loop) { + if (loop) { + return index >= collection.length - 1 ? collection[0] : collection[index + 1]; + } + return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; + }; + helpers$1.previousItem = function(collection, index, loop) { + if (loop) { + return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; + } + return index <= 0 ? collection[0] : collection[index - 1]; + }; + // Implementation of the nice number algorithm used in determining where axis labels will go + helpers$1.niceNum = function(range, round) { + var exponent = Math.floor(helpers$1.log10(range)); + var fraction = range / Math.pow(10, exponent); + var niceFraction; + + if (round) { + if (fraction < 1.5) { + niceFraction = 1; + } else if (fraction < 3) { + niceFraction = 2; + } else if (fraction < 7) { + niceFraction = 5; + } else { + niceFraction = 10; + } + } else if (fraction <= 1.0) { + niceFraction = 1; + } else if (fraction <= 2) { + niceFraction = 2; + } else if (fraction <= 5) { + niceFraction = 5; + } else { + niceFraction = 10; + } + + return niceFraction * Math.pow(10, exponent); + }; + // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ + helpers$1.requestAnimFrame = (function() { + if (typeof window === 'undefined') { + return function(callback) { + callback(); + }; + } + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + return window.setTimeout(callback, 1000 / 60); + }; + }()); + // -- DOM methods + helpers$1.getRelativePosition = function(evt, chart) { + var mouseX, mouseY; + var e = evt.originalEvent || evt; + var canvas = evt.target || evt.srcElement; + var boundingRect = canvas.getBoundingClientRect(); + + var touches = e.touches; + if (touches && touches.length > 0) { + mouseX = touches[0].clientX; + mouseY = touches[0].clientY; + + } else { + mouseX = e.clientX; + mouseY = e.clientY; + } + + // Scale mouse coordinates into canvas coordinates + // by following the pattern laid out by 'jerryj' in the comments of + // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ + var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left')); + var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top')); + var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right')); + var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom')); + var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; + var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; + + // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However + // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here + mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); + mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); + + return { + x: mouseX, + y: mouseY + }; + + }; + + // Private helper function to convert max-width/max-height values that may be percentages into a number + function parseMaxStyle(styleValue, node, parentProperty) { + var valueInPixels; + if (typeof styleValue === 'string') { + valueInPixels = parseInt(styleValue, 10); + + if (styleValue.indexOf('%') !== -1) { + // percentage * size in dimension + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + } + } else { + valueInPixels = styleValue; + } + + return valueInPixels; + } + + /** + * Returns if the given value contains an effective constraint. + * @private + */ + function isConstrainedValue(value) { + return value !== undefined && value !== null && value !== 'none'; + } + + /** + * Returns the max width or height of the given DOM node in a cross-browser compatible fashion + * @param {HTMLElement} domNode - the node to check the constraint on + * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height') + * @param {string} percentageProperty - property of parent to use when calculating width as a percentage + * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser} + */ + function getConstraintDimension(domNode, maxStyle, percentageProperty) { + var view = document.defaultView; + var parentNode = helpers$1._getParentNode(domNode); + var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; + var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; + var hasCNode = isConstrainedValue(constrainedNode); + var hasCContainer = isConstrainedValue(constrainedContainer); + var infinity = Number.POSITIVE_INFINITY; + + if (hasCNode || hasCContainer) { + return Math.min( + hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, + hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); + } + + return 'none'; + } + // returns Number or undefined if no constraint + helpers$1.getConstraintWidth = function(domNode) { + return getConstraintDimension(domNode, 'max-width', 'clientWidth'); + }; + // returns Number or undefined if no constraint + helpers$1.getConstraintHeight = function(domNode) { + return getConstraintDimension(domNode, 'max-height', 'clientHeight'); + }; + /** + * @private + */ + helpers$1._calculatePadding = function(container, padding, parentDimension) { + padding = helpers$1.getStyle(container, padding); + + return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10); + }; + /** + * @private + */ + helpers$1._getParentNode = function(domNode) { + var parent = domNode.parentNode; + if (parent && parent.toString() === '[object ShadowRoot]') { + parent = parent.host; + } + return parent; + }; + helpers$1.getMaximumWidth = function(domNode) { + var container = helpers$1._getParentNode(domNode); + if (!container) { + return domNode.clientWidth; + } + + var clientWidth = container.clientWidth; + var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth); + var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth); + + var w = clientWidth - paddingLeft - paddingRight; + var cw = helpers$1.getConstraintWidth(domNode); + return isNaN(cw) ? w : Math.min(w, cw); + }; + helpers$1.getMaximumHeight = function(domNode) { + var container = helpers$1._getParentNode(domNode); + if (!container) { + return domNode.clientHeight; + } + + var clientHeight = container.clientHeight; + var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight); + var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight); + + var h = clientHeight - paddingTop - paddingBottom; + var ch = helpers$1.getConstraintHeight(domNode); + return isNaN(ch) ? h : Math.min(h, ch); + }; + helpers$1.getStyle = function(el, property) { + return el.currentStyle ? + el.currentStyle[property] : + document.defaultView.getComputedStyle(el, null).getPropertyValue(property); + }; + helpers$1.retinaScale = function(chart, forceRatio) { + var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; + if (pixelRatio === 1) { + return; + } + + var canvas = chart.canvas; + var height = chart.height; + var width = chart.width; + + canvas.height = height * pixelRatio; + canvas.width = width * pixelRatio; + chart.ctx.scale(pixelRatio, pixelRatio); + + // If no style has been set on the canvas, the render size is used as display size, + // making the chart visually bigger, so let's enforce it to the "correct" values. + // See https://github.com/chartjs/Chart.js/issues/3575 + if (!canvas.style.height && !canvas.style.width) { + canvas.style.height = height + 'px'; + canvas.style.width = width + 'px'; + } + }; + // -- Canvas methods + helpers$1.fontString = function(pixelSize, fontStyle, fontFamily) { + return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; + }; + helpers$1.longestText = function(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + var data = cache.data = cache.data || {}; + var gc = cache.garbageCollect = cache.garbageCollect || []; + + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } + + ctx.font = font; + var longest = 0; + helpers$1.each(arrayOfThings, function(thing) { + // Undefined strings and arrays should not be measured + if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) { + longest = helpers$1.measureText(ctx, data, gc, longest, thing); + } else if (helpers$1.isArray(thing)) { + // if it is an array lets measure each element + // to do maybe simplify this function a bit so we can do this more recursively? + helpers$1.each(thing, function(nestedThing) { + // Undefined strings and arrays should not be measured + if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) { + longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing); + } + }); + } + }); + + var gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (var i = 0; i < gcLen; i++) { + delete data[gc[i]]; + } + gc.splice(0, gcLen); + } + return longest; + }; + helpers$1.measureText = function(ctx, data, gc, longest, string) { + var textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; + }; + helpers$1.numberOfLabelLines = function(arrayOfThings) { + var numberOfLines = 1; + helpers$1.each(arrayOfThings, function(thing) { + if (helpers$1.isArray(thing)) { + if (thing.length > numberOfLines) { + numberOfLines = thing.length; + } + } + }); + return numberOfLines; + }; + + helpers$1.color = !chartjsColor ? + function(value) { + console.error('Color.js not found!'); + return value; + } : + function(value) { + /* global CanvasGradient */ + if (value instanceof CanvasGradient) { + value = core_defaults.global.defaultColor; + } + + return chartjsColor(value); + }; + + helpers$1.getHoverColor = function(colorValue) { + /* global CanvasPattern */ + return (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ? + colorValue : + helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString(); + }; +}; + +function abstract() { + throw new Error( + 'This method is not implemented: either no adapter can ' + + 'be found or an incomplete integration was provided.' + ); +} + +/** + * Date adapter (current used by the time scale) + * @namespace Chart._adapters._date + * @memberof Chart._adapters + * @private + */ + +/** + * Currently supported unit string values. + * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')} + * @memberof Chart._adapters._date + * @name Unit + */ + +/** + * @class + */ +function DateAdapter(options) { + this.options = options || {}; +} + +helpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ { + /** + * Returns a map of time formats for the supported formatting units defined + * in Unit as well as 'datetime' representing a detailed date/time string. + * @returns {{string: string}} + */ + formats: abstract, + + /** + * Parses the given `value` and return the associated timestamp. + * @param {any} value - the value to parse (usually comes from the data) + * @param {string} [format] - the expected data format + * @returns {(number|null)} + * @function + */ + parse: abstract, + + /** + * Returns the formatted date in the specified `format` for a given `timestamp`. + * @param {number} timestamp - the timestamp to format + * @param {string} format - the date/time token + * @return {string} + * @function + */ + format: abstract, + + /** + * Adds the specified `amount` of `unit` to the given `timestamp`. + * @param {number} timestamp - the input timestamp + * @param {number} amount - the amount to add + * @param {Unit} unit - the unit as string + * @return {number} + * @function + */ + add: abstract, + + /** + * Returns the number of `unit` between the given timestamps. + * @param {number} max - the input timestamp (reference) + * @param {number} min - the timestamp to substract + * @param {Unit} unit - the unit as string + * @return {number} + * @function + */ + diff: abstract, + + /** + * Returns start of `unit` for the given `timestamp`. + * @param {number} timestamp - the input timestamp + * @param {Unit} unit - the unit as string + * @param {number} [weekday] - the ISO day of the week with 1 being Monday + * and 7 being Sunday (only needed if param *unit* is `isoWeek`). + * @function + */ + startOf: abstract, + + /** + * Returns end of `unit` for the given `timestamp`. + * @param {number} timestamp - the input timestamp + * @param {Unit} unit - the unit as string + * @function + */ + endOf: abstract, + + // DEPRECATIONS + + /** + * Provided for backward compatibility for scale.getValueForPixel(), + * this method should be overridden only by the moment adapter. + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ + _create: function(value) { + return value; + } +}); + +DateAdapter.override = function(members) { + helpers$1.extend(DateAdapter.prototype, members); +}; + +var _date = DateAdapter; + +var core_adapters = { + _date: _date +}; + +/** + * Namespace to hold static tick generation functions + * @namespace Chart.Ticks + */ +var core_ticks = { + /** + * Namespace to hold formatters for different types of ticks + * @namespace Chart.Ticks.formatters + */ + formatters: { + /** + * Formatter for value labels + * @method Chart.Ticks.formatters.values + * @param value the value to display + * @return {string|string[]} the label to display + */ + values: function(value) { + return helpers$1.isArray(value) ? value : '' + value; + }, + + /** + * Formatter for linear numeric ticks + * @method Chart.Ticks.formatters.linear + * @param tickValue {number} the value to be formatted + * @param index {number} the position of the tickValue parameter in the ticks array + * @param ticks {number[]} the list of ticks being converted + * @return {string} string representation of the tickValue parameter + */ + linear: function(tickValue, index, ticks) { + // If we have lots of ticks, don't use the ones + var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; + + // If we have a number like 2.5 as the delta, figure out how many decimal places we need + if (Math.abs(delta) > 1) { + if (tickValue !== Math.floor(tickValue)) { + // not an integer + delta = tickValue - Math.floor(tickValue); + } + } + + var logDelta = helpers$1.log10(Math.abs(delta)); + var tickString = ''; + + if (tickValue !== 0) { + var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); + if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation + var logTick = helpers$1.log10(Math.abs(tickValue)); + tickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta)); + } else { + var numDecimal = -1 * Math.floor(logDelta); + numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places + tickString = tickValue.toFixed(numDecimal); + } + } else { + tickString = '0'; // never show decimal places for 0 + } + + return tickString; + }, + + logarithmic: function(tickValue, index, ticks) { + var remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue)))); + + if (tickValue === 0) { + return '0'; + } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { + return tickValue.toExponential(); + } + return ''; + } + } +}; + +var valueOrDefault$9 = helpers$1.valueOrDefault; +var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault; + +core_defaults._set('scale', { + display: true, + position: 'left', + offset: false, + + // grid line settings + gridLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1, + drawBorder: true, + drawOnChartArea: true, + drawTicks: true, + tickMarkLength: 10, + zeroLineWidth: 1, + zeroLineColor: 'rgba(0,0,0,0.25)', + zeroLineBorderDash: [], + zeroLineBorderDashOffset: 0.0, + offsetGridLines: false, + borderDash: [], + borderDashOffset: 0.0 + }, + + // scale label + scaleLabel: { + // display property + display: false, + + // actual label + labelString: '', + + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } + }, + + // label settings + ticks: { + beginAtZero: false, + minRotation: 0, + maxRotation: 50, + mirror: false, + padding: 0, + reverse: false, + display: true, + autoSkip: true, + autoSkipPadding: 0, + labelOffset: 0, + // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. + callback: core_ticks.formatters.values, + minor: {}, + major: {} + } +}); + +function labelsFromTicks(ticks) { + var labels = []; + var i, ilen; + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(ticks[i].label); + } + + return labels; +} + +function getPixelForGridLine(scale, index, offsetGridLines) { + var lineValue = scale.getPixelForTick(index); + + if (offsetGridLines) { + if (scale.getTicks().length === 1) { + lineValue -= scale.isHorizontal() ? + Math.max(lineValue - scale.left, scale.right - lineValue) : + Math.max(lineValue - scale.top, scale.bottom - lineValue); + } else if (index === 0) { + lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; + } else { + lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; + } + } + return lineValue; +} + +function computeTextSize(context, tick, font) { + return helpers$1.isArray(tick) ? + helpers$1.longestText(context, font, tick) : + context.measureText(tick).width; +} + +var core_scale = core_element.extend({ + /** + * Get the padding needed for the scale + * @method getPadding + * @private + * @returns {Padding} the necessary padding + */ + getPadding: function() { + var me = this; + return { + left: me.paddingLeft || 0, + top: me.paddingTop || 0, + right: me.paddingRight || 0, + bottom: me.paddingBottom || 0 + }; + }, + + /** + * Returns the scale tick objects ({label, major}) + * @since 2.7 + */ + getTicks: function() { + return this._ticks; + }, + + // These methods are ordered by lifecyle. Utilities then follow. + // Any function defined here is inherited by all scale types. + // Any function can be extended by the scale type + + mergeTicksOptions: function() { + var ticks = this.options.ticks; + if (ticks.minor === false) { + ticks.minor = { + display: false + }; + } + if (ticks.major === false) { + ticks.major = { + display: false + }; + } + for (var key in ticks) { + if (key !== 'major' && key !== 'minor') { + if (typeof ticks.minor[key] === 'undefined') { + ticks.minor[key] = ticks[key]; + } + if (typeof ticks.major[key] === 'undefined') { + ticks.major[key] = ticks[key]; + } + } + } + }, + beforeUpdate: function() { + helpers$1.callback(this.options.beforeUpdate, [this]); + }, + + update: function(maxWidth, maxHeight, margins) { + var me = this; + var i, ilen, labels, label, ticks, tick; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = helpers$1.extend({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + + me._maxLabelLines = 0; + me.longestLabelWidth = 0; + me.longestTextCache = me.longestTextCache || {}; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + + // Data min/max + me.beforeDataLimits(); + me.determineDataLimits(); + me.afterDataLimits(); + + // Ticks - `this.ticks` is now DEPRECATED! + // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member + // and must not be accessed directly from outside this class. `this.ticks` being + // around for long time and not marked as private, we can't change its structure + // without unexpected breaking changes. If you need to access the scale ticks, + // use scale.getTicks() instead. + + me.beforeBuildTicks(); + + // New implementations should return an array of objects but for BACKWARD COMPAT, + // we still support no return (`this.ticks` internally set by calling this method). + ticks = me.buildTicks() || []; + + // Allow modification of ticks in callback. + ticks = me.afterBuildTicks(ticks) || ticks; + + me.beforeTickToLabelConversion(); + + // New implementations should return the formatted tick labels but for BACKWARD + // COMPAT, we still support no return (`this.ticks` internally changed by calling + // this method and supposed to contain only string values). + labels = me.convertTicksToLabels(ticks) || me.ticks; + + me.afterTickToLabelConversion(); + + me.ticks = labels; // BACKWARD COMPATIBILITY + + // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! + + // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) + for (i = 0, ilen = labels.length; i < ilen; ++i) { + label = labels[i]; + tick = ticks[i]; + if (!tick) { + ticks.push(tick = { + label: label, + major: false + }); + } else { + tick.label = label; + } + } + + me._ticks = ticks; + + // Tick Rotation + me.beforeCalculateTickRotation(); + me.calculateTickRotation(); + me.afterCalculateTickRotation(); + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + + }, + afterUpdate: function() { + helpers$1.callback(this.options.afterUpdate, [this]); + }, + + // + + beforeSetDimensions: function() { + helpers$1.callback(this.options.beforeSetDimensions, [this]); + }, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + }, + afterSetDimensions: function() { + helpers$1.callback(this.options.afterSetDimensions, [this]); + }, + + // Data limits + beforeDataLimits: function() { + helpers$1.callback(this.options.beforeDataLimits, [this]); + }, + determineDataLimits: helpers$1.noop, + afterDataLimits: function() { + helpers$1.callback(this.options.afterDataLimits, [this]); + }, + + // + beforeBuildTicks: function() { + helpers$1.callback(this.options.beforeBuildTicks, [this]); + }, + buildTicks: helpers$1.noop, + afterBuildTicks: function(ticks) { + var me = this; + // ticks is empty for old axis implementations here + if (helpers$1.isArray(ticks) && ticks.length) { + return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]); + } + // Support old implementations (that modified `this.ticks` directly in buildTicks) + me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks; + return ticks; + }, + + beforeTickToLabelConversion: function() { + helpers$1.callback(this.options.beforeTickToLabelConversion, [this]); + }, + convertTicksToLabels: function() { + var me = this; + // Convert ticks to strings + var tickOpts = me.options.ticks; + me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); + }, + afterTickToLabelConversion: function() { + helpers$1.callback(this.options.afterTickToLabelConversion, [this]); + }, + + // + + beforeCalculateTickRotation: function() { + helpers$1.callback(this.options.beforeCalculateTickRotation, [this]); + }, + calculateTickRotation: function() { + var me = this; + var context = me.ctx; + var tickOpts = me.options.ticks; + var labels = labelsFromTicks(me._ticks); + + // Get the width of each grid by calculating the difference + // between x offsets between 0 and 1. + var tickFont = helpers$1.options._parseFont(tickOpts); + context.font = tickFont.string; + + var labelRotation = tickOpts.minRotation || 0; + + if (labels.length && me.options.display && me.isHorizontal()) { + var originalLabelWidth = helpers$1.longestText(context, tickFont.string, labels, me.longestTextCache); + var labelWidth = originalLabelWidth; + var cosRotation, sinRotation; + + // Allow 3 pixels x2 padding either side for label readability + var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; + + // Max label rotation can be set or default to 90 - also act as a loop counter + while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { + var angleRadians = helpers$1.toRadians(labelRotation); + cosRotation = Math.cos(angleRadians); + sinRotation = Math.sin(angleRadians); + + if (sinRotation * originalLabelWidth > me.maxHeight) { + // go back one step + labelRotation--; + break; + } + + labelRotation++; + labelWidth = cosRotation * originalLabelWidth; + } + } + + me.labelRotation = labelRotation; + }, + afterCalculateTickRotation: function() { + helpers$1.callback(this.options.afterCalculateTickRotation, [this]); + }, + + // + + beforeFit: function() { + helpers$1.callback(this.options.beforeFit, [this]); + }, + fit: function() { + var me = this; + // Reset + var minSize = me.minSize = { + width: 0, + height: 0 + }; + + var labels = labelsFromTicks(me._ticks); + + var opts = me.options; + var tickOpts = opts.ticks; + var scaleLabelOpts = opts.scaleLabel; + var gridLineOpts = opts.gridLines; + var display = me._isVisible(); + var position = opts.position; + var isHorizontal = me.isHorizontal(); + + var parseFont = helpers$1.options._parseFont; + var tickFont = parseFont(tickOpts); + var tickMarkLength = opts.gridLines.tickMarkLength; + + // Width + if (isHorizontal) { + // subtract the margins to line up with the chartArea if we are a full width scale + minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; + } else { + minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } + + // height + if (isHorizontal) { + minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } else { + minSize.height = me.maxHeight; // fill all the height + } + + // Are we showing a title for the scale? + if (scaleLabelOpts.display && display) { + var scaleLabelFont = parseFont(scaleLabelOpts); + var scaleLabelPadding = helpers$1.options.toPadding(scaleLabelOpts.padding); + var deltaHeight = scaleLabelFont.lineHeight + scaleLabelPadding.height; + + if (isHorizontal) { + minSize.height += deltaHeight; + } else { + minSize.width += deltaHeight; + } + } + + // Don't bother fitting the ticks if we are not showing the labels + if (tickOpts.display && display) { + var largestTextWidth = helpers$1.longestText(me.ctx, tickFont.string, labels, me.longestTextCache); + var tallestLabelHeightInLines = helpers$1.numberOfLabelLines(labels); + var lineSpace = tickFont.size * 0.5; + var tickPadding = me.options.ticks.padding; + + // Store max number of lines and widest label for _autoSkip + me._maxLabelLines = tallestLabelHeightInLines; + me.longestLabelWidth = largestTextWidth; + + if (isHorizontal) { + var angleRadians = helpers$1.toRadians(me.labelRotation); + var cosRotation = Math.cos(angleRadians); + var sinRotation = Math.sin(angleRadians); + + // TODO - improve this calculation + var labelHeight = (sinRotation * largestTextWidth) + + (tickFont.lineHeight * tallestLabelHeightInLines) + + lineSpace; // padding + + minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); + + me.ctx.font = tickFont.string; + var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.string); + var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.string); + var offsetLeft = me.getPixelForTick(0) - me.left; + var offsetRight = me.right - me.getPixelForTick(labels.length - 1); + var paddingLeft, paddingRight; + + // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned + // which means that the right padding is dominated by the font height + if (me.labelRotation !== 0) { + paddingLeft = position === 'bottom' ? (cosRotation * firstLabelWidth) : (cosRotation * lineSpace); + paddingRight = position === 'bottom' ? (cosRotation * lineSpace) : (cosRotation * lastLabelWidth); + } else { + paddingLeft = firstLabelWidth / 2; + paddingRight = lastLabelWidth / 2; + } + me.paddingLeft = Math.max(paddingLeft - offsetLeft, 0) + 3; // add 3 px to move away from canvas edges + me.paddingRight = Math.max(paddingRight - offsetRight, 0) + 3; + } else { + // A vertical axis is more constrained by the width. Labels are the + // dominant factor here, so get that length first and account for padding + if (tickOpts.mirror) { + largestTextWidth = 0; + } else { + // use lineSpace for consistency with horizontal axis + // tickPadding is not implemented for horizontal + largestTextWidth += tickPadding + lineSpace; + } + + minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + + me.paddingTop = tickFont.size / 2; + me.paddingBottom = tickFont.size / 2; + } + } + + me.handleMargins(); + + me.width = minSize.width; + me.height = minSize.height; + }, + + /** + * Handle margins and padding interactions + * @private + */ + handleMargins: function() { + var me = this; + if (me.margins) { + me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); + me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); + me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); + me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); + } + }, + + afterFit: function() { + helpers$1.callback(this.options.afterFit, [this]); + }, + + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + isFullWidth: function() { + return (this.options.fullWidth); + }, + + // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not + getRightValue: function(rawValue) { + // Null and undefined values first + if (helpers$1.isNullOrUndef(rawValue)) { + return NaN; + } + // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values + if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) { + return NaN; + } + // If it is in fact an object, dive in one more level + if (rawValue) { + if (this.isHorizontal()) { + if (rawValue.x !== undefined) { + return this.getRightValue(rawValue.x); + } + } else if (rawValue.y !== undefined) { + return this.getRightValue(rawValue.y); + } + } + + // Value is good, return it + return rawValue; + }, + + /** + * Used to get the value to display in the tooltip for the data at the given index + * @param index + * @param datasetIndex + */ + getLabelForIndex: helpers$1.noop, + + /** + * Returns the location of the given data point. Value can either be an index or a numerical value + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param value + * @param index + * @param datasetIndex + */ + getPixelForValue: helpers$1.noop, + + /** + * Used to get the data value from a given pixel. This is the inverse of getPixelForValue + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param pixel + */ + getValueForPixel: helpers$1.noop, + + /** + * Returns the location of the tick at the given index + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForTick: function(index) { + var me = this; + var offset = me.options.offset; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var pixel = (tickWidth * index) + me.paddingLeft; + + if (offset) { + pixel += tickWidth / 2; + } + + var finalVal = me.left + pixel; + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; + } + var innerHeight = me.height - (me.paddingTop + me.paddingBottom); + return me.top + (index * (innerHeight / (me._ticks.length - 1))); + }, + + /** + * Utility for getting the pixel location of a percentage of scale + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForDecimal: function(decimal) { + var me = this; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var valueOffset = (innerWidth * decimal) + me.paddingLeft; + + var finalVal = me.left + valueOffset; + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; + } + return me.top + (decimal * me.height); + }, + + /** + * Returns the pixel for the minimum chart value + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getBasePixel: function() { + return this.getPixelForValue(this.getBaseValue()); + }, + + getBaseValue: function() { + var me = this; + var min = me.min; + var max = me.max; + + return me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0; + }, + + /** + * Returns a subset of ticks to be plotted to avoid overlapping labels. + * @private + */ + _autoSkip: function(ticks) { + var me = this; + var isHorizontal = me.isHorizontal(); + var optionTicks = me.options.ticks.minor; + var tickCount = ticks.length; + var skipRatio = false; + var maxTicks = optionTicks.maxTicksLimit; + + // Total space needed to display all ticks. First and last ticks are + // drawn as their center at end of axis, so tickCount-1 + var ticksLength = me._tickSize() * (tickCount - 1); + + // Axis length + var axisLength = isHorizontal + ? me.width - (me.paddingLeft + me.paddingRight) + : me.height - (me.paddingTop + me.PaddingBottom); + + var result = []; + var i, tick; + + if (ticksLength > axisLength) { + skipRatio = 1 + Math.floor(ticksLength / axisLength); + } + + // if they defined a max number of optionTicks, + // increase skipRatio until that number is met + if (tickCount > maxTicks) { + skipRatio = Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks)); + } + + for (i = 0; i < tickCount; i++) { + tick = ticks[i]; + + if (skipRatio > 1 && i % skipRatio > 0) { + // leave tick in place but make sure it's not displayed (#4635) + delete tick.label; + } + result.push(tick); + } + return result; + }, + + /** + * @private + */ + _tickSize: function() { + var me = this; + var isHorizontal = me.isHorizontal(); + var optionTicks = me.options.ticks.minor; + + // Calculate space needed by label in axis direction. + var rot = helpers$1.toRadians(me.labelRotation); + var cos = Math.abs(Math.cos(rot)); + var sin = Math.abs(Math.sin(rot)); + + var padding = optionTicks.autoSkipPadding || 0; + var w = (me.longestLabelWidth + padding) || 0; + + var tickFont = helpers$1.options._parseFont(optionTicks); + var h = (me._maxLabelLines * tickFont.lineHeight + padding) || 0; + + // Calculate space needed for 1 tick in axis direction. + return isHorizontal + ? h * cos > w * sin ? w / cos : h / sin + : h * sin < w * cos ? h / cos : w / sin; + }, + + /** + * @private + */ + _isVisible: function() { + var me = this; + var chart = me.chart; + var display = me.options.display; + var i, ilen, meta; + + if (display !== 'auto') { + return !!display; + } + + // When 'auto', the scale is visible if at least one associated dataset is visible. + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + if (meta.xAxisID === me.id || meta.yAxisID === me.id) { + return true; + } + } + } + + return false; + }, + + /** + * Actually draw the scale on the canvas + * @param {object} chartArea - the area of the chart to draw full grid lines on + */ + draw: function(chartArea) { + var me = this; + var options = me.options; + + if (!me._isVisible()) { + return; + } + + var chart = me.chart; + var context = me.ctx; + var globalDefaults = core_defaults.global; + var defaultFontColor = globalDefaults.defaultFontColor; + var optionTicks = options.ticks.minor; + var optionMajorTicks = options.ticks.major || optionTicks; + var gridLines = options.gridLines; + var scaleLabel = options.scaleLabel; + var position = options.position; + + var isRotated = me.labelRotation !== 0; + var isMirrored = optionTicks.mirror; + var isHorizontal = me.isHorizontal(); + + var parseFont = helpers$1.options._parseFont; + var ticks = optionTicks.display && optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); + var tickFontColor = valueOrDefault$9(optionTicks.fontColor, defaultFontColor); + var tickFont = parseFont(optionTicks); + var lineHeight = tickFont.lineHeight; + var majorTickFontColor = valueOrDefault$9(optionMajorTicks.fontColor, defaultFontColor); + var majorTickFont = parseFont(optionMajorTicks); + var tickPadding = optionTicks.padding; + var labelOffset = optionTicks.labelOffset; + + var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; + + var scaleLabelFontColor = valueOrDefault$9(scaleLabel.fontColor, defaultFontColor); + var scaleLabelFont = parseFont(scaleLabel); + var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding); + var labelRotationRadians = helpers$1.toRadians(me.labelRotation); + + var itemsToDraw = []; + + var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0; + var alignPixel = helpers$1._alignPixel; + var borderValue, tickStart, tickEnd; + + if (position === 'top') { + borderValue = alignPixel(chart, me.bottom, axisWidth); + tickStart = me.bottom - tl; + tickEnd = borderValue - axisWidth / 2; + } else if (position === 'bottom') { + borderValue = alignPixel(chart, me.top, axisWidth); + tickStart = borderValue + axisWidth / 2; + tickEnd = me.top + tl; + } else if (position === 'left') { + borderValue = alignPixel(chart, me.right, axisWidth); + tickStart = me.right - tl; + tickEnd = borderValue - axisWidth / 2; + } else { + borderValue = alignPixel(chart, me.left, axisWidth); + tickStart = borderValue + axisWidth / 2; + tickEnd = me.left + tl; + } + + var epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error. + + helpers$1.each(ticks, function(tick, index) { + // autoskipper skipped this tick (#4635) + if (helpers$1.isNullOrUndef(tick.label)) { + return; + } + + var label = tick.label; + var lineWidth, lineColor, borderDash, borderDashOffset; + if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { + // Draw the first index specially + lineWidth = gridLines.zeroLineWidth; + lineColor = gridLines.zeroLineColor; + borderDash = gridLines.zeroLineBorderDash || []; + borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0; + } else { + lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, index); + lineColor = valueAtIndexOrDefault(gridLines.color, index); + borderDash = gridLines.borderDash || []; + borderDashOffset = gridLines.borderDashOffset || 0.0; + } + + // Common properties + var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY, textOffset, textAlign; + var labelCount = helpers$1.isArray(label) ? label.length : 1; + var lineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines); + + if (isHorizontal) { + var labelYOffset = tl + tickPadding; + + if (lineValue < me.left - epsilon) { + lineColor = 'rgba(0,0,0,0)'; + } + + tx1 = tx2 = x1 = x2 = alignPixel(chart, lineValue, lineWidth); + ty1 = tickStart; + ty2 = tickEnd; + labelX = me.getPixelForTick(index) + labelOffset; // x values for optionTicks (need to consider offsetLabel option) + + if (position === 'top') { + y1 = alignPixel(chart, chartArea.top, axisWidth) + axisWidth / 2; + y2 = chartArea.bottom; + textOffset = ((!isRotated ? 0.5 : 1) - labelCount) * lineHeight; + textAlign = !isRotated ? 'center' : 'left'; + labelY = me.bottom - labelYOffset; + } else { + y1 = chartArea.top; + y2 = alignPixel(chart, chartArea.bottom, axisWidth) - axisWidth / 2; + textOffset = (!isRotated ? 0.5 : 0) * lineHeight; + textAlign = !isRotated ? 'center' : 'right'; + labelY = me.top + labelYOffset; + } + } else { + var labelXOffset = (isMirrored ? 0 : tl) + tickPadding; + + if (lineValue < me.top - epsilon) { + lineColor = 'rgba(0,0,0,0)'; + } + + tx1 = tickStart; + tx2 = tickEnd; + ty1 = ty2 = y1 = y2 = alignPixel(chart, lineValue, lineWidth); + labelY = me.getPixelForTick(index) + labelOffset; + textOffset = (1 - labelCount) * lineHeight / 2; + + if (position === 'left') { + x1 = alignPixel(chart, chartArea.left, axisWidth) + axisWidth / 2; + x2 = chartArea.right; + textAlign = isMirrored ? 'left' : 'right'; + labelX = me.right - labelXOffset; + } else { + x1 = chartArea.left; + x2 = alignPixel(chart, chartArea.right, axisWidth) - axisWidth / 2; + textAlign = isMirrored ? 'right' : 'left'; + labelX = me.left + labelXOffset; + } + } + + itemsToDraw.push({ + tx1: tx1, + ty1: ty1, + tx2: tx2, + ty2: ty2, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + labelX: labelX, + labelY: labelY, + glWidth: lineWidth, + glColor: lineColor, + glBorderDash: borderDash, + glBorderDashOffset: borderDashOffset, + rotation: -1 * labelRotationRadians, + label: label, + major: tick.major, + textOffset: textOffset, + textAlign: textAlign + }); + }); + + // Draw all of the tick labels, tick marks, and grid lines at the correct places + helpers$1.each(itemsToDraw, function(itemToDraw) { + var glWidth = itemToDraw.glWidth; + var glColor = itemToDraw.glColor; + + if (gridLines.display && glWidth && glColor) { + context.save(); + context.lineWidth = glWidth; + context.strokeStyle = glColor; + if (context.setLineDash) { + context.setLineDash(itemToDraw.glBorderDash); + context.lineDashOffset = itemToDraw.glBorderDashOffset; + } + + context.beginPath(); + + if (gridLines.drawTicks) { + context.moveTo(itemToDraw.tx1, itemToDraw.ty1); + context.lineTo(itemToDraw.tx2, itemToDraw.ty2); + } + + if (gridLines.drawOnChartArea) { + context.moveTo(itemToDraw.x1, itemToDraw.y1); + context.lineTo(itemToDraw.x2, itemToDraw.y2); + } + + context.stroke(); + context.restore(); + } + + if (optionTicks.display) { + // Make sure we draw text in the correct color and font + context.save(); + context.translate(itemToDraw.labelX, itemToDraw.labelY); + context.rotate(itemToDraw.rotation); + context.font = itemToDraw.major ? majorTickFont.string : tickFont.string; + context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; + context.textBaseline = 'middle'; + context.textAlign = itemToDraw.textAlign; + + var label = itemToDraw.label; + var y = itemToDraw.textOffset; + if (helpers$1.isArray(label)) { + for (var i = 0; i < label.length; ++i) { + // We just make sure the multiline element is a string here.. + context.fillText('' + label[i], 0, y); + y += lineHeight; + } + } else { + context.fillText(label, 0, y); + } + context.restore(); + } + }); + + if (scaleLabel.display) { + // Draw the scale label + var scaleLabelX; + var scaleLabelY; + var rotation = 0; + var halfLineHeight = scaleLabelFont.lineHeight / 2; + + if (isHorizontal) { + scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width + scaleLabelY = position === 'bottom' + ? me.bottom - halfLineHeight - scaleLabelPadding.bottom + : me.top + halfLineHeight + scaleLabelPadding.top; + } else { + var isLeft = position === 'left'; + scaleLabelX = isLeft + ? me.left + halfLineHeight + scaleLabelPadding.top + : me.right - halfLineHeight - scaleLabelPadding.top; + scaleLabelY = me.top + ((me.bottom - me.top) / 2); + rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; + } + + context.save(); + context.translate(scaleLabelX, scaleLabelY); + context.rotate(rotation); + context.textAlign = 'center'; + context.textBaseline = 'middle'; + context.fillStyle = scaleLabelFontColor; // render in correct colour + context.font = scaleLabelFont.string; + context.fillText(scaleLabel.labelString, 0, 0); + context.restore(); + } + + if (axisWidth) { + // Draw the line at the edge of the axis + var firstLineWidth = axisWidth; + var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0); + var x1, x2, y1, y2; + + if (isHorizontal) { + x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2; + x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2; + y1 = y2 = borderValue; + } else { + y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2; + y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2; + x1 = x2 = borderValue; + } + + context.lineWidth = axisWidth; + context.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0); + context.beginPath(); + context.moveTo(x1, y1); + context.lineTo(x2, y2); + context.stroke(); + } + } +}); + +var defaultConfig = { + position: 'bottom' +}; + +var scale_category = core_scale.extend({ + /** + * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those + * else fall back to data.labels + * @private + */ + getLabels: function() { + var data = this.chart.data; + return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; + }, + + determineDataLimits: function() { + var me = this; + var labels = me.getLabels(); + me.minIndex = 0; + me.maxIndex = labels.length - 1; + var findIndex; + + if (me.options.ticks.min !== undefined) { + // user specified min value + findIndex = labels.indexOf(me.options.ticks.min); + me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; + } + + if (me.options.ticks.max !== undefined) { + // user specified max value + findIndex = labels.indexOf(me.options.ticks.max); + me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; + } + + me.min = labels[me.minIndex]; + me.max = labels[me.maxIndex]; + }, + + buildTicks: function() { + var me = this; + var labels = me.getLabels(); + // If we are viewing some subset of labels, slice the original array + me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var chart = me.chart; + + if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) { + return me.getRightValue(chart.data.datasets[datasetIndex].data[index]); + } + + return me.ticks[index - me.minIndex]; + }, + + // Used to get data value locations. Value can either be an index or a numerical value + getPixelForValue: function(value, index) { + var me = this; + var offset = me.options.offset; + // 1 is added because we need the length but we have the indexes + var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); + + // If value is a data object, then index is the index in the data array, + // not the index of the scale. We need to change that. + var valueCategory; + if (value !== undefined && value !== null) { + valueCategory = me.isHorizontal() ? value.x : value.y; + } + if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { + var labels = me.getLabels(); + value = valueCategory || value; + var idx = labels.indexOf(value); + index = idx !== -1 ? idx : index; + } + + if (me.isHorizontal()) { + var valueWidth = me.width / offsetAmt; + var widthOffset = (valueWidth * (index - me.minIndex)); + + if (offset) { + widthOffset += (valueWidth / 2); + } + + return me.left + widthOffset; + } + var valueHeight = me.height / offsetAmt; + var heightOffset = (valueHeight * (index - me.minIndex)); + + if (offset) { + heightOffset += (valueHeight / 2); + } + + return me.top + heightOffset; + }, + + getPixelForTick: function(index) { + return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); + }, + + getValueForPixel: function(pixel) { + var me = this; + var offset = me.options.offset; + var value; + var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var horz = me.isHorizontal(); + var valueDimension = (horz ? me.width : me.height) / offsetAmt; + + pixel -= horz ? me.left : me.top; + + if (offset) { + pixel -= (valueDimension / 2); + } + + if (pixel <= 0) { + value = 0; + } else { + value = Math.round(pixel / valueDimension); + } + + return value + me.minIndex; + }, + + getBasePixel: function() { + return this.bottom; + } +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults = defaultConfig; +scale_category._defaults = _defaults; + +var noop = helpers$1.noop; +var isNullOrUndef = helpers$1.isNullOrUndef; + +/** + * Generate a set of linear ticks + * @param generationOptions the options used to generate the ticks + * @param dataRange the range of the data + * @returns {number[]} array of tick values + */ +function generateTicks(generationOptions, dataRange) { + var ticks = []; + // To get a "nice" value for the tick spacing, we will use the appropriately named + // "nice number" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks + // for details. + + var MIN_SPACING = 1e-14; + var stepSize = generationOptions.stepSize; + var unit = stepSize || 1; + var maxNumSpaces = generationOptions.maxTicks - 1; + var min = generationOptions.min; + var max = generationOptions.max; + var precision = generationOptions.precision; + var rmin = dataRange.min; + var rmax = dataRange.max; + var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit; + var factor, niceMin, niceMax, numSpaces; + + // Beyond MIN_SPACING floating point numbers being to lose precision + // such that we can't do the math necessary to generate ticks + if (spacing < MIN_SPACING && isNullOrUndef(min) && isNullOrUndef(max)) { + return [rmin, rmax]; + } + + numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); + if (numSpaces > maxNumSpaces) { + // If the calculated num of spaces exceeds maxNumSpaces, recalculate it + spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit; + } + + if (stepSize || isNullOrUndef(precision)) { + // If a precision is not specified, calculate factor based on spacing + factor = Math.pow(10, helpers$1._decimalPlaces(spacing)); + } else { + // If the user specified a precision, round to that number of decimal places + factor = Math.pow(10, precision); + spacing = Math.ceil(spacing * factor) / factor; + } + + niceMin = Math.floor(rmin / spacing) * spacing; + niceMax = Math.ceil(rmax / spacing) * spacing; + + // If min, max and stepSize is set and they make an evenly spaced scale use it. + if (stepSize) { + // If very close to our whole number, use it. + if (!isNullOrUndef(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) { + niceMin = min; + } + if (!isNullOrUndef(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) { + niceMax = max; + } + } + + numSpaces = (niceMax - niceMin) / spacing; + // If very close to our rounded value, use it. + if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { + numSpaces = Math.round(numSpaces); + } else { + numSpaces = Math.ceil(numSpaces); + } + + niceMin = Math.round(niceMin * factor) / factor; + niceMax = Math.round(niceMax * factor) / factor; + ticks.push(isNullOrUndef(min) ? niceMin : min); + for (var j = 1; j < numSpaces; ++j) { + ticks.push(Math.round((niceMin + j * spacing) * factor) / factor); + } + ticks.push(isNullOrUndef(max) ? niceMax : max); + + return ticks; +} + +var scale_linearbase = core_scale.extend({ + getRightValue: function(value) { + if (typeof value === 'string') { + return +value; + } + return core_scale.prototype.getRightValue.call(this, value); + }, + + handleTickRangeOptions: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, + // do nothing since that would make the chart weird. If the user really wants a weird chart + // axis, they can manually override it + if (tickOpts.beginAtZero) { + var minSign = helpers$1.sign(me.min); + var maxSign = helpers$1.sign(me.max); + + if (minSign < 0 && maxSign < 0) { + // move the top up to 0 + me.max = 0; + } else if (minSign > 0 && maxSign > 0) { + // move the bottom down to 0 + me.min = 0; + } + } + + var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; + var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; + + if (tickOpts.min !== undefined) { + me.min = tickOpts.min; + } else if (tickOpts.suggestedMin !== undefined) { + if (me.min === null) { + me.min = tickOpts.suggestedMin; + } else { + me.min = Math.min(me.min, tickOpts.suggestedMin); + } + } + + if (tickOpts.max !== undefined) { + me.max = tickOpts.max; + } else if (tickOpts.suggestedMax !== undefined) { + if (me.max === null) { + me.max = tickOpts.suggestedMax; + } else { + me.max = Math.max(me.max, tickOpts.suggestedMax); + } + } + + if (setMin !== setMax) { + // We set the min or the max but not both. + // So ensure that our range is good + // Inverted or 0 length range can happen when + // ticks.min is set, and no datasets are visible + if (me.min >= me.max) { + if (setMin) { + me.max = me.min + 1; + } else { + me.min = me.max - 1; + } + } + } + + if (me.min === me.max) { + me.max++; + + if (!tickOpts.beginAtZero) { + me.min--; + } + } + }, + + getTickLimit: function() { + var me = this; + var tickOpts = me.options.ticks; + var stepSize = tickOpts.stepSize; + var maxTicksLimit = tickOpts.maxTicksLimit; + var maxTicks; + + if (stepSize) { + maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1; + } else { + maxTicks = me._computeTickLimit(); + maxTicksLimit = maxTicksLimit || 11; + } + + if (maxTicksLimit) { + maxTicks = Math.min(maxTicksLimit, maxTicks); + } + + return maxTicks; + }, + + _computeTickLimit: function() { + return Number.POSITIVE_INFINITY; + }, + + handleDirectionalChanges: noop, + + buildTicks: function() { + var me = this; + var opts = me.options; + var tickOpts = opts.ticks; + + // Figure out what the max number of ticks we can support it is based on the size of + // the axis area. For now, we say that the minimum tick spacing in pixels must be 40 + // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on + // the graph. Make sure we always have at least 2 ticks + var maxTicks = me.getTickLimit(); + maxTicks = Math.max(2, maxTicks); + + var numericGeneratorOptions = { + maxTicks: maxTicks, + min: tickOpts.min, + max: tickOpts.max, + precision: tickOpts.precision, + stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) + }; + var ticks = me.ticks = generateTicks(numericGeneratorOptions, me); + + me.handleDirectionalChanges(); + + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers$1.max(ticks); + me.min = helpers$1.min(ticks); + + if (tickOpts.reverse) { + ticks.reverse(); + + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + }, + + convertTicksToLabels: function() { + var me = this; + me.ticksAsNumbers = me.ticks.slice(); + me.zeroLineIndex = me.ticks.indexOf(0); + + core_scale.prototype.convertTicksToLabels.call(me); + } +}); + +var defaultConfig$1 = { + position: 'left', + ticks: { + callback: core_ticks.formatters.linear + } +}; + +var scale_linear = scale_linearbase.extend({ + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var data = chart.data; + var datasets = data.datasets; + var isHorizontal = me.isHorizontal(); + var DEFAULT_MIN = 0; + var DEFAULT_MAX = 1; + + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + + // First Calculate the range + me.min = null; + me.max = null; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + helpers$1.each(datasets, function(dataset, datasetIndex) { + if (hasStacks) { + return; + } + + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + } + }); + } + + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; + + helpers$1.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = { + positiveValues: [], + negativeValues: [] + }; + } + + // Store these per type + var positiveValues = valuesPerStack[key].positiveValues; + var negativeValues = valuesPerStack[key].negativeValues; + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers$1.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + positiveValues[index] = positiveValues[index] || 0; + negativeValues[index] = negativeValues[index] || 0; + + if (opts.relativePoints) { + positiveValues[index] = 100; + } else if (value < 0) { + negativeValues[index] += value; + } else { + positiveValues[index] += value; + } + }); + } + }); + + helpers$1.each(valuesPerStack, function(valuesForType) { + var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); + var minVal = helpers$1.min(values); + var maxVal = helpers$1.max(values); + me.min = me.min === null ? minVal : Math.min(me.min, minVal); + me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); + }); + + } else { + helpers$1.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers$1.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + if (me.min === null) { + me.min = value; + } else if (value < me.min) { + me.min = value; + } + + if (me.max === null) { + me.max = value; + } else if (value > me.max) { + me.max = value; + } + }); + } + }); + } + + me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; + me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; + + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + this.handleTickRangeOptions(); + }, + + // Returns the maximum number of ticks based on the scale dimension + _computeTickLimit: function() { + var me = this; + var tickFont; + + if (me.isHorizontal()) { + return Math.ceil(me.width / 40); + } + tickFont = helpers$1.options._parseFont(me.options.ticks); + return Math.ceil(me.height / tickFont.lineHeight); + }, + + // Called after the ticks are built. We need + handleDirectionalChanges: function() { + if (!this.isHorizontal()) { + // We are in a vertical orientation. The top value is the highest. So reverse the array + this.ticks.reverse(); + } + }, + + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + + // Utils + getPixelForValue: function(value) { + // This must be called after fit has been run so that + // this.left, this.top, this.right, and this.bottom have been defined + var me = this; + var start = me.start; + + var rightValue = +me.getRightValue(value); + var pixel; + var range = me.end - start; + + if (me.isHorizontal()) { + pixel = me.left + (me.width / range * (rightValue - start)); + } else { + pixel = me.bottom - (me.height / range * (rightValue - start)); + } + return pixel; + }, + + getValueForPixel: function(pixel) { + var me = this; + var isHorizontal = me.isHorizontal(); + var innerDimension = isHorizontal ? me.width : me.height; + var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; + return me.start + ((me.end - me.start) * offset); + }, + + getPixelForTick: function(index) { + return this.getPixelForValue(this.ticksAsNumbers[index]); + } +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults$1 = defaultConfig$1; +scale_linear._defaults = _defaults$1; + +var valueOrDefault$a = helpers$1.valueOrDefault; + +/** + * Generate a set of logarithmic ticks + * @param generationOptions the options used to generate the ticks + * @param dataRange the range of the data + * @returns {number[]} array of tick values + */ +function generateTicks$1(generationOptions, dataRange) { + var ticks = []; + + var tickVal = valueOrDefault$a(generationOptions.min, Math.pow(10, Math.floor(helpers$1.log10(dataRange.min)))); + + var endExp = Math.floor(helpers$1.log10(dataRange.max)); + var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); + var exp, significand; + + if (tickVal === 0) { + exp = Math.floor(helpers$1.log10(dataRange.minNotZero)); + significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); + + ticks.push(tickVal); + tickVal = significand * Math.pow(10, exp); + } else { + exp = Math.floor(helpers$1.log10(tickVal)); + significand = Math.floor(tickVal / Math.pow(10, exp)); + } + var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; + + do { + ticks.push(tickVal); + + ++significand; + if (significand === 10) { + significand = 1; + ++exp; + precision = exp >= 0 ? 1 : precision; + } + + tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; + } while (exp < endExp || (exp === endExp && significand < endSignificand)); + + var lastTick = valueOrDefault$a(generationOptions.max, tickVal); + ticks.push(lastTick); + + return ticks; +} + +var defaultConfig$2 = { + position: 'left', + + // label settings + ticks: { + callback: core_ticks.formatters.logarithmic + } +}; + +// TODO(v3): change this to positiveOrDefault +function nonNegativeOrDefault(value, defaultValue) { + return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue; +} + +var scale_logarithmic = core_scale.extend({ + determineDataLimits: function() { + var me = this; + var opts = me.options; + var chart = me.chart; + var data = chart.data; + var datasets = data.datasets; + var isHorizontal = me.isHorizontal(); + function IDMatches(meta) { + return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; + } + + // Calculate Range + me.min = null; + me.max = null; + me.minNotZero = null; + + var hasStacks = opts.stacked; + if (hasStacks === undefined) { + helpers$1.each(datasets, function(dataset, datasetIndex) { + if (hasStacks) { + return; + } + + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && + meta.stack !== undefined) { + hasStacks = true; + } + }); + } + + if (opts.stacked || hasStacks) { + var valuesPerStack = {}; + + helpers$1.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + var key = [ + meta.type, + // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined + ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), + meta.stack + ].join('.'); + + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + if (valuesPerStack[key] === undefined) { + valuesPerStack[key] = []; + } + + helpers$1.each(dataset.data, function(rawValue, index) { + var values = valuesPerStack[key]; + var value = +me.getRightValue(rawValue); + // invalid, hidden and negative values are ignored + if (isNaN(value) || meta.data[index].hidden || value < 0) { + return; + } + values[index] = values[index] || 0; + values[index] += value; + }); + } + }); + + helpers$1.each(valuesPerStack, function(valuesForType) { + if (valuesForType.length > 0) { + var minVal = helpers$1.min(valuesForType); + var maxVal = helpers$1.max(valuesForType); + me.min = me.min === null ? minVal : Math.min(me.min, minVal); + me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); + } + }); + + } else { + helpers$1.each(datasets, function(dataset, datasetIndex) { + var meta = chart.getDatasetMeta(datasetIndex); + if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { + helpers$1.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + // invalid, hidden and negative values are ignored + if (isNaN(value) || meta.data[index].hidden || value < 0) { + return; + } + + if (me.min === null) { + me.min = value; + } else if (value < me.min) { + me.min = value; + } + + if (me.max === null) { + me.max = value; + } else if (value > me.max) { + me.max = value; + } + + if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { + me.minNotZero = value; + } + }); + } + }); + } + + // Common base implementation to handle ticks.min, ticks.max + this.handleTickRangeOptions(); + }, + + handleTickRangeOptions: function() { + var me = this; + var tickOpts = me.options.ticks; + var DEFAULT_MIN = 1; + var DEFAULT_MAX = 10; + + me.min = nonNegativeOrDefault(tickOpts.min, me.min); + me.max = nonNegativeOrDefault(tickOpts.max, me.max); + + if (me.min === me.max) { + if (me.min !== 0 && me.min !== null) { + me.min = Math.pow(10, Math.floor(helpers$1.log10(me.min)) - 1); + me.max = Math.pow(10, Math.floor(helpers$1.log10(me.max)) + 1); + } else { + me.min = DEFAULT_MIN; + me.max = DEFAULT_MAX; + } + } + if (me.min === null) { + me.min = Math.pow(10, Math.floor(helpers$1.log10(me.max)) - 1); + } + if (me.max === null) { + me.max = me.min !== 0 + ? Math.pow(10, Math.floor(helpers$1.log10(me.min)) + 1) + : DEFAULT_MAX; + } + if (me.minNotZero === null) { + if (me.min > 0) { + me.minNotZero = me.min; + } else if (me.max < 1) { + me.minNotZero = Math.pow(10, Math.floor(helpers$1.log10(me.max))); + } else { + me.minNotZero = DEFAULT_MIN; + } + } + }, + + buildTicks: function() { + var me = this; + var tickOpts = me.options.ticks; + var reverse = !me.isHorizontal(); + + var generationOptions = { + min: nonNegativeOrDefault(tickOpts.min), + max: nonNegativeOrDefault(tickOpts.max) + }; + var ticks = me.ticks = generateTicks$1(generationOptions, me); + + // At this point, we need to update our max and min given the tick values since we have expanded the + // range of the scale + me.max = helpers$1.max(ticks); + me.min = helpers$1.min(ticks); + + if (tickOpts.reverse) { + reverse = !reverse; + me.start = me.max; + me.end = me.min; + } else { + me.start = me.min; + me.end = me.max; + } + if (reverse) { + ticks.reverse(); + } + }, + + convertTicksToLabels: function() { + this.tickValues = this.ticks.slice(); + + core_scale.prototype.convertTicksToLabels.call(this); + }, + + // Get the correct tooltip label + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + + getPixelForTick: function(index) { + return this.getPixelForValue(this.tickValues[index]); + }, + + /** + * Returns the value of the first tick. + * @param {number} value - The minimum not zero value. + * @return {number} The first tick value. + * @private + */ + _getFirstTickValue: function(value) { + var exp = Math.floor(helpers$1.log10(value)); + var significand = Math.floor(value / Math.pow(10, exp)); + + return significand * Math.pow(10, exp); + }, + + getPixelForValue: function(value) { + var me = this; + var tickOpts = me.options.ticks; + var reverse = tickOpts.reverse; + var log10 = helpers$1.log10; + var firstTickValue = me._getFirstTickValue(me.minNotZero); + var offset = 0; + var innerDimension, pixel, start, end, sign; + + value = +me.getRightValue(value); + if (reverse) { + start = me.end; + end = me.start; + sign = -1; + } else { + start = me.start; + end = me.end; + sign = 1; + } + if (me.isHorizontal()) { + innerDimension = me.width; + pixel = reverse ? me.right : me.left; + } else { + innerDimension = me.height; + sign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0) + pixel = reverse ? me.top : me.bottom; + } + if (value !== start) { + if (start === 0) { // include zero tick + offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize); + innerDimension -= offset; + start = firstTickValue; + } + if (value !== 0) { + offset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start)); + } + pixel += sign * offset; + } + return pixel; + }, + + getValueForPixel: function(pixel) { + var me = this; + var tickOpts = me.options.ticks; + var reverse = tickOpts.reverse; + var log10 = helpers$1.log10; + var firstTickValue = me._getFirstTickValue(me.minNotZero); + var innerDimension, start, end, value; + + if (reverse) { + start = me.end; + end = me.start; + } else { + start = me.start; + end = me.end; + } + if (me.isHorizontal()) { + innerDimension = me.width; + value = reverse ? me.right - pixel : pixel - me.left; + } else { + innerDimension = me.height; + value = reverse ? pixel - me.top : me.bottom - pixel; + } + if (value !== start) { + if (start === 0) { // include zero tick + var offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize); + value -= offset; + innerDimension -= offset; + start = firstTickValue; + } + value *= log10(end) - log10(start); + value /= innerDimension; + value = Math.pow(10, log10(start) + value); + } + return value; + } +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults$2 = defaultConfig$2; +scale_logarithmic._defaults = _defaults$2; + +var valueOrDefault$b = helpers$1.valueOrDefault; +var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault; +var resolve$7 = helpers$1.options.resolve; + +var defaultConfig$3 = { + display: true, + + // Boolean - Whether to animate scaling the chart from the centre + animate: true, + position: 'chartArea', + + angleLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1, + borderDash: [], + borderDashOffset: 0.0 + }, + + gridLines: { + circular: false + }, + + // label settings + ticks: { + // Boolean - Show a backdrop to the scale label + showLabelBackdrop: true, + + // String - The colour of the label backdrop + backdropColor: 'rgba(255,255,255,0.75)', + + // Number - The backdrop padding above & below the label in pixels + backdropPaddingY: 2, + + // Number - The backdrop padding to the side of the label in pixels + backdropPaddingX: 2, + + callback: core_ticks.formatters.linear + }, + + pointLabels: { + // Boolean - if true, show point labels + display: true, + + // Number - Point label font size in pixels + fontSize: 10, + + // Function - Used to convert point labels + callback: function(label) { + return label; + } + } +}; + +function getValueCount(scale) { + var opts = scale.options; + return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; +} + +function getTickBackdropHeight(opts) { + var tickOpts = opts.ticks; + + if (tickOpts.display && opts.display) { + return valueOrDefault$b(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2; + } + return 0; +} + +function measureLabelSize(ctx, lineHeight, label) { + if (helpers$1.isArray(label)) { + return { + w: helpers$1.longestText(ctx, ctx.font, label), + h: label.length * lineHeight + }; + } + + return { + w: ctx.measureText(label).width, + h: lineHeight + }; +} + +function determineLimits(angle, pos, size, min, max) { + if (angle === min || angle === max) { + return { + start: pos - (size / 2), + end: pos + (size / 2) + }; + } else if (angle < min || angle > max) { + return { + start: pos - size, + end: pos + }; + } + + return { + start: pos, + end: pos + size + }; +} + +/** + * Helper function to fit a radial linear scale with point labels + */ +function fitWithPointLabels(scale) { + + // Right, this is really confusing and there is a lot of maths going on here + // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 + // + // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif + // + // Solution: + // + // We assume the radius of the polygon is half the size of the canvas at first + // at each index we check if the text overlaps. + // + // Where it does, we store that angle and that index. + // + // After finding the largest index and angle we calculate how much we need to remove + // from the shape radius to move the point inwards by that x. + // + // We average the left and right distances to get the maximum shape radius that can fit in the box + // along with labels. + // + // Once we have that, we can find the centre point for the chart, by taking the x text protrusion + // on each side, removing that from the size, halving it and adding the left x protrusion width. + // + // This will mean we have a shape fitted to the canvas, as large as it can be with the labels + // and position it in the most space efficient manner + // + // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif + + var plFont = helpers$1.options._parseFont(scale.options.pointLabels); + + // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. + // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points + var furthestLimits = { + l: 0, + r: scale.width, + t: 0, + b: scale.height - scale.paddingTop + }; + var furthestAngles = {}; + var i, textSize, pointPosition; + + scale.ctx.font = plFont.string; + scale._pointLabelSizes = []; + + var valueCount = getValueCount(scale); + for (i = 0; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, scale.drawingArea + 5); + textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i] || ''); + scale._pointLabelSizes[i] = textSize; + + // Add quarter circle to make degree 0 mean top of circle + var angleRadians = scale.getIndexAngle(i); + var angle = helpers$1.toDegrees(angleRadians) % 360; + var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); + var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); + + if (hLimits.start < furthestLimits.l) { + furthestLimits.l = hLimits.start; + furthestAngles.l = angleRadians; + } + + if (hLimits.end > furthestLimits.r) { + furthestLimits.r = hLimits.end; + furthestAngles.r = angleRadians; + } + + if (vLimits.start < furthestLimits.t) { + furthestLimits.t = vLimits.start; + furthestAngles.t = angleRadians; + } + + if (vLimits.end > furthestLimits.b) { + furthestLimits.b = vLimits.end; + furthestAngles.b = angleRadians; + } + } + + scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles); +} + +function getTextAlignForAngle(angle) { + if (angle === 0 || angle === 180) { + return 'center'; + } else if (angle < 180) { + return 'left'; + } + + return 'right'; +} + +function fillText(ctx, text, position, lineHeight) { + var y = position.y + lineHeight / 2; + var i, ilen; + + if (helpers$1.isArray(text)) { + for (i = 0, ilen = text.length; i < ilen; ++i) { + ctx.fillText(text[i], position.x, y); + y += lineHeight; + } + } else { + ctx.fillText(text, position.x, y); + } +} + +function adjustPointPositionForLabelHeight(angle, textSize, position) { + if (angle === 90 || angle === 270) { + position.y -= (textSize.h / 2); + } else if (angle > 270 || angle < 90) { + position.y -= textSize.h; + } +} + +function drawPointLabels(scale) { + var ctx = scale.ctx; + var opts = scale.options; + var angleLineOpts = opts.angleLines; + var gridLineOpts = opts.gridLines; + var pointLabelOpts = opts.pointLabels; + var lineWidth = valueOrDefault$b(angleLineOpts.lineWidth, gridLineOpts.lineWidth); + var lineColor = valueOrDefault$b(angleLineOpts.color, gridLineOpts.color); + var tickBackdropHeight = getTickBackdropHeight(opts); + + ctx.save(); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = lineColor; + if (ctx.setLineDash) { + ctx.setLineDash(resolve$7([angleLineOpts.borderDash, gridLineOpts.borderDash, []])); + ctx.lineDashOffset = resolve$7([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]); + } + + var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); + + // Point Label Font + var plFont = helpers$1.options._parseFont(pointLabelOpts); + + ctx.font = plFont.string; + ctx.textBaseline = 'middle'; + + for (var i = getValueCount(scale) - 1; i >= 0; i--) { + if (angleLineOpts.display && lineWidth && lineColor) { + var outerPosition = scale.getPointPosition(i, outerDistance); + ctx.beginPath(); + ctx.moveTo(scale.xCenter, scale.yCenter); + ctx.lineTo(outerPosition.x, outerPosition.y); + ctx.stroke(); + } + + if (pointLabelOpts.display) { + // Extra pixels out for some label spacing + var extra = (i === 0 ? tickBackdropHeight / 2 : 0); + var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5); + + // Keep this in loop since we may support array properties here + var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor); + ctx.fillStyle = pointLabelFontColor; + + var angleRadians = scale.getIndexAngle(i); + var angle = helpers$1.toDegrees(angleRadians); + ctx.textAlign = getTextAlignForAngle(angle); + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.lineHeight); + } + } + ctx.restore(); +} + +function drawRadiusLine(scale, gridLineOpts, radius, index) { + var ctx = scale.ctx; + var circular = gridLineOpts.circular; + var valueCount = getValueCount(scale); + var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1); + var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1); + var pointPosition; + + if ((!circular && !valueCount) || !lineColor || !lineWidth) { + return; + } + + ctx.save(); + ctx.strokeStyle = lineColor; + ctx.lineWidth = lineWidth; + if (ctx.setLineDash) { + ctx.setLineDash(gridLineOpts.borderDash || []); + ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0; + } + + ctx.beginPath(); + if (circular) { + // Draw circular arcs between the points + ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); + } else { + // Draw straight lines connecting each index + pointPosition = scale.getPointPosition(0, radius); + ctx.moveTo(pointPosition.x, pointPosition.y); + + for (var i = 1; i < valueCount; i++) { + pointPosition = scale.getPointPosition(i, radius); + ctx.lineTo(pointPosition.x, pointPosition.y); + } + } + ctx.closePath(); + ctx.stroke(); + ctx.restore(); +} + +function numberOrZero(param) { + return helpers$1.isNumber(param) ? param : 0; +} + +var scale_radialLinear = scale_linearbase.extend({ + setDimensions: function() { + var me = this; + + // Set the unconstrained dimension before label rotation + me.width = me.maxWidth; + me.height = me.maxHeight; + me.paddingTop = getTickBackdropHeight(me.options) / 2; + me.xCenter = Math.floor(me.width / 2); + me.yCenter = Math.floor((me.height - me.paddingTop) / 2); + me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2; + }, + + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var min = Number.POSITIVE_INFINITY; + var max = Number.NEGATIVE_INFINITY; + + helpers$1.each(chart.data.datasets, function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + + helpers$1.each(dataset.data, function(rawValue, index) { + var value = +me.getRightValue(rawValue); + if (isNaN(value) || meta.data[index].hidden) { + return; + } + + min = Math.min(value, min); + max = Math.max(value, max); + }); + } + }); + + me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); + me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); + + // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero + me.handleTickRangeOptions(); + }, + + // Returns the maximum number of ticks based on the scale dimension + _computeTickLimit: function() { + return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); + }, + + convertTicksToLabels: function() { + var me = this; + + scale_linearbase.prototype.convertTicksToLabels.call(me); + + // Point labels + me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); + }, + + getLabelForIndex: function(index, datasetIndex) { + return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); + }, + + fit: function() { + var me = this; + var opts = me.options; + + if (opts.display && opts.pointLabels.display) { + fitWithPointLabels(me); + } else { + me.setCenterPoint(0, 0, 0, 0); + } + }, + + /** + * Set radius reductions and determine new radius and center point + * @private + */ + setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { + var me = this; + var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); + var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); + var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); + var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b); + + radiusReductionLeft = numberOrZero(radiusReductionLeft); + radiusReductionRight = numberOrZero(radiusReductionRight); + radiusReductionTop = numberOrZero(radiusReductionTop); + radiusReductionBottom = numberOrZero(radiusReductionBottom); + + me.drawingArea = Math.min( + Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), + Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); + me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); + }, + + setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { + var me = this; + var maxRight = me.width - rightMovement - me.drawingArea; + var maxLeft = leftMovement + me.drawingArea; + var maxTop = topMovement + me.drawingArea; + var maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea; + + me.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left); + me.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop); + }, + + getIndexAngle: function(index) { + var angleMultiplier = (Math.PI * 2) / getValueCount(this); + var startAngle = this.chart.options && this.chart.options.startAngle ? + this.chart.options.startAngle : + 0; + + var startAngleRadians = startAngle * Math.PI * 2 / 360; + + // Start from the top instead of right, so remove a quarter of the circle + return index * angleMultiplier + startAngleRadians; + }, + + getDistanceFromCenterForValue: function(value) { + var me = this; + + if (value === null) { + return 0; // null always in center + } + + // Take into account half font size + the yPadding of the top value + var scalingFactor = me.drawingArea / (me.max - me.min); + if (me.options.ticks.reverse) { + return (me.max - value) * scalingFactor; + } + return (value - me.min) * scalingFactor; + }, + + getPointPosition: function(index, distanceFromCenter) { + var me = this; + var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); + return { + x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter, + y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter + }; + }, + + getPointPositionForValue: function(index, value) { + return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); + }, + + getBasePosition: function() { + var me = this; + var min = me.min; + var max = me.max; + + return me.getPointPositionForValue(0, + me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0); + }, + + draw: function() { + var me = this; + var opts = me.options; + var gridLineOpts = opts.gridLines; + var tickOpts = opts.ticks; + + if (opts.display) { + var ctx = me.ctx; + var startAngle = this.getIndexAngle(0); + var tickFont = helpers$1.options._parseFont(tickOpts); + + if (opts.angleLines.display || opts.pointLabels.display) { + drawPointLabels(me); + } + + helpers$1.each(me.ticks, function(label, index) { + // Don't draw a centre value (if it is minimum) + if (index > 0 || tickOpts.reverse) { + var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); + + // Draw circular lines around the scale + if (gridLineOpts.display && index !== 0) { + drawRadiusLine(me, gridLineOpts, yCenterOffset, index); + } + + if (tickOpts.display) { + var tickFontColor = valueOrDefault$b(tickOpts.fontColor, core_defaults.global.defaultFontColor); + ctx.font = tickFont.string; + + ctx.save(); + ctx.translate(me.xCenter, me.yCenter); + ctx.rotate(startAngle); + + if (tickOpts.showLabelBackdrop) { + var labelWidth = ctx.measureText(label).width; + ctx.fillStyle = tickOpts.backdropColor; + ctx.fillRect( + -labelWidth / 2 - tickOpts.backdropPaddingX, + -yCenterOffset - tickFont.size / 2 - tickOpts.backdropPaddingY, + labelWidth + tickOpts.backdropPaddingX * 2, + tickFont.size + tickOpts.backdropPaddingY * 2 + ); + } + + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = tickFontColor; + ctx.fillText(label, 0, -yCenterOffset); + ctx.restore(); + } + } + }); + } + } +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults$3 = defaultConfig$3; +scale_radialLinear._defaults = _defaults$3; + +var valueOrDefault$c = helpers$1.valueOrDefault; + +// Integer constants are from the ES6 spec. +var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; +var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + +var INTERVALS = { + millisecond: { + common: true, + size: 1, + steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] + }, + second: { + common: true, + size: 1000, + steps: [1, 2, 5, 10, 15, 30] + }, + minute: { + common: true, + size: 60000, + steps: [1, 2, 5, 10, 15, 30] + }, + hour: { + common: true, + size: 3600000, + steps: [1, 2, 3, 6, 12] + }, + day: { + common: true, + size: 86400000, + steps: [1, 2, 5] + }, + week: { + common: false, + size: 604800000, + steps: [1, 2, 3, 4] + }, + month: { + common: true, + size: 2.628e9, + steps: [1, 2, 3] + }, + quarter: { + common: false, + size: 7.884e9, + steps: [1, 2, 3, 4] + }, + year: { + common: true, + size: 3.154e10 + } +}; + +var UNITS = Object.keys(INTERVALS); + +function sorter(a, b) { + return a - b; +} + +function arrayUnique(items) { + var hash = {}; + var out = []; + var i, ilen, item; + + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + if (!hash[item]) { + hash[item] = true; + out.push(item); + } + } + + return out; +} + +/** + * Returns an array of {time, pos} objects used to interpolate a specific `time` or position + * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is + * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other + * extremity (left + width or top + height). Note that it would be more optimized to directly + * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need + * to create the lookup table. The table ALWAYS contains at least two items: min and max. + * + * @param {number[]} timestamps - timestamps sorted from lowest to highest. + * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min + * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. + * If 'series', timestamps will be positioned at the same distance from each other. In this + * case, only timestamps that break the time linearity are registered, meaning that in the + * best case, all timestamps are linear, the table contains only min and max. + */ +function buildLookupTable(timestamps, min, max, distribution) { + if (distribution === 'linear' || !timestamps.length) { + return [ + {time: min, pos: 0}, + {time: max, pos: 1} + ]; + } + + var table = []; + var items = [min]; + var i, ilen, prev, curr, next; + + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + curr = timestamps[i]; + if (curr > min && curr < max) { + items.push(curr); + } + } + + items.push(max); + + for (i = 0, ilen = items.length; i < ilen; ++i) { + next = items[i + 1]; + prev = items[i - 1]; + curr = items[i]; + + // only add points that breaks the scale linearity + if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { + table.push({time: curr, pos: i / (ilen - 1)}); + } + } + + return table; +} + +// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ +function lookup(table, key, value) { + var lo = 0; + var hi = table.length - 1; + var mid, i0, i1; + + while (lo >= 0 && lo <= hi) { + mid = (lo + hi) >> 1; + i0 = table[mid - 1] || null; + i1 = table[mid]; + + if (!i0) { + // given value is outside table (before first item) + return {lo: null, hi: i1}; + } else if (i1[key] < value) { + lo = mid + 1; + } else if (i0[key] > value) { + hi = mid - 1; + } else { + return {lo: i0, hi: i1}; + } + } + + // given value is outside table (after last item) + return {lo: i1, hi: null}; +} + +/** + * Linearly interpolates the given source `value` using the table items `skey` values and + * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') + * returns the position for a timestamp equal to 42. If value is out of bounds, values at + * index [0, 1] or [n - 1, n] are used for the interpolation. + */ +function interpolate$1(table, skey, sval, tkey) { + var range = lookup(table, skey, sval); + + // Note: the lookup table ALWAYS contains at least 2 items (min and max) + var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; + var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; + + var span = next[skey] - prev[skey]; + var ratio = span ? (sval - prev[skey]) / span : 0; + var offset = (next[tkey] - prev[tkey]) * ratio; + + return prev[tkey] + offset; +} + +function toTimestamp(scale, input) { + var adapter = scale._adapter; + var options = scale.options.time; + var parser = options.parser; + var format = parser || options.format; + var value = input; + + if (typeof parser === 'function') { + value = parser(value); + } + + // Only parse if its not a timestamp already + if (!helpers$1.isFinite(value)) { + value = typeof format === 'string' + ? adapter.parse(value, format) + : adapter.parse(value); + } + + if (value !== null) { + return +value; + } + + // Labels are in an incompatible format and no `parser` has been provided. + // The user might still use the deprecated `format` option for parsing. + if (!parser && typeof format === 'function') { + value = format(input); + + // `format` could return something else than a timestamp, if so, parse it + if (!helpers$1.isFinite(value)) { + value = adapter.parse(value); + } + } + + return value; +} + +function parse(scale, input) { + if (helpers$1.isNullOrUndef(input)) { + return null; + } + + var options = scale.options.time; + var value = toTimestamp(scale, scale.getRightValue(input)); + if (value === null) { + return value; + } + + if (options.round) { + value = +scale._adapter.startOf(value, options.round); + } + + return value; +} + +/** + * Returns the number of unit to skip to be able to display up to `capacity` number of ticks + * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. + */ +function determineStepSize(min, max, unit, capacity) { + var range = max - min; + var interval = INTERVALS[unit]; + var milliseconds = interval.size; + var steps = interval.steps; + var i, ilen, factor; + + if (!steps) { + return Math.ceil(range / (capacity * milliseconds)); + } + + for (i = 0, ilen = steps.length; i < ilen; ++i) { + factor = steps[i]; + if (Math.ceil(range / (milliseconds * factor)) <= capacity) { + break; + } + } + + return factor; +} + +/** + * Figures out what unit results in an appropriate number of auto-generated ticks + */ +function determineUnitForAutoTicks(minUnit, min, max, capacity) { + var ilen = UNITS.length; + var i, interval, factor; + + for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { + interval = INTERVALS[UNITS[i]]; + factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; + + if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { + return UNITS[i]; + } + } + + return UNITS[ilen - 1]; +} + +/** + * Figures out what unit to format a set of ticks with + */ +function determineUnitForFormatting(scale, ticks, minUnit, min, max) { + var ilen = UNITS.length; + var i, unit; + + for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { + unit = UNITS[i]; + if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= ticks.length) { + return unit; + } + } + + return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; +} + +function determineMajorUnit(unit) { + for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { + if (INTERVALS[UNITS[i]].common) { + return UNITS[i]; + } + } +} + +/** + * Generates a maximum of `capacity` timestamps between min and max, rounded to the + * `minor` unit, aligned on the `major` unit and using the given scale time `options`. + * Important: this method can return ticks outside the min and max range, it's the + * responsibility of the calling code to clamp values if needed. + */ +function generate(scale, min, max, capacity) { + var adapter = scale._adapter; + var options = scale.options; + var timeOpts = options.time; + var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); + var major = determineMajorUnit(minor); + var stepSize = valueOrDefault$c(timeOpts.stepSize, timeOpts.unitStepSize); + var weekday = minor === 'week' ? timeOpts.isoWeekday : false; + var majorTicksEnabled = options.ticks.major.enabled; + var interval = INTERVALS[minor]; + var first = min; + var last = max; + var ticks = []; + var time; + + if (!stepSize) { + stepSize = determineStepSize(min, max, minor, capacity); + } + + // For 'week' unit, handle the first day of week option + if (weekday) { + first = +adapter.startOf(first, 'isoWeek', weekday); + last = +adapter.startOf(last, 'isoWeek', weekday); + } + + // Align first/last ticks on unit + first = +adapter.startOf(first, weekday ? 'day' : minor); + last = +adapter.startOf(last, weekday ? 'day' : minor); + + // Make sure that the last tick include max + if (last < max) { + last = +adapter.add(last, 1, minor); + } + + time = first; + + if (majorTicksEnabled && major && !weekday && !timeOpts.round) { + // Align the first tick on the previous `minor` unit aligned on the `major` unit: + // we first aligned time on the previous `major` unit then add the number of full + // stepSize there is between first and the previous major time. + time = +adapter.startOf(time, major); + time = +adapter.add(time, ~~((first - time) / (interval.size * stepSize)) * stepSize, minor); + } + + for (; time < last; time = +adapter.add(time, stepSize, minor)) { + ticks.push(+time); + } + + ticks.push(+time); + + return ticks; +} + +/** + * Returns the start and end offsets from edges in the form of {start, end} + * where each value is a relative width to the scale and ranges between 0 and 1. + * They add extra margins on the both sides by scaling down the original scale. + * Offsets are added when the `offset` option is true. + */ +function computeOffsets(table, ticks, min, max, options) { + var start = 0; + var end = 0; + var first, last; + + if (options.offset && ticks.length) { + if (!options.time.min) { + first = interpolate$1(table, 'time', ticks[0], 'pos'); + if (ticks.length === 1) { + start = 1 - first; + } else { + start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2; + } + } + if (!options.time.max) { + last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos'); + if (ticks.length === 1) { + end = last; + } else { + end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2; + } + } + } + + return {start: start, end: end}; +} + +function ticksFromTimestamps(scale, values, majorUnit) { + var ticks = []; + var i, ilen, value, major; + + for (i = 0, ilen = values.length; i < ilen; ++i) { + value = values[i]; + major = majorUnit ? value === +scale._adapter.startOf(value, majorUnit) : false; + + ticks.push({ + value: value, + major: major + }); + } + + return ticks; +} + +var defaultConfig$4 = { + position: 'bottom', + + /** + * Data distribution along the scale: + * - 'linear': data are spread according to their time (distances can vary), + * - 'series': data are spread at the same distance from each other. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + distribution: 'linear', + + /** + * Scale boundary strategy (bypassed by min/max time options) + * - `data`: make sure data are fully visible, ticks outside are removed + * - `ticks`: make sure ticks are fully visible, data outside are truncated + * @see https://github.com/chartjs/Chart.js/pull/4556 + * @since 2.7.0 + */ + bounds: 'data', + + adapters: {}, + time: { + parser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment + format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from https://momentjs.com/docs/#/parsing/string-format/ + unit: false, // false == automatic or override with week, month, year, etc. + round: false, // none, or override with week, month, year, etc. + displayFormat: false, // DEPRECATED + isoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/ + minUnit: 'millisecond', + displayFormats: {} + }, + ticks: { + autoSkip: false, + + /** + * Ticks generation input values: + * - 'auto': generates "optimal" ticks based on scale size and time options. + * - 'data': generates ticks from data (including labels from data {t|x|y} objects). + * - 'labels': generates ticks from user given `data.labels` values ONLY. + * @see https://github.com/chartjs/Chart.js/pull/4507 + * @since 2.7.0 + */ + source: 'auto', + + major: { + enabled: false + } + } +}; + +var scale_time = core_scale.extend({ + initialize: function() { + this.mergeTicksOptions(); + core_scale.prototype.initialize.call(this); + }, + + update: function() { + var me = this; + var options = me.options; + var time = options.time || (options.time = {}); + var adapter = me._adapter = new core_adapters._date(options.adapters.date); + + // DEPRECATIONS: output a message only one time per update + if (time.format) { + console.warn('options.time.format is deprecated and replaced by options.time.parser.'); + } + + // Backward compatibility: before introducing adapter, `displayFormats` was + // supposed to contain *all* unit/string pairs but this can't be resolved + // when loading the scale (adapters are loaded afterward), so let's populate + // missing formats on update + helpers$1.mergeIf(time.displayFormats, adapter.formats()); + + return core_scale.prototype.update.apply(me, arguments); + }, + + /** + * Allows data to be referenced via 't' attribute + */ + getRightValue: function(rawValue) { + if (rawValue && rawValue.t !== undefined) { + rawValue = rawValue.t; + } + return core_scale.prototype.getRightValue.call(this, rawValue); + }, + + determineDataLimits: function() { + var me = this; + var chart = me.chart; + var adapter = me._adapter; + var timeOpts = me.options.time; + var unit = timeOpts.unit || 'day'; + var min = MAX_INTEGER; + var max = MIN_INTEGER; + var timestamps = []; + var datasets = []; + var labels = []; + var i, j, ilen, jlen, data, timestamp; + var dataLabels = chart.data.labels || []; + + // Convert labels to timestamps + for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { + labels.push(parse(me, dataLabels[i])); + } + + // Convert data to timestamps + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + data = chart.data.datasets[i].data; + + // Let's consider that all data have the same format. + if (helpers$1.isObject(data[0])) { + datasets[i] = []; + + for (j = 0, jlen = data.length; j < jlen; ++j) { + timestamp = parse(me, data[j]); + timestamps.push(timestamp); + datasets[i][j] = timestamp; + } + } else { + for (j = 0, jlen = labels.length; j < jlen; ++j) { + timestamps.push(labels[j]); + } + datasets[i] = labels.slice(0); + } + } else { + datasets[i] = []; + } + } + + if (labels.length) { + // Sort labels **after** data have been converted + labels = arrayUnique(labels).sort(sorter); + min = Math.min(min, labels[0]); + max = Math.max(max, labels[labels.length - 1]); + } + + if (timestamps.length) { + timestamps = arrayUnique(timestamps).sort(sorter); + min = Math.min(min, timestamps[0]); + max = Math.max(max, timestamps[timestamps.length - 1]); + } + + min = parse(me, timeOpts.min) || min; + max = parse(me, timeOpts.max) || max; + + // In case there is no valid min/max, set limits based on unit time option + min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min; + max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max; + + // Make sure that max is strictly higher than min (required by the lookup table) + me.min = Math.min(min, max); + me.max = Math.max(min + 1, max); + + // PRIVATE + me._horizontal = me.isHorizontal(); + me._table = []; + me._timestamps = { + data: timestamps, + datasets: datasets, + labels: labels + }; + }, + + buildTicks: function() { + var me = this; + var min = me.min; + var max = me.max; + var options = me.options; + var timeOpts = options.time; + var timestamps = []; + var ticks = []; + var i, ilen, timestamp; + + switch (options.ticks.source) { + case 'data': + timestamps = me._timestamps.data; + break; + case 'labels': + timestamps = me._timestamps.labels; + break; + case 'auto': + default: + timestamps = generate(me, min, max, me.getLabelCapacity(min), options); + } + + if (options.bounds === 'ticks' && timestamps.length) { + min = timestamps[0]; + max = timestamps[timestamps.length - 1]; + } + + // Enforce limits with user min/max options + min = parse(me, timeOpts.min) || min; + max = parse(me, timeOpts.max) || max; + + // Remove ticks outside the min/max range + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + timestamp = timestamps[i]; + if (timestamp >= min && timestamp <= max) { + ticks.push(timestamp); + } + } + + me.min = min; + me.max = max; + + // PRIVATE + me._unit = timeOpts.unit || determineUnitForFormatting(me, ticks, timeOpts.minUnit, me.min, me.max); + me._majorUnit = determineMajorUnit(me._unit); + me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); + me._offsets = computeOffsets(me._table, ticks, min, max, options); + + if (options.ticks.reverse) { + ticks.reverse(); + } + + return ticksFromTimestamps(me, ticks, me._majorUnit); + }, + + getLabelForIndex: function(index, datasetIndex) { + var me = this; + var adapter = me._adapter; + var data = me.chart.data; + var timeOpts = me.options.time; + var label = data.labels && index < data.labels.length ? data.labels[index] : ''; + var value = data.datasets[datasetIndex].data[index]; + + if (helpers$1.isObject(value)) { + label = me.getRightValue(value); + } + if (timeOpts.tooltipFormat) { + return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat); + } + if (typeof label === 'string') { + return label; + } + return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime); + }, + + /** + * Function to format an individual tick mark + * @private + */ + tickFormatFunction: function(time, index, ticks, format) { + var me = this; + var adapter = me._adapter; + var options = me.options; + var formats = options.time.displayFormats; + var minorFormat = formats[me._unit]; + var majorUnit = me._majorUnit; + var majorFormat = formats[majorUnit]; + var majorTime = +adapter.startOf(time, majorUnit); + var majorTickOpts = options.ticks.major; + var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; + var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat); + var tickOpts = major ? majorTickOpts : options.ticks.minor; + var formatter = valueOrDefault$c(tickOpts.callback, tickOpts.userCallback); + + return formatter ? formatter(label, index, ticks) : label; + }, + + convertTicksToLabels: function(ticks) { + var labels = []; + var i, ilen; + + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(this.tickFormatFunction(ticks[i].value, i, ticks)); + } + + return labels; + }, + + /** + * @private + */ + getPixelForOffset: function(time) { + var me = this; + var isReverse = me.options.ticks.reverse; + var size = me._horizontal ? me.width : me.height; + var start = me._horizontal ? isReverse ? me.right : me.left : isReverse ? me.bottom : me.top; + var pos = interpolate$1(me._table, 'time', time, 'pos'); + var offset = size * (me._offsets.start + pos) / (me._offsets.start + 1 + me._offsets.end); + + return isReverse ? start - offset : start + offset; + }, + + getPixelForValue: function(value, index, datasetIndex) { + var me = this; + var time = null; + + if (index !== undefined && datasetIndex !== undefined) { + time = me._timestamps.datasets[datasetIndex][index]; + } + + if (time === null) { + time = parse(me, value); + } + + if (time !== null) { + return me.getPixelForOffset(time); + } + }, + + getPixelForTick: function(index) { + var ticks = this.getTicks(); + return index >= 0 && index < ticks.length ? + this.getPixelForOffset(ticks[index].value) : + null; + }, + + getValueForPixel: function(pixel) { + var me = this; + var size = me._horizontal ? me.width : me.height; + var start = me._horizontal ? me.left : me.top; + var pos = (size ? (pixel - start) / size : 0) * (me._offsets.start + 1 + me._offsets.start) - me._offsets.end; + var time = interpolate$1(me._table, 'pos', pos, 'time'); + + // DEPRECATION, we should return time directly + return me._adapter._create(time); + }, + + /** + * Crude approximation of what the label width might be + * @private + */ + getLabelWidth: function(label) { + var me = this; + var ticksOpts = me.options.ticks; + var tickLabelWidth = me.ctx.measureText(label).width; + var angle = helpers$1.toRadians(ticksOpts.maxRotation); + var cosRotation = Math.cos(angle); + var sinRotation = Math.sin(angle); + var tickFontSize = valueOrDefault$c(ticksOpts.fontSize, core_defaults.global.defaultFontSize); + + return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); + }, + + /** + * @private + */ + getLabelCapacity: function(exampleTime) { + var me = this; + + // pick the longest format (milliseconds) for guestimation + var format = me.options.time.displayFormats.millisecond; + var exampleLabel = me.tickFormatFunction(exampleTime, 0, [], format); + var tickLabelWidth = me.getLabelWidth(exampleLabel); + var innerWidth = me.isHorizontal() ? me.width : me.height; + var capacity = Math.floor(innerWidth / tickLabelWidth); + + return capacity > 0 ? capacity : 1; + } +}); + +// INTERNAL: static default options, registered in src/index.js +var _defaults$4 = defaultConfig$4; +scale_time._defaults = _defaults$4; + +var scales = { + category: scale_category, + linear: scale_linear, + logarithmic: scale_logarithmic, + radialLinear: scale_radialLinear, + time: scale_time +}; + +var moment = createCommonjsModule(function (module, exports) { +(function (global, factory) { + module.exports = factory(); +}(commonjsGlobal, (function () { + var hookCallback; + + function hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + } + + function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; + } + + function isObjectEmpty(obj) { + if (Object.getOwnPropertyNames) { + return (Object.getOwnPropertyNames(obj).length === 0); + } else { + var k; + for (k in obj) { + if (obj.hasOwnProperty(k)) { + return false; + } + } + return true; + } + } + + function isUndefined(input) { + return input === void 0; + } + + function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; + } + + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; + } + + function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; + } + + function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); + } + + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; + } + + function Locale(config) { + if (config != null) { + this.set(config); + } + } + + var keys; + + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + 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' + }; + + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + var defaultRelativeTime = { + 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' + }; + + function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + var priorities = {}; + + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } + + function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var formattingTokens = /(\[[^\[]*\])|(\\)?([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; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PRIORITIES + + addUnitPriority('year', 1); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } + + function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } + + function set$1 (mom, unit, value) { + if (mom.isValid() && !isNaN(value)) { + if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); + } + else { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + } + + // MOMENTS + + function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + + function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + + function mod(n, x) { + return ((n % x) + x) % x; + } + + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } + + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; + } + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PRIORITY + + addUnitPriority('month', 8); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } + + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } + + function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date; + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + date = new Date(y + 400, m, d, h, M, s, ms); + if (isFinite(date.getFullYear())) { + date.setFullYear(y); + } + } else { + date = new Date(y, m, d, h, M, s, ms); + } + + return date; + } + + function createUTCDate (y) { + var date; + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + var args = Array.prototype.slice.call(arguments); + // preserve leap years using a full 400 year cycle, then reset + args[0] = y + 400; + date = new Date(Date.UTC.apply(null, args)); + if (isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + } else { + date = new Date(Date.UTC.apply(null, arguments)); + } + + return date; + } + + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; + } + + // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } + + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; + } + + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PRIORITIES + + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 6th is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + // FORMATTING + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } + + // LOCALES + function shiftWeekdays (ws, n) { + return ws.slice(n, 7).concat(ws.slice(0, n)); + } + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + var weekdays = isArray(this._weekdays) ? this._weekdays : + this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone']; + return (m === true) ? shiftWeekdays(weekdays, this._week.dow) + : (m) ? weekdays[m.day()] : weekdays; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow) + : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow) + : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + } + + function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } + + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + + + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PRIORITY + addUnitPriority('hour', 13); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + addRegexToken('kk', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse + }; + + // internal storage for locale config files + var locales = {}; + var localeFamilies = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return globalLocale; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && ('object' !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + var aliasedRequire = commonjsRequire; + aliasedRequire('./locale/' + name); + getSetGlobalLocale(oldLocale); + } catch (e) {} + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + else { + if ((typeof console !== 'undefined') && console.warn) { + //warn user if arguments are passed but the locale could not be set + console.warn('Locale ' + key + ' not found. Did you forget to load it?'); + } + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, config) { + if (config !== null) { + var locale, parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('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.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + locale = loadLocale(config.parentLocale); + if (locale != null) { + parentConfig = locale._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + function updateLocale(name, config) { + if (config != null) { + var locale, tmpLocale, parentConfig = baseConfig; + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + + // returns locale data + function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + function listLocales() { + return keys(locales); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, expectedWeekday, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); + + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + + // check for mismatching day of week + if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { + getParsingFlags(config).weekdayMismatch = true; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from beginning of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to beginning of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\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)?)?$/; + var basicIsoRegex = /^\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)?)?$/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['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/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['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/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; + + function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + var result = [ + untruncateYear(yearStr), + defaultLocaleMonthsShort.indexOf(monthStr), + parseInt(dayStr, 10), + parseInt(hourStr, 10), + parseInt(minuteStr, 10) + ]; + + if (secondStr) { + result.push(parseInt(secondStr, 10)); + } + + return result; + } + + function untruncateYear(yearStr) { + var year = parseInt(yearStr, 10); + if (year <= 49) { + return 2000 + year; + } else if (year <= 999) { + return 1900 + year; + } + return year; + } + + function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + } + + function checkWeekday(weekdayStr, parsedInput, config) { + if (weekdayStr) { + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), + weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); + if (weekdayProvided !== weekdayActual) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return false; + } + } + return true; + } + + var obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + + function calculateOffset(obsOffset, militaryOffset, numOffset) { + if (obsOffset) { + return obsOffsets[obsOffset]; + } else if (militaryOffset) { + // the only allowed military tz is Z + return 0; + } else { + var hm = parseInt(numOffset, 10); + var m = hm % 100, h = (hm - m) / 100; + return h * 60 + m; + } + } + + // date and time from ref 2822 format + function configFromRFC2822(config) { + var match = rfc2822.exec(preprocessRFC2822(config._i)); + if (match) { + var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); + if (!checkWeekday(match[1], parsedArray, config)) { + return; + } + + config._a = parsedArray; + config._tzm = calculateOffset(match[8], match[9], match[10]); + + config._d = createUTCDate.apply(null, config._a); + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); + } + + hooks.createFromInputFallback = deprecate( + '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 (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // constant that refers to the ISO standard + hooks.ISO_8601 = function () {}; + + // constant that refers to the RFC 2822 form + hooks.RFC_2822 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + + var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + + function isDurationValid(m) { + for (var key in m) { + if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; + } + + function isValid$1() { + return this._isValid; + } + + function createInvalid$1() { + return createDuration(NaN); + } + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || normalizedInput.isoWeek || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible to translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // FORMATTING + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } + + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } + + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + + function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + createDuration.fn = Duration.prototype; + createDuration.invalid = createInvalid$1; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; + } + + function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } + } + + var add = createAdder(1, 'add'); + var subtract = createAdder(-1, 'subtract'); + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + } + + function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + + function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + + function isBetween (from, to, units, inclusivity) { + var localFrom = isMoment(from) ? from : createLocal(from), + localTo = isMoment(to) ? to : createLocal(to); + if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { + return false; + } + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && + (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); + } + + function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input, units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input, units); + } + + function diff (input, units, asFloat) { + var that, + zoneDelta, + output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + switch (units) { + case 'year': output = monthDiff(this, that) / 12; break; + case 'month': output = monthDiff(this, that); break; + case 'quarter': output = monthDiff(this, that) / 3; break; + case 'second': output = (this - that) / 1e3; break; // 1000 + case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 + case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 + case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst + case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: output = this - that; + } + + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + + hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function toISOString(keepOffset) { + if (!this.isValid()) { + return null; + } + var utc = keepOffset !== true; + var m = utc ? this.clone().utc() : this; + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + if (utc) { + return this.toDate().toISOString(); + } else { + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); + } + } + return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + + /** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ + function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); + } + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + var MS_PER_SECOND = 1000; + var MS_PER_MINUTE = 60 * MS_PER_SECOND; + var MS_PER_HOUR = 60 * MS_PER_MINUTE; + var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; + + // actual modulo - handles negative numbers (for dates before 1970): + function mod$1(dividend, divisor) { + return (dividend % divisor + divisor) % divisor; + } + + function localStartOfDate(y, m, d) { + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + return new Date(y + 400, m, d) - MS_PER_400_YEARS; + } else { + return new Date(y, m, d).valueOf(); + } + } + + function utcStartOfDate(y, m, d) { + // Date.UTC remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; + } else { + return Date.UTC(y, m, d); + } + } + + function startOf (units) { + var time; + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond' || !this.isValid()) { + return this; + } + + var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + + switch (units) { + case 'year': + time = startOfDate(this.year(), 0, 1); + break; + case 'quarter': + time = startOfDate(this.year(), this.month() - this.month() % 3, 1); + break; + case 'month': + time = startOfDate(this.year(), this.month(), 1); + break; + case 'week': + time = startOfDate(this.year(), this.month(), this.date() - this.weekday()); + break; + case 'isoWeek': + time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); + break; + case 'day': + case 'date': + time = startOfDate(this.year(), this.month(), this.date()); + break; + case 'hour': + time = this._d.valueOf(); + time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR); + break; + case 'minute': + time = this._d.valueOf(); + time -= mod$1(time, MS_PER_MINUTE); + break; + case 'second': + time = this._d.valueOf(); + time -= mod$1(time, MS_PER_SECOND); + break; + } + + this._d.setTime(time); + hooks.updateOffset(this, true); + return this; + } + + function endOf (units) { + var time; + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond' || !this.isValid()) { + return this; + } + + var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + + switch (units) { + case 'year': + time = startOfDate(this.year() + 1, 0, 1) - 1; + break; + case 'quarter': + time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; + break; + case 'month': + time = startOfDate(this.year(), this.month() + 1, 1) - 1; + break; + case 'week': + time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; + break; + case 'isoWeek': + time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; + break; + case 'day': + case 'date': + time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; + break; + case 'hour': + time = this._d.valueOf(); + time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1; + break; + case 'minute': + time = this._d.valueOf(); + time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; + break; + case 'second': + time = this._d.valueOf(); + time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; + break; + } + + this._d.setTime(time); + hooks.updateOffset(this, true); + return this; + } + + function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(this.valueOf() / 1000); + } + + function toDate () { + return new Date(this.valueOf()); + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + + function isValid$2 () { + return isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PRIORITY + + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); + + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); + }); + + // MOMENTS + + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } + + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PRIORITY + + addUnitPriority('quarter', 7); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + // FORMATTING + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PRIORITY + addUnitPriority('date', 9); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0]); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + // FORMATTING + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PRIORITY + addUnitPriority('dayOfYear', 4); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // FORMATTING + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PRIORITY + + addUnitPriority('minute', 14); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + // FORMATTING + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PRIORITY + + addUnitPriority('second', 15); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + // FORMATTING + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PRIORITY + + addUnitPriority('millisecond', 16); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + // FORMATTING + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var proto = Moment.prototype; + + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.year = getSetYear; + proto.isLeapYear = getIsLeapYear; + proto.weekYear = getSetWeekYear; + proto.isoWeekYear = getSetISOWeekYear; + proto.quarter = proto.quarters = getSetQuarter; + proto.month = getSetMonth; + proto.daysInMonth = getDaysInMonth; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.isoWeeksInYear = getISOWeeksInYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeekday = getSetISODayOfWeek; + proto.dayOfYear = getSetDayOfYear; + proto.hour = proto.hours = getSetHour; + proto.minute = proto.minutes = getSetMinute; + proto.second = proto.seconds = getSetSecond; + proto.millisecond = proto.milliseconds = getSetMillisecond; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; + proto.hasAlignedHourOffset = hasAlignedHourOffset; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; + proto.zoneAbbr = getZoneAbbr; + proto.zoneName = getZoneName; + proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); + proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + + function createUnix (input) { + return createLocal(input * 1000); + } + + function createInZone () { + return createLocal.apply(null, arguments).parseZone(); + } + + function preParsePostFormat (string) { + return string; + } + + var proto$1 = Locale.prototype; + + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; + proto$1.week = localeWeek; + proto$1.firstDayOfYear = localeFirstDayOfYear; + proto$1.firstDayOfWeek = localeFirstDayOfWeek; + + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; + + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; + + proto$1.isPM = localeIsPM; + proto$1.meridiem = localeMeridiem; + + function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); + } + + function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; + } + + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; + } + + function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); + } + + function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } + + function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } + + function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } + + function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } + + getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + + hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); + hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + + var mathAbs = Math.abs; + + function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'quarter' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + switch (units) { + case 'month': return months; + case 'quarter': return months / 3; + case 'year': return months / 12; + } + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asQuarters = makeAs('Q'); + var asYears = makeAs('y'); + + function clone$1 () { + return createDuration(this); + } + + function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; + } + + function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set the rounding function for relative time strings + function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; + } + + // This function allows you to set a threshold for relative time strings + function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; + } + + function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var abs$1 = Math.abs; + + function sign(x) { + return ((x > 0) - (x < 0)) || +x; + } + + function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + var totalSign = total < 0 ? '-' : ''; + var ymSign = sign(this._months) !== sign(total) ? '-' : ''; + var daysSign = sign(this._days) !== sign(total) ? '-' : ''; + var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + + return totalSign + 'P' + + (Y ? ymSign + Y + 'Y' : '') + + (M ? ymSign + M + 'M' : '') + + (D ? daysSign + D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? hmsSign + h + 'H' : '') + + (m ? hmsSign + m + 'M' : '') + + (s ? hmsSign + s + 'S' : ''); + } + + var proto$2 = Duration.prototype; + + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; + proto$2.asMilliseconds = asMilliseconds; + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asQuarters = asQuarters; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + + proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); + proto$2.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + hooks.version = '2.24.0'; + + setHookCallback(createLocal); + + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; + + // currently HTML5 input type only supports 24-hour formats + hooks.HTML5_FMT = { + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // + DATE: 'YYYY-MM-DD', // + TIME: 'HH:mm', // + TIME_SECONDS: 'HH:mm:ss', // + TIME_MS: 'HH:mm:ss.SSS', // + WEEK: 'GGGG-[W]WW', // + MONTH: 'YYYY-MM' // + }; + + return hooks; + +}))); +}); + +var FORMATS = { + datetime: 'MMM D, YYYY, h:mm:ss a', + millisecond: 'h:mm:ss.SSS a', + second: 'h:mm:ss a', + minute: 'h:mm a', + hour: 'hA', + day: 'MMM D', + week: 'll', + month: 'MMM YYYY', + quarter: '[Q]Q - YYYY', + year: 'YYYY' +}; + +core_adapters._date.override(typeof moment === 'function' ? { + _id: 'moment', // DEBUG ONLY + + formats: function() { + return FORMATS; + }, + + parse: function(value, format) { + if (typeof value === 'string' && typeof format === 'string') { + value = moment(value, format); + } else if (!(value instanceof moment)) { + value = moment(value); + } + return value.isValid() ? value.valueOf() : null; + }, + + format: function(time, format) { + return moment(time).format(format); + }, + + add: function(time, amount, unit) { + return moment(time).add(amount, unit).valueOf(); + }, + + diff: function(max, min, unit) { + return moment.duration(moment(max).diff(moment(min))).as(unit); + }, + + startOf: function(time, unit, weekday) { + time = moment(time); + if (unit === 'isoWeek') { + return time.isoWeekday(weekday).valueOf(); + } + return time.startOf(unit).valueOf(); + }, + + endOf: function(time, unit) { + return moment(time).endOf(unit).valueOf(); + }, + + // DEPRECATIONS + + /** + * Provided for backward compatibility with scale.getValueForPixel(). + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ + _create: function(time) { + return moment(time); + }, +} : {}); + +core_defaults._set('global', { + plugins: { + filler: { + propagate: true + } + } +}); + +var mappers = { + dataset: function(source) { + var index = source.fill; + var chart = source.chart; + var meta = chart.getDatasetMeta(index); + var visible = meta && chart.isDatasetVisible(index); + var points = (visible && meta.dataset._children) || []; + var length = points.length || 0; + + return !length ? null : function(point, i) { + return (i < length && points[i]._view) || null; + }; + }, + + boundary: function(source) { + var boundary = source.boundary; + var x = boundary ? boundary.x : null; + var y = boundary ? boundary.y : null; + + return function(point) { + return { + x: x === null ? point.x : x, + y: y === null ? point.y : y, + }; + }; + } +}; + +// @todo if (fill[0] === '#') +function decodeFill(el, index, count) { + var model = el._model || {}; + var fill = model.fill; + var target; + + if (fill === undefined) { + fill = !!model.backgroundColor; + } + + if (fill === false || fill === null) { + return false; + } + + if (fill === true) { + return 'origin'; + } + + target = parseFloat(fill, 10); + if (isFinite(target) && Math.floor(target) === target) { + if (fill[0] === '-' || fill[0] === '+') { + target = index + target; + } + + if (target === index || target < 0 || target >= count) { + return false; + } + + return target; + } + + switch (fill) { + // compatibility + case 'bottom': + return 'start'; + case 'top': + return 'end'; + case 'zero': + return 'origin'; + // supported boundaries + case 'origin': + case 'start': + case 'end': + return fill; + // invalid fill values + default: + return false; + } +} + +function computeBoundary(source) { + var model = source.el._model || {}; + var scale = source.el._scale || {}; + var fill = source.fill; + var target = null; + var horizontal; + + if (isFinite(fill)) { + return null; + } + + // Backward compatibility: until v3, we still need to support boundary values set on + // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and + // controllers might still use it (e.g. the Smith chart). + + if (fill === 'start') { + target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; + } else if (fill === 'end') { + target = model.scaleTop === undefined ? scale.top : model.scaleTop; + } else if (model.scaleZero !== undefined) { + target = model.scaleZero; + } else if (scale.getBasePosition) { + target = scale.getBasePosition(); + } else if (scale.getBasePixel) { + target = scale.getBasePixel(); + } + + if (target !== undefined && target !== null) { + if (target.x !== undefined && target.y !== undefined) { + return target; + } + + if (helpers$1.isFinite(target)) { + horizontal = scale.isHorizontal(); + return { + x: horizontal ? target : null, + y: horizontal ? null : target + }; + } + } + + return null; +} + +function resolveTarget(sources, index, propagate) { + var source = sources[index]; + var fill = source.fill; + var visited = [index]; + var target; + + if (!propagate) { + return fill; + } + + while (fill !== false && visited.indexOf(fill) === -1) { + if (!isFinite(fill)) { + return fill; + } + + target = sources[fill]; + if (!target) { + return false; + } + + if (target.visible) { + return fill; + } + + visited.push(fill); + fill = target.fill; + } + + return false; +} + +function createMapper(source) { + var fill = source.fill; + var type = 'dataset'; + + if (fill === false) { + return null; + } + + if (!isFinite(fill)) { + type = 'boundary'; + } + + return mappers[type](source); +} + +function isDrawable(point) { + return point && !point.skip; +} + +function drawArea(ctx, curve0, curve1, len0, len1) { + var i; + + if (!len0 || !len1) { + return; + } + + // building first area curve (normal) + ctx.moveTo(curve0[0].x, curve0[0].y); + for (i = 1; i < len0; ++i) { + helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); + } + + // joining the two area curves + ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); + + // building opposite area curve (reverse) + for (i = len1 - 1; i > 0; --i) { + helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); + } +} + +function doFill(ctx, points, mapper, view, color, loop) { + var count = points.length; + var span = view.spanGaps; + var curve0 = []; + var curve1 = []; + var len0 = 0; + var len1 = 0; + var i, ilen, index, p0, p1, d0, d1; + + ctx.beginPath(); + + for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { + index = i % count; + p0 = points[index]._view; + p1 = mapper(p0, index, view); + d0 = isDrawable(p0); + d1 = isDrawable(p1); + + if (d0 && d1) { + len0 = curve0.push(p0); + len1 = curve1.push(p1); + } else if (len0 && len1) { + if (!span) { + drawArea(ctx, curve0, curve1, len0, len1); + len0 = len1 = 0; + curve0 = []; + curve1 = []; + } else { + if (d0) { + curve0.push(p0); + } + if (d1) { + curve1.push(p1); + } + } + } + } + + drawArea(ctx, curve0, curve1, len0, len1); + + ctx.closePath(); + ctx.fillStyle = color; + ctx.fill(); +} + +var plugin_filler = { + id: 'filler', + + afterDatasetsUpdate: function(chart, options) { + var count = (chart.data.datasets || []).length; + var propagate = options.propagate; + var sources = []; + var meta, i, el, source; + + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + el = meta.dataset; + source = null; + + if (el && el._model && el instanceof elements.Line) { + source = { + visible: chart.isDatasetVisible(i), + fill: decodeFill(el, i, count), + chart: chart, + el: el + }; + } + + meta.$filler = source; + sources.push(source); + } + + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source) { + continue; + } + + source.fill = resolveTarget(sources, i, propagate); + source.boundary = computeBoundary(source); + source.mapper = createMapper(source); + } + }, + + beforeDatasetDraw: function(chart, args) { + var meta = args.meta.$filler; + if (!meta) { + return; + } + + var ctx = chart.ctx; + var el = meta.el; + var view = el._view; + var points = el._children || []; + var mapper = meta.mapper; + var color = view.backgroundColor || core_defaults.global.defaultColor; + + if (mapper && color && points.length) { + helpers$1.canvas.clipArea(ctx, chart.chartArea); + doFill(ctx, points, mapper, view, color, el._loop); + helpers$1.canvas.unclipArea(ctx); + } + } +}; + +var noop$1 = helpers$1.noop; +var valueOrDefault$d = helpers$1.valueOrDefault; + +core_defaults._set('global', { + legend: { + display: true, + position: 'top', + fullWidth: true, + reverse: false, + weight: 1000, + + // a callback that will handle + onClick: function(e, legendItem) { + var index = legendItem.datasetIndex; + var ci = this.chart; + var meta = ci.getDatasetMeta(index); + + // See controller.isDatasetVisible comment + meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; + + // We hid a dataset ... rerender the chart + ci.update(); + }, + + onHover: null, + onLeave: null, + + labels: { + boxWidth: 40, + padding: 10, + // Generates labels shown in the legend + // Valid properties to return: + // text : text to display + // fillStyle : fill of coloured box + // strokeStyle: stroke of coloured box + // hidden : if this legend item refers to a hidden item + // lineCap : cap style for line + // lineDash + // lineDashOffset : + // lineJoin : + // lineWidth : + generateLabels: function(chart) { + var data = chart.data; + return helpers$1.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { + return { + text: dataset.label, + fillStyle: (!helpers$1.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), + hidden: !chart.isDatasetVisible(i), + lineCap: dataset.borderCapStyle, + lineDash: dataset.borderDash, + lineDashOffset: dataset.borderDashOffset, + lineJoin: dataset.borderJoinStyle, + lineWidth: dataset.borderWidth, + strokeStyle: dataset.borderColor, + pointStyle: dataset.pointStyle, + + // Below is extra data used for toggling the datasets + datasetIndex: i + }; + }, this) : []; + } + } + }, + + legendCallback: function(chart) { + var text = []; + text.push('
    '); + for (var i = 0; i < chart.data.datasets.length; i++) { + text.push('
  • '); + if (chart.data.datasets[i].label) { + text.push(chart.data.datasets[i].label); + } + text.push('
  • '); + } + text.push('
'); + return text.join(''); + } +}); + +/** + * Helper function to get the box width based on the usePointStyle option + * @param {object} labelopts - the label options on the legend + * @param {number} fontSize - the label font size + * @return {number} width of the color box area + */ +function getBoxWidth(labelOpts, fontSize) { + return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? + fontSize : + labelOpts.boxWidth; +} + +/** + * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! + */ +var Legend = core_element.extend({ + + initialize: function(config) { + helpers$1.extend(this, config); + + // Contains hit boxes for each dataset (in dataset order) + this.legendHitBoxes = []; + + /** + * @private + */ + this._hoveredItem = null; + + // Are we in doughnut mode which has a different data type + this.doughnutMode = false; + }, + + // These methods are ordered by lifecycle. Utilities then follow. + // Any function defined here is inherited by all legend types. + // Any function can be extended by the legend type + + beforeUpdate: noop$1, + update: function(maxWidth, maxHeight, margins) { + var me = this; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); + + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + }, + afterUpdate: noop$1, + + // + + beforeSetDimensions: noop$1, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop$1, + + // + + beforeBuildLabels: noop$1, + buildLabels: function() { + var me = this; + var labelOpts = me.options.labels || {}; + var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || []; + + if (labelOpts.filter) { + legendItems = legendItems.filter(function(item) { + return labelOpts.filter(item, me.chart.data); + }); + } + + if (me.options.reverse) { + legendItems.reverse(); + } + + me.legendItems = legendItems; + }, + afterBuildLabels: noop$1, + + // + + beforeFit: noop$1, + fit: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var display = opts.display; + + var ctx = me.ctx; + + var labelFont = helpers$1.options._parseFont(labelOpts); + var fontSize = labelFont.size; + + // Reset hit boxes + var hitboxes = me.legendHitBoxes = []; + + var minSize = me.minSize; + var isHorizontal = me.isHorizontal(); + + if (isHorizontal) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = display ? 10 : 0; + } else { + minSize.width = display ? 10 : 0; + minSize.height = me.maxHeight; // fill all the height + } + + // Increase sizes here + if (display) { + ctx.font = labelFont.string; + + if (isHorizontal) { + // Labels + + // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one + var lineWidths = me.lineWidths = [0]; + var totalHeight = 0; + + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; + + helpers$1.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + if (i === 0 || lineWidths[lineWidths.length - 1] + width + labelOpts.padding > minSize.width) { + totalHeight += fontSize + labelOpts.padding; + lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = labelOpts.padding; + } + + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: width, + height: fontSize + }; + + lineWidths[lineWidths.length - 1] += width + labelOpts.padding; + }); + + minSize.height += totalHeight; + + } else { + var vPadding = labelOpts.padding; + var columnWidths = me.columnWidths = []; + var totalWidth = labelOpts.padding; + var currentColWidth = 0; + var currentColHeight = 0; + var itemHeight = fontSize + vPadding; + + helpers$1.each(me.legendItems, function(legendItem, i) { + var boxWidth = getBoxWidth(labelOpts, fontSize); + var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; + + // If too tall, go to new column + if (i > 0 && currentColHeight + itemHeight > minSize.height - vPadding) { + totalWidth += currentColWidth + labelOpts.padding; + columnWidths.push(currentColWidth); // previous column width + + currentColWidth = 0; + currentColHeight = 0; + } + + // Get max width + currentColWidth = Math.max(currentColWidth, itemWidth); + currentColHeight += itemHeight; + + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = { + left: 0, + top: 0, + width: itemWidth, + height: fontSize + }; + }); + + totalWidth += currentColWidth; + columnWidths.push(currentColWidth); + minSize.width += totalWidth; + } + } + + me.width = minSize.width; + me.height = minSize.height; + }, + afterFit: noop$1, + + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + + // Actually draw the legend on the canvas + draw: function() { + var me = this; + var opts = me.options; + var labelOpts = opts.labels; + var globalDefaults = core_defaults.global; + var defaultColor = globalDefaults.defaultColor; + var lineDefault = globalDefaults.elements.line; + var legendWidth = me.width; + var lineWidths = me.lineWidths; + + if (opts.display) { + var ctx = me.ctx; + var fontColor = valueOrDefault$d(labelOpts.fontColor, globalDefaults.defaultFontColor); + var labelFont = helpers$1.options._parseFont(labelOpts); + var fontSize = labelFont.size; + var cursor; + + // Canvas setup + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + ctx.lineWidth = 0.5; + ctx.strokeStyle = fontColor; // for strikethrough effect + ctx.fillStyle = fontColor; // render in correct colour + ctx.font = labelFont.string; + + var boxWidth = getBoxWidth(labelOpts, fontSize); + var hitboxes = me.legendHitBoxes; + + // current position + var drawLegendBox = function(x, y, legendItem) { + if (isNaN(boxWidth) || boxWidth <= 0) { + return; + } + + // Set the ctx for the box + ctx.save(); + + var lineWidth = valueOrDefault$d(legendItem.lineWidth, lineDefault.borderWidth); + ctx.fillStyle = valueOrDefault$d(legendItem.fillStyle, defaultColor); + ctx.lineCap = valueOrDefault$d(legendItem.lineCap, lineDefault.borderCapStyle); + ctx.lineDashOffset = valueOrDefault$d(legendItem.lineDashOffset, lineDefault.borderDashOffset); + ctx.lineJoin = valueOrDefault$d(legendItem.lineJoin, lineDefault.borderJoinStyle); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = valueOrDefault$d(legendItem.strokeStyle, defaultColor); + + if (ctx.setLineDash) { + // IE 9 and 10 do not support line dash + ctx.setLineDash(valueOrDefault$d(legendItem.lineDash, lineDefault.borderDash)); + } + + if (opts.labels && opts.labels.usePointStyle) { + // Recalculate x and y for drawPoint() because its expecting + // x and y to be center of figure (instead of top left) + var radius = boxWidth * Math.SQRT2 / 2; + var centerX = x + boxWidth / 2; + var centerY = y + fontSize / 2; + + // Draw pointStyle as legend symbol + helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); + } else { + // Draw box as legend symbol + if (lineWidth !== 0) { + ctx.strokeRect(x, y, boxWidth, fontSize); + } + ctx.fillRect(x, y, boxWidth, fontSize); + } + + ctx.restore(); + }; + var fillText = function(x, y, legendItem, textWidth) { + var halfFontSize = fontSize / 2; + var xLeft = boxWidth + halfFontSize + x; + var yMiddle = y + halfFontSize; + + ctx.fillText(legendItem.text, xLeft, yMiddle); + + if (legendItem.hidden) { + // Strikethrough the text if hidden + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.moveTo(xLeft, yMiddle); + ctx.lineTo(xLeft + textWidth, yMiddle); + ctx.stroke(); + } + }; + + // Horizontal + var isHorizontal = me.isHorizontal(); + if (isHorizontal) { + cursor = { + x: me.left + ((legendWidth - lineWidths[0]) / 2) + labelOpts.padding, + y: me.top + labelOpts.padding, + line: 0 + }; + } else { + cursor = { + x: me.left + labelOpts.padding, + y: me.top + labelOpts.padding, + line: 0 + }; + } + + var itemHeight = fontSize + labelOpts.padding; + helpers$1.each(me.legendItems, function(legendItem, i) { + var textWidth = ctx.measureText(legendItem.text).width; + var width = boxWidth + (fontSize / 2) + textWidth; + var x = cursor.x; + var y = cursor.y; + + // Use (me.left + me.minSize.width) and (me.top + me.minSize.height) + // instead of me.right and me.bottom because me.width and me.height + // may have been changed since me.minSize was calculated + if (isHorizontal) { + if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) { + y = cursor.y += itemHeight; + cursor.line++; + x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2) + labelOpts.padding; + } + } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) { + x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; + y = cursor.y = me.top + labelOpts.padding; + cursor.line++; + } + + drawLegendBox(x, y, legendItem); + + hitboxes[i].left = x; + hitboxes[i].top = y; + + // Fill the actual label + fillText(x, y, legendItem, textWidth); + + if (isHorizontal) { + cursor.x += width + labelOpts.padding; + } else { + cursor.y += itemHeight; + } + + }); + } + }, + + /** + * @private + */ + _getLegendItemAt: function(x, y) { + var me = this; + var i, hitBox, lh; + + if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { + // See if we are touching one of the dataset boxes + lh = me.legendHitBoxes; + for (i = 0; i < lh.length; ++i) { + hitBox = lh[i]; + + if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { + // Touching an element + return me.legendItems[i]; + } + } + } + + return null; + }, + + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + */ + handleEvent: function(e) { + var me = this; + var opts = me.options; + var type = e.type === 'mouseup' ? 'click' : e.type; + var hoveredItem; + + if (type === 'mousemove') { + if (!opts.onHover && !opts.onLeave) { + return; + } + } else if (type === 'click') { + if (!opts.onClick) { + return; + } + } else { + return; + } + + // Chart event already has relative position in it + hoveredItem = me._getLegendItemAt(e.x, e.y); + + if (type === 'click') { + if (hoveredItem && opts.onClick) { + // use e.native for backwards compatibility + opts.onClick.call(me, e.native, hoveredItem); + } + } else { + if (opts.onLeave && hoveredItem !== me._hoveredItem) { + if (me._hoveredItem) { + opts.onLeave.call(me, e.native, me._hoveredItem); + } + me._hoveredItem = hoveredItem; + } + + if (opts.onHover && hoveredItem) { + // use e.native for backwards compatibility + opts.onHover.call(me, e.native, hoveredItem); + } + } + } +}); + +function createNewLegendAndAttach(chart, legendOpts) { + var legend = new Legend({ + ctx: chart.ctx, + options: legendOpts, + chart: chart + }); + + core_layouts.configure(chart, legend, legendOpts); + core_layouts.addBox(chart, legend); + chart.legend = legend; +} + +var plugin_legend = { + id: 'legend', + + /** + * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making + * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of + * the plugin, which one will be re-exposed in the chart.js file. + * https://github.com/chartjs/Chart.js/pull/2640 + * @private + */ + _element: Legend, + + beforeInit: function(chart) { + var legendOpts = chart.options.legend; + + if (legendOpts) { + createNewLegendAndAttach(chart, legendOpts); + } + }, + + beforeUpdate: function(chart) { + var legendOpts = chart.options.legend; + var legend = chart.legend; + + if (legendOpts) { + helpers$1.mergeIf(legendOpts, core_defaults.global.legend); + + if (legend) { + core_layouts.configure(chart, legend, legendOpts); + legend.options = legendOpts; + } else { + createNewLegendAndAttach(chart, legendOpts); + } + } else if (legend) { + core_layouts.removeBox(chart, legend); + delete chart.legend; + } + }, + + afterEvent: function(chart, e) { + var legend = chart.legend; + if (legend) { + legend.handleEvent(e); + } + } +}; + +var noop$2 = helpers$1.noop; + +core_defaults._set('global', { + title: { + display: false, + fontStyle: 'bold', + fullWidth: true, + padding: 10, + position: 'top', + text: '', + weight: 2000 // by default greater than legend (1000) to be above + } +}); + +/** + * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! + */ +var Title = core_element.extend({ + initialize: function(config) { + var me = this; + helpers$1.extend(me, config); + + // Contains hit boxes for each dataset (in dataset order) + me.legendHitBoxes = []; + }, + + // These methods are ordered by lifecycle. Utilities then follow. + + beforeUpdate: noop$2, + update: function(maxWidth, maxHeight, margins) { + var me = this; + + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); + + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = margins; + + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); + // Labels + me.beforeBuildLabels(); + me.buildLabels(); + me.afterBuildLabels(); + + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; + + }, + afterUpdate: noop$2, + + // + + beforeSetDimensions: noop$2, + setDimensions: function() { + var me = this; + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; + } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + + // Reset minSize + me.minSize = { + width: 0, + height: 0 + }; + }, + afterSetDimensions: noop$2, + + // + + beforeBuildLabels: noop$2, + buildLabels: noop$2, + afterBuildLabels: noop$2, + + // + + beforeFit: noop$2, + fit: function() { + var me = this; + var opts = me.options; + var display = opts.display; + var minSize = me.minSize; + var lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1; + var fontOpts = helpers$1.options._parseFont(opts); + var textSize = display ? (lineCount * fontOpts.lineHeight) + (opts.padding * 2) : 0; + + if (me.isHorizontal()) { + minSize.width = me.maxWidth; // fill all the width + minSize.height = textSize; + } else { + minSize.width = textSize; + minSize.height = me.maxHeight; // fill all the height + } + + me.width = minSize.width; + me.height = minSize.height; + + }, + afterFit: noop$2, + + // Shared Methods + isHorizontal: function() { + var pos = this.options.position; + return pos === 'top' || pos === 'bottom'; + }, + + // Actually draw the title block on the canvas + draw: function() { + var me = this; + var ctx = me.ctx; + var opts = me.options; + + if (opts.display) { + var fontOpts = helpers$1.options._parseFont(opts); + var lineHeight = fontOpts.lineHeight; + var offset = lineHeight / 2 + opts.padding; + var rotation = 0; + var top = me.top; + var left = me.left; + var bottom = me.bottom; + var right = me.right; + var maxWidth, titleX, titleY; + + ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour + ctx.font = fontOpts.string; + + // Horizontal + if (me.isHorizontal()) { + titleX = left + ((right - left) / 2); // midpoint of the width + titleY = top + offset; + maxWidth = right - left; + } else { + titleX = opts.position === 'left' ? left + offset : right - offset; + titleY = top + ((bottom - top) / 2); + maxWidth = bottom - top; + rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); + } + + ctx.save(); + ctx.translate(titleX, titleY); + ctx.rotate(rotation); + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + + var text = opts.text; + if (helpers$1.isArray(text)) { + var y = 0; + for (var i = 0; i < text.length; ++i) { + ctx.fillText(text[i], 0, y, maxWidth); + y += lineHeight; + } + } else { + ctx.fillText(text, 0, 0, maxWidth); + } + + ctx.restore(); + } + } +}); + +function createNewTitleBlockAndAttach(chart, titleOpts) { + var title = new Title({ + ctx: chart.ctx, + options: titleOpts, + chart: chart + }); + + core_layouts.configure(chart, title, titleOpts); + core_layouts.addBox(chart, title); + chart.titleBlock = title; +} + +var plugin_title = { + id: 'title', + + /** + * Backward compatibility: since 2.1.5, the title is registered as a plugin, making + * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of + * the plugin, which one will be re-exposed in the chart.js file. + * https://github.com/chartjs/Chart.js/pull/2640 + * @private + */ + _element: Title, + + beforeInit: function(chart) { + var titleOpts = chart.options.title; + + if (titleOpts) { + createNewTitleBlockAndAttach(chart, titleOpts); + } + }, + + beforeUpdate: function(chart) { + var titleOpts = chart.options.title; + var titleBlock = chart.titleBlock; + + if (titleOpts) { + helpers$1.mergeIf(titleOpts, core_defaults.global.title); + + if (titleBlock) { + core_layouts.configure(chart, titleBlock, titleOpts); + titleBlock.options = titleOpts; + } else { + createNewTitleBlockAndAttach(chart, titleOpts); + } + } else if (titleBlock) { + core_layouts.removeBox(chart, titleBlock); + delete chart.titleBlock; + } + } +}; + +var plugins = {}; +var filler = plugin_filler; +var legend = plugin_legend; +var title = plugin_title; +plugins.filler = filler; +plugins.legend = legend; +plugins.title = title; + +/** + * @namespace Chart + */ + + +core_controller.helpers = helpers$1; + +// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! +core_helpers(core_controller); + +core_controller._adapters = core_adapters; +core_controller.Animation = core_animation; +core_controller.animationService = core_animations; +core_controller.controllers = controllers; +core_controller.DatasetController = core_datasetController; +core_controller.defaults = core_defaults; +core_controller.Element = core_element; +core_controller.elements = elements; +core_controller.Interaction = core_interaction; +core_controller.layouts = core_layouts; +core_controller.platform = platform; +core_controller.plugins = core_plugins; +core_controller.Scale = core_scale; +core_controller.scaleService = core_scaleService; +core_controller.Ticks = core_ticks; +core_controller.Tooltip = core_tooltip; + +// Register built-in scales + +core_controller.helpers.each(scales, function(scale, type) { + core_controller.scaleService.registerScaleType(type, scale, scale._defaults); +}); + +// Load to register built-in adapters (as side effects) + + +// Loading built-in plugins + +for (var k in plugins) { + if (plugins.hasOwnProperty(k)) { + core_controller.plugins.register(plugins[k]); + } +} + +core_controller.platform.initialize(); + +var src = core_controller; +if (typeof window !== 'undefined') { + window.Chart = core_controller; +} + +// DEPRECATIONS + +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Chart + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +core_controller.Chart = core_controller; + +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Legend + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +core_controller.Legend = plugins.legend._element; + +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Title + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +core_controller.Title = plugins.title._element; + +/** + * Provided for backward compatibility, use Chart.plugins instead + * @namespace Chart.pluginService + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +core_controller.pluginService = core_controller.plugins; + +/** + * Provided for backward compatibility, inheriting from Chart.PlugingBase has no + * effect, instead simply create/register plugins via plain JavaScript objects. + * @interface Chart.PluginBase + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ +core_controller.PluginBase = core_controller.Element.extend({}); + +/** + * Provided for backward compatibility, use Chart.helpers.canvas instead. + * @namespace Chart.canvasHelpers + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +core_controller.canvasHelpers = core_controller.helpers.canvas; + +/** + * Provided for backward compatibility, use Chart.layouts instead. + * @namespace Chart.layoutService + * @deprecated since version 2.7.3 + * @todo remove at version 3 + * @private + */ +core_controller.layoutService = core_controller.layouts; + +/** + * Provided for backward compatibility, not available anymore. + * @namespace Chart.LinearScaleBase + * @deprecated since version 2.8 + * @todo remove at version 3 + * @private + */ +core_controller.LinearScaleBase = scale_linearbase; + +/** + * Provided for backward compatibility, instead we should create a new Chart + * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`). + * @deprecated since version 2.8.0 + * @todo remove at version 3 + */ +core_controller.helpers.each( + [ + 'Bar', + 'Bubble', + 'Doughnut', + 'Line', + 'PolarArea', + 'Radar', + 'Scatter' + ], + function(klass) { + core_controller[klass] = function(ctx, cfg) { + return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, { + type: klass.charAt(0).toLowerCase() + klass.slice(1) + })); + }; + } +); + +return src; + +}))); diff --git a/activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.js b/activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.js new file mode 100644 index 000000000..9faf9a4f2 --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.js @@ -0,0 +1,114 @@ +(function($) { + $.columnHeatmap = { + name: 'columnHeatmap', + version: '1.0', + release: '2020-06-15', + author: 'Paulo Kramer', + site: 'https://www.paulokramer.com', + documentation: 'https://github.com/PauloAK/jQuery-columnHeatMap' + }; + + $.fn.columnHeatmap = function(options) { + var settings = $.extend({ + columns: [], // 0 is the first column + contrast: true, // Change text color to white on stronger background colors + inverse: false, // By default, higher are red and lower are green, if this options is enabled, the logic are inversed + animated: true, // Animated background-color and text color transition + animationSpeed: .1, // Speed of transition animation in seconds + fn_parseValue: null, // Custom function to parse cell value + colorStartPoint: 0 // HSL color start point + }, options); + + try { + if (!this.is('table')) + throw 'Selected element isn\'t a table'; + + if (settings.columns.length == 0) + throw 'You need to specify the columns'; + + if (settings.colorStartPoint < 0 || settings.colorStartPoint > 360) + throw `colorStartPoint need to be beetween 0 and 360, current: ${settings.colorStartPoint}`; + + let $table = this; + let rows = $table.find('tbody tr'); + let data = []; + + $.each(settings.columns, (loop, col) => { + rows.each((key, row) => { + if (key == 0) { + data[col.toString()] = new Array; + data[col.toString()]['values'] = new Array; + data[col.toString()]['tds'] = new Array; + } + + let td = $(row).find('td')[col]; + data[col.toString()]['tds'].push(td); + + + + if (typeof settings.fn_parseValue == "function") { + let value = fn_parseValue($(td).text()); + if (typeof value == "undefined") { + throw 'None value returned in fn_parseValue'; + } else { + data[col.toString()]['values'].push(value); + } + } else { + // Get only numbers from the cell, (with float points) + let numbers = $(td).text().match(/[\d|\-|.|,]+/)[0]; + + data[col.toString()]['values'].push(parseFloat(numbers)); + } + }); + }); + + data = data.filter((value) => { return value; }); + + $.each(data, (key, col) => { + if (!col || !col['values']) + return; + + data[key]['min'] = null; + data[key]['max'] = null; + + data[key]['min'] = col['values'].reduce(function(a, b) { + return Math.min(a, b); + }); + + data[key]['max'] = col['values'].reduce(function(a, b) { + return Math.max(a, b); + }); + }); + + $.each(data, (key, col) => { + $.each(col['values'], (key, value) => { + let colorGenerated = colorGenerator(value, col['min'], col['max']); + + if (settings.animated) { + $(col['tds'][key]).css('transition', `background-color ${settings.animationSpeed}s linear, color ${settings.animationSpeed}s linear`); + } + + $(col['tds'][key]).css('background-color', colorGenerated.color); + + if (colorGenerated.perc > 70 && settings.contrast) { + $(col['tds'][key]).css('color', '#fff'); + } + }); + }); + + function colorGenerator(value, min, max) { + var perc = (100 * (value - min)) / (max - min); + + if (settings.inverse) + perc = 100 - perc; + + var hsl = Math.abs((perc - 100) * -1) + settings.colorStartPoint; + + return { color: 'hsl(' + hsl + ', 70%, 65%)', perc: perc }; + } + } catch (error) { + console.error(`[${$.columnHeatmap.name}::Error] ${error}`); + return; + } + }; +}(jQuery)); \ No newline at end of file diff --git a/activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.min.js b/activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.min.js new file mode 100644 index 000000000..129ddbdbf --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/lib/columnHeatmap.min.js @@ -0,0 +1 @@ +!function(t){t.columnHeatmap={name:"columnHeatmap",version:"1.0",release:"2020-06-15",author:"Paulo Kramer",site:"https://www.paulokramer.com",documentation:"https://github.com/PauloAK/jQuery-columnHeatMap"},t.fn.columnHeatmap=function(e){var n=t.extend({columns:[],contrast:!0,inverse:!1,animated:!0,animationSpeed:.1,fn_parseValue:null,colorStartPoint:0},e);try{if(!this.is("table"))throw"Selected element isn't a table";if(0==n.columns.length)throw"You need to specify the columns";if(n.colorStartPoint<0||n.colorStartPoint>360)throw`colorStartPoint need to be beetween 0 and 360, current: ${n.colorStartPoint}`;let e=this.find("tbody tr"),a=[];t.each(n.columns,(o,r)=>{e.each((e,o)=>{0==e&&(a[r.toString()]=new Array,a[r.toString()].values=new Array,a[r.toString()].tds=new Array);let l=t(o).find("td")[r];if(a[r.toString()].tds.push(l),"function"==typeof n.fn_parseValue){let e=fn_parseValue(t(l).text());if(void 0===e)throw"None value returned in fn_parseValue";a[r.toString()].values.push(e)}else{let e=t(l).text().match(/[\d|\-|.|,]+/)[0];a[r.toString()].values.push(parseFloat(e))}})}),a=a.filter(t=>t),t.each(a,(t,e)=>{e&&e.values&&(a[t].min=null,a[t].max=null,a[t].min=e.values.reduce(function(t,e){return Math.min(t,e)}),a[t].max=e.values.reduce(function(t,e){return Math.max(t,e)}))}),t.each(a,(e,a)=>{t.each(a.values,(e,o)=>{let r=function(t,e,a){var o=100*(t-e)/(a-e);n.inverse&&(o=100-o);return{color:"hsl("+(Math.abs(-1*(o-100))+n.colorStartPoint)+", 70%, 65%)",perc:o}}(o,a.min,a.max);n.animated&&t(a.tds[e]).css("transition",`background-color ${n.animationSpeed}s linear, color ${n.animationSpeed}s linear`),t(a.tds[e]).css("background-color",r.color),r.perc>70&&n.contrast&&t(a.tds[e]).css("color","#fff")})})}catch(e){return void console.error(`[${t.columnHeatmap.name}::Error] ${e}`)}}}(jQuery); diff --git a/activity_dashboard_mngmnt/static/src/js/lib/d3.min.js b/activity_dashboard_mngmnt/static/src/js/lib/d3.min.js new file mode 100644 index 000000000..213a10816 --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/lib/d3.min.js @@ -0,0 +1,7828 @@ +! function() { + function n(n) { + return n && (n.ownerDocument || n.document).documentElement + } + + function t(n) { + return n && n.ownerDocument ? n.ownerDocument.defaultView : n + } + + function e(n, t) { + return t > n ? -1 : n > t ? 1 : n >= t ? 0 : 0 / 0 + } + + function r(n) { + return null === n ? 0 / 0 : +n + } + + function u(n) { + return !isNaN(n) + } + + function i(n) { + return { + left: function(t, e, r, u) { + for (arguments.length < 3 && (r = 0), arguments.length < 4 && (u = t.length); u > r;) { + var i = r + u >>> 1; + n(t[i], e) < 0 ? r = i + 1 : u = i + } + return r + }, + right: function(t, e, r, u) { + for (arguments.length < 3 && (r = 0), arguments.length < 4 && (u = t.length); u > r;) { + var i = r + u >>> 1; + n(t[i], e) > 0 ? u = i : r = i + 1 + } + return r + } + } + } + + function o(n) { + return n.length + } + + function a(n) { + for (var t = 1; n * t % 1;) t *= 10; + return t + } + + function c(n, t) { + for (var e in t) Object.defineProperty(n.prototype, e, { + value: t[e], + enumerable: !1 + }) + } + + function l() { + this._ = Object.create(null) + } + + function s(n) { + return (n += "") === pa || n[0] === va ? va + n : n + } + + function f(n) { + return (n += "")[0] === va ? n.slice(1) : n + } + + function h(n) { + return s(n) in this._ + } + + function g(n) { + return (n = s(n)) in this._ && delete this._[n] + } + + function p() { + var n = []; + for (var t in this._) n.push(f(t)); + return n + } + + function v() { + var n = 0; + for (var t in this._) ++n; + return n + } + + function d() { + for (var n in this._) return !1; + return !0 + } + + function m() { + this._ = Object.create(null) + } + + function y(n) { + return n + } + + function M(n, t, e) { + return function() { + var r = e.apply(t, arguments); + return r === t ? n : r + } + } + + function x(n, t) { + if (t in n) return t; + t = t.charAt(0).toUpperCase() + t.slice(1); + for (var e = 0, r = da.length; r > e; ++e) { + var u = da[e] + t; + if (u in n) return u + } + } + + function b() {} + + function _() {} + + function w(n) { + function t() { + for (var t, r = e, u = -1, i = r.length; ++u < i;)(t = r[u].on) && t.apply(this, arguments); + return n + } + var e = [], + r = new l; + return t.on = function(t, u) { + var i, o = r.get(t); + return arguments.length < 2 ? o && o.on : (o && (o.on = null, e = e.slice(0, i = e.indexOf(o)).concat(e.slice(i + 1)), r.remove(t)), u && e.push(r.set(t, { + on: u + })), n) + }, t + } + + function S() { + ta.event.preventDefault() + } + + function k() { + for (var n, t = ta.event; n = t.sourceEvent;) t = n; + return t + } + + function E(n) { + for (var t = new _, e = 0, r = arguments.length; ++e < r;) t[arguments[e]] = w(t); + return t.of = function(e, r) { + return function(u) { + try { + var i = u.sourceEvent = ta.event; + u.target = n, ta.event = u, t[u.type].apply(e, r) + } finally { + ta.event = i + } + } + }, t + } + + function A(n) { + return ya(n, _a), n + } + + function N(n) { + return "function" == typeof n ? n : function() { + return Ma(n, this) + } + } + + function C(n) { + return "function" == typeof n ? n : function() { + return xa(n, this) + } + } + + function z(n, t) { + function e() { + this.removeAttribute(n) + } + + function r() { + this.removeAttributeNS(n.space, n.local) + } + + function u() { + this.setAttribute(n, t) + } + + function i() { + this.setAttributeNS(n.space, n.local, t) + } + + function o() { + var e = t.apply(this, arguments); + null == e ? this.removeAttribute(n) : this.setAttribute(n, e) + } + + function a() { + var e = t.apply(this, arguments); + null == e ? this.removeAttributeNS(n.space, n.local) : this.setAttributeNS(n.space, n.local, e) + } + return n = ta.ns.qualify(n), null == t ? n.local ? r : e : "function" == typeof t ? n.local ? a : o : n.local ? i : u + } + + function q(n) { + return n.trim().replace(/\s+/g, " ") + } + + function L(n) { + return new RegExp("(?:^|\\s+)" + ta.requote(n) + "(?:\\s+|$)", "g") + } + + function T(n) { + return (n + "").trim().split(/^|\s+/) + } + + function R(n, t) { + function e() { + for (var e = -1; ++e < u;) n[e](this, t) + } + + function r() { + for (var e = -1, r = t.apply(this, arguments); ++e < u;) n[e](this, r) + } + n = T(n).map(D); + var u = n.length; + return "function" == typeof t ? r : e + } + + function D(n) { + var t = L(n); + return function(e, r) { + if (u = e.classList) return r ? u.add(n) : u.remove(n); + var u = e.getAttribute("class") || ""; + r ? (t.lastIndex = 0, t.test(u) || e.setAttribute("class", q(u + " " + n))) : e.setAttribute("class", q(u.replace(t, " "))) + } + } + + function P(n, t, e) { + function r() { + this.style.removeProperty(n) + } + + function u() { + this.style.setProperty(n, t, e) + } + + function i() { + var r = t.apply(this, arguments); + null == r ? this.style.removeProperty(n) : this.style.setProperty(n, r, e) + } + return null == t ? r : "function" == typeof t ? i : u + } + + function U(n, t) { + function e() { + delete this[n] + } + + function r() { + this[n] = t + } + + function u() { + var e = t.apply(this, arguments); + null == e ? delete this[n] : this[n] = e + } + return null == t ? e : "function" == typeof t ? u : r + } + + function j(n) { + function t() { + var t = this.ownerDocument, + e = this.namespaceURI; + return e ? t.createElementNS(e, n) : t.createElement(n) + } + + function e() { + return this.ownerDocument.createElementNS(n.space, n.local) + } + return "function" == typeof n ? n : (n = ta.ns.qualify(n)).local ? e : t + } + + function F() { + var n = this.parentNode; + n && n.removeChild(this) + } + + function H(n) { + return { + __data__: n + } + } + + function O(n) { + return function() { + return ba(this, n) + } + } + + function I(n) { + return arguments.length || (n = e), + function(t, e) { + return t && e ? n(t.__data__, e.__data__) : !t - !e + } + } + + function Y(n, t) { + for (var e = 0, r = n.length; r > e; e++) + for (var u, i = n[e], o = 0, a = i.length; a > o; o++)(u = i[o]) && t(u, o, e); + return n + } + + function Z(n) { + return ya(n, Sa), n + } + + function V(n) { + var t, e; + return function(r, u, i) { + var o, a = n[i].update, + c = a.length; + for (i != e && (e = i, t = 0), u >= t && (t = u + 1); !(o = a[t]) && ++t < c;); + return o + } + } + + function X(n, t, e) { + function r() { + var t = this[o]; + t && (this.removeEventListener(n, t, t.$), delete this[o]) + } + + function u() { + var u = c(t, ra(arguments)); + r.call(this), this.addEventListener(n, this[o] = u, u.$ = e), u._ = t + } + + function i() { + var t, e = new RegExp("^__on([^.]+)" + ta.requote(n) + "$"); + for (var r in this) + if (t = r.match(e)) { + var u = this[r]; + this.removeEventListener(t[1], u, u.$), delete this[r] + } + } + var o = "__on" + n, + a = n.indexOf("."), + c = $; + a > 0 && (n = n.slice(0, a)); + var l = ka.get(n); + return l && (n = l, c = B), a ? t ? u : r : t ? b : i + } + + function $(n, t) { + return function(e) { + var r = ta.event; + ta.event = e, t[0] = this.__data__; + try { + n.apply(this, t) + } finally { + ta.event = r + } + } + } + + function B(n, t) { + var e = $(n, t); + return function(n) { + var t = this, + r = n.relatedTarget; + r && (r === t || 8 & r.compareDocumentPosition(t)) || e.call(t, n) + } + } + + function W(e) { + var r = ".dragsuppress-" + ++Aa, + u = "click" + r, + i = ta.select(t(e)).on("touchmove" + r, S).on("dragstart" + r, S).on("selectstart" + r, S); + if (null == Ea && (Ea = "onselectstart" in e ? !1 : x(e.style, "userSelect")), Ea) { + var o = n(e).style, + a = o[Ea]; + o[Ea] = "none" + } + return function(n) { + if (i.on(r, null), Ea && (o[Ea] = a), n) { + var t = function() { + i.on(u, null) + }; + i.on(u, function() { + S(), t() + }, !0), setTimeout(t, 0) + } + } + } + + function J(n, e) { + e.changedTouches && (e = e.changedTouches[0]); + var r = n.ownerSVGElement || n; + if (r.createSVGPoint) { + var u = r.createSVGPoint(); + if (0 > Na) { + var i = t(n); + if (i.scrollX || i.scrollY) { + r = ta.select("body").append("svg").style({ + position: "absolute", + top: 0, + left: 0, + margin: 0, + padding: 0, + border: "none" + }, "important"); + var o = r[0][0].getScreenCTM(); + Na = !(o.f || o.e), r.remove() + } + } + return Na ? (u.x = e.pageX, u.y = e.pageY) : (u.x = e.clientX, u.y = e.clientY), u = u.matrixTransform(n.getScreenCTM().inverse()), [u.x, u.y] + } + var a = n.getBoundingClientRect(); + return [e.clientX - a.left - n.clientLeft, e.clientY - a.top - n.clientTop] + } + + function G() { + return ta.event.changedTouches[0].identifier + } + + function K(n) { + return n > 0 ? 1 : 0 > n ? -1 : 0 + } + + function Q(n, t, e) { + return (t[0] - n[0]) * (e[1] - n[1]) - (t[1] - n[1]) * (e[0] - n[0]) + } + + function nt(n) { + return n > 1 ? 0 : -1 > n ? qa : Math.acos(n) + } + + function tt(n) { + return n > 1 ? Ra : -1 > n ? -Ra : Math.asin(n) + } + + function et(n) { + return ((n = Math.exp(n)) - 1 / n) / 2 + } + + function rt(n) { + return ((n = Math.exp(n)) + 1 / n) / 2 + } + + function ut(n) { + return ((n = Math.exp(2 * n)) - 1) / (n + 1) + } + + function it(n) { + return (n = Math.sin(n / 2)) * n + } + + function ot() {} + + function at(n, t, e) { + return this instanceof at ? (this.h = +n, this.s = +t, void(this.l = +e)) : arguments.length < 2 ? n instanceof at ? new at(n.h, n.s, n.l) : bt("" + n, _t, at) : new at(n, t, e) + } + + function ct(n, t, e) { + function r(n) { + return n > 360 ? n -= 360 : 0 > n && (n += 360), 60 > n ? i + (o - i) * n / 60 : 180 > n ? o : 240 > n ? i + (o - i) * (240 - n) / 60 : i + } + + function u(n) { + return Math.round(255 * r(n)) + } + var i, o; + return n = isNaN(n) ? 0 : (n %= 360) < 0 ? n + 360 : n, t = isNaN(t) ? 0 : 0 > t ? 0 : t > 1 ? 1 : t, e = 0 > e ? 0 : e > 1 ? 1 : e, o = .5 >= e ? e * (1 + t) : e + t - e * t, i = 2 * e - o, new mt(u(n + 120), u(n), u(n - 120)) + } + + function lt(n, t, e) { + return this instanceof lt ? (this.h = +n, this.c = +t, void(this.l = +e)) : arguments.length < 2 ? n instanceof lt ? new lt(n.h, n.c, n.l) : n instanceof ft ? gt(n.l, n.a, n.b) : gt((n = wt((n = ta.rgb(n)).r, n.g, n.b)).l, n.a, n.b) : new lt(n, t, e) + } + + function st(n, t, e) { + return isNaN(n) && (n = 0), isNaN(t) && (t = 0), new ft(e, Math.cos(n *= Da) * t, Math.sin(n) * t) + } + + function ft(n, t, e) { + return this instanceof ft ? (this.l = +n, this.a = +t, void(this.b = +e)) : arguments.length < 2 ? n instanceof ft ? new ft(n.l, n.a, n.b) : n instanceof lt ? st(n.h, n.c, n.l) : wt((n = mt(n)).r, n.g, n.b) : new ft(n, t, e) + } + + function ht(n, t, e) { + var r = (n + 16) / 116, + u = r + t / 500, + i = r - e / 200; + return u = pt(u) * Xa, r = pt(r) * $a, i = pt(i) * Ba, new mt(dt(3.2404542 * u - 1.5371385 * r - .4985314 * i), dt(-.969266 * u + 1.8760108 * r + .041556 * i), dt(.0556434 * u - .2040259 * r + 1.0572252 * i)) + } + + function gt(n, t, e) { + return n > 0 ? new lt(Math.atan2(e, t) * Pa, Math.sqrt(t * t + e * e), n) : new lt(0 / 0, 0 / 0, n) + } + + function pt(n) { + return n > .206893034 ? n * n * n : (n - 4 / 29) / 7.787037 + } + + function vt(n) { + return n > .008856 ? Math.pow(n, 1 / 3) : 7.787037 * n + 4 / 29 + } + + function dt(n) { + return Math.round(255 * (.00304 >= n ? 12.92 * n : 1.055 * Math.pow(n, 1 / 2.4) - .055)) + } + + function mt(n, t, e) { + return this instanceof mt ? (this.r = ~~n, this.g = ~~t, void(this.b = ~~e)) : arguments.length < 2 ? n instanceof mt ? new mt(n.r, n.g, n.b) : bt("" + n, mt, ct) : new mt(n, t, e) + } + + function yt(n) { + return new mt(n >> 16, n >> 8 & 255, 255 & n) + } + + function Mt(n) { + return yt(n) + "" + } + + function xt(n) { + return 16 > n ? "0" + Math.max(0, n).toString(16) : Math.min(255, n).toString(16) + } + + function bt(n, t, e) { + var r, u, i, o = 0, + a = 0, + c = 0; + if (r = /([a-z]+)\((.*)\)/i.exec(n)) switch (u = r[2].split(","), r[1]) { + case "hsl": + return e(parseFloat(u[0]), parseFloat(u[1]) / 100, parseFloat(u[2]) / 100); + case "rgb": + return t(kt(u[0]), kt(u[1]), kt(u[2])) + } + return (i = Ga.get(n.toLowerCase())) ? t(i.r, i.g, i.b) : (null == n || "#" !== n.charAt(0) || isNaN(i = parseInt(n.slice(1), 16)) || (4 === n.length ? (o = (3840 & i) >> 4, o = o >> 4 | o, a = 240 & i, a = a >> 4 | a, c = 15 & i, c = c << 4 | c) : 7 === n.length && (o = (16711680 & i) >> 16, a = (65280 & i) >> 8, c = 255 & i)), t(o, a, c)) + } + + function _t(n, t, e) { + var r, u, i = Math.min(n /= 255, t /= 255, e /= 255), + o = Math.max(n, t, e), + a = o - i, + c = (o + i) / 2; + return a ? (u = .5 > c ? a / (o + i) : a / (2 - o - i), r = n == o ? (t - e) / a + (e > t ? 6 : 0) : t == o ? (e - n) / a + 2 : (n - t) / a + 4, r *= 60) : (r = 0 / 0, u = c > 0 && 1 > c ? 0 : r), new at(r, u, c) + } + + function wt(n, t, e) { + n = St(n), t = St(t), e = St(e); + var r = vt((.4124564 * n + .3575761 * t + .1804375 * e) / Xa), + u = vt((.2126729 * n + .7151522 * t + .072175 * e) / $a), + i = vt((.0193339 * n + .119192 * t + .9503041 * e) / Ba); + return ft(116 * u - 16, 500 * (r - u), 200 * (u - i)) + } + + function St(n) { + return (n /= 255) <= .04045 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4) + } + + function kt(n) { + var t = parseFloat(n); + return "%" === n.charAt(n.length - 1) ? Math.round(2.55 * t) : t + } + + function Et(n) { + return "function" == typeof n ? n : function() { + return n + } + } + + function At(n) { + return function(t, e, r) { + return 2 === arguments.length && "function" == typeof e && (r = e, e = null), Nt(t, e, n, r) + } + } + + function Nt(n, t, e, r) { + function u() { + var n, t = c.status; + if (!t && zt(c) || t >= 200 && 300 > t || 304 === t) { + try { + n = e.call(i, c) + } catch (r) { + return void o.error.call(i, r) + } + o.load.call(i, n) + } else o.error.call(i, c) + } + var i = {}, + o = ta.dispatch("beforesend", "progress", "load", "error"), + a = {}, + c = new XMLHttpRequest, + l = null; + return !this.XDomainRequest || "withCredentials" in c || !/^(http(s)?:)?\/\//.test(n) || (c = new XDomainRequest), "onload" in c ? c.onload = c.onerror = u : c.onreadystatechange = function() { + c.readyState > 3 && u() + }, c.onprogress = function(n) { + var t = ta.event; + ta.event = n; + try { + o.progress.call(i, c) + } finally { + ta.event = t + } + }, i.header = function(n, t) { + return n = (n + "").toLowerCase(), arguments.length < 2 ? a[n] : (null == t ? delete a[n] : a[n] = t + "", i) + }, i.mimeType = function(n) { + return arguments.length ? (t = null == n ? null : n + "", i) : t + }, i.responseType = function(n) { + return arguments.length ? (l = n, i) : l + }, i.response = function(n) { + return e = n, i + }, ["get", "post"].forEach(function(n) { + i[n] = function() { + return i.send.apply(i, [n].concat(ra(arguments))) + } + }), i.send = function(e, r, u) { + if (2 === arguments.length && "function" == typeof r && (u = r, r = null), c.open(e, n, !0), null == t || "accept" in a || (a.accept = t + ",*/*"), c.setRequestHeader) + for (var s in a) c.setRequestHeader(s, a[s]); + return null != t && c.overrideMimeType && c.overrideMimeType(t), null != l && (c.responseType = l), null != u && i.on("error", u).on("load", function(n) { + u(null, n) + }), o.beforesend.call(i, c), c.send(null == r ? null : r), i + }, i.abort = function() { + return c.abort(), i + }, ta.rebind(i, o, "on"), null == r ? i : i.get(Ct(r)) + } + + function Ct(n) { + return 1 === n.length ? function(t, e) { + n(null == t ? e : null) + } : n + } + + function zt(n) { + var t = n.responseType; + return t && "text" !== t ? n.response : n.responseText + } + + function qt() { + var n = Lt(), + t = Tt() - n; + t > 24 ? (isFinite(t) && (clearTimeout(tc), tc = setTimeout(qt, t)), nc = 0) : (nc = 1, rc(qt)) + } + + function Lt() { + var n = Date.now(); + for (ec = Ka; ec;) n >= ec.t && (ec.f = ec.c(n - ec.t)), ec = ec.n; + return n + } + + function Tt() { + for (var n, t = Ka, e = 1 / 0; t;) t.f ? t = n ? n.n = t.n : Ka = t.n : (t.t < e && (e = t.t), t = (n = t).n); + return Qa = n, e + } + + function Rt(n, t) { + return t - (n ? Math.ceil(Math.log(n) / Math.LN10) : 1) + } + + function Dt(n, t) { + var e = Math.pow(10, 3 * ga(8 - t)); + return { + scale: t > 8 ? function(n) { + return n / e + } : function(n) { + return n * e + }, + symbol: n + } + } + + function Pt(n) { + var t = n.decimal, + e = n.thousands, + r = n.grouping, + u = n.currency, + i = r && e ? function(n, t) { + for (var u = n.length, i = [], o = 0, a = r[0], c = 0; u > 0 && a > 0 && (c + a + 1 > t && (a = Math.max(1, t - c)), i.push(n.substring(u -= a, u + a)), !((c += a + 1) > t));) a = r[o = (o + 1) % r.length]; + return i.reverse().join(e) + } : y; + return function(n) { + var e = ic.exec(n), + r = e[1] || " ", + o = e[2] || ">", + a = e[3] || "-", + c = e[4] || "", + l = e[5], + s = +e[6], + f = e[7], + h = e[8], + g = e[9], + p = 1, + v = "", + d = "", + m = !1, + y = !0; + switch (h && (h = +h.substring(1)), (l || "0" === r && "=" === o) && (l = r = "0", o = "="), g) { + case "n": + f = !0, g = "g"; + break; + case "%": + p = 100, d = "%", g = "f"; + break; + case "p": + p = 100, d = "%", g = "r"; + break; + case "b": + case "o": + case "x": + case "X": + "#" === c && (v = "0" + g.toLowerCase()); + case "c": + y = !1; + case "d": + m = !0, h = 0; + break; + case "s": + p = -1, g = "r" + } + "$" === c && (v = u[0], d = u[1]), "r" != g || h || (g = "g"), null != h && ("g" == g ? h = Math.max(1, Math.min(21, h)) : ("e" == g || "f" == g) && (h = Math.max(0, Math.min(20, h)))), g = oc.get(g) || Ut; + var M = l && f; + return function(n) { + var e = d; + if (m && n % 1) return ""; + var u = 0 > n || 0 === n && 0 > 1 / n ? (n = -n, "-") : "-" === a ? "" : a; + if (0 > p) { + var c = ta.formatPrefix(n, h); + n = c.scale(n), e = c.symbol + d + } else n *= p; + n = g(n, h); + var x, b, _ = n.lastIndexOf("."); + if (0 > _) { + var w = y ? n.lastIndexOf("e") : -1; + 0 > w ? (x = n, b = "") : (x = n.substring(0, w), b = n.substring(w)) + } else x = n.substring(0, _), b = t + n.substring(_ + 1); + !l && f && (x = i(x, 1 / 0)); + var S = v.length + x.length + b.length + (M ? 0 : u.length), + k = s > S ? new Array(S = s - S + 1).join(r) : ""; + return M && (x = i(k + x, k.length ? s - b.length : 1 / 0)), u += v, n = x + b, ("<" === o ? u + n + k : ">" === o ? k + u + n : "^" === o ? k.substring(0, S >>= 1) + u + n + k.substring(S) : u + (M ? n : k + n)) + e + } + } + } + + function Ut(n) { + return n + "" + } + + function jt() { + this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]) + } + + function Ft(n, t, e) { + function r(t) { + var e = n(t), + r = i(e, 1); + return r - t > t - e ? e : r + } + + function u(e) { + return t(e = n(new cc(e - 1)), 1), e + } + + function i(n, e) { + return t(n = new cc(+n), e), n + } + + function o(n, r, i) { + var o = u(n), + a = []; + if (i > 1) + for (; r > o;) e(o) % i || a.push(new Date(+o)), t(o, 1); + else + for (; r > o;) a.push(new Date(+o)), t(o, 1); + return a + } + + function a(n, t, e) { + try { + cc = jt; + var r = new jt; + return r._ = n, o(r, t, e) + } finally { + cc = Date + } + } + n.floor = n, n.round = r, n.ceil = u, n.offset = i, n.range = o; + var c = n.utc = Ht(n); + return c.floor = c, c.round = Ht(r), c.ceil = Ht(u), c.offset = Ht(i), c.range = a, n + } + + function Ht(n) { + return function(t, e) { + try { + cc = jt; + var r = new jt; + return r._ = t, n(r, e)._ + } finally { + cc = Date + } + } + } + + function Ot(n) { + function t(n) { + function t(t) { + for (var e, u, i, o = [], a = -1, c = 0; ++a < r;) 37 === n.charCodeAt(a) && (o.push(n.slice(c, a)), null != (u = sc[e = n.charAt(++a)]) && (e = n.charAt(++a)), (i = N[e]) && (e = i(t, null == u ? "e" === e ? " " : "0" : u)), o.push(e), c = a + 1); + return o.push(n.slice(c, a)), o.join("") + } + var r = n.length; + return t.parse = function(t) { + var r = { + y: 1900, + m: 0, + d: 1, + H: 0, + M: 0, + S: 0, + L: 0, + Z: null + }, + u = e(r, n, t, 0); + if (u != t.length) return null; + "p" in r && (r.H = r.H % 12 + 12 * r.p); + var i = null != r.Z && cc !== jt, + o = new(i ? jt : cc); + return "j" in r ? o.setFullYear(r.y, 0, r.j) : "w" in r && ("W" in r || "U" in r) ? (o.setFullYear(r.y, 0, 1), o.setFullYear(r.y, 0, "W" in r ? (r.w + 6) % 7 + 7 * r.W - (o.getDay() + 5) % 7 : r.w + 7 * r.U - (o.getDay() + 6) % 7)) : o.setFullYear(r.y, r.m, r.d), o.setHours(r.H + (r.Z / 100 | 0), r.M + r.Z % 100, r.S, r.L), i ? o._ : o + }, t.toString = function() { + return n + }, t + } + + function e(n, t, e, r) { + for (var u, i, o, a = 0, c = t.length, l = e.length; c > a;) { + if (r >= l) return -1; + if (u = t.charCodeAt(a++), 37 === u) { + if (o = t.charAt(a++), i = C[o in sc ? t.charAt(a++) : o], !i || (r = i(n, e, r)) < 0) return -1 + } else if (u != e.charCodeAt(r++)) return -1 + } + return r + } + + function r(n, t, e) { + _.lastIndex = 0; + var r = _.exec(t.slice(e)); + return r ? (n.w = w.get(r[0].toLowerCase()), e + r[0].length) : -1 + } + + function u(n, t, e) { + x.lastIndex = 0; + var r = x.exec(t.slice(e)); + return r ? (n.w = b.get(r[0].toLowerCase()), e + r[0].length) : -1 + } + + function i(n, t, e) { + E.lastIndex = 0; + var r = E.exec(t.slice(e)); + return r ? (n.m = A.get(r[0].toLowerCase()), e + r[0].length) : -1 + } + + function o(n, t, e) { + S.lastIndex = 0; + var r = S.exec(t.slice(e)); + return r ? (n.m = k.get(r[0].toLowerCase()), e + r[0].length) : -1 + } + + function a(n, t, r) { + return e(n, N.c.toString(), t, r) + } + + function c(n, t, r) { + return e(n, N.x.toString(), t, r) + } + + function l(n, t, r) { + return e(n, N.X.toString(), t, r) + } + + function s(n, t, e) { + var r = M.get(t.slice(e, e += 2).toLowerCase()); + return null == r ? -1 : (n.p = r, e) + } + var f = n.dateTime, + h = n.date, + g = n.time, + p = n.periods, + v = n.days, + d = n.shortDays, + m = n.months, + y = n.shortMonths; + t.utc = function(n) { + function e(n) { + try { + cc = jt; + var t = new cc; + return t._ = n, r(t) + } finally { + cc = Date + } + } + var r = t(n); + return e.parse = function(n) { + try { + cc = jt; + var t = r.parse(n); + return t && t._ + } finally { + cc = Date + } + }, e.toString = r.toString, e + }, t.multi = t.utc.multi = ae; + var M = ta.map(), + x = Yt(v), + b = Zt(v), + _ = Yt(d), + w = Zt(d), + S = Yt(m), + k = Zt(m), + E = Yt(y), + A = Zt(y); + p.forEach(function(n, t) { + M.set(n.toLowerCase(), t) + }); + var N = { + a: function(n) { + return d[n.getDay()] + }, + A: function(n) { + return v[n.getDay()] + }, + b: function(n) { + return y[n.getMonth()] + }, + B: function(n) { + return m[n.getMonth()] + }, + c: t(f), + d: function(n, t) { + return It(n.getDate(), t, 2) + }, + e: function(n, t) { + return It(n.getDate(), t, 2) + }, + H: function(n, t) { + return It(n.getHours(), t, 2) + }, + I: function(n, t) { + return It(n.getHours() % 12 || 12, t, 2) + }, + j: function(n, t) { + return It(1 + ac.dayOfYear(n), t, 3) + }, + L: function(n, t) { + return It(n.getMilliseconds(), t, 3) + }, + m: function(n, t) { + return It(n.getMonth() + 1, t, 2) + }, + M: function(n, t) { + return It(n.getMinutes(), t, 2) + }, + p: function(n) { + return p[+(n.getHours() >= 12)] + }, + S: function(n, t) { + return It(n.getSeconds(), t, 2) + }, + U: function(n, t) { + return It(ac.sundayOfYear(n), t, 2) + }, + w: function(n) { + return n.getDay() + }, + W: function(n, t) { + return It(ac.mondayOfYear(n), t, 2) + }, + x: t(h), + X: t(g), + y: function(n, t) { + return It(n.getFullYear() % 100, t, 2) + }, + Y: function(n, t) { + return It(n.getFullYear() % 1e4, t, 4) + }, + Z: ie, + "%": function() { + return "%" + } + }, + C = { + a: r, + A: u, + b: i, + B: o, + c: a, + d: Qt, + e: Qt, + H: te, + I: te, + j: ne, + L: ue, + m: Kt, + M: ee, + p: s, + S: re, + U: Xt, + w: Vt, + W: $t, + x: c, + X: l, + y: Wt, + Y: Bt, + Z: Jt, + "%": oe + }; + return t + } + + function It(n, t, e) { + var r = 0 > n ? "-" : "", + u = (r ? -n : n) + "", + i = u.length; + return r + (e > i ? new Array(e - i + 1).join(t) + u : u) + } + + function Yt(n) { + return new RegExp("^(?:" + n.map(ta.requote).join("|") + ")", "i") + } + + function Zt(n) { + for (var t = new l, e = -1, r = n.length; ++e < r;) t.set(n[e].toLowerCase(), e); + return t + } + + function Vt(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 1)); + return r ? (n.w = +r[0], e + r[0].length) : -1 + } + + function Xt(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e)); + return r ? (n.U = +r[0], e + r[0].length) : -1 + } + + function $t(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e)); + return r ? (n.W = +r[0], e + r[0].length) : -1 + } + + function Bt(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 4)); + return r ? (n.y = +r[0], e + r[0].length) : -1 + } + + function Wt(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 2)); + return r ? (n.y = Gt(+r[0]), e + r[0].length) : -1 + } + + function Jt(n, t, e) { + return /^[+-]\d{4}$/.test(t = t.slice(e, e + 5)) ? (n.Z = -t, e + 5) : -1 + } + + function Gt(n) { + return n + (n > 68 ? 1900 : 2e3) + } + + function Kt(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 2)); + return r ? (n.m = r[0] - 1, e + r[0].length) : -1 + } + + function Qt(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 2)); + return r ? (n.d = +r[0], e + r[0].length) : -1 + } + + function ne(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 3)); + return r ? (n.j = +r[0], e + r[0].length) : -1 + } + + function te(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 2)); + return r ? (n.H = +r[0], e + r[0].length) : -1 + } + + function ee(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 2)); + return r ? (n.M = +r[0], e + r[0].length) : -1 + } + + function re(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 2)); + return r ? (n.S = +r[0], e + r[0].length) : -1 + } + + function ue(n, t, e) { + fc.lastIndex = 0; + var r = fc.exec(t.slice(e, e + 3)); + return r ? (n.L = +r[0], e + r[0].length) : -1 + } + + function ie(n) { + var t = n.getTimezoneOffset(), + e = t > 0 ? "-" : "+", + r = ga(t) / 60 | 0, + u = ga(t) % 60; + return e + It(r, "0", 2) + It(u, "0", 2) + } + + function oe(n, t, e) { + hc.lastIndex = 0; + var r = hc.exec(t.slice(e, e + 1)); + return r ? e + r[0].length : -1 + } + + function ae(n) { + for (var t = n.length, e = -1; ++e < t;) n[e][0] = this(n[e][0]); + return function(t) { + for (var e = 0, r = n[e]; !r[1](t);) r = n[++e]; + return r[0](t) + } + } + + function ce() {} + + function le(n, t, e) { + var r = e.s = n + t, + u = r - n, + i = r - u; + e.t = n - i + (t - u) + } + + function se(n, t) { + n && dc.hasOwnProperty(n.type) && dc[n.type](n, t) + } + + function fe(n, t, e) { + var r, u = -1, + i = n.length - e; + for (t.lineStart(); ++u < i;) r = n[u], t.point(r[0], r[1], r[2]); + t.lineEnd() + } + + function he(n, t) { + var e = -1, + r = n.length; + for (t.polygonStart(); ++e < r;) fe(n[e], t, 1); + t.polygonEnd() + } + + function ge() { + function n(n, t) { + n *= Da, t = t * Da / 2 + qa / 4; + var e = n - r, + o = e >= 0 ? 1 : -1, + a = o * e, + c = Math.cos(t), + l = Math.sin(t), + s = i * l, + f = u * c + s * Math.cos(a), + h = s * o * Math.sin(a); + yc.add(Math.atan2(h, f)), r = n, u = c, i = l + } + var t, e, r, u, i; + Mc.point = function(o, a) { + Mc.point = n, r = (t = o) * Da, u = Math.cos(a = (e = a) * Da / 2 + qa / 4), i = Math.sin(a) + }, Mc.lineEnd = function() { + n(t, e) + } + } + + function pe(n) { + var t = n[0], + e = n[1], + r = Math.cos(e); + return [r * Math.cos(t), r * Math.sin(t), Math.sin(e)] + } + + function ve(n, t) { + return n[0] * t[0] + n[1] * t[1] + n[2] * t[2] + } + + function de(n, t) { + return [n[1] * t[2] - n[2] * t[1], n[2] * t[0] - n[0] * t[2], n[0] * t[1] - n[1] * t[0]] + } + + function me(n, t) { + n[0] += t[0], n[1] += t[1], n[2] += t[2] + } + + function ye(n, t) { + return [n[0] * t, n[1] * t, n[2] * t] + } + + function Me(n) { + var t = Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]); + n[0] /= t, n[1] /= t, n[2] /= t + } + + function xe(n) { + return [Math.atan2(n[1], n[0]), tt(n[2])] + } + + function be(n, t) { + return ga(n[0] - t[0]) < Ca && ga(n[1] - t[1]) < Ca + } + + function _e(n, t) { + n *= Da; + var e = Math.cos(t *= Da); + we(e * Math.cos(n), e * Math.sin(n), Math.sin(t)) + } + + function we(n, t, e) { + ++xc, _c += (n - _c) / xc, wc += (t - wc) / xc, Sc += (e - Sc) / xc + } + + function Se() { + function n(n, u) { + n *= Da; + var i = Math.cos(u *= Da), + o = i * Math.cos(n), + a = i * Math.sin(n), + c = Math.sin(u), + l = Math.atan2(Math.sqrt((l = e * c - r * a) * l + (l = r * o - t * c) * l + (l = t * a - e * o) * l), t * o + e * a + r * c); + bc += l, kc += l * (t + (t = o)), Ec += l * (e + (e = a)), Ac += l * (r + (r = c)), we(t, e, r) + } + var t, e, r; + qc.point = function(u, i) { + u *= Da; + var o = Math.cos(i *= Da); + t = o * Math.cos(u), e = o * Math.sin(u), r = Math.sin(i), qc.point = n, we(t, e, r) + } + } + + function ke() { + qc.point = _e + } + + function Ee() { + function n(n, t) { + n *= Da; + var e = Math.cos(t *= Da), + o = e * Math.cos(n), + a = e * Math.sin(n), + c = Math.sin(t), + l = u * c - i * a, + s = i * o - r * c, + f = r * a - u * o, + h = Math.sqrt(l * l + s * s + f * f), + g = r * o + u * a + i * c, + p = h && -nt(g) / h, + v = Math.atan2(h, g); + Nc += p * l, Cc += p * s, zc += p * f, bc += v, kc += v * (r + (r = o)), Ec += v * (u + (u = a)), Ac += v * (i + (i = c)), we(r, u, i) + } + var t, e, r, u, i; + qc.point = function(o, a) { + t = o, e = a, qc.point = n, o *= Da; + var c = Math.cos(a *= Da); + r = c * Math.cos(o), u = c * Math.sin(o), i = Math.sin(a), we(r, u, i) + }, qc.lineEnd = function() { + n(t, e), qc.lineEnd = ke, qc.point = _e + } + } + + function Ae(n, t) { + function e(e, r) { + return e = n(e, r), t(e[0], e[1]) + } + return n.invert && t.invert && (e.invert = function(e, r) { + return e = t.invert(e, r), e && n.invert(e[0], e[1]) + }), e + } + + function Ne() { + return !0 + } + + function Ce(n, t, e, r, u) { + var i = [], + o = []; + if (n.forEach(function(n) { + if (!((t = n.length - 1) <= 0)) { + var t, e = n[0], + r = n[t]; + if (be(e, r)) { + u.lineStart(); + for (var a = 0; t > a; ++a) u.point((e = n[a])[0], e[1]); + return void u.lineEnd() + } + var c = new qe(e, n, null, !0), + l = new qe(e, null, c, !1); + c.o = l, i.push(c), o.push(l), c = new qe(r, n, null, !1), l = new qe(r, null, c, !0), c.o = l, i.push(c), o.push(l) + } + }), o.sort(t), ze(i), ze(o), i.length) { + for (var a = 0, c = e, l = o.length; l > a; ++a) o[a].e = c = !c; + for (var s, f, h = i[0];;) { + for (var g = h, p = !0; g.v;) + if ((g = g.n) === h) return; + s = g.z, u.lineStart(); + do { + if (g.v = g.o.v = !0, g.e) { + if (p) + for (var a = 0, l = s.length; l > a; ++a) u.point((f = s[a])[0], f[1]); + else r(g.x, g.n.x, 1, u); + g = g.n + } else { + if (p) { + s = g.p.z; + for (var a = s.length - 1; a >= 0; --a) u.point((f = s[a])[0], f[1]) + } else r(g.x, g.p.x, -1, u); + g = g.p + } + g = g.o, s = g.z, p = !p + } while (!g.v); + u.lineEnd() + } + } + } + + function ze(n) { + if (t = n.length) { + for (var t, e, r = 0, u = n[0]; ++r < t;) u.n = e = n[r], e.p = u, u = e; + u.n = e = n[0], e.p = u + } + } + + function qe(n, t, e, r) { + this.x = n, this.z = t, this.o = e, this.e = r, this.v = !1, this.n = this.p = null + } + + function Le(n, t, e, r) { + return function(u, i) { + function o(t, e) { + var r = u(t, e); + n(t = r[0], e = r[1]) && i.point(t, e) + } + + function a(n, t) { + var e = u(n, t); + d.point(e[0], e[1]) + } + + function c() { + y.point = a, d.lineStart() + } + + function l() { + y.point = o, d.lineEnd() + } + + function s(n, t) { + v.push([n, t]); + var e = u(n, t); + x.point(e[0], e[1]) + } + + function f() { + x.lineStart(), v = [] + } + + function h() { + s(v[0][0], v[0][1]), x.lineEnd(); + var n, t = x.clean(), + e = M.buffer(), + r = e.length; + if (v.pop(), p.push(v), v = null, r) + if (1 & t) { + n = e[0]; + var u, r = n.length - 1, + o = -1; + if (r > 0) { + for (b || (i.polygonStart(), b = !0), i.lineStart(); ++o < r;) i.point((u = n[o])[0], u[1]); + i.lineEnd() + } + } else r > 1 && 2 & t && e.push(e.pop().concat(e.shift())), g.push(e.filter(Te)) + } + var g, p, v, d = t(i), + m = u.invert(r[0], r[1]), + y = { + point: o, + lineStart: c, + lineEnd: l, + polygonStart: function() { + y.point = s, y.lineStart = f, y.lineEnd = h, g = [], p = [] + }, + polygonEnd: function() { + y.point = o, y.lineStart = c, y.lineEnd = l, g = ta.merge(g); + var n = Fe(m, p); + g.length ? (b || (i.polygonStart(), b = !0), Ce(g, De, n, e, i)) : n && (b || (i.polygonStart(), b = !0), i.lineStart(), e(null, null, 1, i), i.lineEnd()), b && (i.polygonEnd(), b = !1), g = p = null + }, + sphere: function() { + i.polygonStart(), i.lineStart(), e(null, null, 1, i), i.lineEnd(), i.polygonEnd() + } + }, + M = Re(), + x = t(M), + b = !1; + return y + } + } + + function Te(n) { + return n.length > 1 + } + + function Re() { + var n, t = []; + return { + lineStart: function() { + t.push(n = []) + }, + point: function(t, e) { + n.push([t, e]) + }, + lineEnd: b, + buffer: function() { + var e = t; + return t = [], n = null, e + }, + rejoin: function() { + t.length > 1 && t.push(t.pop().concat(t.shift())) + } + } + } + + function De(n, t) { + return ((n = n.x)[0] < 0 ? n[1] - Ra - Ca : Ra - n[1]) - ((t = t.x)[0] < 0 ? t[1] - Ra - Ca : Ra - t[1]) + } + + function Pe(n) { + var t, e = 0 / 0, + r = 0 / 0, + u = 0 / 0; + return { + lineStart: function() { + n.lineStart(), t = 1 + }, + point: function(i, o) { + var a = i > 0 ? qa : -qa, + c = ga(i - e); + ga(c - qa) < Ca ? (n.point(e, r = (r + o) / 2 > 0 ? Ra : -Ra), n.point(u, r), n.lineEnd(), n.lineStart(), n.point(a, r), n.point(i, r), t = 0) : u !== a && c >= qa && (ga(e - u) < Ca && (e -= u * Ca), ga(i - a) < Ca && (i -= a * Ca), r = Ue(e, r, i, o), n.point(u, r), n.lineEnd(), n.lineStart(), n.point(a, r), t = 0), n.point(e = i, r = o), u = a + }, + lineEnd: function() { + n.lineEnd(), e = r = 0 / 0 + }, + clean: function() { + return 2 - t + } + } + } + + function Ue(n, t, e, r) { + var u, i, o = Math.sin(n - e); + return ga(o) > Ca ? Math.atan((Math.sin(t) * (i = Math.cos(r)) * Math.sin(e) - Math.sin(r) * (u = Math.cos(t)) * Math.sin(n)) / (u * i * o)) : (t + r) / 2 + } + + function je(n, t, e, r) { + var u; + if (null == n) u = e * Ra, r.point(-qa, u), r.point(0, u), r.point(qa, u), r.point(qa, 0), r.point(qa, -u), r.point(0, -u), r.point(-qa, -u), r.point(-qa, 0), r.point(-qa, u); + else if (ga(n[0] - t[0]) > Ca) { + var i = n[0] < t[0] ? qa : -qa; + u = e * i / 2, r.point(-i, u), r.point(0, u), r.point(i, u) + } else r.point(t[0], t[1]) + } + + function Fe(n, t) { + var e = n[0], + r = n[1], + u = [Math.sin(e), -Math.cos(e), 0], + i = 0, + o = 0; + yc.reset(); + for (var a = 0, c = t.length; c > a; ++a) { + var l = t[a], + s = l.length; + if (s) + for (var f = l[0], h = f[0], g = f[1] / 2 + qa / 4, p = Math.sin(g), v = Math.cos(g), d = 1;;) { + d === s && (d = 0), n = l[d]; + var m = n[0], + y = n[1] / 2 + qa / 4, + M = Math.sin(y), + x = Math.cos(y), + b = m - h, + _ = b >= 0 ? 1 : -1, + w = _ * b, + S = w > qa, + k = p * M; + if (yc.add(Math.atan2(k * _ * Math.sin(w), v * x + k * Math.cos(w))), i += S ? b + _ * La : b, S ^ h >= e ^ m >= e) { + var E = de(pe(f), pe(n)); + Me(E); + var A = de(u, E); + Me(A); + var N = (S ^ b >= 0 ? -1 : 1) * tt(A[2]); + (r > N || r === N && (E[0] || E[1])) && (o += S ^ b >= 0 ? 1 : -1) + } + if (!d++) break; + h = m, p = M, v = x, f = n + } + } + return (-Ca > i || Ca > i && 0 > yc) ^ 1 & o + } + + function He(n) { + function t(n, t) { + return Math.cos(n) * Math.cos(t) > i + } + + function e(n) { + var e, i, c, l, s; + return { + lineStart: function() { + l = c = !1, s = 1 + }, + point: function(f, h) { + var g, p = [f, h], + v = t(f, h), + d = o ? v ? 0 : u(f, h) : v ? u(f + (0 > f ? qa : -qa), h) : 0; + if (!e && (l = c = v) && n.lineStart(), v !== c && (g = r(e, p), (be(e, g) || be(p, g)) && (p[0] += Ca, p[1] += Ca, v = t(p[0], p[1]))), v !== c) s = 0, v ? (n.lineStart(), g = r(p, e), n.point(g[0], g[1])) : (g = r(e, p), n.point(g[0], g[1]), n.lineEnd()), e = g; + else if (a && e && o ^ v) { + var m; + d & i || !(m = r(p, e, !0)) || (s = 0, o ? (n.lineStart(), n.point(m[0][0], m[0][1]), n.point(m[1][0], m[1][1]), n.lineEnd()) : (n.point(m[1][0], m[1][1]), n.lineEnd(), n.lineStart(), n.point(m[0][0], m[0][1]))) + }!v || e && be(e, p) || n.point(p[0], p[1]), e = p, c = v, i = d + }, + lineEnd: function() { + c && n.lineEnd(), e = null + }, + clean: function() { + return s | (l && c) << 1 + } + } + } + + function r(n, t, e) { + var r = pe(n), + u = pe(t), + o = [1, 0, 0], + a = de(r, u), + c = ve(a, a), + l = a[0], + s = c - l * l; + if (!s) return !e && n; + var f = i * c / s, + h = -i * l / s, + g = de(o, a), + p = ye(o, f), + v = ye(a, h); + me(p, v); + var d = g, + m = ve(p, d), + y = ve(d, d), + M = m * m - y * (ve(p, p) - 1); + if (!(0 > M)) { + var x = Math.sqrt(M), + b = ye(d, (-m - x) / y); + if (me(b, p), b = xe(b), !e) return b; + var _, w = n[0], + S = t[0], + k = n[1], + E = t[1]; + w > S && (_ = w, w = S, S = _); + var A = S - w, + N = ga(A - qa) < Ca, + C = N || Ca > A; + if (!N && k > E && (_ = k, k = E, E = _), C ? N ? k + E > 0 ^ b[1] < (ga(b[0] - w) < Ca ? k : E) : k <= b[1] && b[1] <= E : A > qa ^ (w <= b[0] && b[0] <= S)) { + var z = ye(d, (-m + x) / y); + return me(z, p), [b, xe(z)] + } + } + } + + function u(t, e) { + var r = o ? n : qa - n, + u = 0; + return -r > t ? u |= 1 : t > r && (u |= 2), -r > e ? u |= 4 : e > r && (u |= 8), u + } + var i = Math.cos(n), + o = i > 0, + a = ga(i) > Ca, + c = gr(n, 6 * Da); + return Le(t, e, c, o ? [0, -n] : [-qa, n - qa]) + } + + function Oe(n, t, e, r) { + return function(u) { + var i, o = u.a, + a = u.b, + c = o.x, + l = o.y, + s = a.x, + f = a.y, + h = 0, + g = 1, + p = s - c, + v = f - l; + if (i = n - c, p || !(i > 0)) { + if (i /= p, 0 > p) { + if (h > i) return; + g > i && (g = i) + } else if (p > 0) { + if (i > g) return; + i > h && (h = i) + } + if (i = e - c, p || !(0 > i)) { + if (i /= p, 0 > p) { + if (i > g) return; + i > h && (h = i) + } else if (p > 0) { + if (h > i) return; + g > i && (g = i) + } + if (i = t - l, v || !(i > 0)) { + if (i /= v, 0 > v) { + if (h > i) return; + g > i && (g = i) + } else if (v > 0) { + if (i > g) return; + i > h && (h = i) + } + if (i = r - l, v || !(0 > i)) { + if (i /= v, 0 > v) { + if (i > g) return; + i > h && (h = i) + } else if (v > 0) { + if (h > i) return; + g > i && (g = i) + } + return h > 0 && (u.a = { + x: c + h * p, + y: l + h * v + }), 1 > g && (u.b = { + x: c + g * p, + y: l + g * v + }), u + } + } + } + } + } + } + + function Ie(n, t, e, r) { + function u(r, u) { + return ga(r[0] - n) < Ca ? u > 0 ? 0 : 3 : ga(r[0] - e) < Ca ? u > 0 ? 2 : 1 : ga(r[1] - t) < Ca ? u > 0 ? 1 : 0 : u > 0 ? 3 : 2 + } + + function i(n, t) { + return o(n.x, t.x) + } + + function o(n, t) { + var e = u(n, 1), + r = u(t, 1); + return e !== r ? e - r : 0 === e ? t[1] - n[1] : 1 === e ? n[0] - t[0] : 2 === e ? n[1] - t[1] : t[0] - n[0] + } + return function(a) { + function c(n) { + for (var t = 0, e = d.length, r = n[1], u = 0; e > u; ++u) + for (var i, o = 1, a = d[u], c = a.length, l = a[0]; c > o; ++o) i = a[o], l[1] <= r ? i[1] > r && Q(l, i, n) > 0 && ++t : i[1] <= r && Q(l, i, n) < 0 && --t, l = i; + return 0 !== t + } + + function l(i, a, c, l) { + var s = 0, + f = 0; + if (null == i || (s = u(i, c)) !== (f = u(a, c)) || o(i, a) < 0 ^ c > 0) { + do l.point(0 === s || 3 === s ? n : e, s > 1 ? r : t); while ((s = (s + c + 4) % 4) !== f) + } else l.point(a[0], a[1]) + } + + function s(u, i) { + return u >= n && e >= u && i >= t && r >= i + } + + function f(n, t) { + s(n, t) && a.point(n, t) + } + + function h() { + C.point = p, d && d.push(m = []), S = !0, w = !1, b = _ = 0 / 0 + } + + function g() { + v && (p(y, M), x && w && A.rejoin(), v.push(A.buffer())), C.point = f, w && a.lineEnd() + } + + function p(n, t) { + n = Math.max(-Tc, Math.min(Tc, n)), t = Math.max(-Tc, Math.min(Tc, t)); + var e = s(n, t); + if (d && m.push([n, t]), S) y = n, M = t, x = e, S = !1, e && (a.lineStart(), a.point(n, t)); + else if (e && w) a.point(n, t); + else { + var r = { + a: { + x: b, + y: _ + }, + b: { + x: n, + y: t + } + }; + N(r) ? (w || (a.lineStart(), a.point(r.a.x, r.a.y)), a.point(r.b.x, r.b.y), e || a.lineEnd(), k = !1) : e && (a.lineStart(), a.point(n, t), k = !1) + } + b = n, _ = t, w = e + } + var v, d, m, y, M, x, b, _, w, S, k, E = a, + A = Re(), + N = Oe(n, t, e, r), + C = { + point: f, + lineStart: h, + lineEnd: g, + polygonStart: function() { + a = A, v = [], d = [], k = !0 + }, + polygonEnd: function() { + a = E, v = ta.merge(v); + var t = c([n, r]), + e = k && t, + u = v.length; + (e || u) && (a.polygonStart(), e && (a.lineStart(), l(null, null, 1, a), a.lineEnd()), u && Ce(v, i, t, l, a), a.polygonEnd()), v = d = m = null + } + }; + return C + } + } + + function Ye(n) { + var t = 0, + e = qa / 3, + r = ir(n), + u = r(t, e); + return u.parallels = function(n) { + return arguments.length ? r(t = n[0] * qa / 180, e = n[1] * qa / 180) : [t / qa * 180, e / qa * 180] + }, u + } + + function Ze(n, t) { + function e(n, t) { + var e = Math.sqrt(i - 2 * u * Math.sin(t)) / u; + return [e * Math.sin(n *= u), o - e * Math.cos(n)] + } + var r = Math.sin(n), + u = (r + Math.sin(t)) / 2, + i = 1 + r * (2 * u - r), + o = Math.sqrt(i) / u; + return e.invert = function(n, t) { + var e = o - t; + return [Math.atan2(n, e) / u, tt((i - (n * n + e * e) * u * u) / (2 * u))] + }, e + } + + function Ve() { + function n(n, t) { + Dc += u * n - r * t, r = n, u = t + } + var t, e, r, u; + Hc.point = function(i, o) { + Hc.point = n, t = r = i, e = u = o + }, Hc.lineEnd = function() { + n(t, e) + } + } + + function Xe(n, t) { + Pc > n && (Pc = n), n > jc && (jc = n), Uc > t && (Uc = t), t > Fc && (Fc = t) + } + + function $e() { + function n(n, t) { + o.push("M", n, ",", t, i) + } + + function t(n, t) { + o.push("M", n, ",", t), a.point = e + } + + function e(n, t) { + o.push("L", n, ",", t) + } + + function r() { + a.point = n + } + + function u() { + o.push("Z") + } + var i = Be(4.5), + o = [], + a = { + point: n, + lineStart: function() { + a.point = t + }, + lineEnd: r, + polygonStart: function() { + a.lineEnd = u + }, + polygonEnd: function() { + a.lineEnd = r, a.point = n + }, + pointRadius: function(n) { + return i = Be(n), a + }, + result: function() { + if (o.length) { + var n = o.join(""); + return o = [], n + } + } + }; + return a + } + + function Be(n) { + return "m0," + n + "a" + n + "," + n + " 0 1,1 0," + -2 * n + "a" + n + "," + n + " 0 1,1 0," + 2 * n + "z" + } + + function We(n, t) { + _c += n, wc += t, ++Sc + } + + function Je() { + function n(n, r) { + var u = n - t, + i = r - e, + o = Math.sqrt(u * u + i * i); + kc += o * (t + n) / 2, Ec += o * (e + r) / 2, Ac += o, We(t = n, e = r) + } + var t, e; + Ic.point = function(r, u) { + Ic.point = n, We(t = r, e = u) + } + } + + function Ge() { + Ic.point = We + } + + function Ke() { + function n(n, t) { + var e = n - r, + i = t - u, + o = Math.sqrt(e * e + i * i); + kc += o * (r + n) / 2, Ec += o * (u + t) / 2, Ac += o, o = u * n - r * t, Nc += o * (r + n), Cc += o * (u + t), zc += 3 * o, We(r = n, u = t) + } + var t, e, r, u; + Ic.point = function(i, o) { + Ic.point = n, We(t = r = i, e = u = o) + }, Ic.lineEnd = function() { + n(t, e) + } + } + + function Qe(n) { + function t(t, e) { + n.moveTo(t + o, e), n.arc(t, e, o, 0, La) + } + + function e(t, e) { + n.moveTo(t, e), a.point = r + } + + function r(t, e) { + n.lineTo(t, e) + } + + function u() { + a.point = t + } + + function i() { + n.closePath() + } + var o = 4.5, + a = { + point: t, + lineStart: function() { + a.point = e + }, + lineEnd: u, + polygonStart: function() { + a.lineEnd = i + }, + polygonEnd: function() { + a.lineEnd = u, a.point = t + }, + pointRadius: function(n) { + return o = n, a + }, + result: b + }; + return a + } + + function nr(n) { + function t(n) { + return (a ? r : e)(n) + } + + function e(t) { + return rr(t, function(e, r) { + e = n(e, r), t.point(e[0], e[1]) + }) + } + + function r(t) { + function e(e, r) { + e = n(e, r), t.point(e[0], e[1]) + } + + function r() { + M = 0 / 0, S.point = i, t.lineStart() + } + + function i(e, r) { + var i = pe([e, r]), + o = n(e, r); + u(M, x, y, b, _, w, M = o[0], x = o[1], y = e, b = i[0], _ = i[1], w = i[2], a, t), t.point(M, x) + } + + function o() { + S.point = e, t.lineEnd() + } + + function c() { + r(), S.point = l, S.lineEnd = s + } + + function l(n, t) { + i(f = n, h = t), g = M, p = x, v = b, d = _, m = w, S.point = i + } + + function s() { + u(M, x, y, b, _, w, g, p, f, v, d, m, a, t), S.lineEnd = o, o() + } + var f, h, g, p, v, d, m, y, M, x, b, _, w, S = { + point: e, + lineStart: r, + lineEnd: o, + polygonStart: function() { + t.polygonStart(), S.lineStart = c + }, + polygonEnd: function() { + t.polygonEnd(), S.lineStart = r + } + }; + return S + } + + function u(t, e, r, a, c, l, s, f, h, g, p, v, d, m) { + var y = s - t, + M = f - e, + x = y * y + M * M; + if (x > 4 * i && d--) { + var b = a + g, + _ = c + p, + w = l + v, + S = Math.sqrt(b * b + _ * _ + w * w), + k = Math.asin(w /= S), + E = ga(ga(w) - 1) < Ca || ga(r - h) < Ca ? (r + h) / 2 : Math.atan2(_, b), + A = n(E, k), + N = A[0], + C = A[1], + z = N - t, + q = C - e, + L = M * z - y * q; + (L * L / x > i || ga((y * z + M * q) / x - .5) > .3 || o > a * g + c * p + l * v) && (u(t, e, r, a, c, l, N, C, E, b /= S, _ /= S, w, d, m), m.point(N, C), u(N, C, E, b, _, w, s, f, h, g, p, v, d, m)) + } + } + var i = .5, + o = Math.cos(30 * Da), + a = 16; + return t.precision = function(n) { + return arguments.length ? (a = (i = n * n) > 0 && 16, t) : Math.sqrt(i) + }, t + } + + function tr(n) { + var t = nr(function(t, e) { + return n([t * Pa, e * Pa]) + }); + return function(n) { + return or(t(n)) + } + } + + function er(n) { + this.stream = n + } + + function rr(n, t) { + return { + point: t, + sphere: function() { + n.sphere() + }, + lineStart: function() { + n.lineStart() + }, + lineEnd: function() { + n.lineEnd() + }, + polygonStart: function() { + n.polygonStart() + }, + polygonEnd: function() { + n.polygonEnd() + } + } + } + + function ur(n) { + return ir(function() { + return n + })() + } + + function ir(n) { + function t(n) { + return n = a(n[0] * Da, n[1] * Da), [n[0] * h + c, l - n[1] * h] + } + + function e(n) { + return n = a.invert((n[0] - c) / h, (l - n[1]) / h), n && [n[0] * Pa, n[1] * Pa] + } + + function r() { + a = Ae(o = lr(m, M, x), i); + var n = i(v, d); + return c = g - n[0] * h, l = p + n[1] * h, u() + } + + function u() { + return s && (s.valid = !1, s = null), t + } + var i, o, a, c, l, s, f = nr(function(n, t) { + return n = i(n, t), [n[0] * h + c, l - n[1] * h] + }), + h = 150, + g = 480, + p = 250, + v = 0, + d = 0, + m = 0, + M = 0, + x = 0, + b = Lc, + _ = y, + w = null, + S = null; + return t.stream = function(n) { + return s && (s.valid = !1), s = or(b(o, f(_(n)))), s.valid = !0, s + }, t.clipAngle = function(n) { + return arguments.length ? (b = null == n ? (w = n, Lc) : He((w = +n) * Da), u()) : w + }, t.clipExtent = function(n) { + return arguments.length ? (S = n, _ = n ? Ie(n[0][0], n[0][1], n[1][0], n[1][1]) : y, u()) : S + }, t.scale = function(n) { + return arguments.length ? (h = +n, r()) : h + }, t.translate = function(n) { + return arguments.length ? (g = +n[0], p = +n[1], r()) : [g, p] + }, t.center = function(n) { + return arguments.length ? (v = n[0] % 360 * Da, d = n[1] % 360 * Da, r()) : [v * Pa, d * Pa] + }, t.rotate = function(n) { + return arguments.length ? (m = n[0] % 360 * Da, M = n[1] % 360 * Da, x = n.length > 2 ? n[2] % 360 * Da : 0, r()) : [m * Pa, M * Pa, x * Pa] + }, ta.rebind(t, f, "precision"), + function() { + return i = n.apply(this, arguments), t.invert = i.invert && e, r() + } + } + + function or(n) { + return rr(n, function(t, e) { + n.point(t * Da, e * Da) + }) + } + + function ar(n, t) { + return [n, t] + } + + function cr(n, t) { + return [n > qa ? n - La : -qa > n ? n + La : n, t] + } + + function lr(n, t, e) { + return n ? t || e ? Ae(fr(n), hr(t, e)) : fr(n) : t || e ? hr(t, e) : cr + } + + function sr(n) { + return function(t, e) { + return t += n, [t > qa ? t - La : -qa > t ? t + La : t, e] + } + } + + function fr(n) { + var t = sr(n); + return t.invert = sr(-n), t + } + + function hr(n, t) { + function e(n, t) { + var e = Math.cos(t), + a = Math.cos(n) * e, + c = Math.sin(n) * e, + l = Math.sin(t), + s = l * r + a * u; + return [Math.atan2(c * i - s * o, a * r - l * u), tt(s * i + c * o)] + } + var r = Math.cos(n), + u = Math.sin(n), + i = Math.cos(t), + o = Math.sin(t); + return e.invert = function(n, t) { + var e = Math.cos(t), + a = Math.cos(n) * e, + c = Math.sin(n) * e, + l = Math.sin(t), + s = l * i - c * o; + return [Math.atan2(c * i + l * o, a * r + s * u), tt(s * r - a * u)] + }, e + } + + function gr(n, t) { + var e = Math.cos(n), + r = Math.sin(n); + return function(u, i, o, a) { + var c = o * t; + null != u ? (u = pr(e, u), i = pr(e, i), (o > 0 ? i > u : u > i) && (u += o * La)) : (u = n + o * La, i = n - .5 * c); + for (var l, s = u; o > 0 ? s > i : i > s; s -= c) a.point((l = xe([e, -r * Math.cos(s), -r * Math.sin(s)]))[0], l[1]) + } + } + + function pr(n, t) { + var e = pe(t); + e[0] -= n, Me(e); + var r = nt(-e[1]); + return ((-e[2] < 0 ? -r : r) + 2 * Math.PI - Ca) % (2 * Math.PI) + } + + function vr(n, t, e) { + var r = ta.range(n, t - Ca, e).concat(t); + return function(n) { + return r.map(function(t) { + return [n, t] + }) + } + } + + function dr(n, t, e) { + var r = ta.range(n, t - Ca, e).concat(t); + return function(n) { + return r.map(function(t) { + return [t, n] + }) + } + } + + function mr(n) { + return n.source + } + + function yr(n) { + return n.target + } + + function Mr(n, t, e, r) { + var u = Math.cos(t), + i = Math.sin(t), + o = Math.cos(r), + a = Math.sin(r), + c = u * Math.cos(n), + l = u * Math.sin(n), + s = o * Math.cos(e), + f = o * Math.sin(e), + h = 2 * Math.asin(Math.sqrt(it(r - t) + u * o * it(e - n))), + g = 1 / Math.sin(h), + p = h ? function(n) { + var t = Math.sin(n *= h) * g, + e = Math.sin(h - n) * g, + r = e * c + t * s, + u = e * l + t * f, + o = e * i + t * a; + return [Math.atan2(u, r) * Pa, Math.atan2(o, Math.sqrt(r * r + u * u)) * Pa] + } : function() { + return [n * Pa, t * Pa] + }; + return p.distance = h, p + } + + function xr() { + function n(n, u) { + var i = Math.sin(u *= Da), + o = Math.cos(u), + a = ga((n *= Da) - t), + c = Math.cos(a); + Yc += Math.atan2(Math.sqrt((a = o * Math.sin(a)) * a + (a = r * i - e * o * c) * a), e * i + r * o * c), t = n, e = i, r = o + } + var t, e, r; + Zc.point = function(u, i) { + t = u * Da, e = Math.sin(i *= Da), r = Math.cos(i), Zc.point = n + }, Zc.lineEnd = function() { + Zc.point = Zc.lineEnd = b + } + } + + function br(n, t) { + function e(t, e) { + var r = Math.cos(t), + u = Math.cos(e), + i = n(r * u); + return [i * u * Math.sin(t), i * Math.sin(e)] + } + return e.invert = function(n, e) { + var r = Math.sqrt(n * n + e * e), + u = t(r), + i = Math.sin(u), + o = Math.cos(u); + return [Math.atan2(n * i, r * o), Math.asin(r && e * i / r)] + }, e + } + + function _r(n, t) { + function e(n, t) { + o > 0 ? -Ra + Ca > t && (t = -Ra + Ca) : t > Ra - Ca && (t = Ra - Ca); + var e = o / Math.pow(u(t), i); + return [e * Math.sin(i * n), o - e * Math.cos(i * n)] + } + var r = Math.cos(n), + u = function(n) { + return Math.tan(qa / 4 + n / 2) + }, + i = n === t ? Math.sin(n) : Math.log(r / Math.cos(t)) / Math.log(u(t) / u(n)), + o = r * Math.pow(u(n), i) / i; + return i ? (e.invert = function(n, t) { + var e = o - t, + r = K(i) * Math.sqrt(n * n + e * e); + return [Math.atan2(n, e) / i, 2 * Math.atan(Math.pow(o / r, 1 / i)) - Ra] + }, e) : Sr + } + + function wr(n, t) { + function e(n, t) { + var e = i - t; + return [e * Math.sin(u * n), i - e * Math.cos(u * n)] + } + var r = Math.cos(n), + u = n === t ? Math.sin(n) : (r - Math.cos(t)) / (t - n), + i = r / u + n; + return ga(u) < Ca ? ar : (e.invert = function(n, t) { + var e = i - t; + return [Math.atan2(n, e) / u, i - K(u) * Math.sqrt(n * n + e * e)] + }, e) + } + + function Sr(n, t) { + return [n, Math.log(Math.tan(qa / 4 + t / 2))] + } + + function kr(n) { + var t, e = ur(n), + r = e.scale, + u = e.translate, + i = e.clipExtent; + return e.scale = function() { + var n = r.apply(e, arguments); + return n === e ? t ? e.clipExtent(null) : e : n + }, e.translate = function() { + var n = u.apply(e, arguments); + return n === e ? t ? e.clipExtent(null) : e : n + }, e.clipExtent = function(n) { + var o = i.apply(e, arguments); + if (o === e) { + if (t = null == n) { + var a = qa * r(), + c = u(); + i([ + [c[0] - a, c[1] - a], + [c[0] + a, c[1] + a] + ]) + } + } else t && (o = null); + return o + }, e.clipExtent(null) + } + + function Er(n, t) { + return [Math.log(Math.tan(qa / 4 + t / 2)), -n] + } + + function Ar(n) { + return n[0] + } + + function Nr(n) { + return n[1] + } + + function Cr(n) { + for (var t = n.length, e = [0, 1], r = 2, u = 2; t > u; u++) { + for (; r > 1 && Q(n[e[r - 2]], n[e[r - 1]], n[u]) <= 0;) --r; + e[r++] = u + } + return e.slice(0, r) + } + + function zr(n, t) { + return n[0] - t[0] || n[1] - t[1] + } + + function qr(n, t, e) { + return (e[0] - t[0]) * (n[1] - t[1]) < (e[1] - t[1]) * (n[0] - t[0]) + } + + function Lr(n, t, e, r) { + var u = n[0], + i = e[0], + o = t[0] - u, + a = r[0] - i, + c = n[1], + l = e[1], + s = t[1] - c, + f = r[1] - l, + h = (a * (c - l) - f * (u - i)) / (f * o - a * s); + return [u + h * o, c + h * s] + } + + function Tr(n) { + var t = n[0], + e = n[n.length - 1]; + return !(t[0] - e[0] || t[1] - e[1]) + } + + function Rr() { + tu(this), this.edge = this.site = this.circle = null + } + + function Dr(n) { + var t = el.pop() || new Rr; + return t.site = n, t + } + + function Pr(n) { + Xr(n), Qc.remove(n), el.push(n), tu(n) + } + + function Ur(n) { + var t = n.circle, + e = t.x, + r = t.cy, + u = { + x: e, + y: r + }, + i = n.P, + o = n.N, + a = [n]; + Pr(n); + for (var c = i; c.circle && ga(e - c.circle.x) < Ca && ga(r - c.circle.cy) < Ca;) i = c.P, a.unshift(c), Pr(c), c = i; + a.unshift(c), Xr(c); + for (var l = o; l.circle && ga(e - l.circle.x) < Ca && ga(r - l.circle.cy) < Ca;) o = l.N, a.push(l), Pr(l), l = o; + a.push(l), Xr(l); + var s, f = a.length; + for (s = 1; f > s; ++s) l = a[s], c = a[s - 1], Kr(l.edge, c.site, l.site, u); + c = a[0], l = a[f - 1], l.edge = Jr(c.site, l.site, null, u), Vr(c), Vr(l) + } + + function jr(n) { + for (var t, e, r, u, i = n.x, o = n.y, a = Qc._; a;) + if (r = Fr(a, o) - i, r > Ca) a = a.L; + else { + if (u = i - Hr(a, o), !(u > Ca)) { + r > -Ca ? (t = a.P, e = a) : u > -Ca ? (t = a, e = a.N) : t = e = a; + break + } + if (!a.R) { + t = a; + break + } + a = a.R + } var c = Dr(n); + if (Qc.insert(t, c), t || e) { + if (t === e) return Xr(t), e = Dr(t.site), Qc.insert(c, e), c.edge = e.edge = Jr(t.site, c.site), Vr(t), void Vr(e); + if (!e) return void(c.edge = Jr(t.site, c.site)); + Xr(t), Xr(e); + var l = t.site, + s = l.x, + f = l.y, + h = n.x - s, + g = n.y - f, + p = e.site, + v = p.x - s, + d = p.y - f, + m = 2 * (h * d - g * v), + y = h * h + g * g, + M = v * v + d * d, + x = { + x: (d * y - g * M) / m + s, + y: (h * M - v * y) / m + f + }; + Kr(e.edge, l, p, x), c.edge = Jr(l, n, null, x), e.edge = Jr(n, p, null, x), Vr(t), Vr(e) + } + } + + function Fr(n, t) { + var e = n.site, + r = e.x, + u = e.y, + i = u - t; + if (!i) return r; + var o = n.P; + if (!o) return -1 / 0; + e = o.site; + var a = e.x, + c = e.y, + l = c - t; + if (!l) return a; + var s = a - r, + f = 1 / i - 1 / l, + h = s / l; + return f ? (-h + Math.sqrt(h * h - 2 * f * (s * s / (-2 * l) - c + l / 2 + u - i / 2))) / f + r : (r + a) / 2 + } + + function Hr(n, t) { + var e = n.N; + if (e) return Fr(e, t); + var r = n.site; + return r.y === t ? r.x : 1 / 0 + } + + function Or(n) { + this.site = n, this.edges = [] + } + + function Ir(n) { + for (var t, e, r, u, i, o, a, c, l, s, f = n[0][0], h = n[1][0], g = n[0][1], p = n[1][1], v = Kc, d = v.length; d--;) + if (i = v[d], i && i.prepare()) + for (a = i.edges, c = a.length, o = 0; c > o;) s = a[o].end(), r = s.x, u = s.y, l = a[++o % c].start(), t = l.x, e = l.y, (ga(r - t) > Ca || ga(u - e) > Ca) && (a.splice(o, 0, new Qr(Gr(i.site, s, ga(r - f) < Ca && p - u > Ca ? { + x: f, + y: ga(t - f) < Ca ? e : p + } : ga(u - p) < Ca && h - r > Ca ? { + x: ga(e - p) < Ca ? t : h, + y: p + } : ga(r - h) < Ca && u - g > Ca ? { + x: h, + y: ga(t - h) < Ca ? e : g + } : ga(u - g) < Ca && r - f > Ca ? { + x: ga(e - g) < Ca ? t : f, + y: g + } : null), i.site, null)), ++c) + } + + function Yr(n, t) { + return t.angle - n.angle + } + + function Zr() { + tu(this), this.x = this.y = this.arc = this.site = this.cy = null + } + + function Vr(n) { + var t = n.P, + e = n.N; + if (t && e) { + var r = t.site, + u = n.site, + i = e.site; + if (r !== i) { + var o = u.x, + a = u.y, + c = r.x - o, + l = r.y - a, + s = i.x - o, + f = i.y - a, + h = 2 * (c * f - l * s); + if (!(h >= -za)) { + var g = c * c + l * l, + p = s * s + f * f, + v = (f * g - l * p) / h, + d = (c * p - s * g) / h, + f = d + a, + m = rl.pop() || new Zr; + m.arc = n, m.site = u, m.x = v + o, m.y = f + Math.sqrt(v * v + d * d), m.cy = f, n.circle = m; + for (var y = null, M = tl._; M;) + if (m.y < M.y || m.y === M.y && m.x <= M.x) { + if (!M.L) { + y = M.P; + break + } + M = M.L + } else { + if (!M.R) { + y = M; + break + } + M = M.R + } tl.insert(y, m), y || (nl = m) + } + } + } + } + + function Xr(n) { + var t = n.circle; + t && (t.P || (nl = t.N), tl.remove(t), rl.push(t), tu(t), n.circle = null) + } + + function $r(n) { + for (var t, e = Gc, r = Oe(n[0][0], n[0][1], n[1][0], n[1][1]), u = e.length; u--;) t = e[u], (!Br(t, n) || !r(t) || ga(t.a.x - t.b.x) < Ca && ga(t.a.y - t.b.y) < Ca) && (t.a = t.b = null, e.splice(u, 1)) + } + + function Br(n, t) { + var e = n.b; + if (e) return !0; + var r, u, i = n.a, + o = t[0][0], + a = t[1][0], + c = t[0][1], + l = t[1][1], + s = n.l, + f = n.r, + h = s.x, + g = s.y, + p = f.x, + v = f.y, + d = (h + p) / 2, + m = (g + v) / 2; + if (v === g) { + if (o > d || d >= a) return; + if (h > p) { + if (i) { + if (i.y >= l) return + } else i = { + x: d, + y: c + }; + e = { + x: d, + y: l + } + } else { + if (i) { + if (i.y < c) return + } else i = { + x: d, + y: l + }; + e = { + x: d, + y: c + } + } + } else if (r = (h - p) / (v - g), u = m - r * d, -1 > r || r > 1) + if (h > p) { + if (i) { + if (i.y >= l) return + } else i = { + x: (c - u) / r, + y: c + }; + e = { + x: (l - u) / r, + y: l + } + } else { + if (i) { + if (i.y < c) return + } else i = { + x: (l - u) / r, + y: l + }; + e = { + x: (c - u) / r, + y: c + } + } + else if (v > g) { + if (i) { + if (i.x >= a) return + } else i = { + x: o, + y: r * o + u + }; + e = { + x: a, + y: r * a + u + } + } else { + if (i) { + if (i.x < o) return + } else i = { + x: a, + y: r * a + u + }; + e = { + x: o, + y: r * o + u + } + } + return n.a = i, n.b = e, !0 + } + + function Wr(n, t) { + this.l = n, this.r = t, this.a = this.b = null + } + + function Jr(n, t, e, r) { + var u = new Wr(n, t); + return Gc.push(u), e && Kr(u, n, t, e), r && Kr(u, t, n, r), Kc[n.i].edges.push(new Qr(u, n, t)), Kc[t.i].edges.push(new Qr(u, t, n)), u + } + + function Gr(n, t, e) { + var r = new Wr(n, null); + return r.a = t, r.b = e, Gc.push(r), r + } + + function Kr(n, t, e, r) { + n.a || n.b ? n.l === e ? n.b = r : n.a = r : (n.a = r, n.l = t, n.r = e) + } + + function Qr(n, t, e) { + var r = n.a, + u = n.b; + this.edge = n, this.site = t, this.angle = e ? Math.atan2(e.y - t.y, e.x - t.x) : n.l === t ? Math.atan2(u.x - r.x, r.y - u.y) : Math.atan2(r.x - u.x, u.y - r.y) + } + + function nu() { + this._ = null + } + + function tu(n) { + n.U = n.C = n.L = n.R = n.P = n.N = null + } + + function eu(n, t) { + var e = t, + r = t.R, + u = e.U; + u ? u.L === e ? u.L = r : u.R = r : n._ = r, r.U = u, e.U = r, e.R = r.L, e.R && (e.R.U = e), r.L = e + } + + function ru(n, t) { + var e = t, + r = t.L, + u = e.U; + u ? u.L === e ? u.L = r : u.R = r : n._ = r, r.U = u, e.U = r, e.L = r.R, e.L && (e.L.U = e), r.R = e + } + + function uu(n) { + for (; n.L;) n = n.L; + return n + } + + function iu(n, t) { + var e, r, u, i = n.sort(ou).pop(); + for (Gc = [], Kc = new Array(n.length), Qc = new nu, tl = new nu;;) + if (u = nl, i && (!u || i.y < u.y || i.y === u.y && i.x < u.x))(i.x !== e || i.y !== r) && (Kc[i.i] = new Or(i), jr(i), e = i.x, r = i.y), i = n.pop(); + else { + if (!u) break; + Ur(u.arc) + } t && ($r(t), Ir(t)); + var o = { + cells: Kc, + edges: Gc + }; + return Qc = tl = Gc = Kc = null, o + } + + function ou(n, t) { + return t.y - n.y || t.x - n.x + } + + function au(n, t, e) { + return (n.x - e.x) * (t.y - n.y) - (n.x - t.x) * (e.y - n.y) + } + + function cu(n) { + return n.x + } + + function lu(n) { + return n.y + } + + function su() { + return { + leaf: !0, + nodes: [], + point: null, + x: null, + y: null + } + } + + function fu(n, t, e, r, u, i) { + if (!n(t, e, r, u, i)) { + var o = .5 * (e + u), + a = .5 * (r + i), + c = t.nodes; + c[0] && fu(n, c[0], e, r, o, a), c[1] && fu(n, c[1], o, r, u, a), c[2] && fu(n, c[2], e, a, o, i), c[3] && fu(n, c[3], o, a, u, i) + } + } + + function hu(n, t, e, r, u, i, o) { + var a, c = 1 / 0; + return function l(n, s, f, h, g) { + if (!(s > i || f > o || r > h || u > g)) { + if (p = n.point) { + var p, v = t - n.x, + d = e - n.y, + m = v * v + d * d; + if (c > m) { + var y = Math.sqrt(c = m); + r = t - y, u = e - y, i = t + y, o = e + y, a = p + } + } + for (var M = n.nodes, x = .5 * (s + h), b = .5 * (f + g), _ = t >= x, w = e >= b, S = w << 1 | _, k = S + 4; k > S; ++S) + if (n = M[3 & S]) switch (3 & S) { + case 0: + l(n, s, f, x, b); + break; + case 1: + l(n, x, f, h, b); + break; + case 2: + l(n, s, b, x, g); + break; + case 3: + l(n, x, b, h, g) + } + } + }(n, r, u, i, o), a + } + + function gu(n, t) { + n = ta.rgb(n), t = ta.rgb(t); + var e = n.r, + r = n.g, + u = n.b, + i = t.r - e, + o = t.g - r, + a = t.b - u; + return function(n) { + return "#" + xt(Math.round(e + i * n)) + xt(Math.round(r + o * n)) + xt(Math.round(u + a * n)) + } + } + + function pu(n, t) { + var e, r = {}, + u = {}; + for (e in n) e in t ? r[e] = mu(n[e], t[e]) : u[e] = n[e]; + for (e in t) e in n || (u[e] = t[e]); + return function(n) { + for (e in r) u[e] = r[e](n); + return u + } + } + + function vu(n, t) { + return n = +n, t = +t, + function(e) { + return n * (1 - e) + t * e + } + } + + function du(n, t) { + var e, r, u, i = il.lastIndex = ol.lastIndex = 0, + o = -1, + a = [], + c = []; + for (n += "", t += ""; + (e = il.exec(n)) && (r = ol.exec(t));)(u = r.index) > i && (u = t.slice(i, u), a[o] ? a[o] += u : a[++o] = u), (e = e[0]) === (r = r[0]) ? a[o] ? a[o] += r : a[++o] = r : (a[++o] = null, c.push({ + i: o, + x: vu(e, r) + })), i = ol.lastIndex; + return i < t.length && (u = t.slice(i), a[o] ? a[o] += u : a[++o] = u), a.length < 2 ? c[0] ? (t = c[0].x, function(n) { + return t(n) + "" + }) : function() { + return t + } : (t = c.length, function(n) { + for (var e, r = 0; t > r; ++r) a[(e = c[r]).i] = e.x(n); + return a.join("") + }) + } + + function mu(n, t) { + for (var e, r = ta.interpolators.length; --r >= 0 && !(e = ta.interpolators[r](n, t));); + return e + } + + function yu(n, t) { + var e, r = [], + u = [], + i = n.length, + o = t.length, + a = Math.min(n.length, t.length); + for (e = 0; a > e; ++e) r.push(mu(n[e], t[e])); + for (; i > e; ++e) u[e] = n[e]; + for (; o > e; ++e) u[e] = t[e]; + return function(n) { + for (e = 0; a > e; ++e) u[e] = r[e](n); + return u + } + } + + function Mu(n) { + return function(t) { + return 0 >= t ? 0 : t >= 1 ? 1 : n(t) + } + } + + function xu(n) { + return function(t) { + return 1 - n(1 - t) + } + } + + function bu(n) { + return function(t) { + return .5 * (.5 > t ? n(2 * t) : 2 - n(2 - 2 * t)) + } + } + + function _u(n) { + return n * n + } + + function wu(n) { + return n * n * n + } + + function Su(n) { + if (0 >= n) return 0; + if (n >= 1) return 1; + var t = n * n, + e = t * n; + return 4 * (.5 > n ? e : 3 * (n - t) + e - .75) + } + + function ku(n) { + return function(t) { + return Math.pow(t, n) + } + } + + function Eu(n) { + return 1 - Math.cos(n * Ra) + } + + function Au(n) { + return Math.pow(2, 10 * (n - 1)) + } + + function Nu(n) { + return 1 - Math.sqrt(1 - n * n) + } + + function Cu(n, t) { + var e; + return arguments.length < 2 && (t = .45), arguments.length ? e = t / La * Math.asin(1 / n) : (n = 1, e = t / 4), + function(r) { + return 1 + n * Math.pow(2, -10 * r) * Math.sin((r - e) * La / t) + } + } + + function zu(n) { + return n || (n = 1.70158), + function(t) { + return t * t * ((n + 1) * t - n) + } + } + + function qu(n) { + return 1 / 2.75 > n ? 7.5625 * n * n : 2 / 2.75 > n ? 7.5625 * (n -= 1.5 / 2.75) * n + .75 : 2.5 / 2.75 > n ? 7.5625 * (n -= 2.25 / 2.75) * n + .9375 : 7.5625 * (n -= 2.625 / 2.75) * n + .984375 + } + + function Lu(n, t) { + n = ta.hcl(n), t = ta.hcl(t); + var e = n.h, + r = n.c, + u = n.l, + i = t.h - e, + o = t.c - r, + a = t.l - u; + return isNaN(o) && (o = 0, r = isNaN(r) ? t.c : r), isNaN(i) ? (i = 0, e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), + function(n) { + return st(e + i * n, r + o * n, u + a * n) + "" + } + } + + function Tu(n, t) { + n = ta.hsl(n), t = ta.hsl(t); + var e = n.h, + r = n.s, + u = n.l, + i = t.h - e, + o = t.s - r, + a = t.l - u; + return isNaN(o) && (o = 0, r = isNaN(r) ? t.s : r), isNaN(i) ? (i = 0, e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), + function(n) { + return ct(e + i * n, r + o * n, u + a * n) + "" + } + } + + function Ru(n, t) { + n = ta.lab(n), t = ta.lab(t); + var e = n.l, + r = n.a, + u = n.b, + i = t.l - e, + o = t.a - r, + a = t.b - u; + return function(n) { + return ht(e + i * n, r + o * n, u + a * n) + "" + } + } + + function Du(n, t) { + return t -= n, + function(e) { + return Math.round(n + t * e) + } + } + + function Pu(n) { + var t = [n.a, n.b], + e = [n.c, n.d], + r = ju(t), + u = Uu(t, e), + i = ju(Fu(e, t, -u)) || 0; + t[0] * e[1] < e[0] * t[1] && (t[0] *= -1, t[1] *= -1, r *= -1, u *= -1), this.rotate = (r ? Math.atan2(t[1], t[0]) : Math.atan2(-e[0], e[1])) * Pa, this.translate = [n.e, n.f], this.scale = [r, i], this.skew = i ? Math.atan2(u, i) * Pa : 0 + } + + function Uu(n, t) { + return n[0] * t[0] + n[1] * t[1] + } + + function ju(n) { + var t = Math.sqrt(Uu(n, n)); + return t && (n[0] /= t, n[1] /= t), t + } + + function Fu(n, t, e) { + return n[0] += e * t[0], n[1] += e * t[1], n + } + + function Hu(n, t) { + var e, r = [], + u = [], + i = ta.transform(n), + o = ta.transform(t), + a = i.translate, + c = o.translate, + l = i.rotate, + s = o.rotate, + f = i.skew, + h = o.skew, + g = i.scale, + p = o.scale; + return a[0] != c[0] || a[1] != c[1] ? (r.push("translate(", null, ",", null, ")"), u.push({ + i: 1, + x: vu(a[0], c[0]) + }, { + i: 3, + x: vu(a[1], c[1]) + })) : r.push(c[0] || c[1] ? "translate(" + c + ")" : ""), l != s ? (l - s > 180 ? s += 360 : s - l > 180 && (l += 360), u.push({ + i: r.push(r.pop() + "rotate(", null, ")") - 2, + x: vu(l, s) + })) : s && r.push(r.pop() + "rotate(" + s + ")"), f != h ? u.push({ + i: r.push(r.pop() + "skewX(", null, ")") - 2, + x: vu(f, h) + }) : h && r.push(r.pop() + "skewX(" + h + ")"), g[0] != p[0] || g[1] != p[1] ? (e = r.push(r.pop() + "scale(", null, ",", null, ")"), u.push({ + i: e - 4, + x: vu(g[0], p[0]) + }, { + i: e - 2, + x: vu(g[1], p[1]) + })) : (1 != p[0] || 1 != p[1]) && r.push(r.pop() + "scale(" + p + ")"), e = u.length, + function(n) { + for (var t, i = -1; ++i < e;) r[(t = u[i]).i] = t.x(n); + return r.join("") + } + } + + function Ou(n, t) { + return t = (t -= n = +n) || 1 / t, + function(e) { + return (e - n) / t + } + } + + function Iu(n, t) { + return t = (t -= n = +n) || 1 / t, + function(e) { + return Math.max(0, Math.min(1, (e - n) / t)) + } + } + + function Yu(n) { + for (var t = n.source, e = n.target, r = Vu(t, e), u = [t]; t !== r;) t = t.parent, u.push(t); + for (var i = u.length; e !== r;) u.splice(i, 0, e), e = e.parent; + return u + } + + function Zu(n) { + for (var t = [], e = n.parent; null != e;) t.push(n), n = e, e = e.parent; + return t.push(n), t + } + + function Vu(n, t) { + if (n === t) return n; + for (var e = Zu(n), r = Zu(t), u = e.pop(), i = r.pop(), o = null; u === i;) o = u, u = e.pop(), i = r.pop(); + return o + } + + function Xu(n) { + n.fixed |= 2 + } + + function $u(n) { + n.fixed &= -7 + } + + function Bu(n) { + n.fixed |= 4, n.px = n.x, n.py = n.y + } + + function Wu(n) { + n.fixed &= -5 + } + + function Ju(n, t, e) { + var r = 0, + u = 0; + if (n.charge = 0, !n.leaf) + for (var i, o = n.nodes, a = o.length, c = -1; ++c < a;) i = o[c], null != i && (Ju(i, t, e), n.charge += i.charge, r += i.charge * i.cx, u += i.charge * i.cy); + if (n.point) { + n.leaf || (n.point.x += Math.random() - .5, n.point.y += Math.random() - .5); + var l = t * e[n.point.index]; + n.charge += n.pointCharge = l, r += l * n.point.x, u += l * n.point.y + } + n.cx = r / n.charge, n.cy = u / n.charge + } + + function Gu(n, t) { + return ta.rebind(n, t, "sort", "children", "value"), n.nodes = n, n.links = ri, n + } + + function Ku(n, t) { + for (var e = [n]; null != (n = e.pop());) + if (t(n), (u = n.children) && (r = u.length)) + for (var r, u; --r >= 0;) e.push(u[r]) + } + + function Qu(n, t) { + for (var e = [n], r = []; null != (n = e.pop());) + if (r.push(n), (i = n.children) && (u = i.length)) + for (var u, i, o = -1; ++o < u;) e.push(i[o]); + for (; null != (n = r.pop());) t(n) + } + + function ni(n) { + return n.children + } + + function ti(n) { + return n.value + } + + function ei(n, t) { + return t.value - n.value + } + + function ri(n) { + return ta.merge(n.map(function(n) { + return (n.children || []).map(function(t) { + return { + source: n, + target: t + } + }) + })) + } + + function ui(n) { + return n.x + } + + function ii(n) { + return n.y + } + + function oi(n, t, e) { + n.y0 = t, n.y = e + } + + function ai(n) { + return ta.range(n.length) + } + + function ci(n) { + for (var t = -1, e = n[0].length, r = []; ++t < e;) r[t] = 0; + return r + } + + function li(n) { + for (var t, e = 1, r = 0, u = n[0][1], i = n.length; i > e; ++e)(t = n[e][1]) > u && (r = e, u = t); + return r + } + + function si(n) { + return n.reduce(fi, 0) + } + + function fi(n, t) { + return n + t[1] + } + + function hi(n, t) { + return gi(n, Math.ceil(Math.log(t.length) / Math.LN2 + 1)) + } + + function gi(n, t) { + for (var e = -1, r = +n[0], u = (n[1] - r) / t, i = []; ++e <= t;) i[e] = u * e + r; + return i + } + + function pi(n) { + return [ta.min(n), ta.max(n)] + } + + function vi(n, t) { + return n.value - t.value + } + + function di(n, t) { + var e = n._pack_next; + n._pack_next = t, t._pack_prev = n, t._pack_next = e, e._pack_prev = t + } + + function mi(n, t) { + n._pack_next = t, t._pack_prev = n + } + + function yi(n, t) { + var e = t.x - n.x, + r = t.y - n.y, + u = n.r + t.r; + return .999 * u * u > e * e + r * r + } + + function Mi(n) { + function t(n) { + s = Math.min(n.x - n.r, s), f = Math.max(n.x + n.r, f), h = Math.min(n.y - n.r, h), g = Math.max(n.y + n.r, g) + } + if ((e = n.children) && (l = e.length)) { + var e, r, u, i, o, a, c, l, s = 1 / 0, + f = -1 / 0, + h = 1 / 0, + g = -1 / 0; + if (e.forEach(xi), r = e[0], r.x = -r.r, r.y = 0, t(r), l > 1 && (u = e[1], u.x = u.r, u.y = 0, t(u), l > 2)) + for (i = e[2], wi(r, u, i), t(i), di(r, i), r._pack_prev = i, di(i, u), u = r._pack_next, o = 3; l > o; o++) { + wi(r, u, i = e[o]); + var p = 0, + v = 1, + d = 1; + for (a = u._pack_next; a !== u; a = a._pack_next, v++) + if (yi(a, i)) { + p = 1; + break + } if (1 == p) + for (c = r._pack_prev; c !== a._pack_prev && !yi(c, i); c = c._pack_prev, d++); + p ? (d > v || v == d && u.r < r.r ? mi(r, u = a) : mi(r = c, u), o--) : (di(r, i), u = i, t(i)) + } + var m = (s + f) / 2, + y = (h + g) / 2, + M = 0; + for (o = 0; l > o; o++) i = e[o], i.x -= m, i.y -= y, M = Math.max(M, i.r + Math.sqrt(i.x * i.x + i.y * i.y)); + n.r = M, e.forEach(bi) + } + } + + function xi(n) { + n._pack_next = n._pack_prev = n + } + + function bi(n) { + delete n._pack_next, delete n._pack_prev + } + + function _i(n, t, e, r) { + var u = n.children; + if (n.x = t += r * n.x, n.y = e += r * n.y, n.r *= r, u) + for (var i = -1, o = u.length; ++i < o;) _i(u[i], t, e, r) + } + + function wi(n, t, e) { + var r = n.r + e.r, + u = t.x - n.x, + i = t.y - n.y; + if (r && (u || i)) { + var o = t.r + e.r, + a = u * u + i * i; + o *= o, r *= r; + var c = .5 + (r - o) / (2 * a), + l = Math.sqrt(Math.max(0, 2 * o * (r + a) - (r -= a) * r - o * o)) / (2 * a); + e.x = n.x + c * u + l * i, e.y = n.y + c * i - l * u + } else e.x = n.x + r, e.y = n.y + } + + function Si(n, t) { + return n.parent == t.parent ? 1 : 2 + } + + function ki(n) { + var t = n.children; + return t.length ? t[0] : n.t + } + + function Ei(n) { + var t, e = n.children; + return (t = e.length) ? e[t - 1] : n.t + } + + function Ai(n, t, e) { + var r = e / (t.i - n.i); + t.c -= r, t.s += e, n.c += r, t.z += e, t.m += e + } + + function Ni(n) { + for (var t, e = 0, r = 0, u = n.children, i = u.length; --i >= 0;) t = u[i], t.z += e, t.m += e, e += t.s + (r += t.c) + } + + function Ci(n, t, e) { + return n.a.parent === t.parent ? n.a : e + } + + function zi(n) { + return 1 + ta.max(n, function(n) { + return n.y + }) + } + + function qi(n) { + return n.reduce(function(n, t) { + return n + t.x + }, 0) / n.length + } + + function Li(n) { + var t = n.children; + return t && t.length ? Li(t[0]) : n + } + + function Ti(n) { + var t, e = n.children; + return e && (t = e.length) ? Ti(e[t - 1]) : n + } + + function Ri(n) { + return { + x: n.x, + y: n.y, + dx: n.dx, + dy: n.dy + } + } + + function Di(n, t) { + var e = n.x + t[3], + r = n.y + t[0], + u = n.dx - t[1] - t[3], + i = n.dy - t[0] - t[2]; + return 0 > u && (e += u / 2, u = 0), 0 > i && (r += i / 2, i = 0), { + x: e, + y: r, + dx: u, + dy: i + } + } + + function Pi(n) { + var t = n[0], + e = n[n.length - 1]; + return e > t ? [t, e] : [e, t] + } + + function Ui(n) { + return n.rangeExtent ? n.rangeExtent() : Pi(n.range()) + } + + function ji(n, t, e, r) { + var u = e(n[0], n[1]), + i = r(t[0], t[1]); + return function(n) { + return i(u(n)) + } + } + + function Fi(n, t) { + var e, r = 0, + u = n.length - 1, + i = n[r], + o = n[u]; + return i > o && (e = r, r = u, u = e, e = i, i = o, o = e), n[r] = t.floor(i), n[u] = t.ceil(o), n + } + + function Hi(n) { + return n ? { + floor: function(t) { + return Math.floor(t / n) * n + }, + ceil: function(t) { + return Math.ceil(t / n) * n + } + } : ml + } + + function Oi(n, t, e, r) { + var u = [], + i = [], + o = 0, + a = Math.min(n.length, t.length) - 1; + for (n[a] < n[0] && (n = n.slice().reverse(), t = t.slice().reverse()); ++o <= a;) u.push(e(n[o - 1], n[o])), i.push(r(t[o - 1], t[o])); + return function(t) { + var e = ta.bisect(n, t, 1, a) - 1; + return i[e](u[e](t)) + } + } + + function Ii(n, t, e, r) { + function u() { + var u = Math.min(n.length, t.length) > 2 ? Oi : ji, + c = r ? Iu : Ou; + return o = u(n, t, c, e), a = u(t, n, c, mu), i + } + + function i(n) { + return o(n) + } + var o, a; + return i.invert = function(n) { + return a(n) + }, i.domain = function(t) { + return arguments.length ? (n = t.map(Number), u()) : n + }, i.range = function(n) { + return arguments.length ? (t = n, u()) : t + }, i.rangeRound = function(n) { + return i.range(n).interpolate(Du) + }, i.clamp = function(n) { + return arguments.length ? (r = n, u()) : r + }, i.interpolate = function(n) { + return arguments.length ? (e = n, u()) : e + }, i.ticks = function(t) { + return Xi(n, t) + }, i.tickFormat = function(t, e) { + return $i(n, t, e) + }, i.nice = function(t) { + return Zi(n, t), u() + }, i.copy = function() { + return Ii(n, t, e, r) + }, u() + } + + function Yi(n, t) { + return ta.rebind(n, t, "range", "rangeRound", "interpolate", "clamp") + } + + function Zi(n, t) { + return Fi(n, Hi(Vi(n, t)[2])) + } + + function Vi(n, t) { + null == t && (t = 10); + var e = Pi(n), + r = e[1] - e[0], + u = Math.pow(10, Math.floor(Math.log(r / t) / Math.LN10)), + i = t / r * u; + return .15 >= i ? u *= 10 : .35 >= i ? u *= 5 : .75 >= i && (u *= 2), e[0] = Math.ceil(e[0] / u) * u, e[1] = Math.floor(e[1] / u) * u + .5 * u, e[2] = u, e + } + + function Xi(n, t) { + return ta.range.apply(ta, Vi(n, t)) + } + + function $i(n, t, e) { + var r = Vi(n, t); + if (e) { + var u = ic.exec(e); + if (u.shift(), "s" === u[8]) { + var i = ta.formatPrefix(Math.max(ga(r[0]), ga(r[1]))); + return u[7] || (u[7] = "." + Bi(i.scale(r[2]))), u[8] = "f", e = ta.format(u.join("")), + function(n) { + return e(i.scale(n)) + i.symbol + } + } + u[7] || (u[7] = "." + Wi(u[8], r)), e = u.join("") + } else e = ",." + Bi(r[2]) + "f"; + return ta.format(e) + } + + function Bi(n) { + return -Math.floor(Math.log(n) / Math.LN10 + .01) + } + + function Wi(n, t) { + var e = Bi(t[2]); + return n in yl ? Math.abs(e - Bi(Math.max(ga(t[0]), ga(t[1])))) + +("e" !== n) : e - 2 * ("%" === n) + } + + function Ji(n, t, e, r) { + function u(n) { + return (e ? Math.log(0 > n ? 0 : n) : -Math.log(n > 0 ? 0 : -n)) / Math.log(t) + } + + function i(n) { + return e ? Math.pow(t, n) : -Math.pow(t, -n) + } + + function o(t) { + return n(u(t)) + } + return o.invert = function(t) { + return i(n.invert(t)) + }, o.domain = function(t) { + return arguments.length ? (e = t[0] >= 0, n.domain((r = t.map(Number)).map(u)), o) : r + }, o.base = function(e) { + return arguments.length ? (t = +e, n.domain(r.map(u)), o) : t + }, o.nice = function() { + var t = Fi(r.map(u), e ? Math : xl); + return n.domain(t), r = t.map(i), o + }, o.ticks = function() { + var n = Pi(r), + o = [], + a = n[0], + c = n[1], + l = Math.floor(u(a)), + s = Math.ceil(u(c)), + f = t % 1 ? 2 : t; + if (isFinite(s - l)) { + if (e) { + for (; s > l; l++) + for (var h = 1; f > h; h++) o.push(i(l) * h); + o.push(i(l)) + } else + for (o.push(i(l)); l++ < s;) + for (var h = f - 1; h > 0; h--) o.push(i(l) * h); + for (l = 0; o[l] < a; l++); + for (s = o.length; o[s - 1] > c; s--); + o = o.slice(l, s) + } + return o + }, o.tickFormat = function(n, t) { + if (!arguments.length) return Ml; + arguments.length < 2 ? t = Ml : "function" != typeof t && (t = ta.format(t)); + var r, a = Math.max(.1, n / o.ticks().length), + c = e ? (r = 1e-12, Math.ceil) : (r = -1e-12, Math.floor); + return function(n) { + return n / i(c(u(n) + r)) <= a ? t(n) : "" + } + }, o.copy = function() { + return Ji(n.copy(), t, e, r) + }, Yi(o, n) + } + + function Gi(n, t, e) { + function r(t) { + return n(u(t)) + } + var u = Ki(t), + i = Ki(1 / t); + return r.invert = function(t) { + return i(n.invert(t)) + }, r.domain = function(t) { + return arguments.length ? (n.domain((e = t.map(Number)).map(u)), r) : e + }, r.ticks = function(n) { + return Xi(e, n) + }, r.tickFormat = function(n, t) { + return $i(e, n, t) + }, r.nice = function(n) { + return r.domain(Zi(e, n)) + }, r.exponent = function(o) { + return arguments.length ? (u = Ki(t = o), i = Ki(1 / t), n.domain(e.map(u)), r) : t + }, r.copy = function() { + return Gi(n.copy(), t, e) + }, Yi(r, n) + } + + function Ki(n) { + return function(t) { + return 0 > t ? -Math.pow(-t, n) : Math.pow(t, n) + } + } + + function Qi(n, t) { + function e(e) { + return i[((u.get(e) || ("range" === t.t ? u.set(e, n.push(e)) : 0 / 0)) - 1) % i.length] + } + + function r(t, e) { + return ta.range(n.length).map(function(n) { + return t + e * n + }) + } + var u, i, o; + return e.domain = function(r) { + if (!arguments.length) return n; + n = [], u = new l; + for (var i, o = -1, a = r.length; ++o < a;) u.has(i = r[o]) || u.set(i, n.push(i)); + return e[t.t].apply(e, t.a) + }, e.range = function(n) { + return arguments.length ? (i = n, o = 0, t = { + t: "range", + a: arguments + }, e) : i + }, e.rangePoints = function(u, a) { + arguments.length < 2 && (a = 0); + var c = u[0], + l = u[1], + s = n.length < 2 ? (c = (c + l) / 2, 0) : (l - c) / (n.length - 1 + a); + return i = r(c + s * a / 2, s), o = 0, t = { + t: "rangePoints", + a: arguments + }, e + }, e.rangeRoundPoints = function(u, a) { + arguments.length < 2 && (a = 0); + var c = u[0], + l = u[1], + s = n.length < 2 ? (c = l = Math.round((c + l) / 2), 0) : (l - c) / (n.length - 1 + a) | 0; + return i = r(c + Math.round(s * a / 2 + (l - c - (n.length - 1 + a) * s) / 2), s), o = 0, t = { + t: "rangeRoundPoints", + a: arguments + }, e + }, e.rangeBands = function(u, a, c) { + arguments.length < 2 && (a = 0), arguments.length < 3 && (c = a); + var l = u[1] < u[0], + s = u[l - 0], + f = u[1 - l], + h = (f - s) / (n.length - a + 2 * c); + return i = r(s + h * c, h), l && i.reverse(), o = h * (1 - a), t = { + t: "rangeBands", + a: arguments + }, e + }, e.rangeRoundBands = function(u, a, c) { + arguments.length < 2 && (a = 0), arguments.length < 3 && (c = a); + var l = u[1] < u[0], + s = u[l - 0], + f = u[1 - l], + h = Math.floor((f - s) / (n.length - a + 2 * c)); + return i = r(s + Math.round((f - s - (n.length - a) * h) / 2), h), l && i.reverse(), o = Math.round(h * (1 - a)), t = { + t: "rangeRoundBands", + a: arguments + }, e + }, e.rangeBand = function() { + return o + }, e.rangeExtent = function() { + return Pi(t.a[0]) + }, e.copy = function() { + return Qi(n, t) + }, e.domain(n) + } + + function no(n, t) { + function i() { + var e = 0, + r = t.length; + for (a = []; ++e < r;) a[e - 1] = ta.quantile(n, e / r); + return o + } + + function o(n) { + return isNaN(n = +n) ? void 0 : t[ta.bisect(a, n)] + } + var a; + return o.domain = function(t) { + return arguments.length ? (n = t.map(r).filter(u).sort(e), i()) : n + }, o.range = function(n) { + return arguments.length ? (t = n, i()) : t + }, o.quantiles = function() { + return a + }, o.invertExtent = function(e) { + return e = t.indexOf(e), 0 > e ? [0 / 0, 0 / 0] : [e > 0 ? a[e - 1] : n[0], e < a.length ? a[e] : n[n.length - 1]] + }, o.copy = function() { + return no(n, t) + }, i() + } + + function to(n, t, e) { + function r(t) { + return e[Math.max(0, Math.min(o, Math.floor(i * (t - n))))] + } + + function u() { + return i = e.length / (t - n), o = e.length - 1, r + } + var i, o; + return r.domain = function(e) { + return arguments.length ? (n = +e[0], t = +e[e.length - 1], u()) : [n, t] + }, r.range = function(n) { + return arguments.length ? (e = n, u()) : e + }, r.invertExtent = function(t) { + return t = e.indexOf(t), t = 0 > t ? 0 / 0 : t / i + n, [t, t + 1 / i] + }, r.copy = function() { + return to(n, t, e) + }, u() + } + + function eo(n, t) { + function e(e) { + return e >= e ? t[ta.bisect(n, e)] : void 0 + } + return e.domain = function(t) { + return arguments.length ? (n = t, e) : n + }, e.range = function(n) { + return arguments.length ? (t = n, e) : t + }, e.invertExtent = function(e) { + return e = t.indexOf(e), [n[e - 1], n[e]] + }, e.copy = function() { + return eo(n, t) + }, e + } + + function ro(n) { + function t(n) { + return +n + } + return t.invert = t, t.domain = t.range = function(e) { + return arguments.length ? (n = e.map(t), t) : n + }, t.ticks = function(t) { + return Xi(n, t) + }, t.tickFormat = function(t, e) { + return $i(n, t, e) + }, t.copy = function() { + return ro(n) + }, t + } + + function uo() { + return 0 + } + + function io(n) { + return n.innerRadius + } + + function oo(n) { + return n.outerRadius + } + + function ao(n) { + return n.startAngle + } + + function co(n) { + return n.endAngle + } + + function lo(n) { + return n && n.padAngle + } + + function so(n, t, e, r) { + return (n - e) * t - (t - r) * n > 0 ? 0 : 1 + } + + function fo(n, t, e, r, u) { + var i = n[0] - t[0], + o = n[1] - t[1], + a = (u ? r : -r) / Math.sqrt(i * i + o * o), + c = a * o, + l = -a * i, + s = n[0] + c, + f = n[1] + l, + h = t[0] + c, + g = t[1] + l, + p = (s + h) / 2, + v = (f + g) / 2, + d = h - s, + m = g - f, + y = d * d + m * m, + M = e - r, + x = s * g - h * f, + b = (0 > m ? -1 : 1) * Math.sqrt(M * M * y - x * x), + _ = (x * m - d * b) / y, + w = (-x * d - m * b) / y, + S = (x * m + d * b) / y, + k = (-x * d + m * b) / y, + E = _ - p, + A = w - v, + N = S - p, + C = k - v; + return E * E + A * A > N * N + C * C && (_ = S, w = k), [ + [_ - c, w - l], + [_ * e / M, w * e / M] + ] + } + + function ho(n) { + function t(t) { + function o() { + l.push("M", i(n(s), a)) + } + for (var c, l = [], s = [], f = -1, h = t.length, g = Et(e), p = Et(r); ++f < h;) u.call(this, c = t[f], f) ? s.push([+g.call(this, c, f), +p.call(this, c, f)]) : s.length && (o(), s = []); + return s.length && o(), l.length ? l.join("") : null + } + var e = Ar, + r = Nr, + u = Ne, + i = go, + o = i.key, + a = .7; + return t.x = function(n) { + return arguments.length ? (e = n, t) : e + }, t.y = function(n) { + return arguments.length ? (r = n, t) : r + }, t.defined = function(n) { + return arguments.length ? (u = n, t) : u + }, t.interpolate = function(n) { + return arguments.length ? (o = "function" == typeof n ? i = n : (i = El.get(n) || go).key, t) : o + }, t.tension = function(n) { + return arguments.length ? (a = n, t) : a + }, t + } + + function go(n) { + return n.join("L") + } + + function po(n) { + return go(n) + "Z" + } + + function vo(n) { + for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("H", (r[0] + (r = n[t])[0]) / 2, "V", r[1]); + return e > 1 && u.push("H", r[0]), u.join("") + } + + function mo(n) { + for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("V", (r = n[t])[1], "H", r[0]); + return u.join("") + } + + function yo(n) { + for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("H", (r = n[t])[0], "V", r[1]); + return u.join("") + } + + function Mo(n, t) { + return n.length < 4 ? go(n) : n[1] + _o(n.slice(1, -1), wo(n, t)) + } + + function xo(n, t) { + return n.length < 3 ? go(n) : n[0] + _o((n.push(n[0]), n), wo([n[n.length - 2]].concat(n, [n[1]]), t)) + } + + function bo(n, t) { + return n.length < 3 ? go(n) : n[0] + _o(n, wo(n, t)) + } + + function _o(n, t) { + if (t.length < 1 || n.length != t.length && n.length != t.length + 2) return go(n); + var e = n.length != t.length, + r = "", + u = n[0], + i = n[1], + o = t[0], + a = o, + c = 1; + if (e && (r += "Q" + (i[0] - 2 * o[0] / 3) + "," + (i[1] - 2 * o[1] / 3) + "," + i[0] + "," + i[1], u = n[1], c = 2), t.length > 1) { + a = t[1], i = n[c], c++, r += "C" + (u[0] + o[0]) + "," + (u[1] + o[1]) + "," + (i[0] - a[0]) + "," + (i[1] - a[1]) + "," + i[0] + "," + i[1]; + for (var l = 2; l < t.length; l++, c++) i = n[c], a = t[l], r += "S" + (i[0] - a[0]) + "," + (i[1] - a[1]) + "," + i[0] + "," + i[1] + } + if (e) { + var s = n[c]; + r += "Q" + (i[0] + 2 * a[0] / 3) + "," + (i[1] + 2 * a[1] / 3) + "," + s[0] + "," + s[1] + } + return r + } + + function wo(n, t) { + for (var e, r = [], u = (1 - t) / 2, i = n[0], o = n[1], a = 1, c = n.length; ++a < c;) e = i, i = o, o = n[a], r.push([u * (o[0] - e[0]), u * (o[1] - e[1])]); + return r + } + + function So(n) { + if (n.length < 3) return go(n); + var t = 1, + e = n.length, + r = n[0], + u = r[0], + i = r[1], + o = [u, u, u, (r = n[1])[0]], + a = [i, i, i, r[1]], + c = [u, ",", i, "L", No(Cl, o), ",", No(Cl, a)]; + for (n.push(n[e - 1]); ++t <= e;) r = n[t], o.shift(), o.push(r[0]), a.shift(), a.push(r[1]), Co(c, o, a); + return n.pop(), c.push("L", r), c.join("") + } + + function ko(n) { + if (n.length < 4) return go(n); + for (var t, e = [], r = -1, u = n.length, i = [0], o = [0]; ++r < 3;) t = n[r], i.push(t[0]), o.push(t[1]); + for (e.push(No(Cl, i) + "," + No(Cl, o)), --r; ++r < u;) t = n[r], i.shift(), i.push(t[0]), o.shift(), o.push(t[1]), Co(e, i, o); + return e.join("") + } + + function Eo(n) { + for (var t, e, r = -1, u = n.length, i = u + 4, o = [], a = []; ++r < 4;) e = n[r % u], o.push(e[0]), a.push(e[1]); + for (t = [No(Cl, o), ",", No(Cl, a)], --r; ++r < i;) e = n[r % u], o.shift(), o.push(e[0]), a.shift(), a.push(e[1]), Co(t, o, a); + return t.join("") + } + + function Ao(n, t) { + var e = n.length - 1; + if (e) + for (var r, u, i = n[0][0], o = n[0][1], a = n[e][0] - i, c = n[e][1] - o, l = -1; ++l <= e;) r = n[l], u = l / e, r[0] = t * r[0] + (1 - t) * (i + u * a), r[1] = t * r[1] + (1 - t) * (o + u * c); + return So(n) + } + + function No(n, t) { + return n[0] * t[0] + n[1] * t[1] + n[2] * t[2] + n[3] * t[3] + } + + function Co(n, t, e) { + n.push("C", No(Al, t), ",", No(Al, e), ",", No(Nl, t), ",", No(Nl, e), ",", No(Cl, t), ",", No(Cl, e)) + } + + function zo(n, t) { + return (t[1] - n[1]) / (t[0] - n[0]) + } + + function qo(n) { + for (var t = 0, e = n.length - 1, r = [], u = n[0], i = n[1], o = r[0] = zo(u, i); ++t < e;) r[t] = (o + (o = zo(u = i, i = n[t + 1]))) / 2; + return r[t] = o, r + } + + function Lo(n) { + for (var t, e, r, u, i = [], o = qo(n), a = -1, c = n.length - 1; ++a < c;) t = zo(n[a], n[a + 1]), ga(t) < Ca ? o[a] = o[a + 1] = 0 : (e = o[a] / t, r = o[a + 1] / t, u = e * e + r * r, u > 9 && (u = 3 * t / Math.sqrt(u), o[a] = u * e, o[a + 1] = u * r)); + for (a = -1; ++a <= c;) u = (n[Math.min(c, a + 1)][0] - n[Math.max(0, a - 1)][0]) / (6 * (1 + o[a] * o[a])), i.push([u || 0, o[a] * u || 0]); + return i + } + + function To(n) { + return n.length < 3 ? go(n) : n[0] + _o(n, Lo(n)) + } + + function Ro(n) { + for (var t, e, r, u = -1, i = n.length; ++u < i;) t = n[u], e = t[0], r = t[1] - Ra, t[0] = e * Math.cos(r), t[1] = e * Math.sin(r); + return n + } + + function Do(n) { + function t(t) { + function c() { + v.push("M", a(n(m), f), s, l(n(d.reverse()), f), "Z") + } + for (var h, g, p, v = [], d = [], m = [], y = -1, M = t.length, x = Et(e), b = Et(u), _ = e === r ? function() { + return g + } : Et(r), w = u === i ? function() { + return p + } : Et(i); ++y < M;) o.call(this, h = t[y], y) ? (d.push([g = +x.call(this, h, y), p = +b.call(this, h, y)]), m.push([+_.call(this, h, y), +w.call(this, h, y)])) : d.length && (c(), d = [], m = []); + return d.length && c(), v.length ? v.join("") : null + } + var e = Ar, + r = Ar, + u = 0, + i = Nr, + o = Ne, + a = go, + c = a.key, + l = a, + s = "L", + f = .7; + return t.x = function(n) { + return arguments.length ? (e = r = n, t) : r + }, t.x0 = function(n) { + return arguments.length ? (e = n, t) : e + }, t.x1 = function(n) { + return arguments.length ? (r = n, t) : r + }, t.y = function(n) { + return arguments.length ? (u = i = n, t) : i + }, t.y0 = function(n) { + return arguments.length ? (u = n, t) : u + }, t.y1 = function(n) { + return arguments.length ? (i = n, t) : i + }, t.defined = function(n) { + return arguments.length ? (o = n, t) : o + }, t.interpolate = function(n) { + return arguments.length ? (c = "function" == typeof n ? a = n : (a = El.get(n) || go).key, l = a.reverse || a, s = a.closed ? "M" : "L", t) : c + }, t.tension = function(n) { + return arguments.length ? (f = n, t) : f + }, t + } + + function Po(n) { + return n.radius + } + + function Uo(n) { + return [n.x, n.y] + } + + function jo(n) { + return function() { + var t = n.apply(this, arguments), + e = t[0], + r = t[1] - Ra; + return [e * Math.cos(r), e * Math.sin(r)] + } + } + + function Fo() { + return 64 + } + + function Ho() { + return "circle" + } + + function Oo(n) { + var t = Math.sqrt(n / qa); + return "M0," + t + "A" + t + "," + t + " 0 1,1 0," + -t + "A" + t + "," + t + " 0 1,1 0," + t + "Z" + } + + function Io(n) { + return function() { + var t, e; + (t = this[n]) && (e = t[t.active]) && (--t.count ? delete t[t.active] : delete this[n], t.active += .5, e.event && e.event.interrupt.call(this, this.__data__, e.index)) + } + } + + function Yo(n, t, e) { + return ya(n, Pl), n.namespace = t, n.id = e, n + } + + function Zo(n, t, e, r) { + var u = n.id, + i = n.namespace; + return Y(n, "function" == typeof e ? function(n, o, a) { + n[i][u].tween.set(t, r(e.call(n, n.__data__, o, a))) + } : (e = r(e), function(n) { + n[i][u].tween.set(t, e) + })) + } + + function Vo(n) { + return null == n && (n = ""), + function() { + this.textContent = n + } + } + + function Xo(n) { + return null == n ? "__transition__" : "__transition_" + n + "__" + } + + function $o(n, t, e, r, u) { + var i = n[e] || (n[e] = { + active: 0, + count: 0 + }), + o = i[r]; + if (!o) { + var a = u.time; + o = i[r] = { + tween: new l, + time: a, + delay: u.delay, + duration: u.duration, + ease: u.ease, + index: t + }, u = null, ++i.count, ta.timer(function(u) { + function c(e) { + if (i.active > r) return s(); + var u = i[i.active]; + u && (--i.count, delete i[i.active], u.event && u.event.interrupt.call(n, n.__data__, u.index)), i.active = r, o.event && o.event.start.call(n, n.__data__, t), o.tween.forEach(function(e, r) { + (r = r.call(n, n.__data__, t)) && v.push(r) + }), h = o.ease, f = o.duration, ta.timer(function() { + return p.c = l(e || 1) ? Ne : l, 1 + }, 0, a) + } + + function l(e) { + if (i.active !== r) return 1; + for (var u = e / f, a = h(u), c = v.length; c > 0;) v[--c].call(n, a); + return u >= 1 ? (o.event && o.event.end.call(n, n.__data__, t), s()) : void 0 + } + + function s() { + return --i.count ? delete i[r] : delete n[e], 1 + } + var f, h, g = o.delay, + p = ec, + v = []; + return p.t = g + a, u >= g ? c(u - g) : void(p.c = c) + }, 0, a) + } + } + + function Bo(n, t, e) { + n.attr("transform", function(n) { + var r = t(n); + return "translate(" + (isFinite(r) ? r : e(n)) + ",0)" + }) + } + + function Wo(n, t, e) { + n.attr("transform", function(n) { + var r = t(n); + return "translate(0," + (isFinite(r) ? r : e(n)) + ")" + }) + } + + function Jo(n) { + return n.toISOString() + } + + function Go(n, t, e) { + function r(t) { + return n(t) + } + + function u(n, e) { + var r = n[1] - n[0], + u = r / e, + i = ta.bisect(Vl, u); + return i == Vl.length ? [t.year, Vi(n.map(function(n) { + return n / 31536e6 + }), e)[2]] : i ? t[u / Vl[i - 1] < Vl[i] / u ? i - 1 : i] : [Bl, Vi(n, e)[2]] + } + return r.invert = function(t) { + return Ko(n.invert(t)) + }, r.domain = function(t) { + return arguments.length ? (n.domain(t), r) : n.domain().map(Ko) + }, r.nice = function(n, t) { + function e(e) { + return !isNaN(e) && !n.range(e, Ko(+e + 1), t).length + } + var i = r.domain(), + o = Pi(i), + a = null == n ? u(o, 10) : "number" == typeof n && u(o, n); + return a && (n = a[0], t = a[1]), r.domain(Fi(i, t > 1 ? { + floor: function(t) { + for (; e(t = n.floor(t));) t = Ko(t - 1); + return t + }, + ceil: function(t) { + for (; e(t = n.ceil(t));) t = Ko(+t + 1); + return t + } + } : n)) + }, r.ticks = function(n, t) { + var e = Pi(r.domain()), + i = null == n ? u(e, 10) : "number" == typeof n ? u(e, n) : !n.range && [{ + range: n + }, t]; + return i && (n = i[0], t = i[1]), n.range(e[0], Ko(+e[1] + 1), 1 > t ? 1 : t) + }, r.tickFormat = function() { + return e + }, r.copy = function() { + return Go(n.copy(), t, e) + }, Yi(r, n) + } + + function Ko(n) { + return new Date(n) + } + + function Qo(n) { + return JSON.parse(n.responseText) + } + + function na(n) { + var t = ua.createRange(); + return t.selectNode(ua.body), t.createContextualFragment(n.responseText) + } + var ta = { + version: "3.5.4" + }, + ea = [].slice, + ra = function(n) { + return ea.call(n) + }, + ua = this.document; + if (ua) try { + ra(ua.documentElement.childNodes)[0].nodeType + } catch (ia) { + ra = function(n) { + for (var t = n.length, e = new Array(t); t--;) e[t] = n[t]; + return e + } + } + if (Date.now || (Date.now = function() { + return +new Date + }), ua) try { + ua.createElement("DIV").style.setProperty("opacity", 0, "") + } catch (oa) { + var aa = this.Element.prototype, + ca = aa.setAttribute, + la = aa.setAttributeNS, + sa = this.CSSStyleDeclaration.prototype, + fa = sa.setProperty; + aa.setAttribute = function(n, t) { + ca.call(this, n, t + "") + }, aa.setAttributeNS = function(n, t, e) { + la.call(this, n, t, e + "") + }, sa.setProperty = function(n, t, e) { + fa.call(this, n, t + "", e) + } + } + ta.ascending = e, ta.descending = function(n, t) { + return n > t ? -1 : t > n ? 1 : t >= n ? 0 : 0 / 0 + }, ta.min = function(n, t) { + var e, r, u = -1, + i = n.length; + if (1 === arguments.length) { + for (; ++u < i;) + if (null != (r = n[u]) && r >= r) { + e = r; + break + } for (; ++u < i;) null != (r = n[u]) && e > r && (e = r) + } else { + for (; ++u < i;) + if (null != (r = t.call(n, n[u], u)) && r >= r) { + e = r; + break + } for (; ++u < i;) null != (r = t.call(n, n[u], u)) && e > r && (e = r) + } + return e + }, ta.max = function(n, t) { + var e, r, u = -1, + i = n.length; + if (1 === arguments.length) { + for (; ++u < i;) + if (null != (r = n[u]) && r >= r) { + e = r; + break + } for (; ++u < i;) null != (r = n[u]) && r > e && (e = r) + } else { + for (; ++u < i;) + if (null != (r = t.call(n, n[u], u)) && r >= r) { + e = r; + break + } for (; ++u < i;) null != (r = t.call(n, n[u], u)) && r > e && (e = r) + } + return e + }, ta.extent = function(n, t) { + var e, r, u, i = -1, + o = n.length; + if (1 === arguments.length) { + for (; ++i < o;) + if (null != (r = n[i]) && r >= r) { + e = u = r; + break + } for (; ++i < o;) null != (r = n[i]) && (e > r && (e = r), r > u && (u = r)) + } else { + for (; ++i < o;) + if (null != (r = t.call(n, n[i], i)) && r >= r) { + e = u = r; + break + } for (; ++i < o;) null != (r = t.call(n, n[i], i)) && (e > r && (e = r), r > u && (u = r)) + } + return [e, u] + }, ta.sum = function(n, t) { + var e, r = 0, + i = n.length, + o = -1; + if (1 === arguments.length) + for (; ++o < i;) u(e = +n[o]) && (r += e); + else + for (; ++o < i;) u(e = +t.call(n, n[o], o)) && (r += e); + return r + }, ta.mean = function(n, t) { + var e, i = 0, + o = n.length, + a = -1, + c = o; + if (1 === arguments.length) + for (; ++a < o;) u(e = r(n[a])) ? i += e : --c; + else + for (; ++a < o;) u(e = r(t.call(n, n[a], a))) ? i += e : --c; + return c ? i / c : void 0 + }, ta.quantile = function(n, t) { + var e = (n.length - 1) * t + 1, + r = Math.floor(e), + u = +n[r - 1], + i = e - r; + return i ? u + i * (n[r] - u) : u + }, ta.median = function(n, t) { + var i, o = [], + a = n.length, + c = -1; + if (1 === arguments.length) + for (; ++c < a;) u(i = r(n[c])) && o.push(i); + else + for (; ++c < a;) u(i = r(t.call(n, n[c], c))) && o.push(i); + return o.length ? ta.quantile(o.sort(e), .5) : void 0 + }, ta.variance = function(n, t) { + var e, i, o = n.length, + a = 0, + c = 0, + l = -1, + s = 0; + if (1 === arguments.length) + for (; ++l < o;) u(e = r(n[l])) && (i = e - a, a += i / ++s, c += i * (e - a)); + else + for (; ++l < o;) u(e = r(t.call(n, n[l], l))) && (i = e - a, a += i / ++s, c += i * (e - a)); + return s > 1 ? c / (s - 1) : void 0 + }, ta.deviation = function() { + var n = ta.variance.apply(this, arguments); + return n ? Math.sqrt(n) : n + }; + var ha = i(e); + ta.bisectLeft = ha.left, ta.bisect = ta.bisectRight = ha.right, ta.bisector = function(n) { + return i(1 === n.length ? function(t, r) { + return e(n(t), r) + } : n) + }, ta.shuffle = function(n, t, e) { + (i = arguments.length) < 3 && (e = n.length, 2 > i && (t = 0)); + for (var r, u, i = e - t; i;) u = Math.random() * i-- | 0, r = n[i + t], n[i + t] = n[u + t], n[u + t] = r; + return n + }, ta.permute = function(n, t) { + for (var e = t.length, r = new Array(e); e--;) r[e] = n[t[e]]; + return r + }, ta.pairs = function(n) { + for (var t, e = 0, r = n.length - 1, u = n[0], i = new Array(0 > r ? 0 : r); r > e;) i[e] = [t = u, u = n[++e]]; + return i + }, ta.zip = function() { + if (!(r = arguments.length)) return []; + for (var n = -1, t = ta.min(arguments, o), e = new Array(t); ++n < t;) + for (var r, u = -1, i = e[n] = new Array(r); ++u < r;) i[u] = arguments[u][n]; + return e + }, ta.transpose = function(n) { + return ta.zip.apply(ta, n) + }, ta.keys = function(n) { + var t = []; + for (var e in n) t.push(e); + return t + }, ta.values = function(n) { + var t = []; + for (var e in n) t.push(n[e]); + return t + }, ta.entries = function(n) { + var t = []; + for (var e in n) t.push({ + key: e, + value: n[e] + }); + return t + }, ta.merge = function(n) { + for (var t, e, r, u = n.length, i = -1, o = 0; ++i < u;) o += n[i].length; + for (e = new Array(o); --u >= 0;) + for (r = n[u], t = r.length; --t >= 0;) e[--o] = r[t]; + return e + }; + var ga = Math.abs; + ta.range = function(n, t, e) { + if (arguments.length < 3 && (e = 1, arguments.length < 2 && (t = n, n = 0)), (t - n) / e === 1 / 0) throw new Error("infinite range"); + var r, u = [], + i = a(ga(e)), + o = -1; + if (n *= i, t *= i, e *= i, 0 > e) + for (; + (r = n + e * ++o) > t;) u.push(r / i); + else + for (; + (r = n + e * ++o) < t;) u.push(r / i); + return u + }, ta.map = function(n, t) { + var e = new l; + if (n instanceof l) n.forEach(function(n, t) { + e.set(n, t) + }); + else if (Array.isArray(n)) { + var r, u = -1, + i = n.length; + if (1 === arguments.length) + for (; ++u < i;) e.set(u, n[u]); + else + for (; ++u < i;) e.set(t.call(n, r = n[u], u), r) + } else + for (var o in n) e.set(o, n[o]); + return e + }; + var pa = "__proto__", + va = "\x00"; + c(l, { + has: h, + get: function(n) { + return this._[s(n)] + }, + set: function(n, t) { + return this._[s(n)] = t + }, + remove: g, + keys: p, + values: function() { + var n = []; + for (var t in this._) n.push(this._[t]); + return n + }, + entries: function() { + var n = []; + for (var t in this._) n.push({ + key: f(t), + value: this._[t] + }); + return n + }, + size: v, + empty: d, + forEach: function(n) { + for (var t in this._) n.call(this, f(t), this._[t]) + } + }), ta.nest = function() { + function n(t, o, a) { + if (a >= i.length) return r ? r.call(u, o) : e ? o.sort(e) : o; + for (var c, s, f, h, g = -1, p = o.length, v = i[a++], d = new l; ++g < p;)(h = d.get(c = v(s = o[g]))) ? h.push(s) : d.set(c, [s]); + return t ? (s = t(), f = function(e, r) { + s.set(e, n(t, r, a)) + }) : (s = {}, f = function(e, r) { + s[e] = n(t, r, a) + }), d.forEach(f), s + } + + function t(n, e) { + if (e >= i.length) return n; + var r = [], + u = o[e++]; + return n.forEach(function(n, u) { + r.push({ + key: n, + values: t(u, e) + }) + }), u ? r.sort(function(n, t) { + return u(n.key, t.key) + }) : r + } + var e, r, u = {}, + i = [], + o = []; + return u.map = function(t, e) { + return n(e, t, 0) + }, u.entries = function(e) { + return t(n(ta.map, e, 0), 0) + }, u.key = function(n) { + return i.push(n), u + }, u.sortKeys = function(n) { + return o[i.length - 1] = n, u + }, u.sortValues = function(n) { + return e = n, u + }, u.rollup = function(n) { + return r = n, u + }, u + }, ta.set = function(n) { + var t = new m; + if (n) + for (var e = 0, r = n.length; r > e; ++e) t.add(n[e]); + return t + }, c(m, { + has: h, + add: function(n) { + return this._[s(n += "")] = !0, n + }, + remove: g, + values: p, + size: v, + empty: d, + forEach: function(n) { + for (var t in this._) n.call(this, f(t)) + } + }), ta.behavior = {}, ta.rebind = function(n, t) { + for (var e, r = 1, u = arguments.length; ++r < u;) n[e = arguments[r]] = M(n, t, t[e]); + return n + }; + var da = ["webkit", "ms", "moz", "Moz", "o", "O"]; + ta.dispatch = function() { + for (var n = new _, t = -1, e = arguments.length; ++t < e;) n[arguments[t]] = w(n); + return n + }, _.prototype.on = function(n, t) { + var e = n.indexOf("."), + r = ""; + if (e >= 0 && (r = n.slice(e + 1), n = n.slice(0, e)), n) return arguments.length < 2 ? this[n].on(r) : this[n].on(r, t); + if (2 === arguments.length) { + if (null == t) + for (n in this) this.hasOwnProperty(n) && this[n].on(r, null); + return this + } + }, ta.event = null, ta.requote = function(n) { + return n.replace(ma, "\\$&") + }; + var ma = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g, + ya = {}.__proto__ ? function(n, t) { + n.__proto__ = t + } : function(n, t) { + for (var e in t) n[e] = t[e] + }, + Ma = function(n, t) { + return t.querySelector(n) + }, + xa = function(n, t) { + return t.querySelectorAll(n) + }, + ba = function(n, t) { + var e = n.matches || n[x(n, "matchesSelector")]; + return (ba = function(n, t) { + return e.call(n, t) + })(n, t) + }; + "function" == typeof Sizzle && (Ma = function(n, t) { + return Sizzle(n, t)[0] || null + }, xa = Sizzle, ba = Sizzle.matchesSelector), ta.selection = function() { + return ta.select(ua.documentElement) + }; + var _a = ta.selection.prototype = []; + _a.select = function(n) { + var t, e, r, u, i = []; + n = N(n); + for (var o = -1, a = this.length; ++o < a;) { + i.push(t = []), t.parentNode = (r = this[o]).parentNode; + for (var c = -1, l = r.length; ++c < l;)(u = r[c]) ? (t.push(e = n.call(u, u.__data__, c, o)), e && "__data__" in u && (e.__data__ = u.__data__)) : t.push(null) + } + return A(i) + }, _a.selectAll = function(n) { + var t, e, r = []; + n = C(n); + for (var u = -1, i = this.length; ++u < i;) + for (var o = this[u], a = -1, c = o.length; ++a < c;)(e = o[a]) && (r.push(t = ra(n.call(e, e.__data__, a, u))), t.parentNode = e); + return A(r) + }; + var wa = { + svg: "http://www.w3.org/2000/svg", + xhtml: "http://www.w3.org/1999/xhtml", + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" + }; + ta.ns = { + prefix: wa, + qualify: function(n) { + var t = n.indexOf(":"), + e = n; + return t >= 0 && (e = n.slice(0, t), n = n.slice(t + 1)), wa.hasOwnProperty(e) ? { + space: wa[e], + local: n + } : n + } + }, _a.attr = function(n, t) { + if (arguments.length < 2) { + if ("string" == typeof n) { + var e = this.node(); + return n = ta.ns.qualify(n), n.local ? e.getAttributeNS(n.space, n.local) : e.getAttribute(n) + } + for (t in n) this.each(z(t, n[t])); + return this + } + return this.each(z(n, t)) + }, _a.classed = function(n, t) { + if (arguments.length < 2) { + if ("string" == typeof n) { + var e = this.node(), + r = (n = T(n)).length, + u = -1; + if (t = e.classList) { + for (; ++u < r;) + if (!t.contains(n[u])) return !1 + } else + for (t = e.getAttribute("class"); ++u < r;) + if (!L(n[u]).test(t)) return !1; + return !0 + } + for (t in n) this.each(R(t, n[t])); + return this + } + return this.each(R(n, t)) + }, _a.style = function(n, e, r) { + var u = arguments.length; + if (3 > u) { + if ("string" != typeof n) { + 2 > u && (e = ""); + for (r in n) this.each(P(r, n[r], e)); + return this + } + if (2 > u) { + var i = this.node(); + return t(i).getComputedStyle(i, null).getPropertyValue(n) + } + r = "" + } + return this.each(P(n, e, r)) + }, _a.property = function(n, t) { + if (arguments.length < 2) { + if ("string" == typeof n) return this.node()[n]; + for (t in n) this.each(U(t, n[t])); + return this + } + return this.each(U(n, t)) + }, _a.text = function(n) { + return arguments.length ? this.each("function" == typeof n ? function() { + var t = n.apply(this, arguments); + this.textContent = null == t ? "" : t + } : null == n ? function() { + this.textContent = "" + } : function() { + this.textContent = n + }) : this.node().textContent + }, _a.html = function(n) { + return arguments.length ? this.each("function" == typeof n ? function() { + var t = n.apply(this, arguments); + this.innerHTML = null == t ? "" : t + } : null == n ? function() { + this.innerHTML = "" + } : function() { + this.innerHTML = n + }) : this.node().innerHTML + }, _a.append = function(n) { + return n = j(n), this.select(function() { + return this.appendChild(n.apply(this, arguments)) + }) + }, _a.insert = function(n, t) { + return n = j(n), t = N(t), this.select(function() { + return this.insertBefore(n.apply(this, arguments), t.apply(this, arguments) || null) + }) + }, _a.remove = function() { + return this.each(F) + }, _a.data = function(n, t) { + function e(n, e) { + var r, u, i, o = n.length, + f = e.length, + h = Math.min(o, f), + g = new Array(f), + p = new Array(f), + v = new Array(o); + if (t) { + var d, m = new l, + y = new Array(o); + for (r = -1; ++r < o;) m.has(d = t.call(u = n[r], u.__data__, r)) ? v[r] = u : m.set(d, u), y[r] = d; + for (r = -1; ++r < f;)(u = m.get(d = t.call(e, i = e[r], r))) ? u !== !0 && (g[r] = u, u.__data__ = i) : p[r] = H(i), m.set(d, !0); + for (r = -1; ++r < o;) m.get(y[r]) !== !0 && (v[r] = n[r]) + } else { + for (r = -1; ++r < h;) u = n[r], i = e[r], u ? (u.__data__ = i, g[r] = u) : p[r] = H(i); + for (; f > r; ++r) p[r] = H(e[r]); + for (; o > r; ++r) v[r] = n[r] + } + p.update = g, p.parentNode = g.parentNode = v.parentNode = n.parentNode, a.push(p), c.push(g), s.push(v) + } + var r, u, i = -1, + o = this.length; + if (!arguments.length) { + for (n = new Array(o = (r = this[0]).length); ++i < o;)(u = r[i]) && (n[i] = u.__data__); + return n + } + var a = Z([]), + c = A([]), + s = A([]); + if ("function" == typeof n) + for (; ++i < o;) e(r = this[i], n.call(r, r.parentNode.__data__, i)); + else + for (; ++i < o;) e(r = this[i], n); + return c.enter = function() { + return a + }, c.exit = function() { + return s + }, c + }, _a.datum = function(n) { + return arguments.length ? this.property("__data__", n) : this.property("__data__") + }, _a.filter = function(n) { + var t, e, r, u = []; + "function" != typeof n && (n = O(n)); + for (var i = 0, o = this.length; o > i; i++) { + u.push(t = []), t.parentNode = (e = this[i]).parentNode; + for (var a = 0, c = e.length; c > a; a++)(r = e[a]) && n.call(r, r.__data__, a, i) && t.push(r) + } + return A(u) + }, _a.order = function() { + for (var n = -1, t = this.length; ++n < t;) + for (var e, r = this[n], u = r.length - 1, i = r[u]; --u >= 0;)(e = r[u]) && (i && i !== e.nextSibling && i.parentNode.insertBefore(e, i), i = e); + return this + }, _a.sort = function(n) { + n = I.apply(this, arguments); + for (var t = -1, e = this.length; ++t < e;) this[t].sort(n); + return this.order() + }, _a.each = function(n) { + return Y(this, function(t, e, r) { + n.call(t, t.__data__, e, r) + }) + }, _a.call = function(n) { + var t = ra(arguments); + return n.apply(t[0] = this, t), this + }, _a.empty = function() { + return !this.node() + }, _a.node = function() { + for (var n = 0, t = this.length; t > n; n++) + for (var e = this[n], r = 0, u = e.length; u > r; r++) { + var i = e[r]; + if (i) return i + } + return null + }, _a.size = function() { + var n = 0; + return Y(this, function() { + ++n + }), n + }; + var Sa = []; + ta.selection.enter = Z, ta.selection.enter.prototype = Sa, Sa.append = _a.append, Sa.empty = _a.empty, Sa.node = _a.node, Sa.call = _a.call, Sa.size = _a.size, Sa.select = function(n) { + for (var t, e, r, u, i, o = [], a = -1, c = this.length; ++a < c;) { + r = (u = this[a]).update, o.push(t = []), t.parentNode = u.parentNode; + for (var l = -1, s = u.length; ++l < s;)(i = u[l]) ? (t.push(r[l] = e = n.call(u.parentNode, i.__data__, l, a)), e.__data__ = i.__data__) : t.push(null) + } + return A(o) + }, Sa.insert = function(n, t) { + return arguments.length < 2 && (t = V(this)), _a.insert.call(this, n, t) + }, ta.select = function(t) { + var e; + return "string" == typeof t ? (e = [Ma(t, ua)], e.parentNode = ua.documentElement) : (e = [t], e.parentNode = n(t)), A([e]) + }, ta.selectAll = function(n) { + var t; + return "string" == typeof n ? (t = ra(xa(n, ua)), t.parentNode = ua.documentElement) : (t = n, t.parentNode = null), A([t]) + }, _a.on = function(n, t, e) { + var r = arguments.length; + if (3 > r) { + if ("string" != typeof n) { + 2 > r && (t = !1); + for (e in n) this.each(X(e, n[e], t)); + return this + } + if (2 > r) return (r = this.node()["__on" + n]) && r._; + e = !1 + } + return this.each(X(n, t, e)) + }; + var ka = ta.map({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }); + ua && ka.forEach(function(n) { + "on" + n in ua && ka.remove(n) + }); + var Ea, Aa = 0; + ta.mouse = function(n) { + return J(n, k()) + }; + var Na = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0; + ta.touch = function(n, t, e) { + if (arguments.length < 3 && (e = t, t = k().changedTouches), t) + for (var r, u = 0, i = t.length; i > u; ++u) + if ((r = t[u]).identifier === e) return J(n, r) + }, ta.behavior.drag = function() { + function n() { + this.on("mousedown.drag", i).on("touchstart.drag", o) + } + + function e(n, t, e, i, o) { + return function() { + function a() { + var n, e, r = t(h, v); + r && (n = r[0] - M[0], e = r[1] - M[1], p |= n | e, M = r, g({ + type: "drag", + x: r[0] + l[0], + y: r[1] + l[1], + dx: n, + dy: e + })) + } + + function c() { + t(h, v) && (m.on(i + d, null).on(o + d, null), y(p && ta.event.target === f), g({ + type: "dragend" + })) + } + var l, s = this, + f = ta.event.target, + h = s.parentNode, + g = r.of(s, arguments), + p = 0, + v = n(), + d = ".drag" + (null == v ? "" : "-" + v), + m = ta.select(e(f)).on(i + d, a).on(o + d, c), + y = W(f), + M = t(h, v); + u ? (l = u.apply(s, arguments), l = [l.x - M[0], l.y - M[1]]) : l = [0, 0], g({ + type: "dragstart" + }) + } + } + var r = E(n, "drag", "dragstart", "dragend"), + u = null, + i = e(b, ta.mouse, t, "mousemove", "mouseup"), + o = e(G, ta.touch, y, "touchmove", "touchend"); + return n.origin = function(t) { + return arguments.length ? (u = t, n) : u + }, ta.rebind(n, r, "on") + }, ta.touches = function(n, t) { + return arguments.length < 2 && (t = k().touches), t ? ra(t).map(function(t) { + var e = J(n, t); + return e.identifier = t.identifier, e + }) : [] + }; + var Ca = 1e-6, + za = Ca * Ca, + qa = Math.PI, + La = 2 * qa, + Ta = La - Ca, + Ra = qa / 2, + Da = qa / 180, + Pa = 180 / qa, + Ua = Math.SQRT2, + ja = 2, + Fa = 4; + ta.interpolateZoom = function(n, t) { + function e(n) { + var t = n * y; + if (m) { + var e = rt(v), + o = i / (ja * h) * (e * ut(Ua * t + v) - et(v)); + return [r + o * l, u + o * s, i * e / rt(Ua * t + v)] + } + return [r + n * l, u + n * s, i * Math.exp(Ua * t)] + } + var r = n[0], + u = n[1], + i = n[2], + o = t[0], + a = t[1], + c = t[2], + l = o - r, + s = a - u, + f = l * l + s * s, + h = Math.sqrt(f), + g = (c * c - i * i + Fa * f) / (2 * i * ja * h), + p = (c * c - i * i - Fa * f) / (2 * c * ja * h), + v = Math.log(Math.sqrt(g * g + 1) - g), + d = Math.log(Math.sqrt(p * p + 1) - p), + m = d - v, + y = (m || Math.log(c / i)) / Ua; + return e.duration = 1e3 * y, e + }, ta.behavior.zoom = function() { + function n(n) { + n.on(q, f).on(Oa + ".zoom", g).on("dblclick.zoom", p).on(R, h) + } + + function e(n) { + return [(n[0] - k.x) / k.k, (n[1] - k.y) / k.k] + } + + function r(n) { + return [n[0] * k.k + k.x, n[1] * k.k + k.y] + } + + function u(n) { + k.k = Math.max(N[0], Math.min(N[1], n)) + } + + function i(n, t) { + t = r(t), k.x += n[0] - t[0], k.y += n[1] - t[1] + } + + function o(t, e, r, o) { + t.__chart__ = { + x: k.x, + y: k.y, + k: k.k + }, u(Math.pow(2, o)), i(d = e, r), t = ta.select(t), C > 0 && (t = t.transition().duration(C)), t.call(n.event) + } + + function a() { + b && b.domain(x.range().map(function(n) { + return (n - k.x) / k.k + }).map(x.invert)), w && w.domain(_.range().map(function(n) { + return (n - k.y) / k.k + }).map(_.invert)) + } + + function c(n) { + z++ || n({ + type: "zoomstart" + }) + } + + function l(n) { + a(), n({ + type: "zoom", + scale: k.k, + translate: [k.x, k.y] + }) + } + + function s(n) { + --z || n({ + type: "zoomend" + }), d = null + } + + function f() { + function n() { + f = 1, i(ta.mouse(u), g), l(a) + } + + function r() { + h.on(L, null).on(T, null), p(f && ta.event.target === o), s(a) + } + var u = this, + o = ta.event.target, + a = D.of(u, arguments), + f = 0, + h = ta.select(t(u)).on(L, n).on(T, r), + g = e(ta.mouse(u)), + p = W(u); + Dl.call(u), c(a) + } + + function h() { + function n() { + var n = ta.touches(p); + return g = k.k, n.forEach(function(n) { + n.identifier in d && (d[n.identifier] = e(n)) + }), n + } + + function t() { + var t = ta.event.target; + ta.select(t).on(x, r).on(b, a), _.push(t); + for (var e = ta.event.changedTouches, u = 0, i = e.length; i > u; ++u) d[e[u].identifier] = null; + var c = n(), + l = Date.now(); + if (1 === c.length) { + if (500 > l - M) { + var s = c[0]; + o(p, s, d[s.identifier], Math.floor(Math.log(k.k) / Math.LN2) + 1), S() + } + M = l + } else if (c.length > 1) { + var s = c[0], + f = c[1], + h = s[0] - f[0], + g = s[1] - f[1]; + m = h * h + g * g + } + } + + function r() { + var n, t, e, r, o = ta.touches(p); + Dl.call(p); + for (var a = 0, c = o.length; c > a; ++a, r = null) + if (e = o[a], r = d[e.identifier]) { + if (t) break; + n = e, t = r + } if (r) { + var s = (s = e[0] - n[0]) * s + (s = e[1] - n[1]) * s, + f = m && Math.sqrt(s / m); + n = [(n[0] + e[0]) / 2, (n[1] + e[1]) / 2], t = [(t[0] + r[0]) / 2, (t[1] + r[1]) / 2], u(f * g) + } + M = null, i(n, t), l(v) + } + + function a() { + if (ta.event.touches.length) { + for (var t = ta.event.changedTouches, e = 0, r = t.length; r > e; ++e) delete d[t[e].identifier]; + for (var u in d) return void n() + } + ta.selectAll(_).on(y, null), w.on(q, f).on(R, h), E(), s(v) + } + var g, p = this, + v = D.of(p, arguments), + d = {}, + m = 0, + y = ".zoom-" + ta.event.changedTouches[0].identifier, + x = "touchmove" + y, + b = "touchend" + y, + _ = [], + w = ta.select(p), + E = W(p); + t(), c(v), w.on(q, null).on(R, t) + } + + function g() { + var n = D.of(this, arguments); + y ? clearTimeout(y) : (v = e(d = m || ta.mouse(this)), Dl.call(this), c(n)), y = setTimeout(function() { + y = null, s(n) + }, 50), S(), u(Math.pow(2, .002 * Ha()) * k.k), i(d, v), l(n) + } + + function p() { + var n = ta.mouse(this), + t = Math.log(k.k) / Math.LN2; + o(this, n, e(n), ta.event.shiftKey ? Math.ceil(t) - 1 : Math.floor(t) + 1) + } + var v, d, m, y, M, x, b, _, w, k = { + x: 0, + y: 0, + k: 1 + }, + A = [960, 500], + N = Ia, + C = 250, + z = 0, + q = "mousedown.zoom", + L = "mousemove.zoom", + T = "mouseup.zoom", + R = "touchstart.zoom", + D = E(n, "zoomstart", "zoom", "zoomend"); + return Oa || (Oa = "onwheel" in ua ? (Ha = function() { + return -ta.event.deltaY * (ta.event.deltaMode ? 120 : 1) + }, "wheel") : "onmousewheel" in ua ? (Ha = function() { + return ta.event.wheelDelta + }, "mousewheel") : (Ha = function() { + return -ta.event.detail + }, "MozMousePixelScroll")), n.event = function(n) { + n.each(function() { + var n = D.of(this, arguments), + t = k; + Tl ? ta.select(this).transition().each("start.zoom", function() { + k = this.__chart__ || { + x: 0, + y: 0, + k: 1 + }, c(n) + }).tween("zoom:zoom", function() { + var e = A[0], + r = A[1], + u = d ? d[0] : e / 2, + i = d ? d[1] : r / 2, + o = ta.interpolateZoom([(u - k.x) / k.k, (i - k.y) / k.k, e / k.k], [(u - t.x) / t.k, (i - t.y) / t.k, e / t.k]); + return function(t) { + var r = o(t), + a = e / r[2]; + this.__chart__ = k = { + x: u - r[0] * a, + y: i - r[1] * a, + k: a + }, l(n) + } + }).each("interrupt.zoom", function() { + s(n) + }).each("end.zoom", function() { + s(n) + }) : (this.__chart__ = k, c(n), l(n), s(n)) + }) + }, n.translate = function(t) { + return arguments.length ? (k = { + x: +t[0], + y: +t[1], + k: k.k + }, a(), n) : [k.x, k.y] + }, n.scale = function(t) { + return arguments.length ? (k = { + x: k.x, + y: k.y, + k: +t + }, a(), n) : k.k + }, n.scaleExtent = function(t) { + return arguments.length ? (N = null == t ? Ia : [+t[0], +t[1]], n) : N + }, n.center = function(t) { + return arguments.length ? (m = t && [+t[0], +t[1]], n) : m + }, n.size = function(t) { + return arguments.length ? (A = t && [+t[0], +t[1]], n) : A + }, n.duration = function(t) { + return arguments.length ? (C = +t, n) : C + }, n.x = function(t) { + return arguments.length ? (b = t, x = t.copy(), k = { + x: 0, + y: 0, + k: 1 + }, n) : b + }, n.y = function(t) { + return arguments.length ? (w = t, _ = t.copy(), k = { + x: 0, + y: 0, + k: 1 + }, n) : w + }, ta.rebind(n, D, "on") + }; + var Ha, Oa, Ia = [0, 1 / 0]; + ta.color = ot, ot.prototype.toString = function() { + return this.rgb() + "" + }, ta.hsl = at; + var Ya = at.prototype = new ot; + Ya.brighter = function(n) { + return n = Math.pow(.7, arguments.length ? n : 1), new at(this.h, this.s, this.l / n) + }, Ya.darker = function(n) { + return n = Math.pow(.7, arguments.length ? n : 1), new at(this.h, this.s, n * this.l) + }, Ya.rgb = function() { + return ct(this.h, this.s, this.l) + }, ta.hcl = lt; + var Za = lt.prototype = new ot; + Za.brighter = function(n) { + return new lt(this.h, this.c, Math.min(100, this.l + Va * (arguments.length ? n : 1))) + }, Za.darker = function(n) { + return new lt(this.h, this.c, Math.max(0, this.l - Va * (arguments.length ? n : 1))) + }, Za.rgb = function() { + return st(this.h, this.c, this.l).rgb() + }, ta.lab = ft; + var Va = 18, + Xa = .95047, + $a = 1, + Ba = 1.08883, + Wa = ft.prototype = new ot; + Wa.brighter = function(n) { + return new ft(Math.min(100, this.l + Va * (arguments.length ? n : 1)), this.a, this.b) + }, Wa.darker = function(n) { + return new ft(Math.max(0, this.l - Va * (arguments.length ? n : 1)), this.a, this.b) + }, Wa.rgb = function() { + return ht(this.l, this.a, this.b) + }, ta.rgb = mt; + var Ja = mt.prototype = new ot; + Ja.brighter = function(n) { + n = Math.pow(.7, arguments.length ? n : 1); + var t = this.r, + e = this.g, + r = this.b, + u = 30; + return t || e || r ? (t && u > t && (t = u), e && u > e && (e = u), r && u > r && (r = u), new mt(Math.min(255, t / n), Math.min(255, e / n), Math.min(255, r / n))) : new mt(u, u, u) + }, Ja.darker = function(n) { + return n = Math.pow(.7, arguments.length ? n : 1), new mt(n * this.r, n * this.g, n * this.b) + }, Ja.hsl = function() { + return _t(this.r, this.g, this.b) + }, Ja.toString = function() { + return "#" + xt(this.r) + xt(this.g) + xt(this.b) + }; + var Ga = ta.map({ + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 + }); + Ga.forEach(function(n, t) { + Ga.set(n, yt(t)) + }), ta.functor = Et, ta.xhr = At(y), ta.dsv = function(n, t) { + function e(n, e, i) { + arguments.length < 3 && (i = e, e = null); + var o = Nt(n, t, null == e ? r : u(e), i); + return o.row = function(n) { + return arguments.length ? o.response(null == (e = n) ? r : u(n)) : e + }, o + } + + function r(n) { + return e.parse(n.responseText) + } + + function u(n) { + return function(t) { + return e.parse(t.responseText, n) + } + } + + function i(t) { + return t.map(o).join(n) + } + + function o(n) { + return a.test(n) ? '"' + n.replace(/\"/g, '""') + '"' : n + } + var a = new RegExp('["' + n + "\n]"), + c = n.charCodeAt(0); + return e.parse = function(n, t) { + var r; + return e.parseRows(n, function(n, e) { + if (r) return r(n, e - 1); + var u = new Function("d", "return {" + n.map(function(n, t) { + return JSON.stringify(n) + ": d[" + t + "]" + }).join(",") + "}"); + r = t ? function(n, e) { + return t(u(n), e) + } : u + }) + }, e.parseRows = function(n, t) { + function e() { + if (s >= l) return o; + if (u) return u = !1, i; + var t = s; + if (34 === n.charCodeAt(t)) { + for (var e = t; e++ < l;) + if (34 === n.charCodeAt(e)) { + if (34 !== n.charCodeAt(e + 1)) break; + ++e + } s = e + 2; + var r = n.charCodeAt(e + 1); + return 13 === r ? (u = !0, 10 === n.charCodeAt(e + 2) && ++s) : 10 === r && (u = !0), n.slice(t + 1, e).replace(/""/g, '"') + } + for (; l > s;) { + var r = n.charCodeAt(s++), + a = 1; + if (10 === r) u = !0; + else if (13 === r) u = !0, 10 === n.charCodeAt(s) && (++s, ++a); + else if (r !== c) continue; + return n.slice(t, s - a) + } + return n.slice(t) + } + for (var r, u, i = {}, o = {}, a = [], l = n.length, s = 0, f = 0; + (r = e()) !== o;) { + for (var h = []; r !== i && r !== o;) h.push(r), r = e(); + t && null == (h = t(h, f++)) || a.push(h) + } + return a + }, e.format = function(t) { + if (Array.isArray(t[0])) return e.formatRows(t); + var r = new m, + u = []; + return t.forEach(function(n) { + for (var t in n) r.has(t) || u.push(r.add(t)) + }), [u.map(o).join(n)].concat(t.map(function(t) { + return u.map(function(n) { + return o(t[n]) + }).join(n) + })).join("\n") + }, e.formatRows = function(n) { + return n.map(i).join("\n") + }, e + }, ta.csv = ta.dsv(",", "text/csv"), ta.tsv = ta.dsv(" ", "text/tab-separated-values"); + var Ka, Qa, nc, tc, ec, rc = this[x(this, "requestAnimationFrame")] || function(n) { + setTimeout(n, 17) + }; + ta.timer = function(n, t, e) { + var r = arguments.length; + 2 > r && (t = 0), 3 > r && (e = Date.now()); + var u = e + t, + i = { + c: n, + t: u, + f: !1, + n: null + }; + Qa ? Qa.n = i : Ka = i, Qa = i, nc || (tc = clearTimeout(tc), nc = 1, rc(qt)) + }, ta.timer.flush = function() { + Lt(), Tt() + }, ta.round = function(n, t) { + return t ? Math.round(n * (t = Math.pow(10, t))) / t : Math.round(n) + }; + var uc = ["y", "z", "a", "f", "p", "n", "\xb5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"].map(Dt); + ta.formatPrefix = function(n, t) { + var e = 0; + return n && (0 > n && (n *= -1), t && (n = ta.round(n, Rt(n, t))), e = 1 + Math.floor(1e-12 + Math.log(n) / Math.LN10), e = Math.max(-24, Math.min(24, 3 * Math.floor((e - 1) / 3)))), uc[8 + e / 3] + }; + var ic = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i, + oc = ta.map({ + b: function(n) { + return n.toString(2) + }, + c: function(n) { + return String.fromCharCode(n) + }, + o: function(n) { + return n.toString(8) + }, + x: function(n) { + return n.toString(16) + }, + X: function(n) { + return n.toString(16).toUpperCase() + }, + g: function(n, t) { + return n.toPrecision(t) + }, + e: function(n, t) { + return n.toExponential(t) + }, + f: function(n, t) { + return n.toFixed(t) + }, + r: function(n, t) { + return (n = ta.round(n, Rt(n, t))).toFixed(Math.max(0, Math.min(20, Rt(n * (1 + 1e-15), t)))) + } + }), + ac = ta.time = {}, + cc = Date; + jt.prototype = { + getDate: function() { + return this._.getUTCDate() + }, + getDay: function() { + return this._.getUTCDay() + }, + getFullYear: function() { + return this._.getUTCFullYear() + }, + getHours: function() { + return this._.getUTCHours() + }, + getMilliseconds: function() { + return this._.getUTCMilliseconds() + }, + getMinutes: function() { + return this._.getUTCMinutes() + }, + getMonth: function() { + return this._.getUTCMonth() + }, + getSeconds: function() { + return this._.getUTCSeconds() + }, + getTime: function() { + return this._.getTime() + }, + getTimezoneOffset: function() { + return 0 + }, + valueOf: function() { + return this._.valueOf() + }, + setDate: function() { + lc.setUTCDate.apply(this._, arguments) + }, + setDay: function() { + lc.setUTCDay.apply(this._, arguments) + }, + setFullYear: function() { + lc.setUTCFullYear.apply(this._, arguments) + }, + setHours: function() { + lc.setUTCHours.apply(this._, arguments) + }, + setMilliseconds: function() { + lc.setUTCMilliseconds.apply(this._, arguments) + }, + setMinutes: function() { + lc.setUTCMinutes.apply(this._, arguments) + }, + setMonth: function() { + lc.setUTCMonth.apply(this._, arguments) + }, + setSeconds: function() { + lc.setUTCSeconds.apply(this._, arguments) + }, + setTime: function() { + lc.setTime.apply(this._, arguments) + } + }; + var lc = Date.prototype; + ac.year = Ft(function(n) { + return n = ac.day(n), n.setMonth(0, 1), n + }, function(n, t) { + n.setFullYear(n.getFullYear() + t) + }, function(n) { + return n.getFullYear() + }), ac.years = ac.year.range, ac.years.utc = ac.year.utc.range, ac.day = Ft(function(n) { + var t = new cc(2e3, 0); + return t.setFullYear(n.getFullYear(), n.getMonth(), n.getDate()), t + }, function(n, t) { + n.setDate(n.getDate() + t) + }, function(n) { + return n.getDate() - 1 + }), ac.days = ac.day.range, ac.days.utc = ac.day.utc.range, ac.dayOfYear = function(n) { + var t = ac.year(n); + return Math.floor((n - t - 6e4 * (n.getTimezoneOffset() - t.getTimezoneOffset())) / 864e5) + }, ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"].forEach(function(n, t) { + t = 7 - t; + var e = ac[n] = Ft(function(n) { + return (n = ac.day(n)).setDate(n.getDate() - (n.getDay() + t) % 7), n + }, function(n, t) { + n.setDate(n.getDate() + 7 * Math.floor(t)) + }, function(n) { + var e = ac.year(n).getDay(); + return Math.floor((ac.dayOfYear(n) + (e + t) % 7) / 7) - (e !== t) + }); + ac[n + "s"] = e.range, ac[n + "s"].utc = e.utc.range, ac[n + "OfYear"] = function(n) { + var e = ac.year(n).getDay(); + return Math.floor((ac.dayOfYear(n) + (e + t) % 7) / 7) + } + }), ac.week = ac.sunday, ac.weeks = ac.sunday.range, ac.weeks.utc = ac.sunday.utc.range, ac.weekOfYear = ac.sundayOfYear; + var sc = { + "-": "", + _: " ", + 0: "0" + }, + fc = /^\s*\d+/, + hc = /^%/; + ta.locale = function(n) { + return { + numberFormat: Pt(n), + timeFormat: Ot(n) + } + }; + var gc = ta.locale({ + decimal: ".", + thousands: ",", + grouping: [3], + currency: ["$", ""], + dateTime: "%a %b %e %X %Y", + date: "%m/%d/%Y", + time: "%H:%M:%S", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + }); + ta.format = gc.numberFormat, ta.geo = {}, ce.prototype = { + s: 0, + t: 0, + add: function(n) { + le(n, this.t, pc), le(pc.s, this.s, this), this.s ? this.t += pc.t : this.s = pc.t + }, + reset: function() { + this.s = this.t = 0 + }, + valueOf: function() { + return this.s + } + }; + var pc = new ce; + ta.geo.stream = function(n, t) { + n && vc.hasOwnProperty(n.type) ? vc[n.type](n, t) : se(n, t) + }; + var vc = { + Feature: function(n, t) { + se(n.geometry, t) + }, + FeatureCollection: function(n, t) { + for (var e = n.features, r = -1, u = e.length; ++r < u;) se(e[r].geometry, t) + } + }, + dc = { + Sphere: function(n, t) { + t.sphere() + }, + Point: function(n, t) { + n = n.coordinates, t.point(n[0], n[1], n[2]) + }, + MultiPoint: function(n, t) { + for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) n = e[r], t.point(n[0], n[1], n[2]) + }, + LineString: function(n, t) { + fe(n.coordinates, t, 0) + }, + MultiLineString: function(n, t) { + for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) fe(e[r], t, 0) + }, + Polygon: function(n, t) { + he(n.coordinates, t) + }, + MultiPolygon: function(n, t) { + for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) he(e[r], t) + }, + GeometryCollection: function(n, t) { + for (var e = n.geometries, r = -1, u = e.length; ++r < u;) se(e[r], t) + } + }; + ta.geo.area = function(n) { + return mc = 0, ta.geo.stream(n, Mc), mc + }; + var mc, yc = new ce, + Mc = { + sphere: function() { + mc += 4 * qa + }, + point: b, + lineStart: b, + lineEnd: b, + polygonStart: function() { + yc.reset(), Mc.lineStart = ge + }, + polygonEnd: function() { + var n = 2 * yc; + mc += 0 > n ? 4 * qa + n : n, Mc.lineStart = Mc.lineEnd = Mc.point = b + } + }; + ta.geo.bounds = function() { + function n(n, t) { + M.push(x = [s = n, h = n]), f > t && (f = t), t > g && (g = t) + } + + function t(t, e) { + var r = pe([t * Da, e * Da]); + if (m) { + var u = de(m, r), + i = [u[1], -u[0], 0], + o = de(i, u); + Me(o), o = xe(o); + var c = t - p, + l = c > 0 ? 1 : -1, + v = o[0] * Pa * l, + d = ga(c) > 180; + if (d ^ (v > l * p && l * t > v)) { + var y = o[1] * Pa; + y > g && (g = y) + } else if (v = (v + 360) % 360 - 180, d ^ (v > l * p && l * t > v)) { + var y = -o[1] * Pa; + f > y && (f = y) + } else f > e && (f = e), e > g && (g = e); + d ? p > t ? a(s, t) > a(s, h) && (h = t) : a(t, h) > a(s, h) && (s = t) : h >= s ? (s > t && (s = t), t > h && (h = t)) : t > p ? a(s, t) > a(s, h) && (h = t) : a(t, h) > a(s, h) && (s = t) + } else n(t, e); + m = r, p = t + } + + function e() { + b.point = t + } + + function r() { + x[0] = s, x[1] = h, b.point = n, m = null + } + + function u(n, e) { + if (m) { + var r = n - p; + y += ga(r) > 180 ? r + (r > 0 ? 360 : -360) : r + } else v = n, d = e; + Mc.point(n, e), t(n, e) + } + + function i() { + Mc.lineStart() + } + + function o() { + u(v, d), Mc.lineEnd(), ga(y) > Ca && (s = -(h = 180)), x[0] = s, x[1] = h, m = null + } + + function a(n, t) { + return (t -= n) < 0 ? t + 360 : t + } + + function c(n, t) { + return n[0] - t[0] + } + + function l(n, t) { + return t[0] <= t[1] ? t[0] <= n && n <= t[1] : n < t[0] || t[1] < n + } + var s, f, h, g, p, v, d, m, y, M, x, b = { + point: n, + lineStart: e, + lineEnd: r, + polygonStart: function() { + b.point = u, b.lineStart = i, b.lineEnd = o, y = 0, Mc.polygonStart() + }, + polygonEnd: function() { + Mc.polygonEnd(), b.point = n, b.lineStart = e, b.lineEnd = r, 0 > yc ? (s = -(h = 180), f = -(g = 90)) : y > Ca ? g = 90 : -Ca > y && (f = -90), x[0] = s, x[1] = h + } + }; + return function(n) { + g = h = -(s = f = 1 / 0), M = [], ta.geo.stream(n, b); + var t = M.length; + if (t) { + M.sort(c); + for (var e, r = 1, u = M[0], i = [u]; t > r; ++r) e = M[r], l(e[0], u) || l(e[1], u) ? (a(u[0], e[1]) > a(u[0], u[1]) && (u[1] = e[1]), a(e[0], u[1]) > a(u[0], u[1]) && (u[0] = e[0])) : i.push(u = e); + for (var o, e, p = -1 / 0, t = i.length - 1, r = 0, u = i[t]; t >= r; u = e, ++r) e = i[r], (o = a(u[1], e[0])) > p && (p = o, s = e[0], h = u[1]) + } + return M = x = null, 1 / 0 === s || 1 / 0 === f ? [ + [0 / 0, 0 / 0], + [0 / 0, 0 / 0] + ] : [ + [s, f], + [h, g] + ] + } + }(), ta.geo.centroid = function(n) { + xc = bc = _c = wc = Sc = kc = Ec = Ac = Nc = Cc = zc = 0, ta.geo.stream(n, qc); + var t = Nc, + e = Cc, + r = zc, + u = t * t + e * e + r * r; + return za > u && (t = kc, e = Ec, r = Ac, Ca > bc && (t = _c, e = wc, r = Sc), u = t * t + e * e + r * r, za > u) ? [0 / 0, 0 / 0] : [Math.atan2(e, t) * Pa, tt(r / Math.sqrt(u)) * Pa] + }; + var xc, bc, _c, wc, Sc, kc, Ec, Ac, Nc, Cc, zc, qc = { + sphere: b, + point: _e, + lineStart: Se, + lineEnd: ke, + polygonStart: function() { + qc.lineStart = Ee + }, + polygonEnd: function() { + qc.lineStart = Se + } + }, + Lc = Le(Ne, Pe, je, [-qa, -qa / 2]), + Tc = 1e9; + ta.geo.clipExtent = function() { + var n, t, e, r, u, i, o = { + stream: function(n) { + return u && (u.valid = !1), u = i(n), u.valid = !0, u + }, + extent: function(a) { + return arguments.length ? (i = Ie(n = +a[0][0], t = +a[0][1], e = +a[1][0], r = +a[1][1]), u && (u.valid = !1, u = null), o) : [ + [n, t], + [e, r] + ] + } + }; + return o.extent([ + [0, 0], + [960, 500] + ]) + }, (ta.geo.conicEqualArea = function() { + return Ye(Ze) + }).raw = Ze, ta.geo.albers = function() { + return ta.geo.conicEqualArea().rotate([96, 0]).center([-.6, 38.7]).parallels([29.5, 45.5]).scale(1070) + }, ta.geo.albersUsa = function() { + function n(n) { + var i = n[0], + o = n[1]; + return t = null, e(i, o), t || (r(i, o), t) || u(i, o), t + } + var t, e, r, u, i = ta.geo.albers(), + o = ta.geo.conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), + a = ta.geo.conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), + c = { + point: function(n, e) { + t = [n, e] + } + }; + return n.invert = function(n) { + var t = i.scale(), + e = i.translate(), + r = (n[0] - e[0]) / t, + u = (n[1] - e[1]) / t; + return (u >= .12 && .234 > u && r >= -.425 && -.214 > r ? o : u >= .166 && .234 > u && r >= -.214 && -.115 > r ? a : i).invert(n) + }, n.stream = function(n) { + var t = i.stream(n), + e = o.stream(n), + r = a.stream(n); + return { + point: function(n, u) { + t.point(n, u), e.point(n, u), r.point(n, u) + }, + sphere: function() { + t.sphere(), e.sphere(), r.sphere() + }, + lineStart: function() { + t.lineStart(), e.lineStart(), r.lineStart() + }, + lineEnd: function() { + t.lineEnd(), e.lineEnd(), r.lineEnd() + }, + polygonStart: function() { + t.polygonStart(), e.polygonStart(), r.polygonStart() + }, + polygonEnd: function() { + t.polygonEnd(), e.polygonEnd(), r.polygonEnd() + } + } + }, n.precision = function(t) { + return arguments.length ? (i.precision(t), o.precision(t), a.precision(t), n) : i.precision() + }, n.scale = function(t) { + return arguments.length ? (i.scale(t), o.scale(.35 * t), a.scale(t), n.translate(i.translate())) : i.scale() + }, n.translate = function(t) { + if (!arguments.length) return i.translate(); + var l = i.scale(), + s = +t[0], + f = +t[1]; + return e = i.translate(t).clipExtent([ + [s - .455 * l, f - .238 * l], + [s + .455 * l, f + .238 * l] + ]).stream(c).point, r = o.translate([s - .307 * l, f + .201 * l]).clipExtent([ + [s - .425 * l + Ca, f + .12 * l + Ca], + [s - .214 * l - Ca, f + .234 * l - Ca] + ]).stream(c).point, u = a.translate([s - .205 * l, f + .212 * l]).clipExtent([ + [s - .214 * l + Ca, f + .166 * l + Ca], + [s - .115 * l - Ca, f + .234 * l - Ca] + ]).stream(c).point, n + }, n.scale(1070) + }; + var Rc, Dc, Pc, Uc, jc, Fc, Hc = { + point: b, + lineStart: b, + lineEnd: b, + polygonStart: function() { + Dc = 0, Hc.lineStart = Ve + }, + polygonEnd: function() { + Hc.lineStart = Hc.lineEnd = Hc.point = b, Rc += ga(Dc / 2) + } + }, + Oc = { + point: Xe, + lineStart: b, + lineEnd: b, + polygonStart: b, + polygonEnd: b + }, + Ic = { + point: We, + lineStart: Je, + lineEnd: Ge, + polygonStart: function() { + Ic.lineStart = Ke + }, + polygonEnd: function() { + Ic.point = We, Ic.lineStart = Je, Ic.lineEnd = Ge + } + }; + ta.geo.path = function() { + function n(n) { + return n && ("function" == typeof a && i.pointRadius(+a.apply(this, arguments)), o && o.valid || (o = u(i)), ta.geo.stream(n, o)), i.result() + } + + function t() { + return o = null, n + } + var e, r, u, i, o, a = 4.5; + return n.area = function(n) { + return Rc = 0, ta.geo.stream(n, u(Hc)), Rc + }, n.centroid = function(n) { + return _c = wc = Sc = kc = Ec = Ac = Nc = Cc = zc = 0, ta.geo.stream(n, u(Ic)), zc ? [Nc / zc, Cc / zc] : Ac ? [kc / Ac, Ec / Ac] : Sc ? [_c / Sc, wc / Sc] : [0 / 0, 0 / 0] + }, n.bounds = function(n) { + return jc = Fc = -(Pc = Uc = 1 / 0), ta.geo.stream(n, u(Oc)), [ + [Pc, Uc], + [jc, Fc] + ] + }, n.projection = function(n) { + return arguments.length ? (u = (e = n) ? n.stream || tr(n) : y, t()) : e + }, n.context = function(n) { + return arguments.length ? (i = null == (r = n) ? new $e : new Qe(n), "function" != typeof a && i.pointRadius(a), t()) : r + }, n.pointRadius = function(t) { + return arguments.length ? (a = "function" == typeof t ? t : (i.pointRadius(+t), +t), n) : a + }, n.projection(ta.geo.albersUsa()).context(null) + }, ta.geo.transform = function(n) { + return { + stream: function(t) { + var e = new er(t); + for (var r in n) e[r] = n[r]; + return e + } + } + }, er.prototype = { + point: function(n, t) { + this.stream.point(n, t) + }, + sphere: function() { + this.stream.sphere() + }, + lineStart: function() { + this.stream.lineStart() + }, + lineEnd: function() { + this.stream.lineEnd() + }, + polygonStart: function() { + this.stream.polygonStart() + }, + polygonEnd: function() { + this.stream.polygonEnd() + } + }, ta.geo.projection = ur, ta.geo.projectionMutator = ir, (ta.geo.equirectangular = function() { + return ur(ar) + }).raw = ar.invert = ar, ta.geo.rotation = function(n) { + function t(t) { + return t = n(t[0] * Da, t[1] * Da), t[0] *= Pa, t[1] *= Pa, t + } + return n = lr(n[0] % 360 * Da, n[1] * Da, n.length > 2 ? n[2] * Da : 0), t.invert = function(t) { + return t = n.invert(t[0] * Da, t[1] * Da), t[0] *= Pa, t[1] *= Pa, t + }, t + }, cr.invert = ar, ta.geo.circle = function() { + function n() { + var n = "function" == typeof r ? r.apply(this, arguments) : r, + t = lr(-n[0] * Da, -n[1] * Da, 0).invert, + u = []; + return e(null, null, 1, { + point: function(n, e) { + u.push(n = t(n, e)), n[0] *= Pa, n[1] *= Pa + } + }), { + type: "Polygon", + coordinates: [u] + } + } + var t, e, r = [0, 0], + u = 6; + return n.origin = function(t) { + return arguments.length ? (r = t, n) : r + }, n.angle = function(r) { + return arguments.length ? (e = gr((t = +r) * Da, u * Da), n) : t + }, n.precision = function(r) { + return arguments.length ? (e = gr(t * Da, (u = +r) * Da), n) : u + }, n.angle(90) + }, ta.geo.distance = function(n, t) { + var e, r = (t[0] - n[0]) * Da, + u = n[1] * Da, + i = t[1] * Da, + o = Math.sin(r), + a = Math.cos(r), + c = Math.sin(u), + l = Math.cos(u), + s = Math.sin(i), + f = Math.cos(i); + return Math.atan2(Math.sqrt((e = f * o) * e + (e = l * s - c * f * a) * e), c * s + l * f * a) + }, ta.geo.graticule = function() { + function n() { + return { + type: "MultiLineString", + coordinates: t() + } + } + + function t() { + return ta.range(Math.ceil(i / d) * d, u, d).map(h).concat(ta.range(Math.ceil(l / m) * m, c, m).map(g)).concat(ta.range(Math.ceil(r / p) * p, e, p).filter(function(n) { + return ga(n % d) > Ca + }).map(s)).concat(ta.range(Math.ceil(a / v) * v, o, v).filter(function(n) { + return ga(n % m) > Ca + }).map(f)) + } + var e, r, u, i, o, a, c, l, s, f, h, g, p = 10, + v = p, + d = 90, + m = 360, + y = 2.5; + return n.lines = function() { + return t().map(function(n) { + return { + type: "LineString", + coordinates: n + } + }) + }, n.outline = function() { + return { + type: "Polygon", + coordinates: [h(i).concat(g(c).slice(1), h(u).reverse().slice(1), g(l).reverse().slice(1))] + } + }, n.extent = function(t) { + return arguments.length ? n.majorExtent(t).minorExtent(t) : n.minorExtent() + }, n.majorExtent = function(t) { + return arguments.length ? (i = +t[0][0], u = +t[1][0], l = +t[0][1], c = +t[1][1], i > u && (t = i, i = u, u = t), l > c && (t = l, l = c, c = t), n.precision(y)) : [ + [i, l], + [u, c] + ] + }, n.minorExtent = function(t) { + return arguments.length ? (r = +t[0][0], e = +t[1][0], a = +t[0][1], o = +t[1][1], r > e && (t = r, r = e, e = t), a > o && (t = a, a = o, o = t), n.precision(y)) : [ + [r, a], + [e, o] + ] + }, n.step = function(t) { + return arguments.length ? n.majorStep(t).minorStep(t) : n.minorStep() + }, n.majorStep = function(t) { + return arguments.length ? (d = +t[0], m = +t[1], n) : [d, m] + }, n.minorStep = function(t) { + return arguments.length ? (p = +t[0], v = +t[1], n) : [p, v] + }, n.precision = function(t) { + return arguments.length ? (y = +t, s = vr(a, o, 90), f = dr(r, e, y), h = vr(l, c, 90), g = dr(i, u, y), n) : y + }, n.majorExtent([ + [-180, -90 + Ca], + [180, 90 - Ca] + ]).minorExtent([ + [-180, -80 - Ca], + [180, 80 + Ca] + ]) + }, ta.geo.greatArc = function() { + function n() { + return { + type: "LineString", + coordinates: [t || r.apply(this, arguments), e || u.apply(this, arguments)] + } + } + var t, e, r = mr, + u = yr; + return n.distance = function() { + return ta.geo.distance(t || r.apply(this, arguments), e || u.apply(this, arguments)) + }, n.source = function(e) { + return arguments.length ? (r = e, t = "function" == typeof e ? null : e, n) : r + }, n.target = function(t) { + return arguments.length ? (u = t, e = "function" == typeof t ? null : t, n) : u + }, n.precision = function() { + return arguments.length ? n : 0 + }, n + }, ta.geo.interpolate = function(n, t) { + return Mr(n[0] * Da, n[1] * Da, t[0] * Da, t[1] * Da) + }, ta.geo.length = function(n) { + return Yc = 0, ta.geo.stream(n, Zc), Yc + }; + var Yc, Zc = { + sphere: b, + point: b, + lineStart: xr, + lineEnd: b, + polygonStart: b, + polygonEnd: b + }, + Vc = br(function(n) { + return Math.sqrt(2 / (1 + n)) + }, function(n) { + return 2 * Math.asin(n / 2) + }); + (ta.geo.azimuthalEqualArea = function() { + return ur(Vc) + }).raw = Vc; + var Xc = br(function(n) { + var t = Math.acos(n); + return t && t / Math.sin(t) + }, y); + (ta.geo.azimuthalEquidistant = function() { + return ur(Xc) + }).raw = Xc, (ta.geo.conicConformal = function() { + return Ye(_r) + }).raw = _r, (ta.geo.conicEquidistant = function() { + return Ye(wr) + }).raw = wr; + var $c = br(function(n) { + return 1 / n + }, Math.atan); + (ta.geo.gnomonic = function() { + return ur($c) + }).raw = $c, Sr.invert = function(n, t) { + return [n, 2 * Math.atan(Math.exp(t)) - Ra] + }, (ta.geo.mercator = function() { + return kr(Sr) + }).raw = Sr; + var Bc = br(function() { + return 1 + }, Math.asin); + (ta.geo.orthographic = function() { + return ur(Bc) + }).raw = Bc; + var Wc = br(function(n) { + return 1 / (1 + n) + }, function(n) { + return 2 * Math.atan(n) + }); + (ta.geo.stereographic = function() { + return ur(Wc) + }).raw = Wc, Er.invert = function(n, t) { + return [-t, 2 * Math.atan(Math.exp(n)) - Ra] + }, (ta.geo.transverseMercator = function() { + var n = kr(Er), + t = n.center, + e = n.rotate; + return n.center = function(n) { + return n ? t([-n[1], n[0]]) : (n = t(), [n[1], -n[0]]) + }, n.rotate = function(n) { + return n ? e([n[0], n[1], n.length > 2 ? n[2] + 90 : 90]) : (n = e(), [n[0], n[1], n[2] - 90]) + }, e([0, 0, 90]) + }).raw = Er, ta.geom = {}, ta.geom.hull = function(n) { + function t(n) { + if (n.length < 3) return []; + var t, u = Et(e), + i = Et(r), + o = n.length, + a = [], + c = []; + for (t = 0; o > t; t++) a.push([+u.call(this, n[t], t), +i.call(this, n[t], t), t]); + for (a.sort(zr), t = 0; o > t; t++) c.push([a[t][0], -a[t][1]]); + var l = Cr(a), + s = Cr(c), + f = s[0] === l[0], + h = s[s.length - 1] === l[l.length - 1], + g = []; + for (t = l.length - 1; t >= 0; --t) g.push(n[a[l[t]][2]]); + for (t = +f; t < s.length - h; ++t) g.push(n[a[s[t]][2]]); + return g + } + var e = Ar, + r = Nr; + return arguments.length ? t(n) : (t.x = function(n) { + return arguments.length ? (e = n, t) : e + }, t.y = function(n) { + return arguments.length ? (r = n, t) : r + }, t) + }, ta.geom.polygon = function(n) { + return ya(n, Jc), n + }; + var Jc = ta.geom.polygon.prototype = []; + Jc.area = function() { + for (var n, t = -1, e = this.length, r = this[e - 1], u = 0; ++t < e;) n = r, r = this[t], u += n[1] * r[0] - n[0] * r[1]; + return .5 * u + }, Jc.centroid = function(n) { + var t, e, r = -1, + u = this.length, + i = 0, + o = 0, + a = this[u - 1]; + for (arguments.length || (n = -1 / (6 * this.area())); ++r < u;) t = a, a = this[r], e = t[0] * a[1] - a[0] * t[1], i += (t[0] + a[0]) * e, o += (t[1] + a[1]) * e; + return [i * n, o * n] + }, Jc.clip = function(n) { + for (var t, e, r, u, i, o, a = Tr(n), c = -1, l = this.length - Tr(this), s = this[l - 1]; ++c < l;) { + for (t = n.slice(), n.length = 0, u = this[c], i = t[(r = t.length - a) - 1], e = -1; ++e < r;) o = t[e], qr(o, s, u) ? (qr(i, s, u) || n.push(Lr(i, o, s, u)), n.push(o)) : qr(i, s, u) && n.push(Lr(i, o, s, u)), i = o; + a && n.push(n[0]), s = u + } + return n + }; + var Gc, Kc, Qc, nl, tl, el = [], + rl = []; + Or.prototype.prepare = function() { + for (var n, t = this.edges, e = t.length; e--;) n = t[e].edge, n.b && n.a || t.splice(e, 1); + return t.sort(Yr), t.length + }, Qr.prototype = { + start: function() { + return this.edge.l === this.site ? this.edge.a : this.edge.b + }, + end: function() { + return this.edge.l === this.site ? this.edge.b : this.edge.a + } + }, nu.prototype = { + insert: function(n, t) { + var e, r, u; + if (n) { + if (t.P = n, t.N = n.N, n.N && (n.N.P = t), n.N = t, n.R) { + for (n = n.R; n.L;) n = n.L; + n.L = t + } else n.R = t; + e = n + } else this._ ? (n = uu(this._), t.P = null, t.N = n, n.P = n.L = t, e = n) : (t.P = t.N = null, this._ = t, e = null); + for (t.L = t.R = null, t.U = e, t.C = !0, n = t; e && e.C;) r = e.U, e === r.L ? (u = r.R, u && u.C ? (e.C = u.C = !1, r.C = !0, n = r) : (n === e.R && (eu(this, e), n = e, e = n.U), e.C = !1, r.C = !0, ru(this, r))) : (u = r.L, u && u.C ? (e.C = u.C = !1, r.C = !0, n = r) : (n === e.L && (ru(this, e), n = e, e = n.U), e.C = !1, r.C = !0, eu(this, r))), e = n.U; + this._.C = !1 + }, + remove: function(n) { + n.N && (n.N.P = n.P), n.P && (n.P.N = n.N), n.N = n.P = null; + var t, e, r, u = n.U, + i = n.L, + o = n.R; + if (e = i ? o ? uu(o) : i : o, u ? u.L === n ? u.L = e : u.R = e : this._ = e, i && o ? (r = e.C, e.C = n.C, e.L = i, i.U = e, e !== o ? (u = e.U, e.U = n.U, n = e.R, u.L = n, e.R = o, o.U = e) : (e.U = u, u = e, n = e.R)) : (r = n.C, n = e), n && (n.U = u), !r) { + if (n && n.C) return void(n.C = !1); + do { + if (n === this._) break; + if (n === u.L) { + if (t = u.R, t.C && (t.C = !1, u.C = !0, eu(this, u), t = u.R), t.L && t.L.C || t.R && t.R.C) { + t.R && t.R.C || (t.L.C = !1, t.C = !0, ru(this, t), t = u.R), t.C = u.C, u.C = t.R.C = !1, eu(this, u), n = this._; + break + } + } else if (t = u.L, t.C && (t.C = !1, u.C = !0, ru(this, u), t = u.L), t.L && t.L.C || t.R && t.R.C) { + t.L && t.L.C || (t.R.C = !1, t.C = !0, eu(this, t), t = u.L), t.C = u.C, u.C = t.L.C = !1, ru(this, u), n = this._; + break + } + t.C = !0, n = u, u = u.U + } while (!n.C); + n && (n.C = !1) + } + } + }, ta.geom.voronoi = function(n) { + function t(n) { + var t = new Array(n.length), + r = a[0][0], + u = a[0][1], + i = a[1][0], + o = a[1][1]; + return iu(e(n), a).cells.forEach(function(e, a) { + var c = e.edges, + l = e.site, + s = t[a] = c.length ? c.map(function(n) { + var t = n.start(); + return [t.x, t.y] + }) : l.x >= r && l.x <= i && l.y >= u && l.y <= o ? [ + [r, o], + [i, o], + [i, u], + [r, u] + ] : []; + s.point = n[a] + }), t + } + + function e(n) { + return n.map(function(n, t) { + return { + x: Math.round(i(n, t) / Ca) * Ca, + y: Math.round(o(n, t) / Ca) * Ca, + i: t + } + }) + } + var r = Ar, + u = Nr, + i = r, + o = u, + a = ul; + return n ? t(n) : (t.links = function(n) { + return iu(e(n)).edges.filter(function(n) { + return n.l && n.r + }).map(function(t) { + return { + source: n[t.l.i], + target: n[t.r.i] + } + }) + }, t.triangles = function(n) { + var t = []; + return iu(e(n)).cells.forEach(function(e, r) { + for (var u, i, o = e.site, a = e.edges.sort(Yr), c = -1, l = a.length, s = a[l - 1].edge, f = s.l === o ? s.r : s.l; ++c < l;) u = s, i = f, s = a[c].edge, f = s.l === o ? s.r : s.l, r < i.i && r < f.i && au(o, i, f) < 0 && t.push([n[r], n[i.i], n[f.i]]) + }), t + }, t.x = function(n) { + return arguments.length ? (i = Et(r = n), t) : r + }, t.y = function(n) { + return arguments.length ? (o = Et(u = n), t) : u + }, t.clipExtent = function(n) { + return arguments.length ? (a = null == n ? ul : n, t) : a === ul ? null : a + }, t.size = function(n) { + return arguments.length ? t.clipExtent(n && [ + [0, 0], n + ]) : a === ul ? null : a && a[1] + }, t) + }; + var ul = [ + [-1e6, -1e6], + [1e6, 1e6] + ]; + ta.geom.delaunay = function(n) { + return ta.geom.voronoi().triangles(n) + }, ta.geom.quadtree = function(n, t, e, r, u) { + function i(n) { + function i(n, t, e, r, u, i, o, a) { + if (!isNaN(e) && !isNaN(r)) + if (n.leaf) { + var c = n.x, + s = n.y; + if (null != c) + if (ga(c - e) + ga(s - r) < .01) l(n, t, e, r, u, i, o, a); + else { + var f = n.point; + n.x = n.y = n.point = null, l(n, f, c, s, u, i, o, a), l(n, t, e, r, u, i, o, a) + } + else n.x = e, n.y = r, n.point = t + } else l(n, t, e, r, u, i, o, a) + } + + function l(n, t, e, r, u, o, a, c) { + var l = .5 * (u + a), + s = .5 * (o + c), + f = e >= l, + h = r >= s, + g = h << 1 | f; + n.leaf = !1, n = n.nodes[g] || (n.nodes[g] = su()), f ? u = l : a = l, h ? o = s : c = s, i(n, t, e, r, u, o, a, c) + } + var s, f, h, g, p, v, d, m, y, M = Et(a), + x = Et(c); + if (null != t) v = t, d = e, m = r, y = u; + else if (m = y = -(v = d = 1 / 0), f = [], h = [], p = n.length, o) + for (g = 0; p > g; ++g) s = n[g], s.x < v && (v = s.x), s.y < d && (d = s.y), s.x > m && (m = s.x), s.y > y && (y = s.y), f.push(s.x), h.push(s.y); + else + for (g = 0; p > g; ++g) { + var b = +M(s = n[g], g), + _ = +x(s, g); + v > b && (v = b), d > _ && (d = _), b > m && (m = b), _ > y && (y = _), f.push(b), h.push(_) + } + var w = m - v, + S = y - d; + w > S ? y = d + w : m = v + S; + var k = su(); + if (k.add = function(n) { + i(k, n, +M(n, ++g), +x(n, g), v, d, m, y) + }, k.visit = function(n) { + fu(n, k, v, d, m, y) + }, k.find = function(n) { + return hu(k, n[0], n[1], v, d, m, y) + }, g = -1, null == t) { + for (; ++g < p;) i(k, n[g], f[g], h[g], v, d, m, y); + --g + } else n.forEach(k.add); + return f = h = n = s = null, k + } + var o, a = Ar, + c = Nr; + return (o = arguments.length) ? (a = cu, c = lu, 3 === o && (u = e, r = t, e = t = 0), i(n)) : (i.x = function(n) { + return arguments.length ? (a = n, i) : a + }, i.y = function(n) { + return arguments.length ? (c = n, i) : c + }, i.extent = function(n) { + return arguments.length ? (null == n ? t = e = r = u = null : (t = +n[0][0], e = +n[0][1], r = +n[1][0], u = +n[1][1]), i) : null == t ? null : [ + [t, e], + [r, u] + ] + }, i.size = function(n) { + return arguments.length ? (null == n ? t = e = r = u = null : (t = e = 0, r = +n[0], u = +n[1]), i) : null == t ? null : [r - t, u - e] + }, i) + }, ta.interpolateRgb = gu, ta.interpolateObject = pu, ta.interpolateNumber = vu, ta.interpolateString = du; + var il = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, + ol = new RegExp(il.source, "g"); + ta.interpolate = mu, ta.interpolators = [function(n, t) { + var e = typeof t; + return ("string" === e ? Ga.has(t) || /^(#|rgb\(|hsl\()/.test(t) ? gu : du : t instanceof ot ? gu : Array.isArray(t) ? yu : "object" === e && isNaN(t) ? pu : vu)(n, t) + }], ta.interpolateArray = yu; + var al = function() { + return y + }, + cl = ta.map({ + linear: al, + poly: ku, + quad: function() { + return _u + }, + cubic: function() { + return wu + }, + sin: function() { + return Eu + }, + exp: function() { + return Au + }, + circle: function() { + return Nu + }, + elastic: Cu, + back: zu, + bounce: function() { + return qu + } + }), + ll = ta.map({ + "in": y, + out: xu, + "in-out": bu, + "out-in": function(n) { + return bu(xu(n)) + } + }); + ta.ease = function(n) { + var t = n.indexOf("-"), + e = t >= 0 ? n.slice(0, t) : n, + r = t >= 0 ? n.slice(t + 1) : "in"; + return e = cl.get(e) || al, r = ll.get(r) || y, Mu(r(e.apply(null, ea.call(arguments, 1)))) + }, ta.interpolateHcl = Lu, ta.interpolateHsl = Tu, ta.interpolateLab = Ru, ta.interpolateRound = Du, ta.transform = function(n) { + var t = ua.createElementNS(ta.ns.prefix.svg, "g"); + return (ta.transform = function(n) { + if (null != n) { + t.setAttribute("transform", n); + var e = t.transform.baseVal.consolidate() + } + return new Pu(e ? e.matrix : sl) + })(n) + }, Pu.prototype.toString = function() { + return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")" + }; + var sl = { + a: 1, + b: 0, + c: 0, + d: 1, + e: 0, + f: 0 + }; + ta.interpolateTransform = Hu, ta.layout = {}, ta.layout.bundle = function() { + return function(n) { + for (var t = [], e = -1, r = n.length; ++e < r;) t.push(Yu(n[e])); + return t + } + }, ta.layout.chord = function() { + function n() { + var n, l, f, h, g, p = {}, + v = [], + d = ta.range(i), + m = []; + for (e = [], r = [], n = 0, h = -1; ++h < i;) { + for (l = 0, g = -1; ++g < i;) l += u[h][g]; + v.push(l), m.push(ta.range(i)), n += l + } + for (o && d.sort(function(n, t) { + return o(v[n], v[t]) + }), a && m.forEach(function(n, t) { + n.sort(function(n, e) { + return a(u[t][n], u[t][e]) + }) + }), n = (La - s * i) / n, l = 0, h = -1; ++h < i;) { + for (f = l, g = -1; ++g < i;) { + var y = d[h], + M = m[y][g], + x = u[y][M], + b = l, + _ = l += x * n; + p[y + "-" + M] = { + index: y, + subindex: M, + startAngle: b, + endAngle: _, + value: x + } + } + r[y] = { + index: y, + startAngle: f, + endAngle: l, + value: (l - f) / n + }, l += s + } + for (h = -1; ++h < i;) + for (g = h - 1; ++g < i;) { + var w = p[h + "-" + g], + S = p[g + "-" + h]; + (w.value || S.value) && e.push(w.value < S.value ? { + source: S, + target: w + } : { + source: w, + target: S + }) + } + c && t() + } + + function t() { + e.sort(function(n, t) { + return c((n.source.value + n.target.value) / 2, (t.source.value + t.target.value) / 2) + }) + } + var e, r, u, i, o, a, c, l = {}, + s = 0; + return l.matrix = function(n) { + return arguments.length ? (i = (u = n) && u.length, e = r = null, l) : u + }, l.padding = function(n) { + return arguments.length ? (s = n, e = r = null, l) : s + }, l.sortGroups = function(n) { + return arguments.length ? (o = n, e = r = null, l) : o + }, l.sortSubgroups = function(n) { + return arguments.length ? (a = n, e = null, l) : a + }, l.sortChords = function(n) { + return arguments.length ? (c = n, e && t(), l) : c + }, l.chords = function() { + return e || n(), e + }, l.groups = function() { + return r || n(), r + }, l + }, ta.layout.force = function() { + function n(n) { + return function(t, e, r, u) { + if (t.point !== n) { + var i = t.cx - n.x, + o = t.cy - n.y, + a = u - e, + c = i * i + o * o; + if (c > a * a / d) { + if (p > c) { + var l = t.charge / c; + n.px -= i * l, n.py -= o * l + } + return !0 + } + if (t.point && c && p > c) { + var l = t.pointCharge / c; + n.px -= i * l, n.py -= o * l + } + } + return !t.charge + } + } + + function t(n) { + n.px = ta.event.x, n.py = ta.event.y, a.resume() + } + var e, r, u, i, o, a = {}, + c = ta.dispatch("start", "tick", "end"), + l = [1, 1], + s = .9, + f = fl, + h = hl, + g = -30, + p = gl, + v = .1, + d = .64, + m = [], + M = []; + return a.tick = function() { + if ((r *= .99) < .005) return c.end({ + type: "end", + alpha: r = 0 + }), !0; + var t, e, a, f, h, p, d, y, x, b = m.length, + _ = M.length; + for (e = 0; _ > e; ++e) a = M[e], f = a.source, h = a.target, y = h.x - f.x, x = h.y - f.y, (p = y * y + x * x) && (p = r * i[e] * ((p = Math.sqrt(p)) - u[e]) / p, y *= p, x *= p, h.x -= y * (d = f.weight / (h.weight + f.weight)), h.y -= x * d, f.x += y * (d = 1 - d), f.y += x * d); + if ((d = r * v) && (y = l[0] / 2, x = l[1] / 2, e = -1, d)) + for (; ++e < b;) a = m[e], a.x += (y - a.x) * d, a.y += (x - a.y) * d; + if (g) + for (Ju(t = ta.geom.quadtree(m), r, o), e = -1; ++e < b;)(a = m[e]).fixed || t.visit(n(a)); + for (e = -1; ++e < b;) a = m[e], a.fixed ? (a.x = a.px, a.y = a.py) : (a.x -= (a.px - (a.px = a.x)) * s, a.y -= (a.py - (a.py = a.y)) * s); + c.tick({ + type: "tick", + alpha: r + }) + }, a.nodes = function(n) { + return arguments.length ? (m = n, a) : m + }, a.links = function(n) { + return arguments.length ? (M = n, a) : M + }, a.size = function(n) { + return arguments.length ? (l = n, a) : l + }, a.linkDistance = function(n) { + return arguments.length ? (f = "function" == typeof n ? n : +n, a) : f + }, a.distance = a.linkDistance, a.linkStrength = function(n) { + return arguments.length ? (h = "function" == typeof n ? n : +n, a) : h + }, a.friction = function(n) { + return arguments.length ? (s = +n, a) : s + }, a.charge = function(n) { + return arguments.length ? (g = "function" == typeof n ? n : +n, a) : g + }, a.chargeDistance = function(n) { + return arguments.length ? (p = n * n, a) : Math.sqrt(p) + }, a.gravity = function(n) { + return arguments.length ? (v = +n, a) : v + }, a.theta = function(n) { + return arguments.length ? (d = n * n, a) : Math.sqrt(d) + }, a.alpha = function(n) { + return arguments.length ? (n = +n, r ? r = n > 0 ? n : 0 : n > 0 && (c.start({ + type: "start", + alpha: r = n + }), ta.timer(a.tick)), a) : r + }, a.start = function() { + function n(n, r) { + if (!e) { + for (e = new Array(c), a = 0; c > a; ++a) e[a] = []; + for (a = 0; s > a; ++a) { + var u = M[a]; + e[u.source.index].push(u.target), e[u.target.index].push(u.source) + } + } + for (var i, o = e[t], a = -1, l = o.length; ++a < l;) + if (!isNaN(i = o[a][n])) return i; + return Math.random() * r + } + var t, e, r, c = m.length, + s = M.length, + p = l[0], + v = l[1]; + for (t = 0; c > t; ++t)(r = m[t]).index = t, r.weight = 0; + for (t = 0; s > t; ++t) r = M[t], "number" == typeof r.source && (r.source = m[r.source]), "number" == typeof r.target && (r.target = m[r.target]), ++r.source.weight, ++r.target.weight; + for (t = 0; c > t; ++t) r = m[t], isNaN(r.x) && (r.x = n("x", p)), isNaN(r.y) && (r.y = n("y", v)), isNaN(r.px) && (r.px = r.x), isNaN(r.py) && (r.py = r.y); + if (u = [], "function" == typeof f) + for (t = 0; s > t; ++t) u[t] = +f.call(this, M[t], t); + else + for (t = 0; s > t; ++t) u[t] = f; + if (i = [], "function" == typeof h) + for (t = 0; s > t; ++t) i[t] = +h.call(this, M[t], t); + else + for (t = 0; s > t; ++t) i[t] = h; + if (o = [], "function" == typeof g) + for (t = 0; c > t; ++t) o[t] = +g.call(this, m[t], t); + else + for (t = 0; c > t; ++t) o[t] = g; + return a.resume() + }, a.resume = function() { + return a.alpha(.1) + }, a.stop = function() { + return a.alpha(0) + }, a.drag = function() { + return e || (e = ta.behavior.drag().origin(y).on("dragstart.force", Xu).on("drag.force", t).on("dragend.force", $u)), arguments.length ? void this.on("mouseover.force", Bu).on("mouseout.force", Wu).call(e) : e + }, ta.rebind(a, c, "on") + }; + var fl = 20, + hl = 1, + gl = 1 / 0; + ta.layout.hierarchy = function() { + function n(u) { + var i, o = [u], + a = []; + for (u.depth = 0; null != (i = o.pop());) + if (a.push(i), (l = e.call(n, i, i.depth)) && (c = l.length)) { + for (var c, l, s; --c >= 0;) o.push(s = l[c]), s.parent = i, s.depth = i.depth + 1; + r && (i.value = 0), i.children = l + } else r && (i.value = +r.call(n, i, i.depth) || 0), delete i.children; + return Qu(u, function(n) { + var e, u; + t && (e = n.children) && e.sort(t), r && (u = n.parent) && (u.value += n.value) + }), a + } + var t = ei, + e = ni, + r = ti; + return n.sort = function(e) { + return arguments.length ? (t = e, n) : t + }, n.children = function(t) { + return arguments.length ? (e = t, n) : e + }, n.value = function(t) { + return arguments.length ? (r = t, n) : r + }, n.revalue = function(t) { + return r && (Ku(t, function(n) { + n.children && (n.value = 0) + }), Qu(t, function(t) { + var e; + t.children || (t.value = +r.call(n, t, t.depth) || 0), (e = t.parent) && (e.value += t.value) + })), t + }, n + }, ta.layout.partition = function() { + function n(t, e, r, u) { + var i = t.children; + if (t.x = e, t.y = t.depth * u, t.dx = r, t.dy = u, i && (o = i.length)) { + var o, a, c, l = -1; + for (r = t.value ? r / t.value : 0; ++l < o;) n(a = i[l], e, c = a.value * r, u), e += c + } + } + + function t(n) { + var e = n.children, + r = 0; + if (e && (u = e.length)) + for (var u, i = -1; ++i < u;) r = Math.max(r, t(e[i])); + return 1 + r + } + + function e(e, i) { + var o = r.call(this, e, i); + return n(o[0], 0, u[0], u[1] / t(o[0])), o + } + var r = ta.layout.hierarchy(), + u = [1, 1]; + return e.size = function(n) { + return arguments.length ? (u = n, e) : u + }, Gu(e, r) + }, ta.layout.pie = function() { + function n(o) { + var a, c = o.length, + l = o.map(function(e, r) { + return +t.call(n, e, r) + }), + s = +("function" == typeof r ? r.apply(this, arguments) : r), + f = ("function" == typeof u ? u.apply(this, arguments) : u) - s, + h = Math.min(Math.abs(f) / c, +("function" == typeof i ? i.apply(this, arguments) : i)), + g = h * (0 > f ? -1 : 1), + p = (f - c * g) / ta.sum(l), + v = ta.range(c), + d = []; + return null != e && v.sort(e === pl ? function(n, t) { + return l[t] - l[n] + } : function(n, t) { + return e(o[n], o[t]) + }), v.forEach(function(n) { + d[n] = { + data: o[n], + value: a = l[n], + startAngle: s, + endAngle: s += a * p + g, + padAngle: h + } + }), d + } + var t = Number, + e = pl, + r = 0, + u = La, + i = 0; + return n.value = function(e) { + return arguments.length ? (t = e, n) : t + }, n.sort = function(t) { + return arguments.length ? (e = t, n) : e + }, n.startAngle = function(t) { + return arguments.length ? (r = t, n) : r + }, n.endAngle = function(t) { + return arguments.length ? (u = t, n) : u + }, n.padAngle = function(t) { + return arguments.length ? (i = t, n) : i + }, n + }; + var pl = {}; + ta.layout.stack = function() { + function n(a, c) { + if (!(h = a.length)) return a; + var l = a.map(function(e, r) { + return t.call(n, e, r) + }), + s = l.map(function(t) { + return t.map(function(t, e) { + return [i.call(n, t, e), o.call(n, t, e)] + }) + }), + f = e.call(n, s, c); + l = ta.permute(l, f), s = ta.permute(s, f); + var h, g, p, v, d = r.call(n, s, c), + m = l[0].length; + for (p = 0; m > p; ++p) + for (u.call(n, l[0][p], v = d[p], s[0][p][1]), g = 1; h > g; ++g) u.call(n, l[g][p], v += s[g - 1][p][1], s[g][p][1]); + return a + } + var t = y, + e = ai, + r = ci, + u = oi, + i = ui, + o = ii; + return n.values = function(e) { + return arguments.length ? (t = e, n) : t + }, n.order = function(t) { + return arguments.length ? (e = "function" == typeof t ? t : vl.get(t) || ai, n) : e + }, n.offset = function(t) { + return arguments.length ? (r = "function" == typeof t ? t : dl.get(t) || ci, n) : r + }, n.x = function(t) { + return arguments.length ? (i = t, n) : i + }, n.y = function(t) { + return arguments.length ? (o = t, n) : o + }, n.out = function(t) { + return arguments.length ? (u = t, n) : u + }, n + }; + var vl = ta.map({ + "inside-out": function(n) { + var t, e, r = n.length, + u = n.map(li), + i = n.map(si), + o = ta.range(r).sort(function(n, t) { + return u[n] - u[t] + }), + a = 0, + c = 0, + l = [], + s = []; + for (t = 0; r > t; ++t) e = o[t], c > a ? (a += i[e], l.push(e)) : (c += i[e], s.push(e)); + return s.reverse().concat(l) + }, + reverse: function(n) { + return ta.range(n.length).reverse() + }, + "default": ai + }), + dl = ta.map({ + silhouette: function(n) { + var t, e, r, u = n.length, + i = n[0].length, + o = [], + a = 0, + c = []; + for (e = 0; i > e; ++e) { + for (t = 0, r = 0; u > t; t++) r += n[t][e][1]; + r > a && (a = r), o.push(r) + } + for (e = 0; i > e; ++e) c[e] = (a - o[e]) / 2; + return c + }, + wiggle: function(n) { + var t, e, r, u, i, o, a, c, l, s = n.length, + f = n[0], + h = f.length, + g = []; + for (g[0] = c = l = 0, e = 1; h > e; ++e) { + for (t = 0, u = 0; s > t; ++t) u += n[t][e][1]; + for (t = 0, i = 0, a = f[e][0] - f[e - 1][0]; s > t; ++t) { + for (r = 0, o = (n[t][e][1] - n[t][e - 1][1]) / (2 * a); t > r; ++r) o += (n[r][e][1] - n[r][e - 1][1]) / a; + i += o * n[t][e][1] + } + g[e] = c -= u ? i / u * a : 0, l > c && (l = c) + } + for (e = 0; h > e; ++e) g[e] -= l; + return g + }, + expand: function(n) { + var t, e, r, u = n.length, + i = n[0].length, + o = 1 / u, + a = []; + for (e = 0; i > e; ++e) { + for (t = 0, r = 0; u > t; t++) r += n[t][e][1]; + if (r) + for (t = 0; u > t; t++) n[t][e][1] /= r; + else + for (t = 0; u > t; t++) n[t][e][1] = o + } + for (e = 0; i > e; ++e) a[e] = 0; + return a + }, + zero: ci + }); + ta.layout.histogram = function() { + function n(n, i) { + for (var o, a, c = [], l = n.map(e, this), s = r.call(this, l, i), f = u.call(this, s, l, i), i = -1, h = l.length, g = f.length - 1, p = t ? 1 : 1 / h; ++i < g;) o = c[i] = [], o.dx = f[i + 1] - (o.x = f[i]), o.y = 0; + if (g > 0) + for (i = -1; ++i < h;) a = l[i], a >= s[0] && a <= s[1] && (o = c[ta.bisect(f, a, 1, g) - 1], o.y += p, o.push(n[i])); + return c + } + var t = !0, + e = Number, + r = pi, + u = hi; + return n.value = function(t) { + return arguments.length ? (e = t, n) : e + }, n.range = function(t) { + return arguments.length ? (r = Et(t), n) : r + }, n.bins = function(t) { + return arguments.length ? (u = "number" == typeof t ? function(n) { + return gi(n, t) + } : Et(t), n) : u + }, n.frequency = function(e) { + return arguments.length ? (t = !!e, n) : t + }, n + }, ta.layout.pack = function() { + function n(n, i) { + var o = e.call(this, n, i), + a = o[0], + c = u[0], + l = u[1], + s = null == t ? Math.sqrt : "function" == typeof t ? t : function() { + return t + }; + if (a.x = a.y = 0, Qu(a, function(n) { + n.r = +s(n.value) + }), Qu(a, Mi), r) { + var f = r * (t ? 1 : Math.max(2 * a.r / c, 2 * a.r / l)) / 2; + Qu(a, function(n) { + n.r += f + }), Qu(a, Mi), Qu(a, function(n) { + n.r -= f + }) + } + return _i(a, c / 2, l / 2, t ? 1 : 1 / Math.max(2 * a.r / c, 2 * a.r / l)), o + } + var t, e = ta.layout.hierarchy().sort(vi), + r = 0, + u = [1, 1]; + return n.size = function(t) { + return arguments.length ? (u = t, n) : u + }, n.radius = function(e) { + return arguments.length ? (t = null == e || "function" == typeof e ? e : +e, n) : t + }, n.padding = function(t) { + return arguments.length ? (r = +t, n) : r + }, Gu(n, e) + }, ta.layout.tree = function() { + function n(n, u) { + var s = o.call(this, n, u), + f = s[0], + h = t(f); + if (Qu(h, e), h.parent.m = -h.z, Ku(h, r), l) Ku(f, i); + else { + var g = f, + p = f, + v = f; + Ku(f, function(n) { + n.x < g.x && (g = n), n.x > p.x && (p = n), n.depth > v.depth && (v = n) + }); + var d = a(g, p) / 2 - g.x, + m = c[0] / (p.x + a(p, g) / 2 + d), + y = c[1] / (v.depth || 1); + Ku(f, function(n) { + n.x = (n.x + d) * m, n.y = n.depth * y + }) + } + return s + } + + function t(n) { + for (var t, e = { + A: null, + children: [n] + }, r = [e]; null != (t = r.pop());) + for (var u, i = t.children, o = 0, a = i.length; a > o; ++o) r.push((i[o] = u = { + _: i[o], + parent: t, + children: (u = i[o].children) && u.slice() || [], + A: null, + a: null, + z: 0, + m: 0, + c: 0, + s: 0, + t: null, + i: o + }).a = u); + return e.children[0] + } + + function e(n) { + var t = n.children, + e = n.parent.children, + r = n.i ? e[n.i - 1] : null; + if (t.length) { + Ni(n); + var i = (t[0].z + t[t.length - 1].z) / 2; + r ? (n.z = r.z + a(n._, r._), n.m = n.z - i) : n.z = i + } else r && (n.z = r.z + a(n._, r._)); + n.parent.A = u(n, r, n.parent.A || e[0]) + } + + function r(n) { + n._.x = n.z + n.parent.m, n.m += n.parent.m + } + + function u(n, t, e) { + if (t) { + for (var r, u = n, i = n, o = t, c = u.parent.children[0], l = u.m, s = i.m, f = o.m, h = c.m; o = Ei(o), u = ki(u), o && u;) c = ki(c), i = Ei(i), i.a = n, r = o.z + f - u.z - l + a(o._, u._), r > 0 && (Ai(Ci(o, n, e), n, r), l += r, s += r), f += o.m, l += u.m, h += c.m, s += i.m; + o && !Ei(i) && (i.t = o, i.m += f - s), u && !ki(c) && (c.t = u, c.m += l - h, e = n) + } + return e + } + + function i(n) { + n.x *= c[0], n.y = n.depth * c[1] + } + var o = ta.layout.hierarchy().sort(null).value(null), + a = Si, + c = [1, 1], + l = null; + return n.separation = function(t) { + return arguments.length ? (a = t, n) : a + }, n.size = function(t) { + return arguments.length ? (l = null == (c = t) ? i : null, n) : l ? null : c + }, n.nodeSize = function(t) { + return arguments.length ? (l = null == (c = t) ? null : i, n) : l ? c : null + }, Gu(n, o) + }, ta.layout.cluster = function() { + function n(n, i) { + var o, a = t.call(this, n, i), + c = a[0], + l = 0; + Qu(c, function(n) { + var t = n.children; + t && t.length ? (n.x = qi(t), n.y = zi(t)) : (n.x = o ? l += e(n, o) : 0, n.y = 0, o = n) + }); + var s = Li(c), + f = Ti(c), + h = s.x - e(s, f) / 2, + g = f.x + e(f, s) / 2; + return Qu(c, u ? function(n) { + n.x = (n.x - c.x) * r[0], n.y = (c.y - n.y) * r[1] + } : function(n) { + n.x = (n.x - h) / (g - h) * r[0], n.y = (1 - (c.y ? n.y / c.y : 1)) * r[1] + }), a + } + var t = ta.layout.hierarchy().sort(null).value(null), + e = Si, + r = [1, 1], + u = !1; + return n.separation = function(t) { + return arguments.length ? (e = t, n) : e + }, n.size = function(t) { + return arguments.length ? (u = null == (r = t), n) : u ? null : r + }, n.nodeSize = function(t) { + return arguments.length ? (u = null != (r = t), n) : u ? r : null + }, Gu(n, t) + }, ta.layout.treemap = function() { + function n(n, t) { + for (var e, r, u = -1, i = n.length; ++u < i;) r = (e = n[u]).value * (0 > t ? 0 : t), e.area = isNaN(r) || 0 >= r ? 0 : r + } + + function t(e) { + var i = e.children; + if (i && i.length) { + var o, a, c, l = f(e), + s = [], + h = i.slice(), + p = 1 / 0, + v = "slice" === g ? l.dx : "dice" === g ? l.dy : "slice-dice" === g ? 1 & e.depth ? l.dy : l.dx : Math.min(l.dx, l.dy); + for (n(h, l.dx * l.dy / e.value), s.area = 0; + (c = h.length) > 0;) s.push(o = h[c - 1]), s.area += o.area, "squarify" !== g || (a = r(s, v)) <= p ? (h.pop(), p = a) : (s.area -= s.pop().area, u(s, v, l, !1), v = Math.min(l.dx, l.dy), s.length = s.area = 0, p = 1 / 0); + s.length && (u(s, v, l, !0), s.length = s.area = 0), i.forEach(t) + } + } + + function e(t) { + var r = t.children; + if (r && r.length) { + var i, o = f(t), + a = r.slice(), + c = []; + for (n(a, o.dx * o.dy / t.value), c.area = 0; i = a.pop();) c.push(i), c.area += i.area, null != i.z && (u(c, i.z ? o.dx : o.dy, o, !a.length), c.length = c.area = 0); + r.forEach(e) + } + } + + function r(n, t) { + for (var e, r = n.area, u = 0, i = 1 / 0, o = -1, a = n.length; ++o < a;)(e = n[o].area) && (i > e && (i = e), e > u && (u = e)); + return r *= r, t *= t, r ? Math.max(t * u * p / r, r / (t * i * p)) : 1 / 0 + } + + function u(n, t, e, r) { + var u, i = -1, + o = n.length, + a = e.x, + l = e.y, + s = t ? c(n.area / t) : 0; + if (t == e.dx) { + for ((r || s > e.dy) && (s = e.dy); ++i < o;) u = n[i], u.x = a, u.y = l, u.dy = s, a += u.dx = Math.min(e.x + e.dx - a, s ? c(u.area / s) : 0); + u.z = !0, u.dx += e.x + e.dx - a, e.y += s, e.dy -= s + } else { + for ((r || s > e.dx) && (s = e.dx); ++i < o;) u = n[i], u.x = a, u.y = l, u.dx = s, l += u.dy = Math.min(e.y + e.dy - l, s ? c(u.area / s) : 0); + u.z = !1, u.dy += e.y + e.dy - l, e.x += s, e.dx -= s + } + } + + function i(r) { + var u = o || a(r), + i = u[0]; + return i.x = 0, i.y = 0, i.dx = l[0], i.dy = l[1], o && a.revalue(i), n([i], i.dx * i.dy / i.value), (o ? e : t)(i), h && (o = u), u + } + var o, a = ta.layout.hierarchy(), + c = Math.round, + l = [1, 1], + s = null, + f = Ri, + h = !1, + g = "squarify", + p = .5 * (1 + Math.sqrt(5)); + return i.size = function(n) { + return arguments.length ? (l = n, i) : l + }, i.padding = function(n) { + function t(t) { + var e = n.call(i, t, t.depth); + return null == e ? Ri(t) : Di(t, "number" == typeof e ? [e, e, e, e] : e) + } + + function e(t) { + return Di(t, n) + } + if (!arguments.length) return s; + var r; + return f = null == (s = n) ? Ri : "function" == (r = typeof n) ? t : "number" === r ? (n = [n, n, n, n], e) : e, i + }, i.round = function(n) { + return arguments.length ? (c = n ? Math.round : Number, i) : c != Number + }, i.sticky = function(n) { + return arguments.length ? (h = n, o = null, i) : h + }, i.ratio = function(n) { + return arguments.length ? (p = n, i) : p + }, i.mode = function(n) { + return arguments.length ? (g = n + "", i) : g + }, Gu(i, a) + }, ta.random = { + normal: function(n, t) { + var e = arguments.length; + return 2 > e && (t = 1), 1 > e && (n = 0), + function() { + var e, r, u; + do e = 2 * Math.random() - 1, r = 2 * Math.random() - 1, u = e * e + r * r; while (!u || u > 1); + return n + t * e * Math.sqrt(-2 * Math.log(u) / u) + } + }, + logNormal: function() { + var n = ta.random.normal.apply(ta, arguments); + return function() { + return Math.exp(n()) + } + }, + bates: function(n) { + var t = ta.random.irwinHall(n); + return function() { + return t() / n + } + }, + irwinHall: function(n) { + return function() { + for (var t = 0, e = 0; n > e; e++) t += Math.random(); + return t + } + } + }, ta.scale = {}; + var ml = { + floor: y, + ceil: y + }; + ta.scale.linear = function() { + return Ii([0, 1], [0, 1], mu, !1) + }; + var yl = { + s: 1, + g: 1, + p: 1, + r: 1, + e: 1 + }; + ta.scale.log = function() { + return Ji(ta.scale.linear().domain([0, 1]), 10, !0, [1, 10]) + }; + var Ml = ta.format(".0e"), + xl = { + floor: function(n) { + return -Math.ceil(-n) + }, + ceil: function(n) { + return -Math.floor(-n) + } + }; + ta.scale.pow = function() { + return Gi(ta.scale.linear(), 1, [0, 1]) + }, ta.scale.sqrt = function() { + return ta.scale.pow().exponent(.5) + }, ta.scale.ordinal = function() { + return Qi([], { + t: "range", + a: [ + [] + ] + }) + }, ta.scale.category10 = function() { + return ta.scale.ordinal().range(bl) + }, ta.scale.category20 = function() { + return ta.scale.ordinal().range(_l) + }, ta.scale.category20b = function() { + return ta.scale.ordinal().range(wl) + }, ta.scale.category20c = function() { + return ta.scale.ordinal().range(Sl) + }; + var bl = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(Mt), + _l = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(Mt), + wl = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(Mt), + Sl = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(Mt); + ta.scale.quantile = function() { + return no([], []) + }, ta.scale.quantize = function() { + return to(0, 1, [0, 1]) + }, ta.scale.threshold = function() { + return eo([.5], [0, 1]) + }, ta.scale.identity = function() { + return ro([0, 1]) + }, ta.svg = {}, ta.svg.arc = function() { + function n() { + var n = Math.max(0, +e.apply(this, arguments)), + l = Math.max(0, +r.apply(this, arguments)), + s = o.apply(this, arguments) - Ra, + f = a.apply(this, arguments) - Ra, + h = Math.abs(f - s), + g = s > f ? 0 : 1; + if (n > l && (p = l, l = n, n = p), h >= Ta) return t(l, g) + (n ? t(n, 1 - g) : "") + "Z"; + var p, v, d, m, y, M, x, b, _, w, S, k, E = 0, + A = 0, + N = []; + if ((m = (+c.apply(this, arguments) || 0) / 2) && (d = i === kl ? Math.sqrt(n * n + l * l) : +i.apply(this, arguments), g || (A *= -1), l && (A = tt(d / l * Math.sin(m))), n && (E = tt(d / n * Math.sin(m)))), l) { + y = l * Math.cos(s + A), M = l * Math.sin(s + A), x = l * Math.cos(f - A), b = l * Math.sin(f - A); + var C = Math.abs(f - s - 2 * A) <= qa ? 0 : 1; + if (A && so(y, M, x, b) === g ^ C) { + var z = (s + f) / 2; + y = l * Math.cos(z), M = l * Math.sin(z), x = b = null + } + } else y = M = 0; + if (n) { + _ = n * Math.cos(f - E), w = n * Math.sin(f - E), S = n * Math.cos(s + E), k = n * Math.sin(s + E); + var q = Math.abs(s - f + 2 * E) <= qa ? 0 : 1; + if (E && so(_, w, S, k) === 1 - g ^ q) { + var L = (s + f) / 2; + _ = n * Math.cos(L), w = n * Math.sin(L), S = k = null + } + } else _ = w = 0; + if ((p = Math.min(Math.abs(l - n) / 2, +u.apply(this, arguments))) > .001) { + v = l > n ^ g ? 0 : 1; + var T = null == S ? [_, w] : null == x ? [y, M] : Lr([y, M], [S, k], [x, b], [_, w]), + R = y - T[0], + D = M - T[1], + P = x - T[0], + U = b - T[1], + j = 1 / Math.sin(Math.acos((R * P + D * U) / (Math.sqrt(R * R + D * D) * Math.sqrt(P * P + U * U))) / 2), + F = Math.sqrt(T[0] * T[0] + T[1] * T[1]); + if (null != x) { + var H = Math.min(p, (l - F) / (j + 1)), + O = fo(null == S ? [_, w] : [S, k], [y, M], l, H, g), + I = fo([x, b], [_, w], l, H, g); + p === H ? N.push("M", O[0], "A", H, ",", H, " 0 0,", v, " ", O[1], "A", l, ",", l, " 0 ", 1 - g ^ so(O[1][0], O[1][1], I[1][0], I[1][1]), ",", g, " ", I[1], "A", H, ",", H, " 0 0,", v, " ", I[0]) : N.push("M", O[0], "A", H, ",", H, " 0 1,", v, " ", I[0]) + } else N.push("M", y, ",", M); + if (null != S) { + var Y = Math.min(p, (n - F) / (j - 1)), + Z = fo([y, M], [S, k], n, -Y, g), + V = fo([_, w], null == x ? [y, M] : [x, b], n, -Y, g); + p === Y ? N.push("L", V[0], "A", Y, ",", Y, " 0 0,", v, " ", V[1], "A", n, ",", n, " 0 ", g ^ so(V[1][0], V[1][1], Z[1][0], Z[1][1]), ",", 1 - g, " ", Z[1], "A", Y, ",", Y, " 0 0,", v, " ", Z[0]) : N.push("L", V[0], "A", Y, ",", Y, " 0 0,", v, " ", Z[0]) + } else N.push("L", _, ",", w) + } else N.push("M", y, ",", M), null != x && N.push("A", l, ",", l, " 0 ", C, ",", g, " ", x, ",", b), N.push("L", _, ",", w), null != S && N.push("A", n, ",", n, " 0 ", q, ",", 1 - g, " ", S, ",", k); + return N.push("Z"), N.join("") + } + + function t(n, t) { + return "M0," + n + "A" + n + "," + n + " 0 1," + t + " 0," + -n + "A" + n + "," + n + " 0 1," + t + " 0," + n + } + var e = io, + r = oo, + u = uo, + i = kl, + o = ao, + a = co, + c = lo; + return n.innerRadius = function(t) { + return arguments.length ? (e = Et(t), n) : e + }, n.outerRadius = function(t) { + return arguments.length ? (r = Et(t), n) : r + }, n.cornerRadius = function(t) { + return arguments.length ? (u = Et(t), n) : u + }, n.padRadius = function(t) { + return arguments.length ? (i = t == kl ? kl : Et(t), n) : i + }, n.startAngle = function(t) { + return arguments.length ? (o = Et(t), n) : o + }, n.endAngle = function(t) { + return arguments.length ? (a = Et(t), n) : a + }, n.padAngle = function(t) { + return arguments.length ? (c = Et(t), n) : c + }, n.centroid = function() { + var n = (+e.apply(this, arguments) + +r.apply(this, arguments)) / 2, + t = (+o.apply(this, arguments) + +a.apply(this, arguments)) / 2 - Ra; + return [Math.cos(t) * n, Math.sin(t) * n] + }, n + }; + var kl = "auto"; + ta.svg.line = function() { + return ho(y) + }; + var El = ta.map({ + linear: go, + "linear-closed": po, + step: vo, + "step-before": mo, + "step-after": yo, + basis: So, + "basis-open": ko, + "basis-closed": Eo, + bundle: Ao, + cardinal: bo, + "cardinal-open": Mo, + "cardinal-closed": xo, + monotone: To + }); + El.forEach(function(n, t) { + t.key = n, t.closed = /-closed$/.test(n) + }); + var Al = [0, 2 / 3, 1 / 3, 0], + Nl = [0, 1 / 3, 2 / 3, 0], + Cl = [0, 1 / 6, 2 / 3, 1 / 6]; + ta.svg.line.radial = function() { + var n = ho(Ro); + return n.radius = n.x, delete n.x, n.angle = n.y, delete n.y, n + }, mo.reverse = yo, yo.reverse = mo, ta.svg.area = function() { + return Do(y) + }, ta.svg.area.radial = function() { + var n = Do(Ro); + return n.radius = n.x, delete n.x, n.innerRadius = n.x0, delete n.x0, n.outerRadius = n.x1, delete n.x1, n.angle = n.y, delete n.y, n.startAngle = n.y0, delete n.y0, n.endAngle = n.y1, delete n.y1, n + }, ta.svg.chord = function() { + function n(n, a) { + var c = t(this, i, n, a), + l = t(this, o, n, a); + return "M" + c.p0 + r(c.r, c.p1, c.a1 - c.a0) + (e(c, l) ? u(c.r, c.p1, c.r, c.p0) : u(c.r, c.p1, l.r, l.p0) + r(l.r, l.p1, l.a1 - l.a0) + u(l.r, l.p1, c.r, c.p0)) + "Z" + } + + function t(n, t, e, r) { + var u = t.call(n, e, r), + i = a.call(n, u, r), + o = c.call(n, u, r) - Ra, + s = l.call(n, u, r) - Ra; + return { + r: i, + a0: o, + a1: s, + p0: [i * Math.cos(o), i * Math.sin(o)], + p1: [i * Math.cos(s), i * Math.sin(s)] + } + } + + function e(n, t) { + return n.a0 == t.a0 && n.a1 == t.a1 + } + + function r(n, t, e) { + return "A" + n + "," + n + " 0 " + +(e > qa) + ",1 " + t + } + + function u(n, t, e, r) { + return "Q 0,0 " + r + } + var i = mr, + o = yr, + a = Po, + c = ao, + l = co; + return n.radius = function(t) { + return arguments.length ? (a = Et(t), n) : a + }, n.source = function(t) { + return arguments.length ? (i = Et(t), n) : i + }, n.target = function(t) { + return arguments.length ? (o = Et(t), n) : o + }, n.startAngle = function(t) { + return arguments.length ? (c = Et(t), n) : c + }, n.endAngle = function(t) { + return arguments.length ? (l = Et(t), n) : l + }, n + }, ta.svg.diagonal = function() { + function n(n, u) { + var i = t.call(this, n, u), + o = e.call(this, n, u), + a = (i.y + o.y) / 2, + c = [i, { + x: i.x, + y: a + }, { + x: o.x, + y: a + }, o]; + return c = c.map(r), "M" + c[0] + "C" + c[1] + " " + c[2] + " " + c[3] + } + var t = mr, + e = yr, + r = Uo; + return n.source = function(e) { + return arguments.length ? (t = Et(e), n) : t + }, n.target = function(t) { + return arguments.length ? (e = Et(t), n) : e + }, n.projection = function(t) { + return arguments.length ? (r = t, n) : r + }, n + }, ta.svg.diagonal.radial = function() { + var n = ta.svg.diagonal(), + t = Uo, + e = n.projection; + return n.projection = function(n) { + return arguments.length ? e(jo(t = n)) : t + }, n + }, ta.svg.symbol = function() { + function n(n, r) { + return (zl.get(t.call(this, n, r)) || Oo)(e.call(this, n, r)) + } + var t = Ho, + e = Fo; + return n.type = function(e) { + return arguments.length ? (t = Et(e), n) : t + }, n.size = function(t) { + return arguments.length ? (e = Et(t), n) : e + }, n + }; + var zl = ta.map({ + circle: Oo, + cross: function(n) { + var t = Math.sqrt(n / 5) / 2; + return "M" + -3 * t + "," + -t + "H" + -t + "V" + -3 * t + "H" + t + "V" + -t + "H" + 3 * t + "V" + t + "H" + t + "V" + 3 * t + "H" + -t + "V" + t + "H" + -3 * t + "Z" + }, + diamond: function(n) { + var t = Math.sqrt(n / (2 * Ll)), + e = t * Ll; + return "M0," + -t + "L" + e + ",0 0," + t + " " + -e + ",0Z" + }, + square: function(n) { + var t = Math.sqrt(n) / 2; + return "M" + -t + "," + -t + "L" + t + "," + -t + " " + t + "," + t + " " + -t + "," + t + "Z" + }, + "triangle-down": function(n) { + var t = Math.sqrt(n / ql), + e = t * ql / 2; + return "M0," + e + "L" + t + "," + -e + " " + -t + "," + -e + "Z" + }, + "triangle-up": function(n) { + var t = Math.sqrt(n / ql), + e = t * ql / 2; + return "M0," + -e + "L" + t + "," + e + " " + -t + "," + e + "Z" + } + }); + ta.svg.symbolTypes = zl.keys(); + var ql = Math.sqrt(3), + Ll = Math.tan(30 * Da); + _a.transition = function(n) { + for (var t, e, r = Tl || ++Ul, u = Xo(n), i = [], o = Rl || { + time: Date.now(), + ease: Su, + delay: 0, + duration: 250 + }, a = -1, c = this.length; ++a < c;) { + i.push(t = []); + for (var l = this[a], s = -1, f = l.length; ++s < f;)(e = l[s]) && $o(e, s, u, r, o), t.push(e) + } + return Yo(i, u, r) + }, _a.interrupt = function(n) { + return this.each(null == n ? Dl : Io(Xo(n))) + }; + var Tl, Rl, Dl = Io(Xo()), + Pl = [], + Ul = 0; + Pl.call = _a.call, Pl.empty = _a.empty, Pl.node = _a.node, Pl.size = _a.size, ta.transition = function(n, t) { + return n && n.transition ? Tl ? n.transition(t) : n : ta.selection().transition(n) + }, ta.transition.prototype = Pl, Pl.select = function(n) { + var t, e, r, u = this.id, + i = this.namespace, + o = []; + n = N(n); + for (var a = -1, c = this.length; ++a < c;) { + o.push(t = []); + for (var l = this[a], s = -1, f = l.length; ++s < f;)(r = l[s]) && (e = n.call(r, r.__data__, s, a)) ? ("__data__" in r && (e.__data__ = r.__data__), $o(e, s, i, u, r[i][u]), t.push(e)) : t.push(null) + } + return Yo(o, i, u) + }, Pl.selectAll = function(n) { + var t, e, r, u, i, o = this.id, + a = this.namespace, + c = []; + n = C(n); + for (var l = -1, s = this.length; ++l < s;) + for (var f = this[l], h = -1, g = f.length; ++h < g;) + if (r = f[h]) { + i = r[a][o], e = n.call(r, r.__data__, h, l), c.push(t = []); + for (var p = -1, v = e.length; ++p < v;)(u = e[p]) && $o(u, p, a, o, i), t.push(u) + } return Yo(c, a, o) + }, Pl.filter = function(n) { + var t, e, r, u = []; + "function" != typeof n && (n = O(n)); + for (var i = 0, o = this.length; o > i; i++) { + u.push(t = []); + for (var e = this[i], a = 0, c = e.length; c > a; a++)(r = e[a]) && n.call(r, r.__data__, a, i) && t.push(r) + } + return Yo(u, this.namespace, this.id) + }, Pl.tween = function(n, t) { + var e = this.id, + r = this.namespace; + return arguments.length < 2 ? this.node()[r][e].tween.get(n) : Y(this, null == t ? function(t) { + t[r][e].tween.remove(n) + } : function(u) { + u[r][e].tween.set(n, t) + }) + }, Pl.attr = function(n, t) { + function e() { + this.removeAttribute(a) + } + + function r() { + this.removeAttributeNS(a.space, a.local) + } + + function u(n) { + return null == n ? e : (n += "", function() { + var t, e = this.getAttribute(a); + return e !== n && (t = o(e, n), function(n) { + this.setAttribute(a, t(n)) + }) + }) + } + + function i(n) { + return null == n ? r : (n += "", function() { + var t, e = this.getAttributeNS(a.space, a.local); + return e !== n && (t = o(e, n), function(n) { + this.setAttributeNS(a.space, a.local, t(n)) + }) + }) + } + if (arguments.length < 2) { + for (t in n) this.attr(t, n[t]); + return this + } + var o = "transform" == n ? Hu : mu, + a = ta.ns.qualify(n); + return Zo(this, "attr." + n, t, a.local ? i : u) + }, Pl.attrTween = function(n, t) { + function e(n, e) { + var r = t.call(this, n, e, this.getAttribute(u)); + return r && function(n) { + this.setAttribute(u, r(n)) + } + } + + function r(n, e) { + var r = t.call(this, n, e, this.getAttributeNS(u.space, u.local)); + return r && function(n) { + this.setAttributeNS(u.space, u.local, r(n)) + } + } + var u = ta.ns.qualify(n); + return this.tween("attr." + n, u.local ? r : e) + }, Pl.style = function(n, e, r) { + function u() { + this.style.removeProperty(n) + } + + function i(e) { + return null == e ? u : (e += "", function() { + var u, i = t(this).getComputedStyle(this, null).getPropertyValue(n); + return i !== e && (u = mu(i, e), function(t) { + this.style.setProperty(n, u(t), r) + }) + }) + } + var o = arguments.length; + if (3 > o) { + if ("string" != typeof n) { + 2 > o && (e = ""); + for (r in n) this.style(r, n[r], e); + return this + } + r = "" + } + return Zo(this, "style." + n, e, i) + }, Pl.styleTween = function(n, e, r) { + function u(u, i) { + var o = e.call(this, u, i, t(this).getComputedStyle(this, null).getPropertyValue(n)); + return o && function(t) { + this.style.setProperty(n, o(t), r) + } + } + return arguments.length < 3 && (r = ""), this.tween("style." + n, u) + }, Pl.text = function(n) { + return Zo(this, "text", n, Vo) + }, Pl.remove = function() { + var n = this.namespace; + return this.each("end.transition", function() { + var t; + this[n].count < 2 && (t = this.parentNode) && t.removeChild(this) + }) + }, Pl.ease = function(n) { + var t = this.id, + e = this.namespace; + return arguments.length < 1 ? this.node()[e][t].ease : ("function" != typeof n && (n = ta.ease.apply(ta, arguments)), Y(this, function(r) { + r[e][t].ease = n + })) + }, Pl.delay = function(n) { + var t = this.id, + e = this.namespace; + return arguments.length < 1 ? this.node()[e][t].delay : Y(this, "function" == typeof n ? function(r, u, i) { + r[e][t].delay = +n.call(r, r.__data__, u, i) + } : (n = +n, function(r) { + r[e][t].delay = n + })) + }, Pl.duration = function(n) { + var t = this.id, + e = this.namespace; + return arguments.length < 1 ? this.node()[e][t].duration : Y(this, "function" == typeof n ? function(r, u, i) { + r[e][t].duration = Math.max(1, n.call(r, r.__data__, u, i)) + } : (n = Math.max(1, n), function(r) { + r[e][t].duration = n + })) + }, Pl.each = function(n, t) { + var e = this.id, + r = this.namespace; + if (arguments.length < 2) { + var u = Rl, + i = Tl; + try { + Tl = e, Y(this, function(t, u, i) { + Rl = t[r][e], n.call(t, t.__data__, u, i) + }) + } finally { + Rl = u, Tl = i + } + } else Y(this, function(u) { + var i = u[r][e]; + (i.event || (i.event = ta.dispatch("start", "end", "interrupt"))).on(n, t) + }); + return this + }, Pl.transition = function() { + for (var n, t, e, r, u = this.id, i = ++Ul, o = this.namespace, a = [], c = 0, l = this.length; l > c; c++) { + a.push(n = []); + for (var t = this[c], s = 0, f = t.length; f > s; s++)(e = t[s]) && (r = e[o][u], $o(e, s, o, i, { + time: r.time, + ease: r.ease, + delay: r.delay + r.duration, + duration: r.duration + })), n.push(e) + } + return Yo(a, o, i) + }, ta.svg.axis = function() { + function n(n) { + n.each(function() { + var n, l = ta.select(this), + s = this.__chart__ || e, + f = this.__chart__ = e.copy(), + h = null == c ? f.ticks ? f.ticks.apply(f, a) : f.domain() : c, + g = null == t ? f.tickFormat ? f.tickFormat.apply(f, a) : y : t, + p = l.selectAll(".tick").data(h, f), + v = p.enter().insert("g", ".domain").attr("class", "tick").style("opacity", Ca), + d = ta.transition(p.exit()).style("opacity", Ca).remove(), + m = ta.transition(p.order()).style("opacity", 1), + M = Math.max(u, 0) + o, + x = Ui(f), + b = l.selectAll(".domain").data([0]), + _ = (b.enter().append("path").attr("class", "domain"), ta.transition(b)); + v.append("line"), v.append("text"); + var w, S, k, E, A = v.select("line"), + N = m.select("line"), + C = p.select("text").text(g), + z = v.select("text"), + q = m.select("text"), + L = "top" === r || "left" === r ? -1 : 1; + if ("bottom" === r || "top" === r ? (n = Bo, w = "x", k = "y", S = "x2", E = "y2", C.attr("dy", 0 > L ? "0em" : ".71em").style("text-anchor", "middle"), _.attr("d", "M" + x[0] + "," + L * i + "V0H" + x[1] + "V" + L * i)) : (n = Wo, w = "y", k = "x", S = "y2", E = "x2", C.attr("dy", ".32em").style("text-anchor", 0 > L ? "end" : "start"), _.attr("d", "M" + L * i + "," + x[0] + "H0V" + x[1] + "H" + L * i)), A.attr(E, L * u), z.attr(k, L * M), N.attr(S, 0).attr(E, L * u), q.attr(w, 0).attr(k, L * M), f.rangeBand) { + var T = f, + R = T.rangeBand() / 2; + s = f = function(n) { + return T(n) + R + } + } else s.rangeBand ? s = f : d.call(n, f, s); + v.call(n, s, f), m.call(n, f, f) + }) + } + var t, e = ta.scale.linear(), + r = jl, + u = 6, + i = 6, + o = 3, + a = [10], + c = null; + return n.scale = function(t) { + return arguments.length ? (e = t, n) : e + }, n.orient = function(t) { + return arguments.length ? (r = t in Fl ? t + "" : jl, n) : r + }, n.ticks = function() { + return arguments.length ? (a = arguments, n) : a + }, n.tickValues = function(t) { + return arguments.length ? (c = t, n) : c + }, n.tickFormat = function(e) { + return arguments.length ? (t = e, n) : t + }, n.tickSize = function(t) { + var e = arguments.length; + return e ? (u = +t, i = +arguments[e - 1], n) : u + }, n.innerTickSize = function(t) { + return arguments.length ? (u = +t, n) : u + }, n.outerTickSize = function(t) { + return arguments.length ? (i = +t, n) : i + }, n.tickPadding = function(t) { + return arguments.length ? (o = +t, n) : o + }, n.tickSubdivide = function() { + return arguments.length && n + }, n + }; + var jl = "bottom", + Fl = { + top: 1, + right: 1, + bottom: 1, + left: 1 + }; + ta.svg.brush = function() { + function n(t) { + t.each(function() { + var t = ta.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", i).on("touchstart.brush", i), + o = t.selectAll(".background").data([0]); + o.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"), t.selectAll(".extent").data([0]).enter().append("rect").attr("class", "extent").style("cursor", "move"); + var a = t.selectAll(".resize").data(v, y); + a.exit().remove(), a.enter().append("g").attr("class", function(n) { + return "resize " + n + }).style("cursor", function(n) { + return Hl[n] + }).append("rect").attr("x", function(n) { + return /[ew]$/.test(n) ? -3 : null + }).attr("y", function(n) { + return /^[ns]/.test(n) ? -3 : null + }).attr("width", 6).attr("height", 6).style("visibility", "hidden"), a.style("display", n.empty() ? "none" : null); + var c, f = ta.transition(t), + h = ta.transition(o); + l && (c = Ui(l), h.attr("x", c[0]).attr("width", c[1] - c[0]), r(f)), s && (c = Ui(s), h.attr("y", c[0]).attr("height", c[1] - c[0]), u(f)), e(f) + }) + } + + function e(n) { + n.selectAll(".resize").attr("transform", function(n) { + return "translate(" + f[+/e$/.test(n)] + "," + h[+/^s/.test(n)] + ")" + }) + } + + function r(n) { + n.select(".extent").attr("x", f[0]), n.selectAll(".extent,.n>rect,.s>rect").attr("width", f[1] - f[0]) + } + + function u(n) { + n.select(".extent").attr("y", h[0]), n.selectAll(".extent,.e>rect,.w>rect").attr("height", h[1] - h[0]) + } + + function i() { + function i() { + 32 == ta.event.keyCode && (C || (M = null, q[0] -= f[1], q[1] -= h[1], C = 2), S()) + } + + function v() { + 32 == ta.event.keyCode && 2 == C && (q[0] += f[1], q[1] += h[1], C = 0, S()) + } + + function d() { + var n = ta.mouse(b), + t = !1; + x && (n[0] += x[0], n[1] += x[1]), C || (ta.event.altKey ? (M || (M = [(f[0] + f[1]) / 2, (h[0] + h[1]) / 2]), q[0] = f[+(n[0] < M[0])], q[1] = h[+(n[1] < M[1])]) : M = null), A && m(n, l, 0) && (r(k), t = !0), N && m(n, s, 1) && (u(k), t = !0), t && (e(k), w({ + type: "brush", + mode: C ? "move" : "resize" + })) + } + + function m(n, t, e) { + var r, u, i = Ui(t), + c = i[0], + l = i[1], + s = q[e], + v = e ? h : f, + d = v[1] - v[0]; + return C && (c -= s, l -= d + s), r = (e ? p : g) ? Math.max(c, Math.min(l, n[e])) : n[e], C ? u = (r += s) + d : (M && (s = Math.max(c, Math.min(l, 2 * M[e] - r))), r > s ? (u = r, r = s) : u = s), v[0] != r || v[1] != u ? (e ? a = null : o = null, v[0] = r, v[1] = u, !0) : void 0 + } + + function y() { + d(), k.style("pointer-events", "all").selectAll(".resize").style("display", n.empty() ? "none" : null), ta.select("body").style("cursor", null), L.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null), z(), w({ + type: "brushend" + }) + } + var M, x, b = this, + _ = ta.select(ta.event.target), + w = c.of(b, arguments), + k = ta.select(b), + E = _.datum(), + A = !/^(n|s)$/.test(E) && l, + N = !/^(e|w)$/.test(E) && s, + C = _.classed("extent"), + z = W(b), + q = ta.mouse(b), + L = ta.select(t(b)).on("keydown.brush", i).on("keyup.brush", v); + if (ta.event.changedTouches ? L.on("touchmove.brush", d).on("touchend.brush", y) : L.on("mousemove.brush", d).on("mouseup.brush", y), k.interrupt().selectAll("*").interrupt(), C) q[0] = f[0] - q[0], q[1] = h[0] - q[1]; + else if (E) { + var T = +/w$/.test(E), + R = +/^n/.test(E); + x = [f[1 - T] - q[0], h[1 - R] - q[1]], q[0] = f[T], q[1] = h[R] + } else ta.event.altKey && (M = q.slice()); + k.style("pointer-events", "none").selectAll(".resize").style("display", null), ta.select("body").style("cursor", _.style("cursor")), w({ + type: "brushstart" + }), d() + } + var o, a, c = E(n, "brushstart", "brush", "brushend"), + l = null, + s = null, + f = [0, 0], + h = [0, 0], + g = !0, + p = !0, + v = Ol[0]; + return n.event = function(n) { + n.each(function() { + var n = c.of(this, arguments), + t = { + x: f, + y: h, + i: o, + j: a + }, + e = this.__chart__ || t; + this.__chart__ = t, Tl ? ta.select(this).transition().each("start.brush", function() { + o = e.i, a = e.j, f = e.x, h = e.y, n({ + type: "brushstart" + }) + }).tween("brush:brush", function() { + var e = yu(f, t.x), + r = yu(h, t.y); + return o = a = null, + function(u) { + f = t.x = e(u), h = t.y = r(u), n({ + type: "brush", + mode: "resize" + }) + } + }).each("end.brush", function() { + o = t.i, a = t.j, n({ + type: "brush", + mode: "resize" + }), n({ + type: "brushend" + }) + }) : (n({ + type: "brushstart" + }), n({ + type: "brush", + mode: "resize" + }), n({ + type: "brushend" + })) + }) + }, n.x = function(t) { + return arguments.length ? (l = t, v = Ol[!l << 1 | !s], n) : l + }, n.y = function(t) { + return arguments.length ? (s = t, v = Ol[!l << 1 | !s], n) : s + }, n.clamp = function(t) { + return arguments.length ? (l && s ? (g = !!t[0], p = !!t[1]) : l ? g = !!t : s && (p = !!t), n) : l && s ? [g, p] : l ? g : s ? p : null + }, n.extent = function(t) { + var e, r, u, i, c; + return arguments.length ? (l && (e = t[0], r = t[1], s && (e = e[0], r = r[0]), o = [e, r], l.invert && (e = l(e), r = l(r)), e > r && (c = e, e = r, r = c), (e != f[0] || r != f[1]) && (f = [e, r])), s && (u = t[0], i = t[1], l && (u = u[1], i = i[1]), a = [u, i], s.invert && (u = s(u), i = s(i)), u > i && (c = u, u = i, i = c), (u != h[0] || i != h[1]) && (h = [u, i])), n) : (l && (o ? (e = o[0], r = o[1]) : (e = f[0], r = f[1], l.invert && (e = l.invert(e), r = l.invert(r)), e > r && (c = e, e = r, r = c))), s && (a ? (u = a[0], i = a[1]) : (u = h[0], i = h[1], s.invert && (u = s.invert(u), i = s.invert(i)), u > i && (c = u, u = i, i = c))), l && s ? [ + [e, u], + [r, i] + ] : l ? [e, r] : s && [u, i]) + }, n.clear = function() { + return n.empty() || (f = [0, 0], h = [0, 0], o = a = null), n + }, n.empty = function() { + return !!l && f[0] == f[1] || !!s && h[0] == h[1] + }, ta.rebind(n, c, "on") + }; + var Hl = { + n: "ns-resize", + e: "ew-resize", + s: "ns-resize", + w: "ew-resize", + nw: "nwse-resize", + ne: "nesw-resize", + se: "nwse-resize", + sw: "nesw-resize" + }, + Ol = [ + ["n", "e", "s", "w", "nw", "ne", "se", "sw"], + ["e", "w"], + ["n", "s"], + [] + ], + Il = ac.format = gc.timeFormat, + Yl = Il.utc, + Zl = Yl("%Y-%m-%dT%H:%M:%S.%LZ"); + Il.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? Jo : Zl, Jo.parse = function(n) { + var t = new Date(n); + return isNaN(t) ? null : t + }, Jo.toString = Zl.toString, ac.second = Ft(function(n) { + return new cc(1e3 * Math.floor(n / 1e3)) + }, function(n, t) { + n.setTime(n.getTime() + 1e3 * Math.floor(t)) + }, function(n) { + return n.getSeconds() + }), ac.seconds = ac.second.range, ac.seconds.utc = ac.second.utc.range, ac.minute = Ft(function(n) { + return new cc(6e4 * Math.floor(n / 6e4)) + }, function(n, t) { + n.setTime(n.getTime() + 6e4 * Math.floor(t)) + }, function(n) { + return n.getMinutes() + }), ac.minutes = ac.minute.range, ac.minutes.utc = ac.minute.utc.range, ac.hour = Ft(function(n) { + var t = n.getTimezoneOffset() / 60; + return new cc(36e5 * (Math.floor(n / 36e5 - t) + t)) + }, function(n, t) { + n.setTime(n.getTime() + 36e5 * Math.floor(t)) + }, function(n) { + return n.getHours() + }), ac.hours = ac.hour.range, ac.hours.utc = ac.hour.utc.range, ac.month = Ft(function(n) { + return n = ac.day(n), n.setDate(1), n + }, function(n, t) { + n.setMonth(n.getMonth() + t) + }, function(n) { + return n.getMonth() + }), ac.months = ac.month.range, ac.months.utc = ac.month.utc.range; + var Vl = [1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6], + Xl = [ + [ac.second, 1], + [ac.second, 5], + [ac.second, 15], + [ac.second, 30], + [ac.minute, 1], + [ac.minute, 5], + [ac.minute, 15], + [ac.minute, 30], + [ac.hour, 1], + [ac.hour, 3], + [ac.hour, 6], + [ac.hour, 12], + [ac.day, 1], + [ac.day, 2], + [ac.week, 1], + [ac.month, 1], + [ac.month, 3], + [ac.year, 1] + ], + $l = Il.multi([ + [".%L", function(n) { + return n.getMilliseconds() + }], + [":%S", function(n) { + return n.getSeconds() + }], + ["%I:%M", function(n) { + return n.getMinutes() + }], + ["%I %p", function(n) { + return n.getHours() + }], + ["%a %d", function(n) { + return n.getDay() && 1 != n.getDate() + }], + ["%b %d", function(n) { + return 1 != n.getDate() + }], + ["%B", function(n) { + return n.getMonth() + }], + ["%Y", Ne] + ]), + Bl = { + range: function(n, t, e) { + return ta.range(Math.ceil(n / e) * e, +t, e).map(Ko) + }, + floor: y, + ceil: y + }; + Xl.year = ac.year, ac.scale = function() { + return Go(ta.scale.linear(), Xl, $l) + }; + var Wl = Xl.map(function(n) { + return [n[0].utc, n[1]] + }), + Jl = Yl.multi([ + [".%L", function(n) { + return n.getUTCMilliseconds() + }], + [":%S", function(n) { + return n.getUTCSeconds() + }], + ["%I:%M", function(n) { + return n.getUTCMinutes() + }], + ["%I %p", function(n) { + return n.getUTCHours() + }], + ["%a %d", function(n) { + return n.getUTCDay() && 1 != n.getUTCDate() + }], + ["%b %d", function(n) { + return 1 != n.getUTCDate() + }], + ["%B", function(n) { + return n.getUTCMonth() + }], + ["%Y", Ne] + ]); + Wl.year = ac.year.utc, ac.scale.utc = function() { + return Go(ta.scale.linear(), Wl, Jl) + }, ta.text = At(function(n) { + return n.responseText + }), ta.json = function(n, t) { + return Nt(n, "application/json", Qo, t) + }, ta.html = function(n, t) { + return Nt(n, "text/html", na, t) + }, ta.xml = At(function(n) { + return n.responseXML + }), "function" == typeof define && define.amd ? define(ta) : "object" == typeof module && module.exports && (module.exports = ta), this.d3 = ta +}(); \ No newline at end of file diff --git a/activity_dashboard_mngmnt/static/src/js/lib/funnel.js b/activity_dashboard_mngmnt/static/src/js/lib/funnel.js new file mode 100644 index 000000000..ccfa100d2 --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/lib/funnel.js @@ -0,0 +1,5 @@ +(function(b){typeof module==="object"&&module.exports?module.exports=b:b(Highcharts)})(function(b){var q=b.getOptions(),w=q.plotOptions,r=b.seriesTypes,G=b.merge,E=function(){},B=b.each,F=b.pick;w.funnel=G(w.pie,{animation:!1,center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",reversed:!1,dataLabels:{connectorWidth:1,connectorColor:"#606060"},size:!0,states:{select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}}});r.funnel=b.extendClass(r.pie,{type:"funnel",animate:E, +translate:function(){var a=function(k,a){return/%$/.test(k)?a*parseInt(k,10)/100:parseInt(k,10)},b=0,f=this.chart,c=this.options,g=c.reversed,l=c.ignoreHiddenPoint,h=f.plotWidth,d=f.plotHeight,q=0,f=c.center,i=a(f[0],h),x=a(f[1],d),r=a(c.width,h),m,s,e=a(c.height,d),t=a(c.neckWidth,h),C=a(c.neckHeight,d),u=x-e/2+e-C,a=this.data,y,z,w=c.dataLabels.position==="left"?1:0,A,n,D,p,j,v,o;this.getWidthAt=s=function(k){var a=x-e/2;return k>u||e===C?t:t+(r-t)*(1-(k-a)/(e-C))};this.getX=function(k,a){return i+ +(a?-1:1)*(s(g?d-k:k)/2+c.dataLabels.distance)};this.center=[i,x,e];this.centerX=i;B(a,function(a){if(!l||a.visible!==!1)b+=a.y});B(a,function(a){o=null;z=b?a.y/b:0;n=x-e/2+q*e;j=n+z*e;m=s(n);A=i-m/2;D=A+m;m=s(j);p=i-m/2;v=p+m;n>u?(A=p=i-t/2,D=v=i+t/2):j>u&&(o=j,m=s(u),p=i-m/2,v=p+m,j=u);g&&(n=e-n,j=e-j,o=o?e-o:null);y=["M",A,n,"L",D,n,v,j];o&&y.push(v,o,p,o);y.push(p,j,"Z");a.shapeType="path";a.shapeArgs={d:y};a.percentage=z*100;a.plotX=i;a.plotY=(n+(o||j))/2;a.tooltipPos=[i,a.plotY];a.slice=E;a.half= +w;if(!l||a.visible!==!1)q+=z})},drawPoints:function(){var a=this,b=a.options,f=a.chart.renderer,c,g,l,h;B(a.data,function(d){c=d.options;h=d.graphic;l=d.shapeArgs;g={fill:d.color,stroke:F(c.borderColor,b.borderColor),"stroke-width":F(c.borderWidth,b.borderWidth)};h?h.attr(g).animate(l):d.graphic=f.path(l).attr(g).add(a.group)})},sortByAngle:function(a){a.sort(function(a,b){return a.plotY-b.plotY})},drawDataLabels:function(){var a=this.data,b=this.options.dataLabels.distance,f,c,g,l=a.length,h,d;for(this.center[2]-= +2*b;l--;)g=a[l],c=(f=g.half)?1:-1,d=g.plotY,h=this.getX(d,f),g.labelPos=[0,d,h+(b-5)*c,d,h+b*c,d,f?"right":"left",0];r.pie.prototype.drawDataLabels.call(this)}});q.plotOptions.pyramid=b.merge(q.plotOptions.funnel,{neckWidth:"0%",neckHeight:"0%",reversed:!0});b.seriesTypes.pyramid=b.extendClass(b.seriesTypes.funnel,{type:"pyramid"})}); diff --git a/activity_dashboard_mngmnt/static/src/js/lib/highcharts.js b/activity_dashboard_mngmnt/static/src/js/lib/highcharts.js new file mode 100644 index 000000000..fc26d2d83 --- /dev/null +++ b/activity_dashboard_mngmnt/static/src/js/lib/highcharts.js @@ -0,0 +1,333 @@ +(function(E,X){typeof module==="object"&&module.exports?module.exports=E.document?X(E):X:E.Highcharts=X(E)})(typeof window!=="undefined"?window:this,function(E){function X(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw Error(c);E.console&&console.log(c)}function pb(a,b,c){this.options=b;this.elem=a;this.prop=c}function D(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&& +Object.prototype.toString.call(c)!=="[object Array]"&&d!=="renderTo"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a-1?h.thousandsSep:""))):e=Qa(f,e)}k.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}k.push(a);return k.join("")}function rb(a){return W.pow(10,T(W.log(a)/W.LN10))}function sb(a,b,c,d,e){var f,g=a,c=p(c,1);f=a/c;b||(b=[1,2,2.5,5,10],d===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d=a||!e&&f<=(b[d]+(b[d+1]||b[d]))/ +2)break;g*=c;return g}function ib(a,b){var c=a.length,d,e;for(e=0;ec&&(c=a[b]);return c}function Sa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Ta(a){jb||(jb=Z(La));a&&jb.appendChild(a);jb.innerHTML=""}function fa(a,b){return parseFloat(a.toPrecision(b|| +14))}function Ua(a,b){b.renderer.globalAnimation=p(a,b.animation)}function Fb(){var a=N.global,b=a.useUTC,c=b?"getUTC":"get",d=b?"setUTC":"set";qa=a.Date||E.Date;qb=b&&a.timezoneOffset;Za=b&&a.getTimezoneOffset;kb=function(a,c,d,h,i,k){var j;b?(j=qa.UTC.apply(0,arguments),j+=Ya(j)):j=(new qa(a,c,p(d,1),p(h,0),p(i,0),p(k,0))).getTime();return j};tb=c+"Minutes";ub=c+"Hours";vb=c+"Day";$a=c+"Date";ab=c+"Month";bb=c+"FullYear";Gb=d+"Milliseconds";Hb=d+"Seconds";Ib=d+"Minutes";Jb=d+"Hours";wb=d+"Date"; +xb=d+"Month";yb=d+"FullYear"}function ia(a){if(!(this instanceof ia))return new ia(a);this.init(a)}function O(){}function Va(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function Kb(a,b,c,d,e){var f=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.total=null;this.points={};this.stack=e;this.rightCliff=this.leftCliff=0;this.alignOptions={align:b.align||(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bottom": +"top"),y:p(b.y,f?4:c?14:-6),x:p(b.x,f?c?-6:6:0)};this.textAlign=b.textAlign||(f?c?"right":"left":"center")}var z,y=E.document,W=Math,A=W.round,T=W.floor,ua=W.ceil,t=W.max,F=W.min,P=W.abs,U=W.cos,$=W.sin,ra=W.PI,ga=ra*2/360,za=E.navigator&&E.navigator.userAgent||"",Lb=E.opera,ya=/(msie|trident|edge)/i.test(za)&&!Lb,lb=y&&y.documentMode===8,mb=!ya&&/AppleWebKit/.test(za),Ma=/Firefox/.test(za),Mb=/(Mobile|Android|Windows Phone)/.test(za),Fa="http://www.w3.org/2000/svg",ca=y&&y.createElementNS&&!!y.createElementNS(Fa, +"svg").createSVGRect,Qb=Ma&&parseInt(za.split("Firefox/")[1],10)<4,ha=y&&!ca&&!ya&&!!y.createElement("canvas").getContext,cb,db,Nb={},zb=0,jb,N,Qa,G,Aa=function(){},S=[],eb=0,La="div",Rb=/^[0-9]+$/,nb=["plotTop","marginRight","marginBottom","plotLeft"],qa,kb,qb,Za,tb,ub,vb,$a,ab,bb,Gb,Hb,Ib,Jb,wb,xb,yb,I={},B;B=E.Highcharts?X(16,!0):{win:E};B.seriesTypes=I;var Ga=[],ja,sa,o,Na,Ab,Ba,M,V,H,Wa,Oa;pb.prototype={dSetter:function(){var a=this.paths[0],b=this.paths[1],c=[],d=this.now,e=a.length,f;if(d=== +1)c=this.toD;else if(e===b.length&&d<1)for(;e--;)f=parseFloat(a[e]),c[e]=isNaN(f)?a[e]:d*parseFloat(b[e]-f)+f;else c=b;this.elem.attr("d",c)},update:function(){var a=this.elem,b=this.prop,c=this.now,d=this.options.step;if(this[b+"Setter"])this[b+"Setter"]();else a.attr?a.element&&a.attr(b,c):a.style[b]=c+this.unit;d&&d.call(a,c,this)},run:function(a,b,c){var d=this,e=function(a){return e.stopped?!1:d.step(a)},f;this.startTime=+new qa;this.start=a;this.end=b;this.unit=c;this.now=this.start;this.pos= +0;e.elem=this.elem;if(e()&&Ga.push(e)===1)e.timerId=setInterval(function(){for(f=0;f=f+this.startTime){this.now=this.end;this.pos=1;this.update();a=g[this.prop]=!0;for(h in g)g[h]!==!0&&(a=!1);a&&e&&e.call(c);c=!1}else this.pos=d.easing((b-this.startTime)/f),this.now=this.start+ +(this.end-this.start)*this.pos,this.update(),c=!0;return c},initPath:function(a,b,c){var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h=a.isArea,i=h?2:1,k=function(a){for(g=a.length;g--;)(a[g]==="M"||a[g]==="L")&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(k(b),k(c));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=c.slice(0,f).concat(c),h&&(c=c.concat(c.slice(c.length-f)));a.shift=0;if(b.length)for(a=c.length;b.length3?g.length%3:0;c=p(c,e.decimalPoint);d=p(d,e.thousandsSep);a=a<0?"-":"";a+=h?g.substr(0,h)+d:"";a+=g.substr(h).replace(/(\d{3})(?=\d)/g,"$1"+d);+b&&(d=Math.abs(i-g+Math.pow(10,-Math.max(b,f)-1)),a+=c+d.toFixed(b).slice(2)); +return a};Math.easeInOutSine=function(a){return-0.5*(Math.cos(Math.PI*a)-1)};ja=function(a,b){var c;if(b==="width")return Math.min(a.offsetWidth,a.scrollWidth)-ja(a,"padding-left")-ja(a,"padding-right");else if(b==="height")return Math.min(a.offsetHeight,a.scrollHeight)-ja(a,"padding-top")-ja(a,"padding-bottom");return(c=E.getComputedStyle(a,void 0))&&C(c.getPropertyValue(b))};sa=function(a,b){return b.indexOf?b.indexOf(a):[].indexOf.call(b,a)};Na=function(a,b){return[].filter.call(a,b)};Ba=function(a, +b){for(var c=[],d=0,e=a.length;d-1&&(f.splice(h,1),g[b]=f),d(b,c)):(e(),g[b]=[])):(e(),a.hcEvents={})};H=function(a,b,c,d){var e;e=a.hcEvents;var f,g,h,i,c=c||{};if(y.createEvent&&(a.dispatchEvent||a.fireEvent))e=y.createEvent("Events"),e.initEvent(b,!0,!0),e.target=a,u(e,c),a.dispatchEvent?a.dispatchEvent(e):a.fireEvent(b,e);else if(e){e=e[b]||[];f=e.length;h=function(){c.defaultPrevented=!0};for(g=0;g{point.key}
',pointFormat:'\u25cf {series.name}: {point.y}
',shadow:!0,snap:Mb?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",pointerEvents:"none",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com", +href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var aa=N.plotOptions,da=aa.line;Fb();ia.prototype={parsers:[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(a){return[C(a[1]),C(a[2]),C(a[3]),parseFloat(a[4],10)]}},{regex:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,parse:function(a){return[C(a[1],16),C(a[2],16),C(a[3],16), +1]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(a){return[C(a[1]),C(a[2]),C(a[3]),1]}}],init:function(a){var b,c,d,e;if((this.input=a)&&a.stops)this.stops=Ba(a.stops,function(a){return new ia(a[1])});else for(d=this.parsers.length;d--&&!c;)e=this.parsers[d],(b=e.regex.exec(a))&&(c=e.parse(b));this.rgba=c||[]},get:function(a){var b=this.input,c=this.rgba,d;this.stops?(d=D(b),d.stops=[].concat(d.stops),o(this.stops,function(b,c){d.stops[c]=[d.stops[c][0], +b.get(a)]})):d=c&&!isNaN(c[0])?a==="rgb"||!a&&c[3]===1?"rgb("+c[0]+","+c[1]+","+c[2]+")":a==="a"?c[3]:"rgba("+c.join(",")+")":b;return d},brighten:function(a){var b,c=this.rgba;if(this.stops)o(this.stops,function(b){b.brighten(a)});else if(ma(a)&&a!==0)for(b=0;b<3;b++)c[b]+=C(a*255),c[b]<0&&(c[b]=0),c[b]>255&&(c[b]=255);return this},setOpacity:function(a){this.rgba[3]=a;return this}};O.prototype={opacity:1,textProps:"direction,fontSize,fontWeight,fontFamily,fontStyle,color,lineHeight,width,textDecoration,textOverflow,textShadow".split(","), +init:function(a,b){this.element=b==="span"?Z(b):y.createElementNS(Fa,b);this.renderer=a},animate:function(a,b,c){b=p(b,this.renderer.globalAnimation,!0);Oa(this);if(b){b=D(b,{});if(c)b.complete=c;Wa(this,a,b)}else this.attr(a,null,c);return this},colorGradient:function(a,b,c){var d=this.renderer,e,f,g,h,i,k,j,l,m,n,r,s=[],p;a.linearGradient?f="linearGradient":a.radialGradient&&(f="radialGradient");if(f){g=a[f];i=d.gradients;j=a.stops;n=c.radialReference;Ia(g)&&(a[f]=g={x1:g[0],y1:g[1],x2:g[2],y2:g[3], +gradientUnits:"userSpaceOnUse"});f==="radialGradient"&&n&&!q(g.gradientUnits)&&(h=g,g=D(g,d.getRadialAttr(n,h),{gradientUnits:"userSpaceOnUse"}));for(r in g)r!=="id"&&s.push(r,g[r]);for(r in j)s.push(j[r]);s=s.join(",");i[s]?n=i[s].attr("id"):(g.id=n="highcharts-"+zb++,i[s]=k=d.createElement(f).attr(g).add(d.defs),k.radAttr=h,k.stops=[],o(j,function(a){a[1].indexOf("rgba")===0?(e=ia(a[1]),l=e.get("rgb"),m=e.get("a")):(l=a[1],m=1);a=d.createElement("stop").attr({offset:a[0],"stop-color":l,"stop-opacity":m}).add(k); +k.stops.push(a)}));p="url("+d.url+"#"+n+")";c.setAttribute(b,p);c.gradient=s;a.toString=function(){return p}}},applyTextShadow:function(a){var b=this.element,c,d=a.indexOf("contrast")!==-1,e={},f=this.renderer.forExport,g=f||b.style.textShadow!==z&&!ya;if(d)e.textShadow=a=a.replace(/contrast/g,this.renderer.getContrast(b.style.fill));if(mb||f)e.textRendering="geometricPrecision";g?this.css(e):(this.fakeTS=!0,this.ySetter=this.xSetter,c=[].slice.call(b.getElementsByTagName("tspan")),o(a.split(/\s?,\s?/g), +function(a){var d=b.firstChild,e,f,a=a.split(" ");e=a[a.length-1];(f=a[a.length-2])&&o(c,function(a,c){var g;c===0&&(a.setAttribute("x",b.getAttribute("x")),c=b.getAttribute("y"),a.setAttribute("y",c||0),c===null&&b.setAttribute("y",0));g=a.cloneNode(1);K(g,{"class":"highcharts-text-shadow",fill:e,stroke:e,"stroke-opacity":1/t(C(f),3),"stroke-width":f,"stroke-linejoin":"round"});b.insertBefore(g,d)})}))},attr:function(a,b,c){var d,e=this.element,f,g=this,h;typeof a==="string"&&b!==z&&(d=a,a={},a[d]= +b);if(typeof a==="string")g=(this[a+"Getter"]||this._defaultGetter).call(this,a,e);else{for(d in a){b=a[d];h=!1;this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(d)&&(f||(this.symbolAttr(a),f=!0),h=!0);if(this.rotation&&(d==="x"||d==="y"))this.doTransform=!0;h||(h=this[d+"Setter"]||this._defaultSetter,h.call(this,b,d,e),this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(d)&&this.updateShadows(d,b,h))}if(this.doTransform)this.updateTransform(),this.doTransform= +!1}c&&c();return g},updateShadows:function(a,b,c){for(var d=this.shadows,e=d.length;e--;)c.call(null,a==="height"?Math.max(b-(d[e].cutHeight||0),0):a==="d"?this.d:b,a,d[e])},addClass:function(a){var b=this.element,c=K(b,"class")||"";c.indexOf(a)===-1&&K(b,"class",c+" "+a);return this},symbolAttr:function(a){var b=this;o("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){b[c]=p(a[c],b[c])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path", +a?"url("+this.renderer.url+"#"+a.id+")":"none")},crisp:function(a){var b,c={},d,e=this.strokeWidth||0;d=A(e)%2/2;a.x=T(a.x||this.x||0)+d;a.y=T(a.y||this.y||0)+d;a.width=T((a.width||this.width||0)-2*d);a.height=T((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)this[b]!==a[b]&&(this[b]=c[b]=a[b]);return c},css:function(a){var b=this.styles,c={},d=this.element,e,f,g="";e=!b;if(a&&a.color)a.fill=a.color;if(b)for(f in a)a[f]!==b[f]&&(c[f]=a[f],e=!0);if(e){e=this.textWidth=a&&a.width&&d.nodeName.toLowerCase()=== +"text"&&C(a.width)||this.textWidth;b&&(a=u(b,c));this.styles=a;e&&(ha||!ca&&this.renderer.forExport)&&delete a.width;if(ya&&!ca)L(this.element,a);else{b=function(a,b){return"-"+b.toLowerCase()};for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";K(d,"style",g)}e&&this.added&&this.renderer.buildText(this)}return this},on:function(a,b){var c=this,d=c.element;db&&a==="click"?(d.ontouchstart=function(a){c.touchEventFired=qa.now();a.preventDefault();b.call(d,a)},d.onclick=function(a){(za.indexOf("Android")=== +-1||qa.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){var b=this.renderer.gradients[this.element.gradient];this.element.radialReference=a;b&&b.radAttr&&b.animate(this.renderer.getRadialAttr(a,b.radAttr));return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX, +d=this.scaleY,e=this.inverted,f=this.rotation,g=this.element;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(g.getAttribute("x")||0)+" "+(g.getAttribute("y")||0)+")");(q(c)||q(d))&&a.push("scale("+p(c,1)+" "+p(d,1)+")");a.length&&g.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects; +if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||xa(c))this.alignTo=d=c||"renderer",oa(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=p(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=A(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=A(g);this[this.placed? +"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(a,b){var c,d=this.renderer,e,f,g,h=this.element,i=this.styles;e=this.textStr;var k,j=h.style,l,m=d.cache,n=d.cacheKeys,r;f=p(b,this.rotation);g=f*ga;e!==z&&(r=["",f||0,i&&i.fontSize,h.style.width].join(","),r=e===""||Rb.test(e)?"num:"+e.toString().length+r:e+r);r&&!a&&(c=m[r]);if(!c){if(h.namespaceURI===Fa||d.forExport){try{l=this.fakeTS&&function(a){o(h.querySelectorAll(".highcharts-text-shadow"),function(b){b.style.display= +a})},Ma&&j.textShadow?(k=j.textShadow,j.textShadow=""):l&&l("none"),c=h.getBBox?u({},h.getBBox()):{width:h.offsetWidth,height:h.offsetHeight},k?j.textShadow=k:l&&l("")}catch(s){}if(!c||c.width<0)c={width:0,height:0}}else c=this.htmlGetBBox();if(d.isSVG){d=c.width;e=c.height;if(ya&&i&&i.fontSize==="11px"&&e.toPrecision(3)==="16.9")c.height=e=14;if(f)c.width=P(e*$(g))+P(d*U(g)),c.height=P(e*U(g))+P(d*$(g))}if(r){for(;n.length>250;)delete m[n.shift()];m[r]||n.push(r);m[r]=c}}return c},show:function(a){return this.attr({visibility:a? +"inherit":"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.attr({y:-9999})}})},add:function(a){var b=this.renderer,c=this.element,d;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);this.added=!0;if(!a||a.handleZ||this.zIndex)d=this.zIndexSetter();d||(a?a.element:b.box).appendChild(c);if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var b= +a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;Oa(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=0;f]*>/g,"")))},textSetter:function(a){if(a!==this.textStr)delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this)},fillSetter:function(a,b,c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},visibilitySetter:function(a,b,c){a=== +"inherit"?c.removeAttribute(b):c.setAttribute(b,a)},zIndexSetter:function(a,b){var c=this.renderer,d=this.parentGroup,c=(d||c).element||c.box,e,f,g=this.element,h;e=this.added;var i;q(a)&&(g.setAttribute(b,a),a=+a,this[b]===a&&(e=!1),this[b]=a);if(e){if((a=this.zIndex)&&d)d.handleZ=!0;d=c.childNodes;for(i=0;ia||!q(a)&&q(f)))c.insertBefore(g,e),h=!0;h||c.appendChild(g)}return h},_defaultSetter:function(a,b,c){c.setAttribute(b,a)}};O.prototype.yGetter= +O.prototype.xGetter;O.prototype.translateXSetter=O.prototype.translateYSetter=O.prototype.rotationSetter=O.prototype.verticalAlignSetter=O.prototype.scaleXSetter=O.prototype.scaleYSetter=function(a,b){this[b]=a;this.doTransform=!0};O.prototype["stroke-widthSetter"]=O.prototype.strokeSetter=function(a,b,c){this[b]=a;if(this.stroke&&this["stroke-width"])this.strokeWidth=this["stroke-width"],O.prototype.fillSetter.call(this,this.stroke,"stroke",c),c.setAttribute("stroke-width",this["stroke-width"]), +this.hasStroke=!0;else if(b==="stroke-width"&&a===0&&this.hasStroke)c.removeAttribute("stroke"),this.hasStroke=!1};var Ca=function(){this.init.apply(this,arguments)};Ca.prototype={Element:O,init:function(a,b,c,d,e,f){var g,d=this.createElement("svg").attr({version:"1.1"}).css(this.getStyle(d));g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&K(g,"xmlns",Fa);this.isSVG=!0;this.box=g;this.boxWrapper=d;this.alignedObjects=[];this.url=(Ma||mb)&&y.getElementsByTagName("base").length?E.location.href.replace(/#.*?$/, +"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(y.createTextNode("Created with Highcharts 4.2.3"));this.defs=this.createElement("defs").add();this.allowHTML=f;this.forExport=e;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(b,c,!1);var h;if(Ma&&a.getBoundingClientRect)this.subPixelFix=b=function(){L(a,{left:0,top:0});h=a.getBoundingClientRect();L(a,{left:ua(h.left)-h.left+"px",top:ua(h.top)-h.top+"px"})},b(), +M(E,"resize",b)},getStyle:function(a){return this.style=u({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();Sa(this.gradients||{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&V(E,"resize",this.subPixelFix);return this.alignedObjects=null},createElement:function(a){var b=new this.Element; +b.init(this,a);return b},draw:function(){},getRadialAttr:function(a,b){return{cx:a[0]-a[2]/2+b.cx*a[2],cy:a[1]-a[2]/2+b.cy*a[2],r:b.r*a[2]}},buildText:function(a){for(var b=a.element,c=this,d=c.forExport,e=p(a.textStr,"").toString(),f=e.indexOf("<")!==-1,g=b.childNodes,h,i,k=K(b,"x"),j=a.styles,l=a.textWidth,m=j&&j.lineHeight,n=j&&j.textShadow,r=j&&j.textOverflow==="ellipsis",s=g.length,R=l&&!a.added&&this.box,v=function(a){return m?C(m):c.fontMetrics(/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize: +j&&j.fontSize||c.style.fontSize||12,a).h},x=function(a){return a.replace(/</g,"<").replace(/>/g,">")};s--;)b.removeChild(g[s]);!f&&!n&&!r&&e.indexOf(" ")===-1?b.appendChild(y.createTextNode(x(e))):(h=/<.*style="([^"]+)".*>/,i=/<.*href="(http[^"]+)".*>/,R&&R.appendChild(b),e=f?e.replace(/<(b|strong)>/g,'').replace(/<(i|em)>/g,'').replace(//g,"").split(//g):[e],e[e.length-1]=== +""&&e.pop(),o(e,function(e,f){var g,m=0,e=e.replace(//g,"|||");g=e.split("|||");o(g,function(e){if(e!==""||g.length===1){var n={},s=y.createElementNS(Fa,"tspan"),p;h.test(e)&&(p=e.match(h)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),K(s,"style",p));i.test(e)&&!d&&(K(s,"onclick",'location.href="'+e.match(i)[1]+'"'),L(s,{cursor:"pointer"}));e=x(e.replace(/<(.|\n)*?>/g,"")||" ");if(e!==" "){s.appendChild(y.createTextNode(e));if(m)n.dx=0;else if(f&&k!==null)n.x= +k;K(s,n);b.appendChild(s);!m&&f&&(!ca&&d&&L(s,{display:"block"}),K(s,"dy",v(s)));if(l){for(var n=e.replace(/([^\^])-/g,"$1- ").split(" "),R=g.length>1||f||n.length>1&&j.whiteSpace!=="nowrap",o,w,q,t=[],u=v(s),A=1,z=a.rotation,B=e,D=B.length;(R||r)&&(n.length||t.length);)a.rotation=0,o=a.getBBox(!0),q=o.width,!ca&&c.forExport&&(q=c.measureSpanWidth(s.firstChild.data,a.styles)),o=q>l,w===void 0&&(w=o),r&&w?(D/=2,B===""||!o&&D<0.5?n=[]:(o&&(w=!0),B=e.substring(0,B.length+(o?-1:1)*ua(D)),n=[B+(l>3?"\u2026": +"")],s.removeChild(s.firstChild))):!o||n.length===1?(n=t,t=[],n.length&&(A++,s=y.createElementNS(Fa,"tspan"),K(s,{dy:u,x:k}),p&&K(s,"style",p),b.appendChild(s)),q>l&&(l=q)):(s.removeChild(s.firstChild),t.unshift(n.pop())),n.length&&s.appendChild(y.createTextNode(n.join(" ").replace(/- /g,"-")));w&&a.attr("title",a.textStr);a.rotation=z}m++}}})}),R&&R.removeChild(b),n&&a.applyTextShadow&&a.applyTextShadow(n))},getContrast:function(a){a=ia(a).rgba;return a[0]+a[1]+a[2]>384?"#000000":"#FFFFFF"},button:function(a, +b,c,d,e,f,g,h,i){var k=this.label(a,b,c,i,null,null,null,null,"button"),j=0,l,m,n,r,s,p,a={x1:0,y1:0,x2:0,y2:1},e=D({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);n=e.style;delete e.style;f=D(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);r=f.style;delete f.style;g=D(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);s=g.style;delete g.style;h=D(e,{style:{color:"#CCC"}}, +h);p=h.style;delete h.style;M(k.element,ya?"mouseover":"mouseenter",function(){j!==3&&k.attr(f).css(r)});M(k.element,ya?"mouseout":"mouseleave",function(){j!==3&&(l=[e,f,g][j],m=[n,r,s][j],k.attr(l).css(m))});k.setState=function(a){(k.state=j=a)?a===2?k.attr(g).css(s):a===3&&k.attr(h).css(p):k.attr(e).css(n)};return k.on("click",function(a){j!==3&&d.call(k,a)}).attr(e).css(u({cursor:"default"},n))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=A(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=A(a[2])+b%2/ +2);return a},path:function(a){var b={fill:"none"};Ia(a)?b.d=a:Y(a)&&u(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=Y(a)?a:{x:a,y:b,r:c};b=this.createElement("circle");b.xSetter=b.ySetter=function(a,b,c){c.setAttribute("c"+b,a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(Y(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){var e=Y(a)?a.r:e,g=this.createElement("rect"), +a=Y(a)?a:a===z?{}:{x:a,y:b,width:t(c,0),height:t(d,0)};if(f!==z)g.strokeWidth=f,a=g.crisp(a);if(e)a.r=e;g.rSetter=function(a,b,c){K(c,{rx:a,ry:a})};return g.attr(a)},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[p(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return q(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:"none"};arguments.length> +1&&u(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g=this,h,i=this.symbols[a],i=i&&i(A(b),A(c),d,e,f),k=/^url\((.*?)\)$/,j,l;if(i)h=this.path(i),u(h,{symbolName:a,x:b,y:c,width:d,height:e}),f&&u(h,f);else if(k.test(a))l=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(A((d- +b[0])/2),A((e-b[1])/2)))},j=a.match(k)[1],a=Nb[j]||f&&f.width&&f.height&&[f.width,f.height],h=this.image(j).attr({x:b,y:c}),h.isImg=!0,a?l(h,a):(h.attr({width:0,height:0}),Z("img",{onload:function(){this.width===0&&(L(this,{position:"absolute",top:"-999em"}),y.body.appendChild(this));l(h,Nb[j]=[this.width,this.height]);this.parentNode&&this.parentNode.removeChild(this);g.imgCount--;if(!g.imgCount)S[g.chartIndex].onload()},src:j})),this.imgCount++;return h},symbols:{circle:function(a,b,c,d){var e= +0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=U(f),k=$(f),j=U(g),g=$(g), +e=e.end-fc&&e>b+g&&eb+g&&ed&&h>a+g&&ha+g&&hj&&/[ \-]/.test(b.textContent||b.innerText))L(b,{width:j+"px",display:"block",whiteSpace:l||"normal"}),this.hasTextWidth=!0;else if(this.hasTextWidth)L(b,{width:"",display:"",whiteSpace:l||"nowrap"}),this.hasTextWidth=!1;this.getSpanCorrection(this.hasTextWidth? +j:b.offsetWidth,k,h,i,g)}L(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(mb)k=b.offsetHeight;this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d={},e=ya?"-ms-transform":mb?"-webkit-transform":Ma?"MozTransform":Lb?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";d[e+(Ma?"Origin":"-origin")]=d.transformOrigin=b*100+"% "+c+"px";L(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});u(Ca.prototype,{html:function(a,b,c){var d= +this.createElement("span"),e=d.element,f=d.renderer,g=function(a,b){o(["opacity","visibility"],function(c){fb(a,c+"Setter",function(a,c,d,e){a.call(this,c,d,e);b[d]=c})})};d.textSetter=function(a){a!==e.innerHTML&&delete this.bBox;e.innerHTML=this.textStr=a;d.htmlUpdateTransform()};g(d,d.element.style);d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){b==="align"&&(b="textAlign");d[b]=a;d.htmlUpdateTransform()};d.attr({text:a,x:A(b),y:A(c)}).css({position:"absolute",fontFamily:this.style.fontFamily, +fontSize:this.style.fontSize});e.style.whiteSpace="nowrap";d.css=d.htmlCss;if(f.isSVG)d.add=function(a){var b,c=f.box.parentNode,j=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)j.push(a),a=a.parentGroup;o(j.reverse(),function(a){var d,e=K(a.element,"class");e&&(e={className:e});b=a.div=a.div||Z(La,e,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c);d=b.style;u(a,{translateXSetter:function(b,c){d.left=b+"px";a[c]=b;a.doTransform=!0},translateYSetter:function(b,c){d.top= +b+"px";a[c]=b;a.doTransform=!0}});g(a,d)})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d};return d}});var J;if(!ca&&!ha){J={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",";"],e=b===La;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="',d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=Z(c);this.renderer=a},add:function(a){var b= +this.renderer,c=this.element,d=b.box,e=a&&a.inverted,d=a?a.element||a:d;if(a)this.parentGroup=a;e&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();return this},updateTransform:O.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=U(a*ga),c=$(a*ga);L(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""): +"none"})},getSpanCorrection:function(a,b,c,d,e){var f=d?U(d*ga):1,g=d?$(d*ga):0,h=p(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=h*c*(g<0?-1:1)),L(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,c=[];b--;)if(ma(a[b]))c[b]=A(a[b]*10)-5;else if(a[b]==="Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+ +5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},clip:function(a){var b=this,c;a?(c=a.members,oa(c,b),c.push(b),b.destroyClip=function(){oa(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:lb?"inherit":"rect(auto)"});return b.css(a)},css:O.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Ta(a)},destroy:function(){this.destroyClip&&this.destroyClip();return O.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+ +a]=function(){var a=E.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=C(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,k,j=f.path,l,m,n,r;j&&typeof j.value!=="string"&&(j="x");m=j;if(a){n=p(a.width,3);r=(a.opacity||0.15)/n;for(e=1;e<=3;e++){l=n*2+1-2*e;c&&(m=this.cutOffPath(j.value,l+0.5));k=[''];h=Z(g.prepVML(k),null,{left:C(i.left)+p(a.offsetX,1),top:C(i.top)+p(a.offsetY,1)});if(c)h.cutOff=l+1;k=[''];Z(g.prepVML(k),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this},updateShadows:Aa,setAttr:function(a,b){lb?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){this.element.className=a},dashstyleSetter:function(a, +b,c){(c.getElementsByTagName("stroke")[0]||Z(this.renderer.prepVML([""]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var d=this.shadows,a=a||[];this.d=a.join&&a.join(" ");c.path=a=this.pathToVML(a);if(d)for(c=d.length;c--;)d[c].path=d[c].cutOff?this.cutOffPath(a,d[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var d=c.nodeName;if(d==="SPAN")c.style.color=a;else if(d!=="IMG")c.filled=a!=="none",this.setAttr("fillcolor",this.renderer.color(a,c,b,this))},"fill-opacitySetter":function(a, +b,c){Z(this.renderer.prepVML(["<",b.split("-")[0],' opacity="',a,'"/>']),null,null,c)},opacitySetter:Aa,rotationSetter:function(a,b,c){c=c.style;this[b]=c[b]=a;c.left=-A($(a*ga)+1)+"px";c.top=A(U(a*ga))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b,this))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;ma(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){a==="inherit"&& +(a="visible");this.shadows&&o(this.shadows,function(c){c.style[b]=a});c.nodeName==="DIV"&&(a=a==="hidden"?"-999em":0,lb||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b==="y"&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}};J["stroke-opacitySetter"]=J["fill-opacitySetter"];B.VMLElement=J=pa(O,J);J.prototype.ySetter=J.prototype.widthSetter=J.prototype.heightSetter= +J.prototype.xSetter;var Cb={Element:J,isIE8:za.indexOf("MSIE 8.0")>-1,init:function(a,b,c,d){var e;this.alignedObjects=[];d=this.createElement(La).css(u(this.getStyle(d),{position:"relative"}));e=d.element;a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(b,c,!1);if(!y.namespaces.hcv){y.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{y.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){y.styleSheets[0].cssText+= +"hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=Y(a);return u(e,{members:[],count:0,left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+A(a?e:d)+"px,"+ +A(a?f:b)+"px,"+A(a?b:f)+"px,"+A(a?d:e)+"px)"};!a&&lb&&c==="DIV"&&u(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){o(e.members,function(a){a.element&&a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,k="none";a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var j,l,m=a.linearGradient||a.radialGradient,n,r,s,p,v,x="",a=a.stops,w,q=[],ba=function(){h=[''];Z(e.prepVML(h),null,null,b)};n=a[0];w=a[a.length-1];n[0]>0&&a.unshift([0,n[1]]);w[0]<1&&a.push([1,w[1]]);o(a,function(a,b){g.test(a[1])?(f=ia(a[1]),j=f.get("rgb"),l=f.get("a")):(j=a[1],l=1);q.push(a[0]*100+"% "+j);b?(s=l,p=j):(r=l,v=j)});if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,n=m.x2||m[2]||0,m=m.y2||m[3]||0,x='angle="'+(90-W.atan((m-a)/(n-c))*180/ra)+'"',ba();else{var k=m.r,t=k*2,u=k*2,A=m.cx,B=m.cy,z=b.radialReference,y,k=function(){z&&(y= +d.getBBox(),A+=(z[0]-y.x)/y.width-0.5,B+=(z[1]-y.y)/y.height-0.5,t*=z[2]/y.width,u*=z[2]/y.height);x='src="'+N.global.VMLRadialGradientURL+'" size="'+t+","+u+'" origin="0.5,0.5" position="'+A+","+B+'" color2="'+v+'" ';ba()};d.added?k():d.onAdd=k;k=p}else k=j}else if(g.test(a)&&b.tagName!=="IMG")f=ia(a),d[c+"-opacitySetter"](f.get("a"),c,b),k=f.get("rgb");else{k=b.getElementsByTagName(c);if(k.length)k[0].opacity=1,k[0].type="solid";k=a}return k},prepVML:function(a){var b=this.isIE8,a=a.join("");b? +(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","1&&f.attr({x:b,y:c,width:d,height:e});return f},createElement:function(a){return a==="rect"?this.symbol(a):Ca.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this,d=b.style,e=a.tagName==="IMG"&&a.style;L(a,{flip:"x",left:C(d.width)-(e?C(e.top): +1),top:C(d.height)-(e?C(e.left):1),rotation:-90});o(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=U(f),i=$(f),k=U(g),j=$(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*k,b+h*j];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*k,b+c*j,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r);e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c, +b+d/2,"e"]},rect:function(a,b,c,d,e){return Ca.prototype.symbols[!q(e)||!e.r?"square":"callout"].call(0,a,b,c,d,e)}}};B.VMLRenderer=J=function(){this.init.apply(this,arguments)};J.prototype=D(Ca.prototype,Cb);cb=J}Ca.prototype.measureSpanWidth=function(a,b){var c=y.createElement("span"),d;d=y.createTextNode(a);c.appendChild(d);L(c,b);this.box.appendChild(c);d=c.offsetWidth;Ta(c);return d};var Ob;if(ha)B.CanVGRenderer=J=function(){Fa="http://www.w3.org/1999/xhtml"},J.prototype.symbols={},Ob=function(){function a(){var a= +b.length,d;for(d=0;d0&&c+i*k>e&&(m=A((d-c)/U(h*ga)));else if(d=c+(1-i)*k,c-i*ke&&(j=e-a.x+j*i,l=-1),j=F(b.slotWidth,j),jj||b.autoRotation&&g.styles.width)m=j;if(m){n.width= +m;if(!b.options.labels.style.textOverflow)n.textOverflow="ellipsis";g.css(n)}},getPosition:function(a,b,c,d){var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null,null,d)+e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}},getLabelPosition:function(a,b,c,d,e,f,g,h){var i=this.axis,k=i.transA,j=i.reversed,l=i.staggerLines,m=i.tickRotCorr|| +{x:0,y:0},n=e.y;q(n)||(n=i.side===2?m.y+8:n=U(c.rotation*ga)*(m.y-c.getBBox(!1,0).height/2));a=a+e.x+m.x-(f&&d?f*k*(j?-1:1):0);b=b+n-(f&&!d?f*k*(j?1:-1):0);l&&(c=g/(h||1)%l,i.opposite&&(c=l-c-1),b+=c*(i.labelOffset/l));return{x:a,y:A(b)}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine(["M",a,b,"L",a+(e?0:-c),b+(e?c:0)],d)},render:function(a,b,c){var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,k=this.pos,j=e.labels,l=this.gridLine,m=h?h+"Grid":"grid",n=h?h+"Tick": +"tick",r=e[m+"LineWidth"],s=e[m+"LineColor"],o=e[m+"LineDashStyle"],v=e[n+"Length"],m=p(e[n+"Width"],!h&&d.isXAxis?1:0),x=e[n+"Color"],w=e[n+"Position"],n=this.mark,q=j.step,ba=!0,t=d.tickmarkOffset,u=this.getPosition(g,k,t,b),A=u.x,u=u.y,B=g&&A===d.pos+d.len||!g&&u===d.pos?-1:1,c=p(c,1);this.isActive=!0;if(r){k=d.getPlotLinePath(k+t,r*B,b,!0);if(l===z){l={stroke:s,"stroke-width":r};if(o)l.dashstyle=o;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=r?f.path(k).attr(l).add(d.gridGroup):null}if(!b&& +l&&k)l[this.isNew?"attr":"animate"]({d:k,opacity:c})}if(m&&v)w==="inside"&&(v=-v),d.opposite&&(v=-v),h=this.getMarkPath(A,u,v,m*B,g,f),n?n.animate({d:h,opacity:c}):this.mark=f.path(h).attr({stroke:x,"stroke-width":m,opacity:c}).add(d.axisGroup);if(i&&!isNaN(A))i.xy=u=this.getLabelPosition(A,u,i,g,j,t,a,q),this.isFirst&&!this.isLast&&!p(e.showFirstLabel,1)||this.isLast&&!this.isFirst&&!p(e.showLastLabel,1)?ba=!1:g&&!d.isRadial&&!j.step&&!j.rotation&&!b&&c!==0&&this.handleOverflow(u),q&&a%q&&(ba=!1), +ba&&!isNaN(u.y)?(u.opacity=c,i[this.isNew?"attr":"animate"](u),this.isNew=!1):i.attr("y",-9999)},destroy:function(){Sa(this,this.axis)}};B.PlotLineOrBand=function(a,b){this.axis=a;if(b)this.options=b,this.id=b.id};B.PlotLineOrBand.prototype={render:function(){var a=this,b=a.axis,c=b.horiz,d=a.options,e=d.label,f=a.label,g=d.width,h=d.to,i=d.from,k=q(i)&&q(h),j=d.value,l=d.dashStyle,m=a.svgElem,n=[],r,s=d.color,o=p(d.zIndex,0),v=d.events,x={},w=b.chart.renderer;b.isLog&&(i=Da(i),h=Da(h),j=Da(j));if(g){if(n= +b.getPlotLinePath(j,g),x={stroke:s,"stroke-width":g},l)x.dashstyle=l}else if(k){n=b.getPlotBandPath(i,h,d);if(s)x.fill=s;if(d.borderWidth)x.stroke=d.borderColor,x["stroke-width"]=d.borderWidth}else return;x.zIndex=o;if(m)if(n)m.show(),m.animate({d:n});else{if(m.hide(),f)a.label=f=f.destroy()}else if(n&&n.length&&(a.svgElem=m=w.path(n).attr(x).add(),v))for(r in d=function(b){m.on(b,function(c){v[b].apply(a,[c])})},v)d(r);e&&q(e.text)&&n&&n.length&&b.width>0&&b.height>0&&!n.flat?(e=D({align:c&&k&&"center", +x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},e),this.renderLabel(e,n,k,o)):f&&f.hide();return a},renderLabel:function(a,b,c,d){var e=this.label,f=this.axis.chart.renderer;if(!e)e={align:a.textAlign||a.align,rotation:a.rotation},e.zIndex=d,this.label=e=f.text(a.text,0,0,a.useHTML).attr(e).css(a.style).add();d=[b[1],b[4],c?b[6]:b[1]];b=[b[2],b[5],c?b[7]:b[2]];c=Ra(d);f=Ra(b);e.align(a,!1,{x:c,y:f,width:Ea(d)-c,height:Ea(b)-f});e.show()},destroy:function(){oa(this.axis.plotLinesAndBands, +this);delete this.axis;Sa(this)}};var ka=B.Axis=function(){this.init.apply(this,arguments)};ka.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#D8D8D8",labels:{enabled:!0,style:{color:"#606060",cursor:"default",fontSize:"11px"},x:0,y:15},lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1, +minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",title:{align:"middle",style:{color:"#707070"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return B.numberFormat(this.total, +-1)},style:D(aa.line.dataLabels.style,{color:"#000000"})}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0,y:null},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0,y:-15},title:{rotation:0}},init:function(a,b){var c=b.isX;this.chart=a;this.horiz=a.inverted?!c:c;this.coll=(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=b.opposite;this.side= +b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.reversed=d.reversed;this.visible=d.visible!==!1;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.names=this.names||[];this.isLog=e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=q(d.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks= +{};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stacksTouched=0;this.min=this.max=null;this.crosshair=p(d.crosshair,ta(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;sa(this,a.axes)===-1&&(c&&!this.isColorAxis?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];if(a.inverted&& +c&&this.reversed===z)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)M(this,f,d[f]);if(this.isLog)this.val2lin=Da,this.lin2val=na},setOptions:function(a){this.options=D(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],D(N[this.coll],a))},defaultLabelFormatter:function(){var a=this.axis,b=this.value,c=a.categories,d= +this.dateTimeLabelFormat,e=N.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Ka(h,this);else if(c)g=b;else if(d)g=Qa(d,b);else if(f&&a>=1E3)for(;f--&&g===z;)c=Math.pow(1E3,f+1),a>=c&&b*10%c===0&&e[f]!==null&&(g=B.numberFormat(b/c,-1)+e[f]);g===z&&(g=P(b)>=1E4?B.numberFormat(b,-1):B.numberFormat(b,-1,z,""));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis; +a.buildStacks&&a.buildStacks();o(a.series,function(c){if(c.visible||!b.options.chart.ignoreHiddenSeries){var d=c.options,e=d.threshold,f;a.hasVisibleSeries=!0;a.isLog&&e<=0&&(e=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=F(p(a.dataMin,d[0]),Ra(d)),a.dataMax=t(p(a.dataMax,d[0]),Ea(d))}else{c.getExtremes();f=c.dataMax;c=c.dataMin;if(q(c)&&q(f))a.dataMin=F(p(a.dataMin,c),c),a.dataMax=t(p(a.dataMax,f),f);if(q(e))a.threshold=e;if(!d.softThreshold||a.isLog)a.softThreshold=!1}}})},translate:function(a, +b,c,d,e,f){var g=this.linkedParent||this,h=1,i=0,k=d?g.oldTransA:g.transA,d=d?g.oldMin:g.min,j=g.minPixelPadding,e=(g.isOrdinal||g.isBroken||g.isLog&&e)&&g.lin2val;if(!k)k=g.transA;if(c)h*=-1,i=g.len;g.reversed&&(h*=-1,i-=h*(g.sector||g.len));b?(a=a*h+i,a-=j,a=a/k+d,e&&(a=g.lin2val(a))):(e&&(a=g.val2lin(a)),f==="between"&&(f=0.5),a=h*(a-d)*k+i+h*j+(ma(f)?k*f*g.pointRange:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a- +(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.top,i,k,j=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,m;i=this.transB;var n=function(a,b,c){if(ac)d?a=F(t(b,a),c):m=!0;return a},e=p(e,this.translate(a,null,null,c)),a=c=A(e+i);i=k=A(j-e-i);isNaN(e)?m=!0:this.horiz?(i=h,k=j-this.bottom,a=c=n(a,g,g+this.width)):(a=g,c=l-this.right,i=k=n(i,h,h+this.height));return m&&!d?null:f.renderer.crispLine(["M",a,i,"L", +c,k],b||1)},getLinearTickPositions:function(a,b,c){var d,e=fa(T(b/a)*a),f=fa(ua(c/a)*a),g=[];if(b===c&&ma(b))return[b];for(b=e;b<=f;){g.push(b);b=fa(b+a);if(b===d)break;d=b}return g},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e,f=this.pointRangePadding||0;e=this.min-f;var f=this.max+f,g=f-e;if(g&&g/c=this.minRange,f,g,h,i,k,j;if(this.isXAxis&&this.minRange===z&&!this.isLog)q(a.min)||q(a.max)?this.minRange=null:(o(this.series,function(a){i=a.xData;for(g=k=a.xIncrement?1:i.length-1;g>0;g--)if(h=i[g]- +i[g-1],f===z||h=n?(s=n,k=0):b.dataMax<=n&&(R=n,i=0)),b.min=p(v,s,b.dataMin),b.max=p(x,R,b.dataMax));if(e)!a&&F(b.min,p(b.dataMin,b.min))<=0&&X(10,1),b.min=fa(Da(b.min),15),b.max=fa(Da(b.max),15);if(b.range&&q(b.max))b.userMin=b.min=v=t(b.min,b.minFromRange()),b.userMax=x=b.max,b.range=null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!m&&!b.axisPointRange&&!b.usePercentage&&!h&&q(b.min)&&q(b.max)&&(c=b.max-b.min))!q(v)&&k&&(b.min-=c*k),!q(x)&& +i&&(b.max+=c*i);if(ma(d.floor))b.min=t(b.min,d.floor);if(ma(d.ceiling))b.max=F(b.max,d.ceiling);if(r&&q(b.dataMin))if(n=n||0,!q(v)&&b.min=n)b.min=n;else if(!q(x)&&b.max>n&&b.dataMax<=n)b.max=n;b.tickInterval=b.min===b.max||b.min===void 0||b.max===void 0?1:h&&!j&&l===b.linkedParent.options.tickPixelInterval?j=b.linkedParent.tickInterval:p(j,this.tickAmount?(b.max-b.min)/t(this.tickAmount-1,1):void 0,m?1:(b.max-b.min)*l/t(b.len,l));g&&!a&&o(b.series,function(a){a.processData(b.min!==b.oldMin|| +b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);if(b.pointRange&&!j)b.tickInterval=t(b.pointRange,b.tickInterval);a=p(d.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);if(!j&&b.tickInterval0.5&&b.tickInterval<5&&b.max>1E3&&b.max<9999)), +!!this.tickAmount);if(!this.tickAmount&&this.len)b.tickInterval=b.unsquish();this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,e=a.startOnTick,f=a.endOnTick,g;this.tickmarkOffset=this.categories&&a.tickmarkPlacement==="between"&&this.tickInterval===1?0.5:0;this.minorTickInterval=a.minorTickInterval==="auto"&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.tickPositions=b=c&&c.slice();if(!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval, +a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,d&&(d=d.apply(this,[this.min,this.max]))))this.tickPositions=b=d;if(!this.isLinked)this.trimTicks(b,e,f),this.min===this.max&&q(this.min)&&!this.tickAmount&&(g=!0,this.min-=0.5,this.max+=0.5),this.single=g,!c&&!d&& +this.adjustTickAmount()},trimTicks:function(a,b,c){var d=a[0],e=a[a.length-1],f=this.minPointOffset||0;if(b)this.min=d;else for(;this.min-f>a[0];)a.shift();if(c)this.max=e;else for(;this.max+fc&&(this.tickInterval*=2,this.setTickPositions());if(q(d)){for(a=c=b.length;a--;)(d===3&&a%2===1||d<=2&&a>0&&a=e&&(b=e));this.displayBtn=a!==z||b!==z;this.setExtremes(a,b,!1,z,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,e=p(b.width,a.plotWidth-c+(b.offsetRight||0)),f=p(b.height,a.plotHeight),g=p(b.top,a.plotTop),b=p(b.left,a.plotLeft+c),c=/%$/;c.test(f)&&(f=Math.round(parseFloat(f)/ +100*a.plotHeight));c.test(g)&&(g=Math.round(parseFloat(g)/100*a.plotHeight+a.plotTop));this.left=b;this.top=g;this.width=e;this.height=f;this.bottom=a.chartHeight-f-g;this.right=a.chartWidth-e-b;this.len=t(d?e:f,0);this.pos=d?b:g},getExtremes:function(){var a=this.isLog;return{min:a?fa(na(this.min)):this.min,max:a?fa(na(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?na(this.min):this.min,b=b?na(this.max): +this.max;a===null?a=b<0?b:c:c>a?a=c:b15&&a<165?"right":a>195&&a<345?"left":"center"},unsquish:function(){var a=this.ticks,b=this.options.labels,c=this.horiz,d=this.tickInterval,e=d,f=this.len/(((this.categories?1:0)+this.max-this.min)/d),g,h=b.rotation,i=this.chart.renderer.fontMetrics(b.style.fontSize,a[0]&&a[0].label),k,j=Number.MAX_VALUE,l,m=function(a){a/=f||1;a=a>1?ua(a):1;return a* +d};c?(l=!b.staggerLines&&!b.step&&(q(h)?[h]:f=-90&&a<=90)k=m(P(i.h/$(ga*a))),b=k+P(a/360),bm)m=a.labelLength}),m>i&&m>h.h?k.rotation=this.labelRotation:this.labelRotation=0;else if(g&&(l={width:i+"px"},!j)){l.textOverflow="clip";for(n=c.length;!f&&n--;)if(r=c[n],i=d[r].label)if(i.styles.textOverflow=== +"ellipsis"&&i.css({textOverflow:"clip"}),i.getBBox().height>this.len/c.length-(h.h-h.f)||d[r].labelLength>g)i.specCss={textOverflow:"ellipsis"}}if(k.rotation&&(l={width:(m>a.chartHeight*0.5?a.chartHeight*0.33:a.chartHeight)+"px"},!j))l.textOverflow="ellipsis";if(this.labelAlign=e.align||this.autoLabelAlign(this.labelRotation))k.align=this.labelAlign;o(c,function(a){var b=(a=d[a])&&a.label;if(b)b.attr(k),l&&b.css(D(l,b.specCss)),delete b.specCss,a.rotation=k.rotation});this.tickRotCorr=b.rotCorr(h.b, +this.labelRotation||0,this.side!==0)},hasData:function(){return this.hasVisibleSeries||q(this.min)&&q(this.max)&&!!this.tickPositions},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,k,j,l=0,m,n=0,r=d.title,s=d.labels,R=0,v=a.opposite,x=b.axisOffset,b=b.clipOffset,w=[-1,1,1,-1][h],u,ba=a.axisParent;k=a.hasData();a.showAxis=j=k||p(d.showEmpty,!0);a.staggerLines=a.horiz&&s.staggerLines;if(!a.axisGroup)a.gridGroup= +c.g("grid").attr({zIndex:d.gridZIndex||1}).add(ba),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(ba),a.labelGroup=c.g("axis-labels").attr({zIndex:s.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels").add(ba);if(k||a.isLinked){if(o(e,function(b){f[b]?f[b].addLabel():f[b]=new Va(a,b)}),a.renderUnsquish(),s.reserveSpace!==!1&&(h===0||h===2||{1:"left",3:"right"}[h]===a.labelAlign||a.labelAlign==="center")&&o(e,function(a){R=t(f[a].getLabelSize(),R)}),a.staggerLines)R*=a.staggerLines, +a.labelOffset=R*(a.opposite?-1:1)}else for(u in f)f[u].destroy(),delete f[u];if(r&&r.text&&r.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(r.text,0,0,r.useHTML).attr({zIndex:7,rotation:r.rotation||0,align:r.textAlign||{low:v?"right":"left",middle:"center",high:v?"left":"right"}[r.align]}).addClass("highcharts-"+this.coll.toLowerCase()+"-title").css(r.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(j)l=a.axisTitle.getBBox()[g?"height":"width"],m=r.offset,n=q(m)?0:p(r.margin,g?5:10);a.axisTitle[j? +"show":"hide"](!0)}a.offset=w*p(d.offset,x[h]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=h===2?a.tickRotCorr.y:0;g=Math.abs(R)+n+(R&&w*(g?p(s.y,a.tickRotCorr.y+8):s.x)-c);a.axisTitleMargin=p(m,g);x[h]=t(x[h],a.axisTitleMargin+l+w*a.offset,g);d=d.offset?0:T(d.lineWidth/2)*2;b[i]=t(b[i],d)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",e?this.left: +f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=e.x||0,k=e.y||0,j=C(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?j:0);return{x:a?d+i:b+(g?this.width:0)+h+i,y:a?b+k-(g?this.height:0)+h:d+k}},render:function(){var a=this, +b=a.chart,c=b.renderer,d=a.options,e=a.isLog,f=a.isLinked,g=a.tickPositions,h=a.axisTitle,i=a.ticks,k=a.minorTicks,j=a.alternateBands,l=d.stackLabels,m=d.alternateGridColor,n=a.tickmarkOffset,r=d.lineWidth,s,p=b.hasRendered&&q(a.oldMin)&&!isNaN(a.oldMin),v=a.showAxis,x=c.globalAnimation,w,t;a.labelEdge.length=0;a.overlap=!1;o([i,k,j],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||f){a.minorTickInterval&&!a.categories&&o(a.getMinorTickPositions(),function(b){k[b]||(k[b]=new Va(a,b,"minor")); +p&&k[b].isNew&&k[b].render(null,!0);k[b].render(null,!1,1)});if(g.length&&(o(g,function(b,c){if(!f||b>=a.min&&b<=a.max)i[b]||(i[b]=new Va(a,b)),p&&i[b].isNew&&i[b].render(c,!0,0.1),i[b].render(c)}),n&&(a.min===0||a.single)))i[-1]||(i[-1]=new Va(a,-1,null,!0)),i[-1].render(-1);m&&o(g,function(c,d){t=g[d+1]!==z?g[d+1]+n:a.max-n;if(d%2===0&&c=G.second?0:j*T(i.getMilliseconds()/j));if(k>=G.second)i[Hb](k>=G.minute?0:j*T(i.getSeconds()/j));if(k>=G.minute)i[Ib](k>=G.hour?0:j*T(i[tb]()/j));if(k>=G.hour)i[Jb](k>=G.day?0:j*T(i[ub]()/j));if(k>=G.day)i[wb](k>=G.month? +1:j*T(i[$a]()/j));k>=G.month&&(i[xb](k>=G.year?0:j*T(i[ab]()/j)),h=i[bb]());k>=G.year&&(h-=h%j,i[yb](h));if(k===G.week)i[wb](i[$a]()-i[vb]()+p(d,1));b=1;if(qb||Za)i=i.getTime(),i=new qa(i+Ya(i));h=i[bb]();for(var d=i.getTime(),l=i[ab](),m=i[$a](),n=!g||!!Za,r=(G.day+(g?Ya(i):i.getTimezoneOffset()*6E4))%G.day;d=0.5)a=A(a),g=this.getLinearTickPositions(a,b,c);else if(a>=0.08)for(var f=T(b),h,i,k,j,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];fb&&(!d||j<=c)&&j!==z&&g.push(j),j>c&&(l=!0),j=k}else if(b=na(b),c=na(c),a=e[d? +"minorTickInterval":"tickInterval"],a=p(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=sb(a,null,rb(a)),g=Ba(this.getLinearTickPositions(a,b,c),Da),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=a;return g};var Pb=B.Tooltip=function(){this.init.apply(this,arguments)};Pb.prototype={init:function(a,b){var c=b.borderWidth,d=b.style,e=C(d.padding);this.chart=a;this.options=b;this.crosshairs=[];this.now={x:0,y:0};this.isHidden= +!0;this.label=a.renderer.label("",0,0,b.shape||"callout",null,null,b.useHTML,null,"tooltip").attr({padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}).css(d).css({padding:0}).add().attr({y:-9999});ha||this.label.shadow(b.shadow);this.shared=b.shared},destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,b,c,d){var e=this,f=e.now,g=e.options.animation!==!1&&!e.isHidden&&(P(a-f.x)>1|| +P(b-f.y)>1),h=e.followPointer||e.len>1;u(f,{x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:h?z:g?(2*f.anchorX+c)/3:c,anchorY:h?z:g?(f.anchorY+d)/2:d});e.label.attr(f);if(g)clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(a){var b=this;clearTimeout(this.hideTimer);a=p(a,this.options.hideDelay,500);if(!this.isHidden)this.hideTimer=Pa(function(){b.label[a?"fadeOut":"hide"]();b.isHidden=!0},a)},getAnchor:function(a,b){var c,d=this.chart,e=d.inverted, +f=d.plotTop,g=d.plotLeft,h=0,i=0,k,j,a=ta(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===z&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(o(a,function(a){k=a.series.yAxis;j=a.series.xAxis;h+=a.plotX+(!e&&j?j.left-g:0);i+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&k?k.top-f:0)}),h/=a.length,i/=a.length,c=[e?d.plotWidth-i:h,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-h:i]);return Ba(c,A)},getPosition:function(a,b,c){var d=this.chart,e=this.distance, +f={},g=c.h||0,h,i=["y",d.chartHeight,b,c.plotY+d.plotTop,d.plotTop,d.plotTop+d.plotHeight],k=["x",d.chartWidth,a,c.plotX+d.plotLeft,d.plotLeft,d.plotLeft+d.plotWidth],j=p(c.ttBelow,d.inverted&&!c.negative||!d.inverted&&c.negative),l=function(a,b,c,d,h,i){var k=cb?d:d+g);else return!1},m=function(a,b,c,d){var g;db-e?g=!1:f[a]=db-c/2?b-c-2:d-c/2;return g},n=function(a){var b= +i;i=k;k=b;h=a},r=function(){l.apply(0,i)!==!1?m.apply(0,k)===!1&&!h&&(n(!0),r()):h?f.x=f.y=0:(n(!0),r())};(d.inverted||this.len>1)&&n();r();return f},defaultFormatter:function(a){var b=this.points||ta(this),c;c=[a.tooltipFooterHeaderFormatter(b[0])];c=c.concat(a.bodyFormatter(b));c.push(a.tooltipFooterHeaderFormatter(b[0],!0));return c.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h,i={},k,j=[];k=e.formatter||this.defaultFormatter;var i=c.hoverPoints,l,m=this.shared; +clearTimeout(this.hideTimer);this.followPointer=ta(a)[0].series.tooltipOptions.followPointer;h=this.getAnchor(a,b);f=h[0];g=h[1];m&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,i&&o(i,function(a){a.setState()}),o(a,function(a){a.setState("hover");j.push(a.getLabelConfig())}),i={x:a[0].category,y:a[0].y},i.points=j,this.len=j.length,a=a[0]):i=a.getLabelConfig();k=k.call(i,this);i=a.series;this.distance=p(i.tooltipOptions.distance,16);k===!1?this.hide():(this.isHidden&&(Oa(d),d.attr("opacity", +1).show()),d.attr({text:k}),l=e.borderColor||a.color||i.color||"#606060",d.attr({stroke:l}),this.updatePosition({plotX:f,plotY:g,negative:a.negative,ttBelow:a.ttBelow,h:h[2]||0}),this.isHidden=!1);H(c,"tooltipRefresh",{text:k,x:f+c.plotLeft,y:g+c.plotTop,borderColor:l})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(A(c.x),A(c.y||0),a.plotX+b.plotLeft,a.plotY+b.plotTop)},getXDateFormat:function(a,b,c){var d, +b=b.dateTimeLabelFormats,e=c&&c.closestPointRange,f,g={millisecond:15,second:12,minute:9,hour:6,day:3},h,i="millisecond";if(e){h=Qa("%m-%d %H:%M:%S.%L",a.x);for(f in G){if(e===G.week&&+Qa("%w",a.x)===c.options.startOfWeek&&h.substr(6)==="00:00:00.000"){f="week";break}if(G[f]>e){f=i;break}if(g[f]&&h.substr(g[f])!=="01-01 00:00:00.000".substr(g[f]))break;f!=="week"&&(i=f)}f&&(d=b[f])}else d=b.day;return d||b.year},tooltipFooterHeaderFormatter:function(a,b){var c=b?"footer":"header",d=a.series,e=d.tooltipOptions, +f=e.xDateFormat,g=d.xAxis,h=g&&g.options.type==="datetime"&&ma(a.key),c=e[c+"Format"];h&&!f&&(f=this.getXDateFormat(a,e,g));h&&f&&(c=c.replace("{point.key}","{point.key:"+f+"}"));return Ka(c,{point:a,series:d})},bodyFormatter:function(a){return Ba(a,function(a){var c=a.series.tooltipOptions;return(c.pointFormatter||a.point.tooltipFormatter).call(a.point,c.pointFormat)})}};var ea;db=y&&y.documentElement.ontouchstart!==z;var Xa=B.Pointer=function(a,b){this.init(a,b)};Xa.prototype={init:function(a,b){var c= +b.chart,d=c.events,e=ha?"":c.zoomType,c=a.inverted,f;this.options=b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.hasZoom=f||e;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(B.Tooltip&&b.tooltip.enabled)a.tooltip=new Pb(a,b.tooltip),this.followTouchMove=p(b.tooltip.followTouchMove,!0);this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||E.event;if(!a.target)a.target=a.srcElement;d=a.touches? +a.touches.length?a.touches.item(0):a.changedTouches[0]:a;if(!b)this.chartPosition=b=Ab(this.chart.container);d.pageX===z?(c=t(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);return u(a,{chartX:A(c),chartY:A(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};o(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e=d?d.shared:!1,f=b.hoverPoint, +g=b.hoverSeries,h=[Number.MAX_VALUE,Number.MAX_VALUE],i,k,j=[],l=[],m;if(!e&&!g)for(b=0;bh+k&&(d=h+k),ei+j&&(e=i+j),this.hasDragged=Math.sqrt(Math.pow(n-d,2)+Math.pow(r-e,2)),this.hasDragged>10){l=b.isInsidePlot(n-h,r-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!s&&!m)this.selectionMarker=m=b.renderer.rect(h,i,f?1:k,g?1:j,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();m&&f&&(d-=n,m.attr({width:P(d),x:(d>0?0:d)+n})); +m&&g&&(d=e-r,m.attr({height:P(d),y:(d>0?0:d)+r}));l&&!m&&c.panning&&b.pan(a,c.panning)}},drop:function(a){var b=this,c=this.chart,d=this.hasPinched;if(this.selectionMarker){var e={originalEvent:a,xAxis:[],yAxis:[]},f=this.selectionMarker,g=f.attr?f.attr("x"):f.x,h=f.attr?f.attr("y"):f.y,i=f.attr?f.attr("width"):f.width,k=f.attr?f.attr("height"):f.height,j;if(this.hasDragged||d)o(c.axes,function(c){if(c.zoomEnabled&&q(c.min)&&(d||b[{xAxis:"zoomX",yAxis:"zoomY"}[c.coll]])){var f=c.horiz,n=a.type=== +"touchend"?c.minPixelPadding:0,r=c.toValue((f?g:h)+n),f=c.toValue((f?g+i:h+k)-n);e[c.coll].push({axis:c,min:F(r,f),max:t(r,f)});j=!0}}),j&&H(c,"selection",e,function(a){c.zoom(u(a,d?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();d&&this.scaleGroups()}if(c)L(c.container,{cursor:c._cursor}),c.cancelClick=this.hasDragged>10,c.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault(); +this.dragStart(a)},onDocumentMouseUp:function(a){S[ea]&&S[ea].pointer.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,a=this.normalize(a,c);c&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(a){var b=S[ea];if(b&&(a.relatedTarget||a.toElement))b.pointer.reset(),b.pointer.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart;if(!q(ea)||!S[ea]||!S[ea].mouseIsDown)ea= +b.index;a=this.normalize(a);a.returnValue=!1;b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=K(a,"class")){if(c.indexOf(b)!==-1)return!0;if(c.indexOf("highcharts-container")!==-1)return!1}a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,a=a.relatedTarget||a.toElement;if(b&&a&&!b.options.stickyTracking&& +!this.inClass(a,"highcharts-tooltip")&&!this.inClass(a,"highcharts-series-"+b.index))b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,a=this.normalize(a);b.cancelClick||(c&&this.inClass(a.target,"highcharts-tracker")?(H(c.series,"click",u(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(u(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&H(b,"click",a)))},setDOMEvents:function(){var a=this,b=a.chart.container;b.onmousedown= +function(b){a.onContainerMouseDown(b)};b.onmousemove=function(b){a.onContainerMouseMove(b)};b.onclick=function(b){a.onContainerClick(b)};M(b,"mouseleave",a.onContainerMouseLeave);eb===1&&M(y,"mouseup",a.onDocumentMouseUp);if(db)b.ontouchstart=function(b){a.onContainerTouchStart(b)},b.ontouchmove=function(b){a.onContainerTouchMove(b)},eb===1&&M(y,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;V(this.chart.container,"mouseleave",this.onContainerMouseLeave);eb||(V(y,"mouseup",this.onDocumentMouseUp), +V(y,"touchend",this.onDocumentTouchEnd));clearInterval(this.tooltipTimeout);for(a in this)this[a]=null}};u(B.Pointer.prototype,{pinchTranslate:function(a,b,c,d,e,f){(this.zoomHor||this.pinchHor)&&this.pinchTranslateDirection(!0,a,b,c,d,e,f);(this.zoomVert||this.pinchVert)&&this.pinchTranslateDirection(!1,a,b,c,d,e,f)},pinchTranslateDirection:function(a,b,c,d,e,f,g,h){var i=this.chart,k=a?"x":"y",j=a?"X":"Y",l="chart"+j,m=a?"width":"height",n=i["plot"+(a?"Left":"Top")],r,s,p=h||1,o=i.inverted,x=i.bounds[a? +"h":"v"],w=b.length===1,q=b[0][l],t=c[0][l],u=!w&&b[1][l],A=!w&&c[1][l],B,c=function(){!w&&P(q-u)>20&&(p=h||P(t-A)/P(q-u));s=(n-t)/p+q;r=i["plot"+(a?"Width":"Height")]/p};c();b=s;bx.max&&(b=x.max-r,B=!0);B?(t-=0.8*(t-g[k][0]),w||(A-=0.8*(A-g[k][1])),c()):g[k]=[t,A];o||(f[k]=s-n,f[m]=r);f=o?1/p:p;e[m]=r;e[k]=b;d[o?a?"scaleY":"scaleX":"scale"+j]=p;d["translate"+j]=f*n+(t-f*q)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=a.touches,f=e.length,g=b.lastValidTouch,h= +b.hasZoom,i=b.selectionMarker,k={},j=f===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||b.runChartClick),l={};if(f>1)b.initiated=!0;h&&b.initiated&&!j&&a.preventDefault();Ba(e,function(a){return b.normalize(a)});if(a.type==="touchstart")o(e,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),g.x=[d[0].chartX,d[1]&&d[1].chartX],g.y=[d[0].chartY,d[1]&&d[1].chartY],o(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(p(a.options.min, +a.dataMin)),f=a.toPixels(p(a.options.max,a.dataMax)),g=F(e,f),e=t(e,f);b.min=F(a.pos,g-d);b.max=t(a.pos+a.len,e+d)}}),b.res=!0;else if(d.length){if(!i)b.selectionMarker=i=u({destroy:Aa,touch:!0},c.plotBox);b.pinchTranslate(d,e,k,i,l,g);b.hasPinched=h;b.scaleGroups(k,l);if(!h&&b.followTouchMove&&f===1)this.runPointActions(b.normalize(a));else if(b.res)b.res=!1,this.reset(!1,0)}},touch:function(a,b){var c=this.chart;ea=c.index;a.touches.length===1?(a=this.normalize(a),c.isInsidePlot(a.chartX-c.plotLeft, +a.chartY-c.plotTop)&&!c.openMenu?(b&&this.runPointActions(a),this.pinch(a)):b&&this.reset()):a.touches.length===2&&this.pinch(a)},onContainerTouchStart:function(a){this.touch(a,!0)},onContainerTouchMove:function(a){this.touch(a)},onDocumentTouchEnd:function(a){S[ea]&&S[ea].pointer.drop(a)}});if(E.PointerEvent||E.MSPointerEvent){var va={},Db=!!E.PointerEvent,Sb=function(){var a,b=[];b.item=function(a){return this[a]};for(a in va)va.hasOwnProperty(a)&&b.push({pageX:va[a].pageX,pageY:va[a].pageY,target:va[a].target}); +return b},Eb=function(a,b,c,d){if((a.pointerType==="touch"||a.pointerType===a.MSPOINTER_TYPE_TOUCH)&&S[ea])d(a),d=S[ea].pointer,d[b]({type:c,target:a.currentTarget,preventDefault:Aa,touches:Sb()})};u(Xa.prototype,{onContainerPointerDown:function(a){Eb(a,"onContainerTouchStart","touchstart",function(a){va[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){Eb(a,"onContainerTouchMove","touchmove",function(a){va[a.pointerId]={pageX:a.pageX,pageY:a.pageY}; +if(!va[a.pointerId].target)va[a.pointerId].target=a.currentTarget})},onDocumentPointerUp:function(a){Eb(a,"onDocumentTouchEnd","touchend",function(a){delete va[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,Db?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,Db?"pointermove":"MSPointerMove",this.onContainerPointerMove);a(y,Db?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});fb(Xa.prototype,"init",function(a,b,c){a.call(this,b,c);this.hasZoom&& +L(b.container,{"-ms-touch-action":"none","touch-action":"none"})});fb(Xa.prototype,"setDOMEvents",function(a){a.apply(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(M)});fb(Xa.prototype,"destroy",function(a){this.batchMSEvents(V);a.call(this)})}var ob=B.Legend=function(a,b){this.init(a,b)};ob.prototype={init:function(a,b){var c=this,d=b.itemStyle,e=b.itemMarginTop||0;this.options=b;if(b.enabled)c.itemStyle=d,c.itemHiddenStyle=D(d,b.itemHiddenStyle),c.itemMarginTop=e,c.padding=d=p(b.padding, +8),c.initialItemX=d,c.initialItemY=d-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.symbolWidth=p(b.symbolWidth,16),c.pages=[],c.render(),M(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:g,h=b?a.legendColor||a.color||"#CCC":g,g=a.options&&a.options.marker,i={fill:h},k;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(k in i.stroke= +h,g=a.convertAttribs(g),g)d=g[k],d!==z&&(i[k]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;(a=a.legendGroup)&&a.element&&a.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;o(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Ta(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy(); +if(a)this.group=a.destroy()},positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight,e=this.titleHeight;if(b)c=b.translateY,o(this.allItems,function(f){var g=f.checkbox,h;g&&(h=c+e+g.y+(a||0)+3,L(g,{left:b.translateX+f.checkboxOffset+g.x-20+"px",top:h+"px",display:h>c-6&&h(m||b.chartWidth-2*k-s-d.x))this.itemX=s,this.itemY+=r+this.lastLineHeight+n,this.lastLineHeight=0;this.maxItemWidth=t(this.maxItemWidth, +f);this.lastItemY=r+this.itemY+n;this.lastLineHeight=t(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];e?this.itemX+=f:(this.itemY+=r+g+n,this.lastLineHeight=g);this.offsetWidth=m||t((e?this.itemX-s-j:f)+k,this.offsetWidth)},getAllItems:function(){var a=[];o(this.chart.series,function(b){var c=b.options;if(p(c.showInLegend,!q(c.linkedTo)?z:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},adjustMargins:function(a,b){var c=this.chart,d=this.options,e=d.align.charAt(0)+ +d.verticalAlign.charAt(0)+d.layout.charAt(0);this.display&&!d.floating&&o([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(f,g){f.test(e)&&!q(a[g])&&(c[nb[g]]=t(c[nb[g]],c.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*d[g%2?"x":"y"]+p(d.margin,12)+b[g]))})},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,k=a.options,j=a.padding,l=k.borderWidth,m=k.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY= +0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=a.getAllItems();ib(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});k.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;a.lastLineHeight=0;o(e,function(b){a.renderItem(b)});g=(k.width||a.offsetWidth)+j;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);h+=j;if(l||m){if(i){if(g> +0&&h>0)i[i.isNew?"attr":"animate"](i.crisp({width:g,height:h})),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,k.borderRadius,l||0).attr({stroke:k.borderColor,"stroke-width":l||0,fill:m||"none"}).add(d).shadow(k.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;o(e,function(b){a.positionItem(b)});f&&d.align(u({width:g,height:h},k),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+ +(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,k=e.navigation,j=p(k.animation,!0),l=k.arrowSize||12,m=this.nav,n=this.pages,r=this.padding,s,R=this.allItems,v=function(a){i.attr({height:a});if(b.contentGroup.div)b.contentGroup.div.style.clip="rect("+r+"px,9999px,"+(r+a)+"px,0)"};e.layout==="horizontal"&&(f/=2);g&&(f=F(f,g));n.length=0;if(a>f){this.clipHeight=h=t(f-20-this.titleHeight-r,0);this.currentPage=p(this.currentPage,1);this.fullHeight=a;o(R,function(a,b){var c= +a._legendItemPos[1],d=A(a.legendItem.getBBox().height),e=n.length;if(!e||c-n[e-1]>h&&(s||c)!==n[e-1])n.push(s||c),e++;b===R.length-1&&c+d-n[e-1]>h&&n.push(c);c!==s&&(s=c)});if(!i)i=b.clipRect=d.clipRect(0,r,9999,0),b.contentGroup.clip(i);v(h);if(!m)this.nav=m=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",function(){b.scroll(-1,j)}).add(m),this.pager=d.text("",15,10).css(k.style).add(m),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1, +j)}).add(m);b.scroll(0);a=f}else if(m)v(c.chartHeight),m.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,h=g.activeColor,g=g.inactiveColor,i=this.pager,k=this.padding;e>d&&(e=d);if(e>0)b!==z&&Ua(b,this.chart),this.nav.attr({translateX:k,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default": +"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e===d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};J=B.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||a.fontMetrics.f;b.legendSymbol=this.chart.renderer.rect(0,a.baseline-c+1,a.symbolWidth,c,a.options.symbolRadius||0).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b= +this.options,c=b.marker,d=a.symbolWidth,e=this.chart.renderer,f=this.legendGroup,a=a.baseline-A(a.fontMetrics.b*0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled!==!1)b=c.radius,this.legendSymbol=c=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b,c).add(f),c.isMarker=!0}};(/Trident\/7\.0/.test(za)||Ma)&&fb(ob.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c, +b)};d();setTimeout(d)});var hb=B.Chart=function(){this.getArgs.apply(this,arguments)};B.chart=function(a,b,c){return new hb(a,b,c)};hb.prototype={callbacks:[],getArgs:function(){var a=[].slice.call(arguments);if(xa(a[0])||a[0].nodeName)this.renderTo=a.shift();this.init(a[0],a[1])},init:function(a,b){var c,d=a.series;a.series=null;c=D(N,a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",d);var e=d.events;this.bounds= +{h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=S.length;S.push(f);eb++;d.reflow!==!1&&M(f,"load",function(){f.initReflow()});if(e)for(g in e)M(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=ha?!1:p(d.animation,!0);f.pointCount=f.colorCounter=f.symbolCounter=0;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=I[a.type||b.type||b.defaultSeriesType])||X(17,!0);b=new b;b.init(this,a);return b}, +isInsidePlot:function(a,b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.hasCartesianSeries,k=this.isDirtyBox,j=c.length,l=j,m=this.renderer,n=m.isHidden(),r=[];Ua(a,this);n&&this.cloneRenderTo();for(this.layOutTitles();l--;)if(a=c[l],a.options.stacking&&(g=!0,a.isDirty)){h=!0;break}if(h)for(l=j;l--;)if(a=c[l],a.options.stacking)a.isDirty=!0;o(c,function(a){a.isDirty&& +a.options.legendType==="point"&&(a.updateTotals&&a.updateTotals(),f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(i&&!this.isResizing)this.maxTicks=null,o(b,function(a){a.setScale()});this.getMargins();i&&(o(b,function(a){a.isDirty&&(k=!0)}),o(b,function(a){var b=a.min+","+a.max;if(a.extKey!==b)a.extKey=b,r.push(function(){H(a,"afterSetExtremes",u(a.eventArgs,a.getExtremes()));delete a.eventArgs});(k||g)&&a.redraw()}));k&&this.drawChartBox();o(c,function(a){a.isDirty&& +a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()});d&&d.reset(!0);m.draw();H(this,"redraw");n&&this.cloneRenderTo(!0);o(r,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;d19?this.containerHeight:600))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Ta(b),delete this.renderToClone):(c&&c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),L(b,{position:"absolute",top:"-9999px",display:"block"}),b.style.setProperty&&b.style.setProperty("display","block", +"important"),y.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options,c=b.chart,d,e;a=this.renderTo;var f="highcharts-"+zb++;if(!a)this.renderTo=a=c.renderTo;if(xa(a))this.renderTo=a=y.getElementById(a);a||X(13,!0);d=C(K(a,"data-highcharts-chart"));!isNaN(d)&&S[d]&&S[d].hasRendered&&S[d].destroy();K(a,"data-highcharts-chart",this.index);a.innerHTML="";!c.skipClone&&!a.offsetWidth&&this.cloneRenderTo();this.getChartSize();d=this.chartWidth;e=this.chartHeight;this.container= +a=Z(La,{className:"highcharts-container"+(c.className?" "+c.className:""),id:f},u({position:"relative",overflow:"hidden",width:d+"px",height:e+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},c.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=new (B[c.renderer]||cb)(a,d,e,c.style,c.forExport,b.exporting&&b.exporting.allowHTML);ha&&this.renderer.create(this,a,d,e);this.renderer.chartIndex=this.index},getMargins:function(a){var b= +this.spacing,c=this.margin,d=this.titleOffset;this.resetMargins();if(d&&!q(c[0]))this.plotTop=t(this.plotTop,d+this.options.title.margin+b[0]);this.legend.adjustMargins(c,b);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);a||this.getAxisMargins()},getAxisMargins:function(){var a=this,b=a.axisOffset=[0,0,0,0],c=a.margin;a.hasCartesianSeries&&o(a.axes,function(a){a.visible&&a.getOffset()});o(nb,function(d,e){q(c[e])||(a[d]+= +b[e])});a.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,d=b.renderTo,e=c.width||ja(d,"width"),f=c.height||ja(d,"height"),c=a?a.target:E;if(!b.hasUserSize&&!b.isPrinting&&e&&f&&(c===E||c===y)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),b.reflowTimeout=Pa(function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null},a?100:0);b.containerWidth=e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};M(E,"resize",b);M(a,"destroy", +function(){V(E,"resize",b)})},setSize:function(a,b,c){var d=this,e,f,g=d.renderer;d.isResizing+=1;Ua(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(q(a))d.chartWidth=e=t(0,A(a)),d.hasUserSize=!!e;if(q(b))d.chartHeight=f=t(0,A(b));a=g.globalAnimation;(a?Wa:L)(d.container,{width:e+"px",height:f+"px"},a);d.setChartSize(!0);g.setSize(e,f,c);d.maxTicks=null;o(d.axes,function(a){a.isDirty=!0;a.setScale()});o(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.layOutTitles(); +d.getMargins();d.redraw(c);d.oldChartHeight=null;H(d,"resize");a=g.globalAnimation;Pa(function(){d&&H(d,"endResize",null,function(){d.isResizing-=1})},a===!1?0:a&&a.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,k,j,l;this.plotLeft=i=A(this.plotLeft);this.plotTop=k=A(this.plotTop);this.plotWidth=j=t(0,A(d-i-this.marginRight));this.plotHeight=l=t(0,A(e-k-this.marginBottom));this.plotSizeX= +b?l:j;this.plotSizeY=b?j:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=c.plotBox={x:i,y:k,width:j,height:l};d=2*T(this.plotBorderWidth/2);b=ua(t(d,h[3])/2);c=ua(t(d,h[0])/2);this.clipBox={x:b,y:c,width:T(this.plotSizeX-t(d,h[1])/2-b),height:t(0,T(this.plotSizeY-t(d,h[2])/2-c))};a||o(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this;o(nb,function(b,c){a[b]=p(a.margin[c], +a.spacing[c])});a.axisOffset=[0,0,0,0];a.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,k=a.backgroundColor,j=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||0,n,r=this.plotLeft,p=this.plotTop,o=this.plotWidth,v=this.plotHeight,x=this.plotBox,w=this.clipRect,t=this.clipBox;n=i+(a.shadow?8:0);if(i||k)if(e)e.animate(e.crisp({width:c- +n,height:d-n}));else{e={fill:k||"none"};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(n/2,n/2,c-n,d-n,a.borderRadius,i).attr(e).addClass("highcharts-background").add().shadow(a.shadow)}if(j)f?f.animate(x):this.plotBackground=b.rect(r,p,o,v,0).attr({fill:j}).add().shadow(a.plotShadow);if(l)h?h.animate(x):this.plotBGImage=b.image(l,r,p,o,v).add();w?w.animate({width:t.width,height:t.height}):this.clipRect=b.clipRect(t);if(m)g?(g.strokeWidth=-m,g.animate(g.crisp({x:r,y:p, +width:o,height:v}))):this.plotBorder=b.rect(r,p,o,v,0,-m).attr({stroke:a.plotBorderColor,"stroke-width":m,fill:"none",zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;o(["inverted","angular","polar"],function(g){c=I[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];for(e=d&&d.length;!f&&e--;)(c=I[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;o(b,function(a){a.linkedSeries.length= +0});o(b,function(b){var d=b.options.linkedTo;if(xa(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d,b.visible=p(b.options.visible,d.options.visible,b.visible)})},renderSeries:function(){o(this.series,function(a){a.translate();a.render()})},renderLabels:function(){var a=this,b=a.options.labels;b.items&&o(b.items,function(c){var d=u(b.style,c.style),e=C(d.left)+a.plotLeft,f=C(d.top)+a.plotTop+12;delete d.left;delete d.top;a.renderer.text(c.html,e,f).attr({zIndex:2}).css(d).add()})}, +render:function(){var a=this.axes,b=this.renderer,c=this.options,d,e,f,g;this.setTitle();this.legend=new ob(this,c.legend);this.getStacks&&this.getStacks();this.getMargins(!0);this.setChartSize();d=this.plotWidth;e=this.plotHeight-=21;o(a,function(a){a.setScale()});this.getAxisMargins();f=d/this.plotWidth>1.1;g=e/this.plotHeight>1.05;if(f||g)this.maxTicks=null,o(a,function(a){(a.horiz&&f||!a.horiz&&g)&&a.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries&&o(a,function(a){a.visible&& +a.render()});if(!this.seriesGroup)this.seriesGroup=b.g("series-group").attr({zIndex:3}).add();this.renderSeries();this.renderLabels();this.showCredits(c.credits);this.hasRendered=!0},showCredits:function(a){if(a.enabled&&!this.credits)this.credits=this.renderer.text(a.text,0,0).on("click",function(){if(a.href)E.location.href=a.href}).attr({align:a.position.align,zIndex:8}).css(a.style).add().align(a.position)},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;H(a, +"destroy");S[a.index]=z;eb--;a.renderTo.removeAttribute("data-highcharts-chart");V(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();o("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML="",V(d),f&&Ta(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this; +return!ca&&E==E.top&&y.readyState!=="complete"||ha&&!E.canvg?(ha?Ob.push(function(){a.firstRender()},a.options.global.canvasToolsURL):y.attachEvent("onreadystatechange",function(){y.detachEvent("onreadystatechange",a.firstRender);y.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options;if(a.isReadyToRender()){a.getContainer();H(a,"init");a.resetMargins();a.setChartSize();a.propFromSeries();a.getAxes();o(b.series||[],function(b){a.initSeries(b)});a.linkSeries(); +H(a,"beforeRender");if(B.Pointer)a.pointer=new Xa(a,b);a.render();a.renderer.draw();if(!a.renderer.imgCount)a.onload();a.cloneRenderTo(!0)}},onload:function(){var a=this;o([this.callback].concat(this.callbacks),function(b){b&&a.index!==void 0&&b.apply(a,[a])});a.renderer.imgCount||H(a,"load")},splashArray:function(a,b){var c=b[a],c=Y(c)?c:[c,c,c,c];return[p(b[a+"Top"],c[0]),p(b[a+"Right"],c[1]),p(b[a+"Bottom"],c[2]),p(b[a+"Left"],c[3])]}};var Cb=B.CenteredSeriesMixin={getCenter:function(){var a=this.options, +b=this.chart,c=2*(a.slicedOffset||0),d=b.plotWidth-2*c,b=b.plotHeight-2*c,e=a.center,e=[p(e[0],"50%"),p(e[1],"50%"),a.size||"100%",a.innerSize||0],f=F(d,b),g,h;for(g=0;g<4;++g)h=e[g],a=g<2||g===2&&/%$/.test(h),e[g]=(/%$/.test(h)?[d,b,f,e[2]][g]*parseFloat(h)/100:parseFloat(h))+(a?c:0);e[3]>e[2]&&(e[3]=e[2]);return e}},Ha=function(){};Ha.prototype={init:function(a,b,c){this.series=a;this.color=a.color;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors, +this.color=this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.options.pointValKey||c.pointValKey,a=Ha.prototype.optionsToObject.call(this,a);u(this,a);this.options=this.options?u(this.options,a):a;if(d)this.y=this[d];this.isNull=this.y===null;if(typeof this.x!=="number"&&c)this.x=b===void 0?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.options.keys, +e=d||c.pointArrayMap||["y"],f=e.length,g=0,h=0;if(typeof a==="number"||a===null)b[e[0]]=a;else if(Ia(a)){if(!d&&a.length>f){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];g++}for(;hn){for(c=0;j===null&&ci||this.forceCrop))if(b[d-1]p)b=[],c=[];else if(b[0]p)e=this.cropData(this.xData,this.yData,n,p),b=e.xData,c=e.yData,e=e.start,f=!0;for(i=b.length||1;--i;)d=m?k(b[i])-k(b[i-1]):b[i]-b[i-1],d>0&&(g===z||d=c){f=t(0,i-h);break}for(c=i;cd){g=c+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,k=this.hasGroupedData,j,l=[],m;if(!b&&!k)b=[],b.length=a.length,b=this.data=b;for(m=0;m0),k=this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped|| +(c[l+1]||k)>=g&&(c[l-1]||k)<=h,i&&k)if(i=j.length)for(;i--;)j[i]!==null&&(e[f++]=j[i]);else e[f++]=j;this.dataMin=Ra(e);this.dataMax=Ea(e)},translate:function(){this.processedXData||this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,k=i==="between"||ma(i),j=a.threshold,l=a.startFromThreshold?j:0,m,n,r,o,R=Number.MAX_VALUE,a=0;a=0&&n<=e.len&&m>=0&&m<=c.len;v.clientX=k?c.translate(x,0,0,0,1):m;v.negative=v.y<(j||0);v.category=d&&d[v.x]!==z?d[v.x]:v.x;a&&(R=F(R,P(m-r)));r=m}this.closestPointRangePx=R},getValidPoints:function(a){return Na(a||this.points,function(a){return!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,e=b.inverted,f=this.clipBox,g=f||b.clipBox, +h=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,g.height,c.xAxis,c.yAxis].join(","),i=b[h],k=b[h+"m"];if(!i){if(a)g.width=0,b[h+"m"]=k=d.clipRect(-99,e?-b.plotLeft:-b.plotTop,99,e?b.chartWidth:b.chartHeight);b[h]=i=d.clipRect(g)}a&&(i.count+=1);if(c.clip!==!1)this.group.clip(a||f?i:b.clipRect),this.markerGroup.clip(k),this.sharedClipKey=h;a||(i.count-=1,i.count<=0&&h&&b[h]&&(f||(b[h]=b[h].destroy()),b[h+"m"]&&(b[h+"m"]=b[h+"m"].destroy())))},animate:function(a){var b=this.chart,c=this.options.animation, +d;if(c&&!Y(c))c=aa[this.type].animation;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+99},c),this.animate=null)},afterAnimate:function(){this.setClip();H(this,"afterAnimate")},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,k,j,l=this.options.marker,m=this.pointAttr[""],n,r,o,t=this.markerGroup,v=p(l.enabled,this.xAxis.isRadial,this.closestPointRangePx>2*l.radius);if(l.enabled!==!1||this._hasPointMarkers)for(f= +b.length;f--;)if(g=b[f],d=T(g.plotX),e=g.plotY,j=g.graphic,n=g.marker||{},r=!!g.marker,a=v&&n.enabled===z||n.enabled,o=g.isInside,a&&e!==z&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||m,h=a.r,i=p(n.symbol,this.symbol),k=i.indexOf("url")===0,j)j[o?"show":"hide"](!0).attr(a).animate(u({x:d-h,y:e-h},j.symbolName?{width:2*h,height:2*h}:{}));else{if(o&&(h>0||k))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h,r?n:l).attr(a).add(t)}else if(j)g.graphic=j.destroy()},convertAttribs:function(a, +b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=p(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=aa[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color,h=a.options.negativeColor;f={stroke:g,fill:g};var i=a.points||[],k,j,l=[],m=a.pointAttrToOptions;k=a.hasPointSpecificOptions;var n=c.lineColor,r=c.fillColor;j=b.turboThreshold;var s=a.zones,t=a.zoneAxis||"y",v;b.marker?(e.radius=e.radius||c.radius+e.radiusPlus, +e.lineWidth=e.lineWidth||c.lineWidth+e.lineWidthPlus):(e.color=e.color||ia(e.color||g).brighten(e.brightness).get(),e.negativeColor=e.negativeColor||ia(e.negativeColor||h).brighten(e.brightness).get());l[""]=a.convertAttribs(c,f);o(["hover","select"],function(b){l[b]=a.convertAttribs(d[b],l[""])});a.pointAttr=l;g=i.length;if(!j||g=f.value;)f=s[++k];j.color=j.fillColor= +p(f.color,a.color)}k=b.colorByPoint||j.color;if(j.options)for(v in m)q(c[m[v]])&&(k=!0);if(k){c=c||{};k=[];d=c.states||{};f=d.hover=d.hover||{};if(!b.marker||j.negative&&!f.fillColor&&!e.fillColor)f[a.pointAttrToOptions.fill]=f.color||!j.options.color&&e[j.negative&&h?"negativeColor":"color"]||ia(j.color).brighten(f.brightness||e.brightness).get();f={color:j.color};if(!r)f.fillColor=j.color;if(!n)f.lineColor=j.color;c.hasOwnProperty("color")&&!c.color&&delete c.color;k[""]=a.convertAttribs(u(f,c), +l[""]);k.hover=a.convertAttribs(d.hover,l.hover,k[""]);k.select=a.convertAttribs(d.select,l.select,k[""])}else k=l;j.pointAttr=k}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(za),d,e=a.data||[],f,g,h;H(a,"destroy");V(a);o(a.axisTypes||[],function(b){if(h=a[b])oa(h.series,a),h.isDirty=h.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);for(d=e.length;d--;)(f=e[d])&&f.destroy&&f.destroy();a.points=null;clearTimeout(a.animationTimeout);for(g in a)a[g]instanceof O&&!a[g].survive&& +(d=c&&g==="group"?"hide":"destroy",a[g][d]());if(b.hoverSeries===a)b.hoverSeries=null;oa(b.series,a);for(g in a)delete a[g]},getGraphPath:function(a,b,c){var d=this,e=d.options,f=e.step,g,h=[],i,a=a||d.points;(g=a.reversed)&&a.reverse();(f={right:1,center:2}[f]||f&&3)&&g&&(f=4-f);e.connectNulls&&!b&&!c&&(a=this.getValidPoints(a));o(a,function(g,j){var l=g.plotX,m=g.plotY,n=a[j-1];if((g.leftCliff||n&&n.rightCliff)&&!c)i=!0;g.isNull&&!q(b)&&j>0?i=!e.connectNulls:g.isNull&&!b?i=!0:(j===0||i?n=["M",g.plotX, +g.plotY]:d.getPointSpline?n=d.getPointSpline(a,g,j):f?(n=f===1?["L",n.plotX,m]:f===2?["L",(n.plotX+l)/2,n.plotY,"L",(n.plotX+l)/2,m]:["L",l,n.plotY],n.push("L",l,m)):n=["L",l,m],h.push.apply(h,n),i=!1)});return d.graphPath=h},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color,b.dashStyle]],d=b.lineWidth,e=b.linecap!=="square",f=(this.gappedPath||this.getGraphPath).call(this),g=this.fillGraph&&this.color||"none";o(this.zones,function(d,e){c.push(["zoneGraph"+e,d.color|| +a.color,d.dashStyle||b.dashStyle])});o(c,function(c,i){var k=c[0],j=a[k];if(j)j.animate({d:f});else if((d||g)&&f.length)j={stroke:c[1],"stroke-width":d,fill:g,zIndex:1},c[2]?j.dashstyle=c[2]:e&&(j["stroke-linecap"]=j["stroke-linejoin"]="round"),a[k]=a.chart.renderer.path(f).attr(j).add(a.group).shadow(i<2&&b.shadow)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,d=this.zones,e,f,g=this.clips||[],h,i=this.graph,k=this.area,j=t(b.chartWidth,b.chartHeight),l=this[(this.zoneAxis||"y")+ +"Axis"],m,n=l.reversed,r=b.inverted,s=l.horiz,q,v,x,w=!1;if(d.length&&(i||k)&&l.min!==z)i&&i.hide(),k&&k.hide(),m=l.getExtremes(),o(d,function(d,o){e=n?s?b.plotWidth:0:s?0:l.toPixels(m.min);e=F(t(p(f,e),0),j);f=F(t(A(l.toPixels(p(d.value,m.max),!0)),0),j);w&&(e=f=l.toPixels(m.max));q=Math.abs(e-f);v=F(e,f);x=t(e,f);if(l.isXAxis){if(h={x:r?x:v,y:0,width:q,height:j},!s)h.x=b.plotHeight-h.x}else if(h={x:0,y:r?x:v,width:j,height:q},s)h.y=b.plotWidth-h.y;b.inverted&&c.isVML&&(h=l.isXAxis?{x:0,y:n?v:x, +height:h.width,width:b.chartWidth}:{x:h.y-b.plotLeft-b.spacingBox.x,y:0,width:h.height,height:b.chartHeight});g[o]?g[o].animate(h):(g[o]=c.clipRect(h),i&&a["zoneGraph"+o].clip(g[o]),k&&a["zoneArea"+o].clip(g[o]));w=d.value>m.max}),this.clips=g},invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};o(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)M(c,"resize",a),M(b,"destroy",function(){V(c,"resize",a)}),a(),b.invertGroups= +a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({zIndex:d||0.1}).add(e),f.addClass("highcharts-series-"+this.index));f.attr({visibility:c})[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;if(a.inverted)b=c,c=this.xAxis;return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=(c=d.animation)&&!!a.animate&& +b.renderer.isSVG&&p(c.duration,500)||0,f=a.visible?"inherit":"hidden",g=d.zIndex,h=a.hasRendered,i=b.seriesGroup;c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup","markers",f,g,i);e&&a.animate(!0);a.getAttribs();c.inverted=a.isCartesian?b.inverted:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());o(a.points,function(a){a.redraw&&a.redraw()});a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&a.options.enableMouseTracking!==!1&&a.drawTracker();b.inverted&& +a.invertGroups();d.clip!==!1&&!a.sharedClipKey&&!h&&c.clip(b.clipRect);e&&a.animate();if(!h)a.animationTimeout=Pa(function(){a.afterAnimate()},e);a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.isDirty,d=this.group,e=this.xAxis,f=this.yAxis;d&&(a.inverted&&d.attr({width:a.plotWidth,height:a.plotHeight}),d.animate({translateX:p(e&&e.left,a.plotLeft),translateY:p(f&&f.top,a.plotTop)}));this.translate();this.render();b&&H(this,"updatedData"); +(c||b)&&delete this.kdTree},kdDimensions:1,kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b)},buildKDTree:function(){function a(c,e,f){var g,h;if(h=c&&c.length)return g=b.kdAxisArray[e%f],c.sort(function(a,b){return a[g]-b[g]}),h=Math.floor(h/2),{point:c[h],left:a(c.slice(0,h),e+1,f),right:a(c.slice(h+1),e+1,f)}}var b=this, +c=b.kdDimensions;delete b.kdTree;Pa(function(){b.kdTree=a(b.getValidPoints(),c,c)},b.options.kdNow?0:1)},searchKDTree:function(a,b){function c(a,b,k,j){var l=b.point,m=d.kdAxisArray[k%j],n,p,o=l;p=q(a[e])&&q(l[e])?Math.pow(a[e]-l[e],2):null;n=q(a[f])&&q(l[f])?Math.pow(a[f]-l[f],2):null;n=(p||0)+(n||0);l.dist=q(n)?Math.sqrt(n):Number.MAX_VALUE;l.distX=q(p)?Math.sqrt(p):Number.MAX_VALUE;m=a[m]-l[m];n=m<0?"left":"right";p=m<0?"right":"left";b[n]&&(n=c(a,b[n],k+1,j),o=n[g]0&&this.singleStacks===!1&&(q.points[v][0]=q.points[this.index+","+w+",0"][0]); +e==="percent"?(s=s?i:k,j&&m[s]&&m[s][w]?(s=m[s][w],q.total=s.total=t(s.total,q.total)+P(u)||0):q.total=fa(q.total+(P(u)||0))):q.total=fa(q.total+(u||0));q.cum=p(q.cum,g)+(u||0);u!==null&&q.points[v].push(q.cum);c[x]=q.cum}if(e==="percent")l.usePercentage=!0;this.stackedYData=c;l.oldStacks={}}};Q.prototype.setPercentStacks=function(){var a=this,b=a.stackKey,c=a.yAxis.stacks,d=a.processedXData,e;o([b,"-"+b],function(b){var f;for(var g=d.length,h,i;g--;)if(h=d[g],e=a.getStackIndicator(e,h,a.index),f= +(i=c[b]&&c[b][h])&&i.points[e.key],h=f)i=i.total?100/i.total:0,h[0]=fa(h[0]*i),h[1]=fa(h[1]*i),a.stackedYData[g]=h[1]})};Q.prototype.getStackIndicator=function(a,b,c){!q(a)||a.x!==b?a={x:b,index:0}:a.index++;a.key=[c,b,a.index].join(",");return a};u(hb.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=p(b,!0),H(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options; +new ka(this,D(a,{index:this[e].length,isX:b}));f[e]=ta(f[e]||{});f[e].push(a);p(c,!0)&&this.redraw(d)},showLoading:function(a){var b=this,c=b.options,d=b.loadingDiv,e=c.loading,f=function(){d&&L(d,{left:b.plotLeft+"px",top:b.plotTop+"px",width:b.plotWidth+"px",height:b.plotHeight+"px"})};if(!d)b.loadingDiv=d=Z(La,{className:"highcharts-loading"},u(e.style,{zIndex:10,display:"none"}),b.container),b.loadingSpan=Z("span",null,e.labelStyle,d),M(b,"redraw",f);b.loadingSpan.innerHTML=a||c.lang.loading; +if(!b.loadingShown)L(d,{opacity:0,display:""}),Wa(d,{opacity:e.style.opacity},{duration:e.showDuration||0}),b.loadingShown=!0;f()},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&Wa(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){L(b,{display:"none"})}});this.loadingShown=!1}});u(Ha.prototype,{update:function(a,b,c,d){function e(){f.applyOptions(a);if(f.y===null&&h)f.graphic=h.destroy();if(Y(a)&&!Ia(a))f.redraw=function(){if(h&&h.element&&a&&a.marker&&a.marker.symbol)f.graphic= +h.destroy();if(a&&a.dataLabels&&f.dataLabel)f.dataLabel=f.dataLabel.destroy();f.redraw=null};i=f.index;g.updateParallelArrays(f,i);if(l&&f.name)l[f.x]=f.name;j.data[i]=Y(j.data[i])?f.options:a;g.isDirty=g.isDirtyData=!0;if(!g.fixedBox&&g.hasCartesianSeries)k.isDirtyBox=!0;if(j.legendType==="point")k.isDirtyLegend=!0;b&&k.redraw(c)}var f=this,g=f.series,h=f.graphic,i,k=g.chart,j=g.options,l=g.xAxis&&g.xAxis.names,b=p(b,!0);d===!1?e():f.firePointEvent("update",{options:a},e)},remove:function(a,b){this.series.removePoint(sa(this, +this.series.data),a,b)}});u(Q.prototype,{addPoint:function(a,b,c,d){var e=this,f=e.options,g=e.data,h=e.graph,i=e.area,k=e.chart,j=e.xAxis&&e.xAxis.names,l=h&&h.shift||0,m=["graph","area"],h=f.data,n,r=e.xData;Ua(d,k);if(c){for(d=e.zones.length;d--;)m.push("zoneGraph"+d,"zoneArea"+d);o(m,function(a){if(e[a])e[a].shift=l+(f.step?2:1)})}if(i)i.isArea=!0;b=p(b,!0);i={series:e};e.pointClass.prototype.applyOptions.apply(i,[a]);m=i.x;d=r.length;if(e.requireSorting&&mm;)d--;e.updateParallelArrays(i, +"splice",d,0,0);e.updateParallelArrays(i,d);if(j&&i.name)j[m]=i.name;h.splice(d,0,a);n&&(e.data.splice(d,0,null),e.processData());f.legendType==="point"&&e.generatePoints();c&&(g[0]&&g[0].remove?g[0].remove(!1):(g.shift(),e.updateParallelArrays(i,"shift"),h.shift()));e.isDirty=!0;e.isDirtyData=!0;b&&(e.getAttribs(),k.redraw())},removePoint:function(a,b,c){var d=this,e=d.data,f=e[a],g=d.points,h=d.chart,i=function(){g&&g.length===e.length&&g.splice(a,1);e.splice(a,1);d.options.data.splice(a,1);d.updateParallelArrays(f|| +{series:d},"splice",a,1);f&&f.destroy();d.isDirty=!0;d.isDirtyData=!0;b&&h.redraw()};Ua(c,h);b=p(b,!0);f?f.firePointEvent("remove",null,i):i()},remove:function(a,b){var c=this,d=c.chart;H(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=!0;d.linkSeries();p(a,!0)&&d.redraw(b)})},update:function(a,b){var c=this,d=this.chart,e=this.userOptions,f=this.type,g=I[f].prototype,h=["group","markerGroup","dataLabelsGroup"],i;if(a.type&&a.type!==f||a.zIndex!==void 0)h.length=0;o(h,function(a){h[a]= +c[a];delete c[a]});a=D(e,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);for(i in g)this[i]=z;u(this,I[a.type||f].prototype);o(h,function(a){c[a]=h[a]});this.init(d,a);d.linkSeries();p(b,!0)&&d.redraw(!1)}});u(ka.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=D(this.userOptions,a);this.destroy(!0);this._addedPlotLB=this.chart._labelPanes=z;this.init(c,u(a,{events:z}));c.isDirtyBox=!0;p(b,!0)&&c.redraw()}, +remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);oa(b.axes,this);oa(b[c],this);b.options[c].splice(this.options.index,1);o(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;p(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});var wa=pa(Q);I.line=wa;aa.area=D(da,{softThreshold:!1,threshold:0});var la=pa(Q,{type:"area",singleStacks:!1,getStackPoints:function(){var a= +[],b=[],c=this.xAxis,d=this.yAxis,e=d.stacks[this.stackKey],f={},g=this.points,h=this.index,i=d.series,k=i.length,j,l=p(d.options.reversedStacks,!0)?1:-1,m,n;if(this.options.stacking){for(m=0;m=0&&m=0&&ma&&h>e?(h=t(a,e),k=2*e-h):hc&&k>e?(k=t(c,e), +h=2*e-k):k0.5;b=Math.round(b)+f;d-= +b;g&&(b-=1,d+=1);return{x:a,y:b,width:c,height:d}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWidth=p(c.borderWidth,a.closestPointRange*a.xAxis.transA<2?0:1),e=a.yAxis,f=a.translatedThreshold=e.getThreshold(c.threshold),g=p(c.minPointLength,5),h=a.getColumnMetrics(),i=h.width,k=a.barW=t(i,1+2*d),j=a.pointXOffset=h.offset;b.inverted&&(f-=0.5);c.pointPadding&&(k=ua(k));Q.prototype.translate.apply(a);o(a.points,function(c){var d=F(p(c.yBottom,f),9E4),h=999+P(d),h=F(t(-h,c.plotY), +e.len+h),o=c.plotX+j,s=k,q=F(h,d),v,u=t(h,d)-q;P(u)g?d-g:f-(v?g:0));c.barX=o;c.pointWidth=i;c.tooltipPos=b.inverted?[e.len+e.pos-b.plotLeft-h,a.xAxis.len-o-s/2,u]:[o+s/2,h+e.pos-b.plotTop,u];c.shapeType="rect";c.shapeArgs=a.crispCol(o,q,s,u)})},getSymbol:Aa,drawLegendSymbol:J.drawRectangle,drawGraph:Aa,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=c.animationLimit||250,f,g;o(a.points,function(h){var i= +h.plotY,k=h.graphic;if(i!==z&&!isNaN(i)&&h.y!==null)f=h.shapeArgs,i=q(a.borderWidth)?{"stroke-width":a.borderWidth}:{},g=h.pointAttr[h.selected?"select":""]||a.pointAttr[""],k?(Oa(k),k.attr(i).attr(g)[b.pointCount\u25cf {series.name}
', +pointFormat:"x: {point.x}
y: {point.y}
"}});la=pa(Q,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1,kdDimensions:2,drawGraph:function(){this.options.lineWidth&&Q.prototype.drawGraph.call(this)}});I.scatter=la;aa.pie=D(da,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.y===null?void 0: +this.point.name},x:0},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});da={type:"pie",isCartesian:!1,pointClass:pa(Ha,{init:function(){Ha.prototype.init.apply(this,arguments);var a=this,b;a.name=p(a.name,"Slice");b=function(b){a.slice(b.type==="select")};M(a,"select",b);M(a,"unselect",b);return a},setVisible:function(a,b){var c=this,d=c.series,e=d.chart,f=d.options.ignoreHiddenPoint, +b=p(b,f);if(a!==c.visible){c.visible=c.options.visible=a=a===z?!c.visible:a;d.options.data[sa(c,d.data)]=c.options;o(["graphic","dataLabel","connector","shadowGroup"],function(b){if(c[b])c[b][a?"show":"hide"](!0)});c.legendItem&&e.legend.colorizeItem(c,a);!a&&c.state==="hover"&&c.setState("");if(f)d.isDirty=!0;b&&e.redraw()}},slice:function(a,b,c){var d=this.series;Ua(c,d.chart);p(b,!0);this.sliced=this.options.sliced=a=q(a)?a:!this.sliced;d.options.data[sa(this,d.data)]=this.options;a=a?this.slicedTranslation: +{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var b=this.shapeArgs,c=this.series.chart;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(c.plotLeft+b.x,c.plotTop+b.y,b.r+a,b.r+a,{innerR:this.shapeArgs.r,start:b.start,end:b.end})}}),requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth", +fill:"color"},animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)o(c,function(a){var c=a.graphic,g=a.shapeArgs;c&&(c.attr({r:a.startR||b.center[3]/2,start:d,end:d}),c.animate({r:g.r,start:g.start,end:g.end},b.options.animation))}),b.animate=null},updateTotals:function(){var a,b=0,c=this.points,d=c.length,e,f=this.options.ignoreHiddenPoint;for(a=0;a0&&(e.visible||!f)?e.y/b*100:0,e.total=b},generatePoints:function(){Q.prototype.generatePoints.call(this); +this.updateTotals()},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,k=this.startAngleRad=ra/180*(i-90),i=(this.endAngleRad=ra/180*(p(c.endAngle,i+360)-90))-k,j=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,m,n=j.length,o;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=W.asin(F((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*U(h)*(a[2]/2+l)};for(m=0;m1.5*ra?h-=2*ra:h<-ra/2&&(h+=2*ra);o.slicedTranslation={translateX:A(U(h)*d),translateY:A($(h)*d)};f=U(h)*a[2]/2;g=$(h)*a[2]/2;o.tooltipPos=[a[0]+f*0.7,a[1]+g*0.7];o.half=h<-ra/2||h>ra/2?1:0;o.angle=h;e=F(e,l/2);o.labelPos=[a[0]+f+U(h)*l,a[1]+g+$(h)*l,a[0]+f+U(h)*e,a[1]+g+$(h)*e,a[0]+f,a[1]+g,l<0?"center":o.half?"right":"left",h]}},drawGraph:null,drawPoints:function(){var a= +this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g,h,i;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);o(a.points,function(k){if(k.y!==null){d=k.graphic;h=k.shapeArgs;f=k.shadowGroup;g=k.pointAttr[k.selected?"select":""];if(!g.stroke)g.stroke=g.fill;if(e&&!f)f=k.shadowGroup=b.g("shadow").add(a.shadowGroup);c=k.sliced?k.slicedTranslation:{translateX:0,translateY:0};f&&f.attr(c);if(d)d.setRadialReference(a.center).attr(g).animate(u(h,c));else{i={"stroke-linejoin":"round"};if(!k.visible)i.visibility= +"hidden";k.graphic=d=b[k.shapeType](h).setRadialReference(a.center).attr(g).attr(i).attr(c).add(a.group).shadow(e,f)}}})},searchPoint:Aa,sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawLegendSymbol:J.drawRectangle,getCenter:Cb.getCenter,getSymbol:Aa};da=pa(Q,da);I.pie=da;Q.prototype.drawDataLabels=function(){var a=this,b=a.options,c=b.cursor,d=b.dataLabels,e=a.points,f,g,h=a.hasRendered||0,i,k,j=a.chart.renderer;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&& +a.dlProcessOptions(d),k=a.plotGroup("dataLabelsGroup","data-labels",d.defer?"hidden":"visible",d.zIndex||6),p(d.defer,!0)&&(k.attr({opacity:+h}),h||M(a,"afterAnimate",function(){a.visible&&k.show();k[b.animation?"animate":"attr"]({opacity:1},{duration:200})})),g=d,o(e,function(e){var h,n=e.dataLabel,o,s,t=e.connector,v=!0,x,w={};f=e.dlOptions||e.options&&e.options.dataLabels;h=p(f&&f.enabled,g.enabled)&&e.y!==null;if(n&&!h)e.dataLabel=n.destroy();else if(h){d=D(g,f);x=d.style;h=d.rotation;o=e.getLabelConfig(); +i=d.format?Ka(d.format,o):d.formatter.call(o,d);x.color=p(d.color,x.color,a.color,"black");if(n)if(q(i))n.attr({text:i}),v=!1;else{if(e.dataLabel=n=n.destroy(),t)e.connector=t.destroy()}else if(q(i)){n={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:h,padding:d.padding,zIndex:1};if(x.color==="contrast")w.color=d.inside||d.distance<0||b.stacking?j.getContrast(e.color||a.color):"#000000";if(c)w.cursor=c;for(s in n)n[s]===z&&delete n[s];n=e.dataLabel= +j[h?"text":"label"](i,0,-9999,d.shape,null,null,d.useHTML).attr(n).css(u(x,w)).add(k).shadow(d.shadow)}n&&a.alignDataLabel(e,n,d,null,v)}})};Q.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=p(a.plotX,-9999),i=p(a.plotY,-9999),k=b.getBBox(),j=f.renderer.fontMetrics(c.style.fontSize).b,l=c.rotation,m=c.align,n=this.visible&&(a.series.forceDL||f.isInsidePlot(h,A(i),g)||d&&f.isInsidePlot(h,g?d.x+1:d.y+d.height-1,g)),o=p(c.overflow,"justify")==="justify";if(n)d=u({x:g?f.plotWidth- +i:h,y:A(g?f.plotHeight-h:i),width:0,height:0},d),u(c,{width:k.width,height:k.height}),l?(o=!1,g=f.renderer.rotCorr(j,l),g={x:d.x+c.x+d.width/2+g.x,y:d.y+c.y+d.height/2},b[e?"attr":"animate"](g).attr({align:c.align}),h=(l+720)%360,h=h>180&&h<360,m==="left"?g.y-=h?k.height:0:m==="center"?(g.x-=k.width/2,g.y-=k.height/2):m==="right"&&(g.x-=k.width,g.y-=h?0:k.height)):(b.align(c,null,d),g=b.alignAttr),o?this.justifyDataLabel(b,c,g,k,d,e):p(c.crop,!0)&&(n=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+k.width, +g.y+k.height)),c.shape&&!l&&b.attr({anchorX:a.plotX,anchorY:a.plotY});if(!n)Oa(b),b.attr({y:-9999}),b.placed=!1};Q.prototype.justifyDataLabel=function(a,b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,k,j,l=a.box?0:a.padding||0;k=c.x+l;if(k<0)h==="right"?b.align="left":b.x=-k,j=!0;k=c.x+d.width-l;if(k>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-k,j=!0;k=c.y+l;if(k<0)i==="bottom"?b.verticalAlign="top":b.y=-k,j=!0;k=c.y+d.height-l;if(k>g.plotHeight)i==="top"?b.verticalAlign="bottom": +b.y=g.plotHeight-k,j=!0;if(j)a.placed=!f,a.align(b,null,e)};if(I.pie)I.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=p(e.connectorPadding,10),g=p(e.connectorWidth,1),h=d.plotWidth,i=d.plotHeight,k,j,l=p(e.softConnector,!0),m=e.distance,n=a.center,r=n[2]/2,q=n[1],u=m>0,v,x,w,B=[[],[]],z,y,E,D,C,G=[0,0,0,0],L=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){Q.prototype.drawDataLabels.apply(a);o(b,function(a){if(a.dataLabel&& +a.visible)B[a.half].push(a),a.dataLabel._pos=null});for(D=2;D--;){var H=[],M=[],I=B[D],K=I.length,J;if(K){a.sortByAngle(I,D-0.5);for(C=b=0;!b&&I[C];)b=I[C]&&I[C].dataLabel&&(I[C].dataLabel.getBBox().height||21),C++;if(m>0){x=F(q+r+m,d.plotHeight);for(C=t(0,q-r-m);C<=x;C+=b)H.push(C);x=H.length;if(K>x){c=[].concat(I);c.sort(L);for(C=K;C--;)c[C].rank=C;for(C=K;C--;)I[C].rank>=x&&I.splice(C,1);K=I.length}for(C=0;C0){if(x=M.pop(),J=x.i,y=x.y,c>y&&H[J+1]!==null||ch-f&&(G[1]=t(A(z+x-h+f),G[1])),y-b/2<0?G[0]=t(A(-y+b/2),G[0]):y+b/2>i&&(G[2]=t(A(y+b/2-i),G[2]))}}}if(Ea(G)===0||this.verifyDataLabelOverflow(G))this.placeDataLabels(),u&&g&&o(this.points,function(b){k=b.connector;w=b.labelPos;if((v=b.dataLabel)&&v._pos&&b.visible)E=v._attr.visibility,z=v.connX,y=v.connY,j=l?["M",z+(w[6]==="left"?5:-5),y,"C",z,y,2*w[2]-w[4],2*w[3]-w[5],w[2],w[3],"L",w[4],w[5]]:["M",z+(w[6]==="left"?5:-5),y,"L", +w[2],w[3],"L",w[4],w[5]],k?(k.animate({d:j}),k.attr("visibility",E)):b.connector=k=a.chart.renderer.path(j).attr({"stroke-width":g,stroke:e.connectorColor||b.color||"#606060",visibility:E}).add(a.dataLabelsGroup);else if(k)b.connector=k.destroy()})}},I.pie.prototype.placeDataLabels=function(){o(this.points,function(a){var b=a.dataLabel;if(b&&a.visible)(a=b._pos)?(b.attr(b._attr),b[b.moved?"animate":"attr"](a),b.moved=!0):b&&b.attr({y:-9999})})},I.pie.prototype.alignDataLabel=Aa,I.pie.prototype.verifyDataLabelOverflow= +function(a){var b=this.center,c=this.options,d=c.center,e=c.minSize||80,f=e,g;d[0]!==null?f=t(b[2]-t(a[1],a[3]),e):(f=t(b[2]-a[1]-a[3],e),b[0]+=(a[3]-a[1])/2);d[1]!==null?f=t(F(f,b[2]-t(a[0],a[2])),e):(f=t(F(f,b[2]-a[0]-a[2]),e),b[1]+=(a[0]-a[2])/2);fp(this.translatedThreshold,g.yAxis.len)),k=p(c.inside,!!this.options.stacking);if(h){d=D(h);if(d.y<0)d.height+=d.y,d.y=0;h=d.y+d.height-g.yAxis.len;h>0&&(d.height-=h);f&&(d={x:g.yAxis.len-d.y-d.height,y:g.xAxis.len-d.x-d.width,width:d.height,height:d.width});if(!k)f?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0)}c.align=p(c.align,!f||k?"center":i?"right":"left");c.verticalAlign=p(c.verticalAlign, +f||k?"middle":i?"top":"bottom");Q.prototype.alignDataLabel.call(this,a,b,c,d,e)};(function(a){var b=a.Chart,c=a.each,d=a.pick,e=a.addEvent;b.prototype.callbacks.push(function(a){function b(){var e=[];c(a.series,function(a){var b=a.options.dataLabels,f=a.dataLabelCollections||["dataLabel"];(b.enabled||a._hasPointLabels)&&!b.allowOverlap&&a.visible&&c(f,function(b){c(a.points,function(a){if(a[b])a[b].labelrank=d(a.labelrank,a.shapeArgs&&a.shapeArgs.height),e.push(a[b])})})});a.hideOverlappingLabels(e)} +b();e(a,"redraw",b)});b.prototype.hideOverlappingLabels=function(a){var b=a.length,d,e,k,j,l,m,n,o,p;for(e=0;el.x+n.translateX+(k.width-p)||m.x+o.translateX+(j.width- +p)l.y+n.translateY+(k.height-p)||m.y+o.translateY+(j.height-p)h;if(b.series.length&&(i||l>F(j.dataMin,j.min))&&(!i||k + +
+
+

+ Activity Dashboard +

+
+
+
+
+

+
+
+
+ +

+
+
+
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+

+

All Activity

+

+
+
+
+
+
+
+ +
+ +
+ +
+
+

+ +
+
+
+
+ +

+

Planned Activity

+
+
+
+ +
+
+
+ +
+ +
+ +
+
+

+ +
+
+
+
+ +

+

+

Completed Activities

+

+
+
+
+ +
+
+
+ +
+
+ +
+
+

+ +
+
+
+
+ +

+

+

Today's Activities

+

+
+
+
+ +
+
+
+ +
+
+ +
+
+

+ +
+
+
+
+ +

+

+

Overdue Activities

+

+
+
+
+ +
+
+
+ +
+
+ +
+
+

+ +
+
+
+
+ +

+

+

Cancelled Activities

+

+
+
+
+ +
+
+
+ +
+
+

+

Activity Type

+

+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Planned Activities
No Data Available
NameActivity TypeAssigned toDead Line DateViewOrigin
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Today's Activities
No Data Available
NameActivity TypeAssigned toDead Line DateViewOrigin
+ + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Completed Activities
No Data Available
NameActivity TypeAssigned toDead Line DateView
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Overdue Activities
No Data Available
NameActivity TypeAssigned toDead Line DateView
+ + + + + + + + + +
+
+
+ diff --git a/activity_dashboard_mngmnt/views/activity_dashbord.xml b/activity_dashboard_mngmnt/views/activity_dashbord.xml new file mode 100644 index 000000000..cad0785c9 --- /dev/null +++ b/activity_dashboard_mngmnt/views/activity_dashbord.xml @@ -0,0 +1,38 @@ + + + + + Cancel + + + code + + if records: + action = records.activity_cancel() + + + + Mark As Done + + + code + + if records: + action = records.activity_done() + + + + + Dashboard + activity_dashboard + current + + + + + + \ No newline at end of file diff --git a/activity_dashboard_mngmnt/views/activity_tag.xml b/activity_dashboard_mngmnt/views/activity_tag.xml new file mode 100644 index 000000000..54a7f9161 --- /dev/null +++ b/activity_dashboard_mngmnt/views/activity_tag.xml @@ -0,0 +1,54 @@ + + + + + sales.team.crm.tag.view.form + activity.tag + +
+ +
+
+ + + + + +
+
+
+
+ + Activities + activity.tag + tree,form + + + + sales.team.crm.tag.view.tree + activity.tag + + + + + + + + + + + + +
diff --git a/activity_dashboard_mngmnt/views/my_activity.xml b/activity_dashboard_mngmnt/views/my_activity.xml new file mode 100644 index 000000000..057aafd9f --- /dev/null +++ b/activity_dashboard_mngmnt/views/my_activity.xml @@ -0,0 +1,83 @@ + + + + + mail.activity.type.view.form + mail.activity + +
+
+
+ + + + + + + + + + + + +
+ Recommended Activities + +
+
+ + + + + + + + + + + + + +
+
+ +
+
+ + activity.view.tree + mail.activity + + + + + + + + + + + + + + Activities + mail.activity + tree,form + { 'tree_view_ref':'mail_activity_type_view_form_'} + + + + + + + +
+
\ No newline at end of file

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 literal 0 HcmV?d00001 diff --git a/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-1.png b/activity_dashboard_mngmnt/static/description/assets/screenshots/screenshot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1546a2b5177599539c35c597dc14a8bda8e728a4 GIT binary patch literal 75672 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 ~=s1$aBZQu~Rx;&~!xV_yyOD5p4 z_xz2H*%&@Y(#}k}cEf6H0FUOcn;oYFbi`8nACa&2b_P%ZwGOV9t>umnL&~vOLNj$m z_^`a*dvpE0ZCeYgV#>955gZ&%JSrTD<(u;*<$e8bD}?*=Js*nPe5GG*nxfpNW2wzV zU+<5p3F%$5@z(p5v{dgll&VUq?^8I5Blbyc+E{VmEk5^)^x%DdFy|L-C(o(&sk`5o z@VUy@NhkJK%yN(SXI6g)nq>X&8fCz0d%JIiP{&q!L-D;1F0a-^U9CNkf8GRBYVnkG zRud%^ThTfL#voBctF?^})o6QCDL?E^ASfjR{_d5?7 zIT&#i#;XH$o$JUPal%K3Pp3jkJB=pTM}Awg%PM@4rS}i!D7g7%|4jy`TpE%7I2PpW zcEn`m_*T8Dw7;ivuK?1n&g^L)n^(!{b&2#&`}xafG7!TS{rJ#rG5;6r#bnP z_rL1I)&(hpxC1pMaU!XY1ryV>OZaXk(B#AjUJ;4~Gs}cYKc4Hy%|FMiDXqnMyU&Be z=u9AlYV^U9-=TESexYAn==1G{Bsx-L;^alSY-{8jfi?u85P^=5#u9i74-=XWrx#M> z`weAbIhZ;e8f3e5zWsqm$#Q||%2C2BQSwvwFhq1FEXY$r!o%gOhKz-clTzOcIl|d- zp1;?)O1B{C-QPws-os%R>=n#oefjm^w#V&-ZvsEj0z;T9k1%k z9QaVrozlHxe~gsk{u!G#`w@do@Ve{vN9r}O>c2N1;eefBs`Efeca*UthI3p+K1{kz z`!Qg=dN^F%WK`-$Sr0%Pqk7obGTa}ZA8me3p{(lpseYKv*gVm|>aHhuJIg8lT#+-i z(Y{v1V4wYF8AS+KGnSOX&@HS)dqZm5AHujKrZM;yhuH?4;odBAM8bR6MoSjYFGN7m zk$3X#AW(hs<5%WE^NyVh}fMC2QzXu&01VZdr=6Z8X&r(r=Ruk)|iPx$N#>r{Um_=h|oT=8{N;R zpsy!8G>}hR=xve%+Rl40gz7#iSW& z*xp=iD8MCY-a=5%j(biMcrkHZO2%ziR&BkTTnJ0{zdKv2wZnK^)>T*bIU% z#Dm;7Vh3!{9Zw^Ip-$^2G)MP{zv+}sGLc>Bx6Tu<#Q}FZzT%ae^5K52iImUKP*TPe za`Iiu&~PYZ0Ou*mGg2*_2j2QE*c|%x$EyKxvbquQRbP{Ji-J-s&=TKVubtnqpY@n| z^SS7mKvRXZ-Fx>~E(jcauLFirdUhozw8T+*uioxNqHF z7JO^#l_lKeqy9d?Pjr22r(nj$laV*HqP1?@|2Dn6`8}H@oEbkwxG##Wf3>4z*y14( zODPCT%sT(uQo6E$VQ-1k0S6ieO;aUhJ*Ru8G}s|H2)j#jqoHqC7BapXzomtVd7*+& zw&-GcTP`KR(Tk(&{x>fvUMOh7;rwDfA?=plv5$PB0EgmZsVBE- zEhauMNfyW@Oj72B%S%BS-V^K95J~R@UuL9m4c@?e|gsbQBbS z3%|X$zw43YfgQe=39{1{aP6F<$~lm^X_j}4sJcZ~M3wD*_IlM7q9ZN`IrN2%#;`nH z+J^?OtQIV;Hf*kDJi}By3-Z@t#lPI1;cx@jrmgRKdSPe~ZsQliU?wpD1KsO#I!;@( zAjjY}!!zA9Y{8AAwB&%2rAAjN=kZOgUWCT2I@hFFEds(d{VR` zj^ZOZT|ynLv0L)=W@o609*V89W;J{Y>>Fvf}>xQe^yb1!WwE{QB0}zjp5`EuOFIa@|>g(?yF;;4+^4u7>^c8 zBE0bZ7rdU(&<_lTNe(up>M5wxE7jvl24NE>HghioKlhA6HZ&Y8q9;Wv<0cIR8?n6& zr>bML%u4qwi`k$1B~0B&j8w_^{Qb%6uZJMf6sjJxYR55r72{b>&SDODLg^RS$`W1w zfJhN4fajAM{5_H)J$)h)j@K}UbtMs0VJQWaV2bpZ!W=is2 zo@njX8HQ7luUv*O8zw(N1)4fYX)q<16FukwW6|F!Wq% zU0pGPC$ArS)1KGebFrX-Y-7Ik4QPokqCEM>le!OEM`wwD1^N>19uzt1w;+g0kUOsM z{}5b3UxxlCJi?ste<*l>82=YV3aH?J&iL=FpxXaMk&6Fc6e+g9rQyL^6m?OS|O-CDg~`5$d`<5E>DaCm=w)> zd60%*V};uj5DN=J_{qEd_oAThfZEcl_mm!$4mneNm?>w4U}E1=Q#T9P@XV z@DjlU0=>-l{q&vM6crn!|8p<+X+J?`@6+G!U4mbnMEYy0VS9Q#`Tc$d^M$;=@iGjc zzYrweWPuju42xcZ2y%f>C51u)EIi$$P7k$9&28fKvUFUGr*|GwjHt}G|(2kMLEfLKEayDe~* z;tnnRr`nwhCr6chj7{g6@mOySjG?8#C57q>w4vts>TF8&v4S)hL9gF_kisYJ`~I+G zB>xHXKVOuSwPud{mbvqDkyUGg2tKM4lZ}<((~(ie&>wlz2mHL4olVT|rLJpMtA7b% z87DY#2Woden^2D-Bby_p0=8Ex`3=lMWi^rj|E zyr11vFx${*Q}y8%6_NZy9mzmL3`o7Qn9EG9+Hj}qCG2cQVgRN3q8JQwbg?OGE(#so z3djb=vreP|!LJZA{om~DIO>b$x8@*FrZ_>8_5?jKo%#EsI_Z*XHBO*wuI;=E=}4O0 zSfGo`Rac-W_yqJ5ySJ=QQL^glH#AK|o3b;%4;uehpET+=%&KAE&;&+Sg`59EHyyQ> zBRu5^h+v0bx*u!k;m9%`98F}}vrGT`6Q+qpC_kUpqB!7OxSR^U z+I)TX6%Zx+Az2^r?(@Y|d$ICc0GY*77)x(etbFh6SXBB+{NMht>RJ&Eh4MqdtbVs$ zwvbQJT&xfn0t}VEFTGDsSlGinHt6^73A;Qw1^IC>-%}6)xBLyTyPEHnB{~tRD(18A zUkg>{$-7De0jZq#APJGL%4wD*%5O^nUe=GFsdTqlN@dmABqhOswG=U7b1r@XBB(t2 zRLE%c)eW!+|172Cbc9bEI?!50+Ao^T4#Ztf?lh;y_=rR!Uwig0ZX1TQ|8l- z3HtuzKL-{S{l5;BWc`Q_dRYQk?N`Nn=Yagz>uQM_D1fZ%!d6JRL(=e{unmUAQUBis%7%k|#7eU;%?Ze%@n_)@pvT-d;Kz-SM_cy*$ zw9>3^<&CeE_6MM>@2+bM#=qrN<3*3Z2|8s1f!X1F52b!pF!ziBDW5y*({zB&M-&Is z4GUYqPm9;2R9fYpj;nwlkbZWW?3b_&YD5RfV8_4U<&fh#%;@Asq#cVlWyW|_jrjAx z<~hw>bZ!kJ4T;e}Dfp#m!8^;F#mQO!t`c1f72o?keyNqi<7m!q8;>=Zanj6Ry_M8m zpP>{#WlcrpA~q-IS+h{O>qD3?Jl^NV!k)|QrgpaiLH=Oev{&)s=q~b&*B70;%Sq-a zxP#8!x1E}uwW;;|9brJHnMMEo1u<&u$Sy?0=C-U*Y~@h6G5>}h#gGky#*3Nke%z79 z$pB172DGA>hU@jkrI(>1k*%~jM`1A)7;(2y+t}uZJ;p?WYaX%!Osy|5G$HPXDCATP z1+~!MOvVp1a*WBl_RFm=+sPhcddGYZPlv(v<@YDw>H~5Do*{K%5v7D3UE7=!DjcX0+q5xyz|E4-CZ!b9`~3AwD=Xs zo;i~P&eiUktvG|^`ArnS=n02yeKjQw=sCUr!!fqCJU@^_kRsoX3jJaUxTz@%8ySx|jZEMaN>-gjV~%0o(U+;a!W- z5X8`mPgO-q?YQbI*#idN_Ki@wq^g=$Qe2t~69s)oQCSD03fJ~s^%2+g6ehC^_PXUe z(3&lc+~X0v|Ezu#_XW6Sf)7_-TH2Kr%HEugQ9c^OKBG%N z^`}htdB2p>+jg~${De!PrAHihGX4vfSFf!~<$A4vJc&f(VkFN%uI)ZqZP6r|*JRbK zgz2{2%gb^g{}NKGUT0^zTtZ6pz(Kd4HR3|QqSIDc##P>Ieps-YhURJ8cOTgR4b3ZB zG;^DG&A%(Ttmll%7}dSIRZoHz*kQ9-?@3(-a-#vUVfA>&0+o>4t!&A<@))n3oSFie z>dtpUfW2ya`LztsK?V-yabV0dxl%O}#;ZVHw%Oi4HS)4s%(U>UDH;3#2@$kc{7?Wy zl`?#L+^_JH)iD{f^hT_fsZ z<0op+b=&PHmDPSk#!XJF2y%aN{&VkwFZXc1d3qp8MHL{gF%UTdnQv=l>1-U!)-0!D zXF?u_6VjSQd%jrhA07n1cUKkp+3>_v2LQte)H0c_BCG599H8SKE01KPj+-o>B`p>q ze6QQrcw{`cYp$Si1y<9*Sr_tusFCSx!KQY5&83_TIbBi&M%C45`lYy7x18rcGke7Y z(CeuV?OUtd)18^9(Yjxzk4RVs^EVe)2F&{dqf>as9d#07wy*2;g+$Qy`-A(w#8kmF z)zUM^bsV9_$(kaB>Q~{r>s$bkg_`5!BP{z_`)aZ2BL79sYeFGqDv4ip+c?1&h3plP zUSGIuoX~!y^Ea*zLMFW~7i&xse0f_Bd74I#!+l9Xo+8d!IGJ$IO)it5=!H!c>XRHt3B^9 z*UhZs#=oX$8(zz?K6&i5-=c|^iQmtrGz+e_o63jQ9_06`#${LKeV{tNYJfnljGYx- zaR^6ltIYz7|hZ|f?o`JC8Fs*5$Ut@{ zN+F^X?^-_VEEKX?7x{J=@ur7tv-Ns_mJkt(l|9;;s%T62d7|7b!JW%$NTKBP(ZhN0 zGkBFYhWzH(XVk^vS08a9!}-Om_tX}BLIo;<2#@6~uMZxfM0M|)l^<394H!2sDW2D9 z3Z=Zlw57F}cs=;GS&$PE8i)rQi~3d)C1!VXGL5MvHJyBndH|PJZyQu?IMm4rOV!)l z_~>JAtuo)yikG5TM9p8d*}Znn9OZR&on<8SIv_x@X3E!-vOV)wbPSkF{NPOI#fr-t z@2>3?oLbf6>|VdY1{H6huRc`6hgOYhI8@?T?TK%ZgA+$WGOAh`j)vl<5 z7&AU!hws!yDzJPJ{1Ur~FF$7UbY+eCsZn;=fkzn?r@H=~xv|yMO0PNpV$>3~jz}uI{$@ zR_P^Iabi0e@A3-O9(E94M@&Q{5*{NJ>oMQ-##FaUW=1hks93%~U^EN)v7)iH&yN#m z@ujEvg5wyPZVVjlvQwdw@378J6vK&+k!~}6VRjw*2dUw=^?d`h0Knp8dKJ+{#&$H) znkI<@X|!*OR8)oR5Z92U8O|a3*euKK=6btUZ7NiaX^!uv5LJi!VGJ7wGGRa^W7g29LIY1)G6N0*2M*Bwe4|x8bl!#hyFCp zyWX#a%pMhPSSNN}qST9W6pKlM84$)T?M&v2seW!>P?z19qy#5E(pHaJdRD4LRlEjT znS-^NGwn%^k#VmYXMI0a1Y>bn481Oo$MTcgp}(>E(Qd%}Lf0=-mA)~*TM74&eu5}c zd)51~;CwJ4=)&GxNp3tWRmn_~*5IP|wI2Wc$$|r`VN{=( z9CRMSEvHh+CE)d7ew;o!{{l1)Yg`JLHXMNl@FzIn*qRk~&Nu<~*;Ue7 zxF4#US`<$Y_5^@8Z)X{dXAY3DfLT_r`EF6t>9_)39rva}n$Q0X_NBl0$_TYN=(F$rnFIM!dvXJXbcC zruP-A-@Z{AvL zV!R5l=LkF<5FkN&2^zmN_pyx3Eu&-QzeVd}u&WsAm~%P98X13HOeZs_bg_|D6h4(* z!Y!oUGCux$RG>xVE9En54WY)p^U%1$Vt}wLTc&97(1RN2j{&bPE+kj;98KBhbt~Ur z@(_mU9hFblJYAm|MWu^tMk$!DrQUM<;F8QXN&kC(pyP0e(mIT<;yo=-RG5!WX=7_G zdh&I@h49%5O*{Aq447Zm6?fM1a!^702Zt_uuM%0&t6AaLof7Di z#13LFLC*r4^D`BdV$_}BpqRzOoi3+K`|&AhG?quKz@)V9<*t(5wuV3FZFHAi zVDScYA6Bmre+Qt$Qw8-E^BGnIY_`d?RwUfMkq)D7#BR1y{gQ+2ttLZuT7x5E9*Diq z0EZd$gIG|d&Tm#KWkC)!V*SSUQAU5{U_r~_toLRm{N41MJW)$YR3oFwEp^t}Kht4y zsO!aN`zktjt!m@5OBc&_b~^0WV5wl=R`0dN8Ef$_q={!pFqp29AG>J|W;1Q~^_AXA%5}7ScQ(4$6Ein`%xU9(I_56AmR%?1FGDD#zR3DV z)r1Bn(8{N?V38wq>98V1RhRM3dZj0@^UWI#qhkeR>2F$hZ#B%0CfkLxpp^!1!IZ0+ z{1NhuqDnNqo8@efQ4rRz{k;M;eskUW%_x}?t_K%w(i7yARKW`J5Li+J?ci+}&b;Dq zLl{Og|JC7Z$T|xcLq6b9*=g+t6)S6VX*7RvKlIN~a)|x8!t-?__f1_aR%h}qp-Yp| zukug|;o_p={Jc=g2CuPp8gY52v++K=kF$KYG9K1JDG^^(H9aj>uPYJ&@T~Xz=BBMr zH9yvP&_N=)c+Kb(J@@5#( zLZ=UHZ^DkEuq=S<} zG>|z$OEdM?khOzbkisl72F9o>tm*7IHKo>jc|cQ`pFL_|eLAe^ zFbI@M1@#jTA@wT$B7>@6+DBHAUQ;a)j!Urcf?%b%jqdiFc7!P%sh?Lr7s+p<7^!%a*(}Cch|f0CI`RO(c5qPQSj<490QCa%JBHN^DGi`w&i%2 z`FOt=pp1MfIont781QRI=8dlkbwBd%My&3amz8g3Z!t5s8{qKc9OFiLR5V`u0{`sV zs*rpMF7H!T;e}>M9cMpnljn80ZMm(DO?$Z%*3gPOg^U(aMdW~?XmhJ>I5SV4v@D>% z7MZ!9r$y-ZEtn!eF{zrl*=Sa7C5Q#(7nnE6$6#O0+;pW<5Bb5 zN<-`nidT|xY&=wL4RGYMLcU6qTaC2S)%Lbe%Irk$SI+=dM<27zD3mGcGSr;`UcOkx zPL^i~LBcY*W@m}5cJHiHa=y2e;p8WdM;-$vX=04NxA{?PO;Cu_R)+;DXra?7oqPHw z#b1$wLOJQ?{14QG-rLh#EpRq%wIN43X6jX2(CX-5>_R7PZ1GuQO@Rqh$q#AUbL3)L zEg-S;T@aWF5v$V+~Rg}DO$1U4$AVZO38u~=1v$^4z z2df<|-UnSOdNSZoK1WTL2?VUbEhO>7!ox+uo;U_$iggjgHGFzDLvb=Z&d}=?dx#p$ z-6xhnQGAY)?j7u5Sf0n zJDr*(1i(G0Snb9nP96`7s8$##!kD;LUMwWrmwrc2=RbPVmL0K+FRRLQ(bTM7QM}Q; z%Sarp7;Y>?e0vgHz|TDvL^jucmc~Fu@reHT=_W=^m-Ei7hkmahXFJJG{c@Hfp#gK` zm3d2}Jnkc}m(+0L)}xln<<{RR)%^@T?fRUOAapTQi3ahZI_>Mjx%#%Iz^zwVc_zO* zY3bv6R!G}opV&s)8JqO~)RaVBr=tr~?iQK?$Gea`j=TAeknZEk!MdBA{BlN2a1XoY z2>&6+_UDSD8%9bx;VzdRi@LUP)hnrfqQW}fwr;$3oqH$?N}51sFw`Gk?oBCkF)ciV zerP6_^xF5hY0kgdRIIO;$9y7M^nBTwu+!xDel65r;g~ny+v!S@W2VaSm9P7?uv407 z0M}(6@~UM|HejG-RCyk;!0V~Jjj15V4^C=^wgxr*CjGg=)-8{%Su${DQ~UIDGbrou zB00H7k#Sy)(d}XZL+Ik;Nc%Y&uHvtz#j9QP^vFu7h1%^cr?S|C#QV8CxFCdT?JwWh zJK5#i;^V5Q)p_gcjS911Vqo=QoerbIdo$#I@3D1ck<+N`ri@$-)%U1)-3ohK`f@Cp zQ%A7cO4!&_HbUCmkjr|bGa`_iN?RErZ|MGK)cYb-YZ;KMvk^}(A2kj6yx)i@DjR;h_ zed8&rXy7?jM~)^PLE6TU+Pc`$I$UPk+QG;uB|F}Y0Znf@x49r|jzdy(DfhUrPi1Hp zeEW+{VZA@{jZnhYAMw z-8j&n37?LPwk_+>3u@xyJ9!CJX%a-zwvFiy5gro*pG#h$PtVe})1&u^rjXR!6~}%& zKW|{f?ZqW|RNdaFcH?P^KIN~zm_9uZhvr5f_EM>U1W_GX@8t zPaUq-fr-f*2*!h%P3U}UQpIEC)x@rUtevY}`0fv5)Xc}z(pHksR$fkwJosnj_lE2r zglSN;F#D|Z%D1@~-Uw@LM2E-PKqgDG#O+o(*3cIp%xARS0>$!dZ`t8!o{*JinrXij z`Y%ZiVMUt^t9IM$t6+|mI4W(OX_{5iZ(O17_giYS0(_9yZFh&5kb*i0=u-vB)n4^A zrPa#KR$O40al%8(>9_o3ESGEYRi757A!B6Dm~V|`v)A;{JZ0OOEro zz{wSCj5*EXXWM$oogz0n z+a#-t+*NWCuT8yjhse5VWy#PMl#j1fQp9_Ed%^?a7E z)^#{Pa(T?w9^K8VA^&QK@Lz3}jI|Olg)Lrp-6#)JVvJ+DN3z49GpS%Djcv7z^812% zl$h^B=vb7Qd<6rFD}ZpM2A^cdr2$s|JUFwtCsxIHd5K6>!CtBZuB z$|os)mB6ndmyZ*g732~+K2#N6R@eDjnxEu4v-?&5&|2i}UJ1`K1rEu8n#Mqca4!*S zE$!t7)y89T0=C*iU$68;Yp|}zsHik5niHFi=Hy%dRF&fvWyQ3gv39 z8|S7Oe^T`ArgPNO*Jqh_4E!n%;m_#7lOw%typJy?f@&;^x-CQl1ckqiKUX^qrN^(P z)Na-2oDsK`wI#j$4X=1kz!vbjMp5T_b&TfKJEePP7x&lep%*~8)g#qn6eX7mOPQJHUE39lA03-VHFM^SVyCk*j7)>kV_+<5?=Q$-a$ zU6T_QN!7j8bQ>LM!$hx&Q!s3_=rl~`{dgLj<{ohMl4$y)PrQA(b$sxrJ-Ab~gIw#i zVd4|veim}8t(J@f{^a_L(C_8Q(h$Box$2&a47IT{z>T-wyAb2q@jIH2{zPfou}Lr% zCimS>JI!aHpu8W}T)lHtgH@2lX}8CIY1MtrYKTfmwpW6a;GX~Y2{TRncrpZ|mlM;& zcxaLZn8cHNnf%#*j2Kc53fw^>=zMkIEc$eNk5ppTw;!tkEGJ?{-}e#~wJbc6nT>$W z$vjv~pFc}h?G2jR@^TGwXpHtJkF>Y9WeAQ`NHCi4=qRMJ?|9lid~r@H}xt{2lLB1r}yhA>U=2|j#{ek zTlv!YfyeS~C<2ys!fWhPGBrmyDqHttI6AXa9?#8PMvux&lF@xt?fMz|R$3QF_L388 zfO%1UUe-`KO4#hpOTcd@?YVlD-ySPSHtXO;m=Ja<2oY>ftfUwFUva;n5b>m-jBAV} zDv=sQpOozOr7R;X5@J&6&+F!y)>T(fP?rO+2WHp=ra%`!O~_ErN1~HVwR1in>)~43 z#~TY+@!o_90D;Zw6nsmNLRw+e9KK1KFWO$~#&OA5lbX@KfmhH=mT76HEbzmk8W&{g zzSQFB;<^!nKHCXkH#F`^neCO*+%_TCMkO!Bht$0^Po|7!A$T}3@>7Lu#7&-qrRzHk zPcC2feq#A3&A!ZKBLTj4a&(d_DQ>j}F$;Fmj4BZ{#l*V4}+CuD< zr14nAmgR?MA?8vxImvH3_lOcNHhdQy8j^M6;cUA<;P8O`;*`C?si_Uu)Dhdfzk7bw zrnD3A&P)y}jI3LK=q-u{t$T zBI<0K?0NJgP}MTLIpy4jQIE-_*Q8n?v;1BtTE2g(1wn)HDr<-?5mimQ=aUQ zmuht5GmoB(FNNoyoz+xScx*fzUuH1a9!-DM(@j9Y>g8y_*GNdr-pnB!)|Jq9CZ;d9 zeezG;a>oQPs8s&ne-{bY)axkA3z-|89$hkN`jBpWl*E}^NNr`gP{#Q>wIZ= zXxB>#ZGxZt&hZ+>9iZXOPambEGz}tP)pn4|Y3A9Se@s1?3$bIiu_5lrw<;xU?UhJ* z*DbxeW63#0l&G=vp>XRX*Zh?W{&FofJGJgS-SVaRc)OL{zOv^;%tJc4cMUeV#yM(}33B>=;_bPI)9TNRg*x`L6diG%Uw-iE ziKy1kOXp1L)X&yt33Mu6VAsPjx?87Boy$uAI0^zGPk4->LoSZG6)o+ps1~`l3*OV zKbbE8AGkkPEi0=nA-1nADwjxu?9_w?^ZF)$C5z2}4HV8TTr6nyC8rR&TrZ3VOkj(Aw@e;8X#7X!K(D3j}b z;S8QCWZFr1Q#EbO8en~Tm`*Ohw=moB1(%u@9d^PtTESp`FX|c}SIw%e3;erM&+AUz zH4^<^KDDA~RTHx!VSiqeSGBBl)zOpzxGh(1KJ(tN9mrWkd?Ks3SUA_ z#!F|b&n^mcJ7&qR{W)}Q{lwjLh5;!;e)wt4Hnr`FMs_v;620#5ezdw5K97Hq=$z1? zV9_(N+~V7+Jf*ARB6O63H!&10z-l^*F>C!54dzYN5bt!{dPS+G;hY!xwsWD8`{Ivw z2sEOhAcBpKuFPd}JaUNKah^5Um&bOW-$>}suZUyuGd%v&hpw;nV&2)(^PUh@rAy+E z0hOM-hLe-i{n#VCp|yFR8vHd|c0vQ76LZJyI%Kog)BaNX8{;B|*kE@g4RL<5i>FMo zk+X(IjEDo`T_7iiRLenxb_zj8e^Z&e%S0hkL^S>ZHUyy-i(fi6D9@2HMvN4fX#JYO zHRIa#;3jmtY}FR_Kg6KwiIuLF?dN!vhCN-gn7Lt_!9mge$#~%mF%{1Nd#5WK2Eg4$ zVd~)m^b=B;Kn9`?O}l6Roaqd#CEJRliyBo$Vz7EN*2HE0JNEo?!v@0c`0{f%DK60M z#@|Z&WD1n#9G`KNQyA5Z(m>E%S~3u*&qP9fBW z)m|0M0$qs__SKu%og6eIv@tF>6tH)0r9v`jMh93VbNGbdRWpgkDE>p(*pwA-xk-L( z>g~nVi&2E1X#GDxEJLqn%Qr{EhCC{TD1~)HA=G_+xT$)EcYA#ssoGgzq?&35^G+)@ z(LRawkd##9Ak4Wq8&|_&SB<(!C5@R;p7g1G*TDB)V6O>cwAE5&2EJmlr3j^awBInn0H z%b;4l#nYd;wF<@VbRuJi={PuEuAs}nbf1<}7>Fy!r9*aDNL6%wX%QqX{N1x5a;RBv z0RBqDPQw^)3*WwSekwC;8bf8h3I<+otbisrHZIhg_HNfzB#2UpbNXI%rw^CI#taYd z(yn=EEjSKaV&Ek1$h3%H%fj;T6k@lne$h}<56e@f!tm#ikzCn9D_Bofesu%1Sp zI;_c$hH$oC?vU>~cJ8ILK+_vfP7Pj0* z8!AOpX3H1vK>xyqK;zUGg)`K%){@@;aHrK+LGB4{xRA94v&NJS$s`(kP$wHY+Wk3w~GsL`QG?-&aUNP zB?jiz?S%}DG?1gkeyrksfy}7DGnP#`+_I$nnGn}~Pv|Bn=XM9jl&+j5K{tYPES+~p zGFo^};l13$7DB~t8g}momML7lha%Frr`40lI___ucA3%ep74&~{w9zi;_*E{Zqb|T zD#dWYQO>w!Emqb$C(%H0B6hjZTm7iPRKHRF@c}9P%RhP5dy{lxZ#eP!-b1Td-;n_{ z^mhEc>G=SCPsxW~@P^A(nXsP55FE;38xi#&5KVqllz=Tf&CoTT9}U$EP1r@~c)jq& zSrTQ=0E?8ydoMLj5mE#IH#RLfxH}~_7Juq-p@vHhv^=_*A04ao(wK2I!d2hVYKoJ7dKDW$HRY$O@a{<$8O3w9BcDf5v7&u#^pC51-#Z$3x>GuQ>56A< z44%GNacji&fH(_oNS$qRh{%Qrav-|z0vPn zK38l>Uv2heC=Kg*ORVO7)zdtzsRvn+KO1vgoF+J5D52$P8?&x10qeWD=sR{TYr8Py zIgE6R}- zMY++m%F7dA7DXgy*c*}ZBIP2Ghh09oCB9`IS%Zwd7XrCMB1&aXDf(13lyFu zJbI)kxA}}M$hE7@waev@_HbW+XAipLL?CE-+iwa`21}+ZUTl}>U zjvR#s{`4OInnuLzZ7}ytZ^?eQNAFSEIu99KE2+oQrVuXMqAAys^308Ik-AH^HS;8{ zL*QgM7D%Vyy(M+-M8i*8{Vnj_M~Y$pw=U$$q^?E0gKamwj8AZvh*`H|qYXjtdivxJ z%TPiEt*RRYmWBH)hPsgkN^y1U(>SA}EPHb4%iqqoRA?w7h>gx6CW z#$AFP}q{_pjlrTl|P6tBTf(?wY{70Tst&j$@~L2OqCl2@HzQhi;==`{|x{ zf4~t^13WvGwjDPB0rJTEgqbS}d@;&yb&Q0*3D)scScn;m^jWKaGoV7ub?i0uQxGLD z0LwA5X>F3l_6}$B2vVJ^SeC&7_US$?AW5um>Fdnr;(MsajyooJyos3N3_Q>bcH!Pc zZemuDqEjdz`i$mj^+x&}T%*v$=5kqr*T&4ekttPtq-p8`c1ZuLCtZu)_YlLLVi()x zPn@nte@*%THoyVjU`Eqnk3&bge7s7F!rWp>NA*roUk2nPZbN;B=>KBxJ)@f3x^`jr z|LJc5dVfJg@+Dot74Y93gs3#>QUeJ| zq=pb6v?P#vg8Mn=#~EjgbH?~idEa+@>koIhlXc%~t-02k^IF%O6Cy#^aN%=>0o)-TBVPxswftapNv?Z8b8}BTf7ENC>ah)%temO znZmYsdth~aG6n^?|JZ~1b9B|BQO(7W9iK?G5I$V*k~)a?Pb{o4OZC&L8mqTy6F1Q^ z3=@JQTgN5JBJIA^dsDJ9&@*u-I$Ug&>_nl!zLWQ}Plx?8fTF*T_*(-Ev%O#!OvM^7 zS8j-*37)+$`tQC1p(vjy&N@w=?D4+1#@oxcgA%+_HhezkMc`ihk9tqXUaLAR1Ds zKR>(CaR(a?l}G<>1=xd#xO~^Rtqc~K;;cBP+%e_xG%wq%W>oZny>+n^vec=>4f$g& z`B?cqod!!%iT5v`t9D;J>igNQeCHnu#a}^iZt+;@yQh0tGABam=6(~^4}bl~1nd*@ zm*su|@eZ-t_fd0~gZ`f78=3Z~m-F?+QL|DvZ3yn*>EG|G-`Txzw8U8W<}{ZwrEL2g z_rRWyat^5!@0-Ztqj#V4(cY+hAL4ALy+nYo-J-&8r;El$e4pmMY%b+$nw2}eJ!kJr zu-*N}UAlJ3XuZ#9-JTy=?T!AbJJ&3?Xwhq{nG*}cvU47LU^%Zxzn@jGe&FW=t*!MZ zQRVl!90S#UZY{m50uk2ho@h)9RVdmAOo`<9JnT)ob#wp3$ir0SVom=?s;ZyKjQwH_ z#K>kj74=t@q@%CQpU2?;0SK)*JZxhe-}AvO_1n=Ehe{O}bXDZ+$BlmZ*xD$J%Gx}O=jWZ+%Fiz0ThK`vP90%s+p-c3S9PJR>SO9T4 z?`An_OgGy^XCvAQzg~Y?B-%gA9R^uk2Xg;_sb&_GL87m9I+=c0#>S}q5wW2z+!(Ay zf%or910w0JQdo;)YMO#;Xdou#uo)Q(-3ANn{{oYTZKUkh&bL}ePS&?1_SyvddR4d> z0FZ9hY*0pxD0UO zARoOFf3m^ z*Y*me6F!&1kDfvdX6(OU-}gtb(8h-BR4dnH8AmS8hTa76>)$vE2PiUU_`@!F6^i{O zW1mQu+6D|*Zz@Rb?ms86$;JFcqC$^Wa<4bfxN-} zjb*$^z)gy-pdcU-WO2NOH3u--9H{h5Q^^pd!*YQw{MahYgquF&DTT!2b@h)X}d z)xCVF0KsjKk^kT^z35jZ1pte3q!~D;wd#PDGPkQPoCId(p+D&}-&mT2EDg8%`fpD0 z!f%MOCbZ6F&;@JT^_mSB8JK@pSsrfv^EbWX;mMsCN?YX(`Jj=0BFGQU6uEKTcl0G3fdXVFXB8>o_a z6l}i7-EC4}tP&t}-ybrNfZar;Crh!o^I*=n?|5NPbYih!lPOAk=!Dgh88$jlv%H$l zqo8z)(~)-|+b`F9(^b?Z0AiRax0cASS^GYGxwJRY*F}$3T|c-$(dIYc$$B-jSt#{* z{1UVyPtD(^$=|v%PCa6y&h<89lh@KQuee{9d`ZCoV?(UKU+C}7!|9;Si#n3sgpd6= z(~?5O^}&kj<{Om?9|JDBxyY2QES+{A(`7z_3zv1k{caj1z0Y>?+BL)(ZVj z17~Jxmq=VTpv5$(h4X5kHr9}qszbe^a?ds8fRkx=s-Lvh;!LQkgQT6$kHE%Vp{Z6c zUGpCOI0h!ozdv2$cz52Hi(VW@dDrzh($Y~M9h98czP2T&7s*c4hUbJi9{{%67ez4Z z4;!f%oI96xtG)LaW>N--^BNn!zLO*=3>%8mOR#Xo`gUx1-dLaWvXF8(C|7tzztAVO z5Gm2HF2A!A*K6cFJ=F!?Io}9z3VJCi(%>DYie?F8elw;zT>Rk67l&E&NP>Kh@d3G- z2)twlJdE8a%Ir3nU8f(sy5IBE3Z|j_s2GJ)S8GjtB&w;|E_9n(6dMwDt*mViaK5t2t#gLs-%D%Yij?>eQVL&2^l(S|{x}b#RGoZ|5ZQLiD_@%L=8G4$ezvY$QgZsj*^fgeQoP@y%edJb~ z8M?wNPsrl9p*zRLCeO^ZUcL?v;<_SaogNmq4VT%OTbWgf3}ihkzw9$TarP%FluNU1 zFpuX6(I(=!z_69!j!kciGosX2co~Ein*CCI$iVH7-KK3nSaEGoPs`3eqYUIEUP?@1 zpyy2pFjbeQ!lI?HU!YMn2MDAc68GfsnLJR!(DGhIINL%WS zrbF6&h*|z{`@s5@Ru5;gw@6GSU~6f!bcGj(k7j+mha|+0cv00aHWk7KqXz+(Rs!MjQ8m|PB*qMl%(fjnWOI+p;G6KZnO){_3-ue zy;T7N56?*~F+m%sc-07IiN<;d6@)w21bhB<2i1BNW{4+{Ny0?Fx^b~4qB$U)M&T{G?7GTDTRB+KW`qZ2#By@38+ZiPyd zDK!Ct#vLyo{%BL)6Z>^?gskRwd5)kQ6H?I_*;6;zujD^L&9|16vDQ4<3xbWljjz*c zW%en{9!DBnbnwArjYCyrdRM;}Sac59-1eC&0MeaJ^IEh(oL3v_+76&_R!Q%#XYOes zd9&^cl@&xrl2p~zS}(IYIS1D%T)6+VSb+#r0yEBwR^Z9`=i(C>1o)>6BjwX>MGl@Q z-~F(M_r9X<-*zwlpBSH`7`oJdnW&MkS?Ewsz(joQ zY}b}PW#3dq*@?%78n_pm)p2~Z_sSM|mH8@*(v}j&GW%F}8Asr=i z#WyJMK-PtXGa>zcn5NuXC<8#{bs4HrXg}r$?`>>md8G)vgLeAdHD6Y zyKpCO-?(Eas=PA+7Qq{F7ww4o;M5FlV7Q5ZL((L-M=NRz83uJY6QK$mx%4_eQ`0@T zcz~N*q?IqIW@Uk#(XvX_3pQi z8T-xw);GM@Nz3=#>REA+4$6bd)lhk{O)vkIu<^;9BrC0 zWBHF04XK$qS9wS+1DLRUpWgm))jZ2j^s>$9+`k@u3r{C+O?~|eHm~SD6cj9_nk5{_ zyngGrTI52fxupT($ED|1I_xDAuZo29RtWp030XB4g4a0*RJs*4W95cj*{DmD{p4SIUs!~3^meKJ3+!cznX;7DYaq3L)M}076+K66&Xffli$&@#d_9JO!{Izi=Rvue z2VXUxn^>p`dT0W;8L_cT8><~US3SEw=dZ1=0R2nQe!T4SHx~ulW5lYf!nxT5Jz7gS zBdc~R244Gf6RyUWt*IX~2VV-Am^Say*AHKDuvt#qmnfKidc$Hsu-TSKK|JV!%-$p= z3j?gG;#VAs?T0f{%X@nz4T8HyUNqtLuY~g4k!Nga{oGvspX1YCT?RpK$?K95iOWER z<1Imh=i;)28?D7%2I2Hm%mtEgE*ok7US6ztKqVlLsCy3UN!5yN3g6U|^mz3{$}87C8Otfr^ix^|9y)Zw@nhs8u2@$+BsWcd8&=VcC-re!G^8P2w! zXmsw_BC}l2BxktHOO%Po*UPIY$s#LM{JlJ5zW-uCI#J0W>a|vmOX^^E9!95q>C9W= zVw+FhxV&gF4&R~cZLPjb<*B-_eCi~v*f;UJsVx6{=P=_Bo(}?Ar}IlS90YWO34JP) zcY1G(gs-)-2Ig9qjnztRIHx{QSYUE}w?%sZmlcn^KGjRp^#4Z3MTYgg#g*d%%)2>| zEWi2^Ec~)*1AR;l3AK1|)}uWXnbyAa%x?X3e{hmfB=cFZ442D$R=af?;+K{h{i`0M zc|A|vaI3FRzQbpXK5C_CS;*i;bYpD1E1b{^gfGX?;9ETdS?DIebb@P8*6R!{7+-ki z9RMCo4JH=G+}R3n52(vh>?j*6PnIDHE?g8ZV=t{Qb1=v1wwh>2Lx zwj~^%>D}Bssr?9PZ5cV_uAQj1$VEaWcuo;2ty`#c*Ty+Ny$h{jJB@l|KRCbgoJ7xU zGym+zD^5FlIc0MsWS>euHi9?SWM_0h&iX2?xo)*P3)j?pq(K)NaM_E{hZfrq1rnY* ztD1tmvMSX@sEQl{g_>6g^Y5F_yyZq=`LkpDUr#HT@6L|*X1G}Em5VkQE(xHohV$cCg%i&jxIWe za%Cz{CgP~66643gPMEbxDI|Qe{TcZ7*zWLsZarIeN6M(kI651TSzyU3p$)m2o8n2_Y{vwDY!vr))js?oSw5m2F{AniLMcCH%x5fU!*)wkV1H@ zPsCa3hEITV9SMSV1ccl?+w9=rt?5HvYl97PR^pVGSUT)NB@~}Cnmo|5m5Y{=(f%~q zm3WW6RXnd}iDBlH)|t6L1G08dPait1G@r58@?PTg%cYIzplM6$wXiM!lrvvJoz4xL z_}mpQv)DINTgYblTjMo?vZM-cIOf{M=#hyv=v9{<*sR^T4%#;m+Cr332ED>yXZWM)3asSSOa3 z+>sK7^u6ek87pR33b!!47pbvey~Zny=3n4k*X_CDb;hOp>sbW}wBY5UK{%Ht)a)oi zN)MsHl!8QVTb2}V{{8jtk4*YFSjjZ%&BR~RnF7j{JG3o;EHXqmT_BknbH~0Vkk5(l z@Dyb)dcn>a!wtUCTS$Q?#{HZJEK|i3S1eWPth;2e5-(%gGufMDH#fJ<>QzGWgWF8uQZxL7Y`m z8C`|8pGucLVstSJzL^b81M58cUX)J#xccQ6Wo^B=&-F$95|sjJ<46A^)C{9@xu*2T zNNSext>cxBE&lFtzsBS|o_s)gJTteK3*^xSa#2YQap{%nVsaHg&SY65=YfJ^%A$hCyxkBCol<)m1X zl=FfHc78eoCq(VYR$a90se(RA{2nh#oYt(_dRZ=mX@+@C=yDrJP;l(VXMjPZ z8)_4!d$l+)=s+x!!CUzg2FXAZx17NK$)%Tw+Wli^tZNZKwaI6~m@Dx7CQ5#erv z?0gVO!}!35$o{Dsc03|{AnEJq>HVQ+t}ajgVnLDNbJt~4UsSJk`>hhdTPM2F;#i2_ znkbKqCqdeqvcnP-lfvja2Y3Sl*q_wmXrBf=z`3% zV?SLTQTxPeQZ*5-t4pHI6GeNXRrs}b;Dt2D zbR=;Mt&h9!*Ot3C!6zLXxiotY$sRTFjQx6weJ{MXmys^>hFD3@$5d|HA}lC=s*Nty_|H8Ul(;Ra`t5c_c( ziDNZ4jge43&EjrjNaf{aw0h+sk!~_3UhEop-@eV5-ky%bfI8_6&^=6qanaOjj$aF_ zX9`VLr#S|!^6WmW{s8s2wp3kTCyd>QeUqAUuSukks)6tjh;{0(dQ93j^=HS38@9Mx zMuZkOI-x8wlL5$JP`X*10#-0RzSX8K;J?gudH{)Ywz^Hc)6%GKOC0NHFM})%aRigW zvBo%DU1fLQM{WNaJM@gFXYk7wFDJjXC>1~M#pE{u6X3={z$Rt_HUaonyP`P)`J zG!#wP&P?^2{cyKnuaqdFjfe!2HEPP~DlWHI>*eHMu?0&~ zqmycMw~H@=lnib0_Yj+0 zm-0>a9j(Yco`!4;a|$nx?vBmxh!dMJwF?R=^R$nZPeZaqD&N4ND-7Bn6Ip1RlqcaCX{im)dfDwVkr^m|WJMgON z6WNc_P8{6G4fApftP@brWMJXN*S9kr?PEYI8Xs|*%+k>tE|-baM#?<!{({d>)06w^Q5{f)`m!~rt3?B{T;hih^>e%e z{R%i}BfcG;*S6$93;MArAW;%zKQ34#=ftC!H}`*Bb=zCh~`OP%SPp zNi*wV2ju2|fSQ=OvcgV3U^`0~j=sFg3 zDl(yuBpcl_kAJaY<=vuRz7x0~$&9#6gfQOdKsHinHGR1xg8k%9gpG}j@k0_U`2z9| zikmLwvbALGJrg%bLYM@xe|@nDga@)dHlAB;W_eRC2kg%B`*}wKcjCqtLunA4eq;EO z3Cdt|>NOM6oXx>l8%vm(`+gUuKiM`(CWk2$3_j5+C9x|Cm*e?#=wYiPa+~U9Ot9u^e1?P>R*` zX!M0heeb9x%0N73E8@Whn?3tGfIu0SB3HKfWKEa~#yC;ylpZj^Y*vQvj5p)VH3W`0 zq#&D`f_m#rT(y4usNI>BmDTg{Bq7qL9(TOev}yGu>~_QFRuPv=eOen1%?Y1Z zwu>P{s6O#?w|8&<=<)!D&G_Um)=h>d3$@^`8&CJb977K7-s4Ryi#ci3AjW~Kh=sgV zqPX-p`b+EMYrFS8TlE@lF8&m|C$h?7cYbcy{|;Cm_D?^A_NG|x<>Vo#Q~4qqYOJQZ zTj12#F|7-&wCaGK1(Hs^RbHzJlLoV;2>8F|g??ek<}_E#?au+yi0s^a-8wRmB6|8es08mW(pQ2)S&`cfjgG_)sYKHd6X*!TYxN$-5#k{FAy)>@L8ipfX?y>UDNSpV56Xi=C zsIo7AK>X!gmCW69!q{{`9K(yck>3EUP!@>$LD0%h@3h_hy6Og2Q}ngLtD>rXm_(Mp zlfn*H`X{Vf?Ya+DQaQTZJ}s=HO>%*%6FSwPosh4t4msLeQP+$IFk2s~Cr=_=9$J9j zWDy@t@}T4Ajq)E)YiPR#Ev@fOJQdl~fbO^}0#T&UKnH#o3 zr_Tzt><`2qI#zW`-#2L8!II6eAv7Aa(y%q>Vx$3!Q6D4))3Hr{t%5(IuCI5Y$e|rO z3bN2CQ>rVRl2Qa%PL}@JYgqdi$PCAbxDRdOK;4DuZa-Y+L$pfRmV|_gZxAa_7QthQ z=~YQ-FXi&Uu%G~coNhzXc*Q+ex7NiByVEi<3X^e~;-#|<3|6~c21~RV0tG71x+k8I%UX(YwXS)`PoL)>%drJ`C9eOEnaZTJ<)!C-saz+p=bxzj8K zbYyv=Ed3+sWJ;nFaa|IsZ^%h|U}5;lZ*-Ae_><7EZCbK+M=GgS0x;WWOonaMI036N zMaN}|s0!|>Vn`WK6JuX~Y*1I1Ua7eG3P%&A2X$15a(vm5bo%#CtX1XxGPc+tv%5uo zeWUqbEr1l%O%#x%vy@`5IbxG+qoJXk>QAT--lH0>4!-GwnX;$JdDPRU$|5ZVQzH0- z`f}=~tYub%+L0d7xdM>#0oqkD2R`N3rMU`1_pDeMqP=HNPd124MGDprNm}GIZ2%cx z7IaWl{2x~%@5DK0OditBjqpwHA1Q|OWDU;#w0*YUn#SJmbF@S~Fm@Bpx49?qT=@Ym zX5%R0y@DGnE6Jv1uBgx*jNidya_1Vkb?5CRD_-FreY)!DVKV0M2$4hCgI^LB6qJtpoGiY@He@B{n zt85t3tKAZ}D|nv`&%F|%ICrtFZHcg12ev`7i;hUMaBf(l`H9)5y@>FUi`wpaW@kD% zrh)q~9DR6~+3@KaH!f%x*h1C=5Vqu8&e_#B88nb+@{P%_r!mwai&tJU=laCm;^ zq|XOlK_KPoc<6jwXr0SLzT`faqcI+xMz<=s`S0s*)}7W%yV6x#tD&q3*jxp$DrLmv z&L2#Ne<}+qc!V(6ZP!0L%C=2p{ga2cKW%c-u$QL!BB{NlQ*V+!*NqJK4ZSwBpvf@c zE|yE_ZavDX*}N26t9oO%yzooMayO*$iB6>XQNjN6@;$vhB0{24ac7ShAVYsOzQe`b ztP$?wC?a%K#=d!(o*I*~wKeM45=MI+sIIO;Y=+Ps@{l4(swJbSGMH#PDF{}nb4^e4 z4Bl7>5Uc9V@#Uv`F2%`zsgt~Vb`1Uy*#O(BmHCz`L6)nO?$-F#n_!ZRULYv`R2GZ9^0&2Zn_yQONNbuf%mM@gG~x{;Vby!+>nJLb_;3k)0cij z#9VVRK$Q|msASyEu_HA55&Mvbj`#ZF=c{XVY^Y#yku}t0;edQgD)26tI~=MpUY3Jn z`D@#lMa_K_j;O9rfvsdO^Ek1ozb3XUmt+FnJXDJDFUvXSEm~+i8_QFOUKhw zDPY+}e0Ok{a~{UF4`lpAk)OOePWqcJwa4hdzd)9`|G*^A|6@4Oe;}gkf4n|$+!sR_ zeunN8&}ttjh@XDE{G0c^s~b;$lMOIie*5&O)P;K^xWSrqLv#?Ds!q8p;*v$@4>Ll) zZYx;bn?N((0~S_%h3%Z*@MoYQc?dp|dG8C_)yii`#77fDcN!lk8WBeFhWIgwZnmv- z*WQz4sJ+n8c=eqPt6{PeAPXJ31W!Dr*|d$Z_^D1z^xAopSX4xA4yGqW^7ix)-$Z( z!)ur9kGH?CHAfA<&OdNBt+jSp&A*At-*f%O_r+wW!hCbsJZW249k$qnxa^2!PwC|tr5#>akB3;7v>fD(U3~}z)g{3$eqUUF$XDh^cxjN zX1Lq*(?ew!5CUwz#fU;bC9T8;HQouyTd;J+7elcIQ>sdC?D?f<7q7c$s{mVT1PCs> zd07I>ikwZkNs7KVsVb^&r<~E(NOCeJ@_9Qy^#I{RCAHBswOn1eP0CO{#VKd0NJLum zZF5)qbOAmcU4}bgeW3eL9Wb0ntI=qkaCB>!{^I&;Hf*5Af~}MlNmM*%STJv};o0Ej2 z!7j)xYWhj5+*W~u!nlPf_Huum8*(ldU#v2jQqszpHW+MO8%Kz9AXJQ*1=lW#nduZcQjz#hU$hmqaU+DP|r3?MOr_Y#(c zOY=O#fAI&5CN@`d~3UWUbs4d)3@CO^uIN3SiRXz&4WeODaDGKA82JDSW3ZF zDpuLTC}~|e%q$yml&9Xq-92O5!R`T5jgXY?@aFcY&V3;P2?S*hZGUr51hl%3_{P@C ztCPaoMr12X#yRbVq|6kRu-RNchTzc%%i`a99Qxn2Hu-SdPTws52nZ&P4OSA0;aQzS zJ*Nf%oblSZge(+{(F8?H4>ts0`^6OWBYF#LTCtk}^|Uq^DD3gqrDl^nt&%Q7DZ{X3 z!VwgzVu(Ht+plF|u{^fIx#R#bi)4LWb1@mTXk64-ENna#*ENM$F|IpUurcork`eT! zv{bYu_}V~Ni-EnNF1`ivBMPb$Y0Y3vg0yZuQLiW@aCP+15KD&?*yheqFAw!VkzJ)g zeSC_GU~3`MSUrN5x%~P~=;t3Xt9tGf9FA9J5)zPnVtnu&D?I$A)?n7AQ@Hcya>5~K zYsvLW(Ujw7eMv4SxA3Ej6_BL4?We_%N-Qr27ERI&bhm9>+;LfjQAf;T@~%AoXLiYW@N*L1!zE~+dIYXH3Q_Z`aW5^ zH29@uRy28$r5P5H-s3uU04c7isaG*TK+9AcGj^*3xLpkrfMon;>rFS!@1Ab(sk6G7 z%nDeF7xd0d(WI>OKa3N)8U0g9L2LW)ZX`5fBItUXf}puJa-{JN6s=y|^T3tpkhe{) zp!E(+dXFvND5C9$&>R6rv;^PuEY$L@f*u6Uw?(j4CX~)C+f+aP^3I1bSHZXw3`ZQl zd$jaagSfun>p9&DVm9GVz6t0jqouw0t5Lw&It12N(OTf3tYs22N{}&)6Kb(KOv^7z z&|yYjno-G$7A&y6>Jg(`epCK9v+3SLe%j~#L=>^H%jF^uuA+}0qp#nzXKo!nT3YHu zA^)oNcC65cpK{n}{v(ce!}p3h0BLR;-UaSHY>G->PE9HGk`zAR_JuMn&^^5)MkV7*bCkw|a#7VW>cw`Tu?FM*^;vIAVCWiQ z=LT)RH?$(_0Bpi1oJk zusepomIQj`N6t(3HomytPtX($#h=Q5=4p<<8N%8pG z);O^2)PJYnmA_8Zny*wg>#oR>v0whA74`bGW?5mO*6A=I-&@P#(EJPfhE}R=l`A`L z-tKNvxOw`?oADaPUtXQqp#XnB6Yx&g$J+GxjdE%$E`s`H?&}n7r>mjD$w1y29WnOt z;^?8BI-rbZI7z+v&?;6qa1Hu4@KJgKgbauFEUp8o#ppjKJ`AklOjsnbV@{f73U@DC zw(v{iB+MnO*Q4#E8ofqK&=67*Cugu_y#iQR$qVD`M;UGs3X9$RVN+|XC-@z^fvflY zkhKZ?pk*7Nw}=n$Ch4uH;{{%V5BtZ|T?`qss78+~db24B88pQ%_5_%>DNE8*S?`{< zOGjK0Y2n=EX(DFgr>uU?~_qQyQUCS{`+v%>=3Z*qR@bQf3Zp0-XI_N z&R*@%<%z0=D7In5kFq)5!o1i8OXb%_MGSGN%Dmk^%pZD!k1#!jJ6f2|ZTpwD~@yw{`#+V6T0~ zVx_=T4$D+r@mm@8IY!A`LHRQDGYMNIAPeCJj*-}Mj=l{{Q%4Bnvs*4u$-%I$j6@)R zyI3=Ekwkw&6eF49%67^n@Uc;1QRYzqXqM-DVEU@?s3=HBWdj-pPS`B5ej zI)U_F8xVyy`*u1uU{hgmV(L9!7JRkXyZ}|)%1W2mT#|;b9>Osu|2#76d}f6HKC?)S z904Ctqp(HbQ$z6c>z8ePCyU_yuCjb$9e?~Qx&EU95VlfUsSM|g*A;ZatyQ^Sk7)ls zp^Y6vRc+5cId?fd9=5u!0L*l*rqoCtk_x%A??U)b`7AcQKExJE32@1^;pYaMIV<&s zNW{jolg{UNZ?7>*&N}?<&{QoYWX0XFS!!5?n~kMBUs`Tf|G6N1#>FDJm47D?6p$u4 zyFc6Wr`NwsjJ|(aitqmA4tVKbR?@?Nxv8}OSAW8cfAKmr{^d{j|Gk0}fB2#iVKxjm zZxR6W7a{ySVQs;V9}`bJ!~gC{Ozm$%-cOVZC z3!;QHB9vTV7xx{?3{1psqw^#kk2#U5!UMO=Q7u=NXc%>d6NHfCKuOQS6?aO(`O`U) z@!31aM7Zyasf`$Y+@de{3RNMEaJ|7^f!_$;e4Q7%8&G7=XYmtKzBXAQwCphMG)_g8 ztK*<>nbosf%B;b-ajd#*Xhh`{wNuS}b$V{&t0-8;3E^Hp2=t;;iU!1m82l^RDkn#S zE2{eS&B{d3_y zeSkDa8!2yZZ6_V5Ao}9o#5h$%FW#7ogw-DUxhod z-VE%gm5)Q(@qPT79KU0b)1&5-)uHh4ouo@_tnC{(X;!^;qfZsC%x6wJ08HzfwpYKz z*!sY_kF~)x4}>#bM+W)CQ4D#*i&TaojG>dL51_+-tM?cx^eGZ0WN36qO_LT+^rH4D z9#lM}2LaW3^wh^&ACPN`3|ftD!=O>D9d;*yH1mUWyHq9WaFTK-7W=VRGtoeAqil8F z-DFD8*#nM%)O&UsYbOvUSV`PmIHzhe6Tb1;!b&~mr;FhaoY9LI!keVA)n%Y;{aUH_ zM`WFEqyJEQc5Rh+-ejvavm&C>(vZ5{cS?3ZQSbp1b@*uP;iGbIZ~07dMcdYD@csTC zAH`G=BVS!*VuQ5l3&Cs%vIZX6q0J(EBN}{D%^LkDHJ_xZ^kq0lTn{Z*l3Rv^#n{i+ z1$j%pxc)q0(!wxDA8vEJ2iMo#4<5k=cr7KqZrD7<4so78XQd}x{Mb;tBu!v^O=h`V z_8|~(xaav!jQR1U;A<4)CA(hVsnGB5EpOOdKnm&_U;aIC{e>NWdF6+qH!YD2wAE|f zh3K2a#FRO(QW@kHUpm>e6bI#R?2|f}U+wU45E?s9tu!C^wbqkAj~|3hXP_4rQte8| zszFXZk6P%ZSwhyrtouh*^?{Pf_twsVww`#3`N`Xv%@0PR>0FD6z(3`cy)CV&mP|cQ zZ7I!gFF_5LYN@#NSTJp8bdgt6(@1PfIjYG5-I1@EmA?W?soA0T>!pj1VJcmLEnA{w zz)a2ntk8C)g}I-6cDDg*vgZ;+ux}69Kz>NR>$Jt~w(kMi$)cSCZNsPkVvYFgnoP z5H89x;A_u)Y9?hAWCt1;?lf_8)@z!}(90X3?*JrNlf`Cdn`Y)e7^fqt?T?rfuvM3^ ziAtyhpxW82K75Kvom&kmPueGIq1-RS>Zx8X6GgW=ar;c*z_;wC8#%h;^zTiRCEX*2 z1HG!WkV&~yA9!^`fUD!;^X9C_&M7!uuwTfXhU*80K8}SKHHeoq1e*q*)hKr^I*CK9 zrR8cKlZz_3KVM8&(vGDL{yf>Ut$0P@+{e^^rfjyP&V$c8O)FERP|kv3W2~ zOC^$73dMnfZRyxh>;)yFv*T{54xE2h!zSta!i%qASr)M((AP$TRhFH5QGI*n`4B^$ zWPi7o@AqJ6ypouISiZN%*f~{+7VEM8sO^MhTKt!`~BrSlqGws1-j00(%alPT3 zZi7lzsz&j}^Gl)MK#hwEA9ldRZo6Q?TmGC}`Ad$+=&MeQH;*V3m1Hw8x=rb2zXmSW$8 z-WQ4`C?eK}Z7lT|iG!6_H|CC=?)wC8$Ivyh8YUPcF#}Dke$7L$Y^0ee{?i{JJt)*4 zJL?EOS9)zH`J5Z4Hj)~E?$5h|-Krj_Ea$`DUtc(qBZ?5M=>xL9HM;tS-^(noOVDjL z^*sRl!;e&zXCRW&{5PClcg%H^D{P!5Ii>sIE^gX5v7Fm)e8Crr;bqDw9$Wpi_F6;j zli$s@FKq*$w}L_V{BD~+<33(LzLI(B=cZnAYrXPs!sVY)fBwDyw_E;;f%(6Gr~ZGh zEBya&@b5um`|n4=?s195f_mhp-~mpj0Ga0ox8gGyAlL=yd?Rv+j|*F!$u;1TlWaIh z+}Nvhb-)Mj!C5YahwmSf$UB|t-%Uxu6`emQ$BCGNh^XmHukhom)0xAHNJHATo1{Lr zP(SL9^E;d(?!HS9e)i`aK&HO>y6 zvz(Dly_cF*SEzr`dc7rk(gjgHdQ+-1{_5;j9VpB3@Qdr6MN^oe|nKTZX+N}pHpdwb@fi9c6Vq3f^`s3brZ!2Y2JOdVseVu;Z)V}BZ4-zS!b zWf9W70L-;d;^!j9ENrK43x4TNO%66xw?er>Q5JOS!hqs3p@<-J;g5iBZcu>r0qg0^ zB4usa;qC9g7)$VvU~+7YX;b(*tO zR^s13>J8$o{7B~Jgb=`>Fn^KyeAsAm8D_~Co1Kd3#0FDNP)RJeYbjG#7&}?&qEQr% zs3XHRI5{r+Qx;w?k~X7y-JElOmrGGa@TNo>cLct#_VCxn`D3!pt4SLBw;0F;Pwm9a zCWLm@q4N&62X&bmg-+7o+Z6-Xv>8WdF5RmEjT!3cRyH>php7 z>2kU!eHTt;RFPSgl@g)sQMsNx;gaxo19l1m&OLPI@>Z4hNlD(f=%1?oXI$Jtv4)|K zqCQoyIW05VvY>5lqpS@cQc*qcph6ri^UJEJMs(H>_8QlRld}hVMlwa{3uf-cG&&(S z%YVrGyJ>*N$;2i;A;#;(>bGPm1w+pE+#y;9>;^EtDSTVQW}{YIugqd>vY<vi` zcD??zGubV*1Qm>-2=>AyzDW#4_~2S`d2Vxwo%1bl@J=u~XRW`jh<6raUN@R#<<&QN z=0&agLLXOm)F0pAS(Jk-ZfIUy_p8+~BK-1Pwwdu7j@vO#fj44AA^kXus#YzyGJBTd zUaqVYWGBi56!Fl0eNf=HD`I#=pJAib7wSVNV)V19dD42LlXZIn-C7tQ7ID?-E{poJJmiOT+ ztHffIb7QtIt1dare4M4cprjQrGAuX|1sL*%kq>?M-BmW4=0y#mn#|1GK)IA6moSFDlJk` z32kAq(K)pe5uD`k5o+bPygC)9VsF+L0NJOlu>k{H>er0O)|;zSaLeP37oc$`?<$QM z{#evN;+KBN;(nfvt)Wmeh8NNTZ{Y_ZWSHOTVsVf&FxORG^}37UDgNlTrf8{2T)m@x zNlGF-`oU-CO ze9TY5h=%tYKY5;AX2W#peVp7I9F(5=qQrmlH9KuZ|C6Wvz|;(@!FT+YDabk1;kfjh zQyW3KQX0kEPu!?7$qloGuG;Yyqm0ppj*)ZTIN{gM!5+E{W&X$O!)7@4!_X#Qwv{XH z{z@lb6wiw#wv?`xqX+*QH<%zLY%iZAse^5v0-yg}@CAU<&jSuS)z>7YwYh1c)M%JT zU*7GNDh4}lpy#uCE=$N>p4*OyJ#2I{PAz8%%O{v58%5A<2zaxob~#dl?_bmX_*JZW zgWv44CPu4HusOX~_S5Bw5l+&2MhWO1f>R^X(s)z@xKvhw; z@ho-{;J8R<_;5>Z|s9QIqSq4j?4_YARqG7nJ=XDr4zvX?DhDSHH;>Y2KCvF;<@Kfj%K$ceKViiN zh#TZWfy^Gl%^Z$2{%mk>TEM)uZ^2FGGW_p_Zfn3LX3O6RMy%ZlHY7Qg z`V^0#T4y_3xvK}>(fTo=pf|Uo%~UbZ$aVV2%C zV?ftj8dh{1a>pufFqs;i)CxZ`hHF?#Of1%-1rL1=jkj^I6y6^g*V@~R7kOyrM--cb zTei1>bJW)DWo4T<@jo7q<*E6k@AO;riVR;T`!qs@F)>~e-z2ah*aL~(A@Tp>w zh6lnUh^Na9Bbg1feO%_Jt&eef_EzU>on@i7NBa6TI$JhP*P-|>k%qoVC=0rE;dDrk z;Tp_Zzp~>JR=muq`9~$5I)@ATt2_96gA1Ug6pE@_&2#-@MgM3(*k+la ztur72u~@s(voHmyHc8CwVlIZ?8+23H(%aP5Hq`X->;^y(MY4d9(8ObwO`=Gy3T}S{ zoYAXbSjZlasrLN3){2j(v~8xShRsch89_vccUob7Qe^MPygJlSYSA1bIxkoQrls+-%a5IcdG4065;Txb zPM6Tb+OGz?r^~Y+2Zc{}j%B?PK5b~$OHt{`Xs%q*c}^@I7|7s@s=iq;Zi4oI!x>Tg zc>+H1;hDpzz3z`Wu>{h_(mBS$%4tV5LTB}ar@b z^^nHL^Pk;t2MI~joMMu7fHbyxb81Qx|-&P>zlQfiEvdCb(* zacok@EwsYYaB|5NR4n(ECeaX)oKv}-tklFAb--Orv)qs|1W&7JnJK6Qt|_328;GcE zgW6v(r#{U4^gh0K&wKaYckl1_d#f3X@SCa{X|e^NUr;hsE+g#ITwTgEm9^X3Z{O@@ z6G>=@kFsVmjI2?KU%NC#^5PAl+(#ud`4Knek{2x^*vK{7OvyQpjPZ_`ZKw39I?kU= z?MUtZOAIr4On-y8c&ySCv?tdssh!wV%E$RvD z!mZ%;Q67W}^5?jerMCeHK~Eh$#-F4>YK{r%y=iE{@-MVPKqNix z{jmm{y5_k>gT00qMjNA_3#EoUo7{Xw<);=w*uXWH+$lb3A!kSt1ob2v`I3pAx{Tq^ zn!gOr)x zz3@dmU?ol7li3yKr>w|0JS!uxcTll!o{cGlfv1@rNyZSXdg-ZZCB1eN>&WOSee(uf zApb4SUBM5S-4xT*068L=^HZYbU}D?gmA*8s+@I5j7~ zr1yscu<@+6d6sw_UQ%k&u+qqTUca!0tYGfPK?{3(ioDbhB-w{q2doT$)Ih8KJ8RM# zxlL62ejwi0Qd-?*gdw&^O?@OCMumSUA7u@XK`PZC&W8tMW=-|S*TX=|Lw9b&C{h)q z+iUStZ>3EiA|Yg%(lb0}%V?R2kI7TISQYKm(Oe9`@x;nQi=U}z@X#M~<_m$CVX$UA z{`kk~`#-E`|IRFPg{SGuvrOUS)=;67i+!VfN0)kM@~kldC+gz*9zyYVD@BZ0e;gGS z^+I`~Sr9i+%qh+QzH_YpwC1?ajy>#`BT4R*NtM?m-TTck5UQY!#c?l&rTBA)24xN& zM+8}JnT5T@mZW1xW00?9?2SQ)v(D&It6RVvB7C?HuQ;WiE>d<=P{r^g;M~eyIL_n2 z_)>Y-pp>JhMkEJazi_W$H!?8!l_p@ss&aDTawN$`&ZQ=7?s+2EOA+mRb2jJScvr3Y zZddA5&wQ313^Dp#y8C)fw*MOTzg(N|tF6G5<$F;}bZE=CvU7(=VExKnMwh0KqK`7F>f%5(c;6I=BRPw*&|b9^8inclUuIxI=JvmtnAB za1Pn~+wXhN{p+5y*6p=s%{={dPjyvSSNE^FD)f`06!vq{=Z_ve!j_Q+syupx!S(3T z7yRLFdd||ogY1V+4<-5R|4}(vPX~JJdy!^Q1eJXShVmV-)!VP@;3KY zN3^*2#X>iiY&mAS-|w^p#eRR~G%O=vPx?K`;Vt#VZ(R;z2Skf*)ucDb)v|W%T$CGu z(O1V}V}q&7rgxtyHUq655v~@3LK@GPyps)tk0}3oApcMKrDep9Li_jW(IY>-R|9{> z_)m#o?5z6t_oGK9&nsE}^YknEBg>2bJaOdxf9{57aESSze!mEM%q`)Fa^6%|mC$e_ zfx;lL{ugWHk>o-kffi?8g6~xJ8*+?wqL+(*%uL6?m zWUOB>Me41H&gRy@8oqek8i2T5hpq2*D1dzctNgD)c1jO~)5w2BwQ^z|)97}UDsPNv zBs@9}+a~eN0#$`qHGPakewn%vc_Ghd&7d_wWCkKCgZU|_-u_jp!lwN83RIGobc$81 zV$Gjl{Ig7Pv$!JF_UDJa^!VPLSGn>jhq(07$5`dqS%sc_`iBDPX>T1y{SEx5!v<3X zvYKcX360KZDr2;xZ|%-K@@|2Fr#>Cv>cf`Z%FK)N1Ix+NY=da?P;`W9WkOzdXOOifM$saHF$`&-Ex8@DfxQ8kpk=yZ-c--;%mdhQ=NW^Mw7L+%G2j|{aD6eaJj%q<~NM9e6G9){|wbh3pcu@AI#|FGlxtkLs zgcAv5YG7Q)g|~{Ygn6M|jIUy(e@-xIZ%u%jr_EiOB&h_#vbrTMI3QbA&Zc4hI#J7q z8c*EYaLjYK4E)uX`w(~+!+SV)DoSkI=<+?fEnXe>p#s+{x{(Ri>M)hU&l_YMLBD+u zE~ceG`S!1hRTAYv0?b>%LPH|u>TU)X!T(P5uP%+8I>;>a3nuo_`W~u;X~J8^K`TPM zgDh@FH>Yk(TWVSVhngAHl~R)3a(naw(hk|dWrg7MhE*TwWsek0yMEOnojNDA0^^$E z6^0lQsMN~S-}gO9;yPq930oT2@$B(A?x^FJY!$Eh+O zlFW;>Y0BRBYBWIWw2=5_&s!5E2-^^@TZNtpcpgN(0J%&w*QH`(@LjR%#3XQW7vBvS zqjL3E&Dx|T0DSJpS3D6f$^6Hwpm}{H06eg>(3$Jd^^~UCd6cPzvG4W`z~Fpni#1X_ zz*j?Py>C`DjnAf_n^E(F$yT*(UyJH$PV1;B%#7K728 zKG%9*cNqA#CT*`SDo)1+&%?a-{!v^%y*+}CVdTukBZEr+J!d{eWnw1(*23Z&p@C?@ zM1sD}(lE%+dJmi6kI*ehn%$Lc{Q3Y*qLI-T#jPy4!F3xonWEgUq9FQkJ?cc6$G5(d zBm#}0h1z*}CRQXgWPFm8{? z@2+h*v5VvIJ7PaaV6l!su1=xZdKhl4=cRWnoL}F1^!aZJiq6#KuM1OSlBFK6bo6J8 z5b{I_|01zuDaMW_zI!FPN=4Zj&v+Xc@=nN{SRyBrO0HXZQ#LlJK#g_wxh|g^G$vC)1m2P|}7I1AB*@(Dw? zg9J}w^2feW%r7mOE5LkbOB*5C_BN!Xm3_{6BCeV_uBc%?UQ$(rzNfR-_1-c?QRuMm zNq!%U1vgjZ=3~+2FNi;3u*ivN*u@cK8n!EdOszCZ!MO*B`}*7$8@NQgk;f$`xOQ>o zii>mVcugl5@*YTw6W*7ZnM{aSFUC7ol(KieK86$Y=qg3_TgAni4~5EwO%>2KXP39$ zX?2zPE^cu{j4XF@&d{r~vL4gwSLe25nO`SvL8$HZB}q6emCth`9*GIq?;aK|Xu=Rd z$1WY9P(d?|t%+l5BR`dHON5;b>x{nooB(YeA>(>}z7iP~DP_)g&h$k?8iq0w zIbbJR-qQU(3yP0y%B4%MmFu0%(#fuY5|1o8)DmZKO?gzIS}ak(NuM5CXu^;2I zo%%$|J19!L2Q{x}0UFabX!+T*MrZsa&aP3y?Wpu*)c@y6$J_DlWoK{0`SZ1rR<7Bu zy@ngd0m|>5`T`n4u~FSNpVahgR_9wO3*ES37|}xP7cU?$48+?bPo3w^eSH@^_X?l< zy;{D=g%dDOs9MytU*V*7qF8m$ru&Ax-D_S(`ogMjE<=3+ zx`(7w_(geuG+w)#NtV4bwZO8__y)1ty~uzRcLKKL3paR~i8vR>X(Rgwx5|c+p4ZP) zsF>-3A662vYhI>-w3>YLfN_m${V8EcypdMQtcm+~rZ4zWs%%)k+pzT!zowfOcMF9ro4}d1=Xp=wHr2U_Sm+^}`Jz6WyiTywkBvBDu9{ z@kYN8E*d7|Kz-Dcsh+esR0#npqR0@jc9z(JhMC51rxz5KF447U_qCjrk3|+se(2@Q zXpR^~F-CW}m(9nbxkb>lvN3II&=KZ<1w#;p532ZZO9Xx23ol6#HBBYpSJOAO_eSs* z{;j^SW;}){BYm~CM>Wu`yxq{Bm2#PA z(LHwVjzCj{;Ca`FUHlgo3Z-SUc1^}}S6l#G#|4~*qD35C?@t;z1}2ky8GX#v9q*(_ z2e(t7(WqQ8l5pZ;=1FGklFNA_L1tb6fCkIt)c~6=hIPz+&3?8*T79Vq&u_-XDHM_u zuIkKSmN-f2n!a6$m2tPMJQ$|O1`PqDnFJ2=UtLxJqQtD`e*BK zSOuOGU^2#aOVM`~Z2|y*HZ$vTOLh^p>yx7}S@*WkMRfgg-B-4j?#l;=?U5QcZ0*jD zh@H*|<$Tj+FALfDSn99tsUezSmpN>VkZr%U>|68F^o24`Hd^Pod2A8E7%i6AMhd(7 zw74s&PVMF_SE!qI#1K8mRlyAOV}^{VATlZ{0li1s6tlUPf)o#rnD~bVqu1H(W2xsU z3x@}r$@(#G9cC_k{G+3AAIvCz^eNIq!O(s7&m5y;XdZ_1-;L*H;W&eL|2W}8 zp-k1|z&K)UE58yklDgKq{gwC6$|JPyigyLpO#pSIsTdl=;Ex?5^LMq^N54?dp+a^y zlV^^WtGHRi-Cxl==RR4ErzSmTzV-yf1~Zg;aqxNS9|mQCLcIGdR1TX>3oCbadJJ~1 znt`2ffD1HfZo>mR^enMaXd_^8$=Fc@zfPmeU)CQ@}o=a?P?)>sqhy0v%PQYq-; z01kWo3yg&@rm4m0iDqY4%Sf3wp1(E{8db-A)C00x3Tzge5=Fm)i7h|3hi&d!el3xh zuDGlo^CH8I;bA$>Guth^`{-Y7H!^LO@HC3paw1~kQnlmbyXL~$+oPt~EJb$Q{meM$ z#kJ(m{*}`;d1-C_?@jE_VBxp=49XnbcxjUwvU@eXT;RN=c(1L~qa%K{Mm})m|2l;$ z1pYMdd)H~AnY1b6DMIzYz_!nitMsx9$K|kEKALv@#9yGyKA+Fes4mtfZ?9Bpnu-&2 z62<(FF`33vKU%mxdB9jH)abzx@&qXvKY!LDl4QdrA!Q6?skBIG6D~v?TMs%=WWvXma*16%7-1#wjGieX0<4KyrpKp< zG|_i5A8r>hG^s=iPG5yS?lEIeB_berQ&nF}p{ME748LLM4~sA0m+J8^ntPJgGc@>e zW~l&$hg&S2EarE&vGP8&de-aI0 zLLQr}-F!}ZVVxjQWA=jRMbvR>6r#l5#!;?jd;YDayIDdwCYBN=h0lF&ToxXI&wMCh z$E7L&){@mRSP(bn`&6SN7?}6%d!vs-5lyG3Ffc-ki4M@FrgMU{kUH1M+~a?v<;C*y zYbPGAIFL4RfMl)3Zlo`NeyI^zJ5=5ZTJ-dq`{@7SvQo8nNl{!b|Ccmf?0C{=XH9!H z%3jmZ-bLkB$B-qOm%Y6z)e&5*?9zLObM$NUBMC-Si+k69i#W;+PALj zyIE%S+RN6&A9idORGm&-V}eaBn9+Q1w^$bgkCRty7F6^m{7J%Z(VR0QQOZ_Y z^gdIayJ3lw{?}WGkwcNKP;DOO_dxm11sU$wtOhsmc_ITwxDtgJ14#bC8geld_AkvJ zO^YE|6KIFi4m$8~X$F#UCr&1(lJ4s6D_D)Ye0Ns?D&~=`u2Ic)L+44E%PrZ9_Myy&t|Ma? zlD~(a95z3)`D~h+3CkK=wY4p;#>g@2eE^@ABTfEJdhWX+Beov?*_=*YIelLfX%Lib zT&Xy%)n)^RLZF|mCAC5TfXu)vTr#|rA~;ha|7>{A*bP!>a&c>m{obvnxj4INT#Qaa z5lH)@PufkL5M{8ZV&?cm(wdiS*rs*8a(2iKB2DhTc=iqVR%m(VqQCf?YifYAx;eR>TY`17-|2ti&PnU7@uu%`C2YN(F0~HZY{VZq z{YfLEI9!p~az7SIKkM%P1m-$0j3j_0vI;FNJMIYxOrJ@|LgIgW?Bw3-pO)JXjZRz8 z4!|sG|FI<;XxZfMa(598++4HNsIY2r@!^JV2rp|XBj=3+cDvNnG2bH#DZyZLu@97e z-^x-a<@F$xbequg!}}GnTI?2mz;VOQ1b5=GOY8AwYX`)adZTu7WIx!QD8dmmH!g-f zPqCW~eyPTA!OWF)aG zXw^|IYER*-4Bs;T`U3R6)}p?&Tz$Ban?@E0wCU|6HXkV?@^3vZ))_kJ8YKk& zK_M0z_9t6ybTv!UoelJhPJDC+r17i7(+Nu9`kKDqJ|y50P}2kG9n9}o@h{e??EH4S zvR&I8NkjvMo@Zl6RuSBu`cE}iE~a>1m+UT`_}?4BuQ9$IpdWW+rNuz1qd6{Cu?W6N z7B8+lrC+V{*6$R}dAh4wdxngAUb#h&AAS}Zoq89x^DTxp;)Uw7^S!k=5qET5TTii` zw<^w$G1kPCwcZzi5tcg?I);ZOY?nI*-foi__1(Yc)#f%0Yx{Pe7=_V_3IVr9lM?*u z?-8?<3k&)dMvuoko@fD#1FC2Olc`lHNMe8=X+0M00C*9RtY#8kG|WhBZ14z}M9h1k zh@di6l|9DLzF@~)?jzy7PaEsN_$gQ5+-p<*umxYRa$EB zxy~yVSCEJ>{_8w5?abew68HB;Gn6~_EG>7owOyqPlEJ-3C9GqUZXP*03R*r|S3x5JSX9c+#5i&>JRH35Db4?P%!GvukK-< z1)pi!%M(qiRjoIX+NMKniGVTtqRwpXN~`favEQjfc1j%HiDxAzv#4J$*-|`(LR<5k zZi%oh;0J)ST6MRp{JcI4LF$5{w0*dRb_ANYZKD7ew_4wK76HMf1)WjXK4;IZgZptj z+?cl<+~K7&D*D;(v)A4)ZLMnZyE+HJ(iKVS6jn}7>BYHK(`DcLMtGl+k!I{JyBbPa zv<}VsW*umqdWvol>-LO_KMmLA-?nr3IZmU$+5 zIm@amO)Q*_GpsF5H0~|e8e_%x`Zchf3-_|y^qubpJ4GGqCs`674LTA_Me-j{3n-@$ zT{r;x>oWMPZ$3m2iifn#F0#95p$jo^O%dkF$dHker<0$?-5igWh@0%C6R%Q{5pq-e z?@lnjh{JP&k}(UpxQblCdf!mxs!Z9}xs%u`h-5SkcUPAMSX-AT1?Qu2cNWBsn?@1@ zJ8!$ozjw2dcAgwIjvHG2JnMav1`<(B1f$Kb2tZXe7x%vpY+#Xza0ZL$H`mWu)z7D* z;t2#g#uTSqAaMX5kv(9T{nBwwPs(`wAgcg~G~ppO55UVQZ`HBt3+-Rn7O z&z5}JARpoEMsUD4BVeyox|z^CSiJnJde9%9YPUx+ES<;*`D~CceE{WM5j{ zWojOD3Fjiop|)gHaR)h13XoYr`sQ^(o8)4gfZ0~r zjVol;tx|M`lD*)8x;?X3^09BRiu9PqOJ)7cVm1BO9aaQavPuko?ky2v$cJi(Imf!j>W=4;u{xmQccHKumQ!E!z z&DAl1?rWJ6n~Gdy%c{OLpeAOX$3CT5BY^uTf-7^HQDdz)OQOZ<#n|7Kdv+zOhg&dmVqr*n5i~}cSyA@5jGky3nt}Px#XcX4XVzA%R@kee$OQ`Lubf5MJ z_SkVm0R5(RabpZCbuohRcCzl}|8do?kaiak6d~Y(N1yeVgd}>>hKME{M|+ruYl}u& z$#HQDvuvJ^1C72Jzda( z0book3gcQ%-W8*A-@}?6rxj3QDV7eE{ZwEk2KAgJa$g<-vc7I&$( zB>s4tME((4+rF!Ji2RB?jfe%65zBxTy(ovhWth!p0#bV`-Rlu?v#}f~B^42$3kDII z^Jt8_sC8uohtQ`y3A*0C(J_@dVIFGJC){{=w=`qx;iOjl!$Zf9Wj67Gg|kEH^%fJ< z%MKR6rmd;?tIC*8O1H-^=fAz|tW|TFWsqXXXN=}~I23{sVov<*({A#_L^Zp6vy0X1 zlQ=syKdR9PC%_hXQAZPh+p1Zm?y#jT^5ISf^Vk?Gjhoe+i&Y zdk^HQ&Fr7GbkQ2G)}$EO4=8B^M?)%G+~JPfnxN#*06*7d*(DZc<+^-(`1lRVW3 zNeDecSrq8L0aR)f8h5W<8g0778 z@O=PP-f!#y=V};n_lm6Q)9RaE`}wgToq(NJMK#R>=0rOOnZ+HLy!qm}6X4JVV1#@z zfihwRlrKs~U^Tnzd$$2|K3rUpr`&GLlWLeE`uqI(tH5C~Sdrl}1G=Zy$#LH+ujg8@ zkuHbDIkMy2mSL9ib$M%UQ1L5RYnjnqq4&%v{)3Hv=`v=<_LuXL)+;KW#gYue#@{#Y z6UKoX5x;s#9LqawjZD9iQYGlHy108?H@!?ycRA5#tU3Js<2H$ce zPd@Dl;)n&W6c`x@azxNmzjesDL>f6{Ax~`%Y0*QJbUz9l8Gzw}5Sn?ZykB z0Z^FVXbou3kz`K5>J9~MIw5+TPH&E zA;=Cp&54$LQ&n(_!Qri8ASCXJp;Kn0G0_O<=XfkmWX>b=^CtjSJk;yFb!eymnv~pC z5;K#ZsV#G}ba7E1z{@4{kvTc)CV%C#*~1MggVr(1&!_{1bQh9IAtvQLgFe?F!*`#e zvNvFg&|*oF+i)rreEa#P$g#O|aBc*Z!T^z&T@M|k+kNhCol3*_F>dCR7Mq}QZl8|+`v8A$WQ z<77d&dU{A^g=J=>|9B-6?8{)hUs9l{pp%HVPNR$_Iha8uO0V<^Kb2s2d`!n$urZX< z*ENBGNl0&YOl3DT^_^I!CfgK!9;-fS(K%N08lZ3^A_cSiy#M^y%_gT>*7YF@|A7&b zi&rb9?+EIG=w^>aN)vod@L0XPaqRZa47g0XO2EDEztMBNwcm{Q$t(+$iV&XG)$g`o z>z6)D>aF>pS|;~NeV>%Q!4_?KRK@OjhA1D9Iq9jng*@2k>6l*rB3bh5JqB~yJKXA% zCnG1wg+})$p=vHymbXUZ|8pr*T~QC8UE*%G-2Y^k-Td3deFNk7rf_BavoG5JE1XsJ>&Jf~$qn zZ(`Fb;KXdtS=yooyS#Xw3beX2~;?|O=ud}+hLA^9nK{``od9o^lB6Ro%p(cTC z)l`zIMX^fvxi&}=3LV+lIdrP2OJmvg3u|dQe`m{pujW@n! zZn>eN?cq1Pc5HQbz|fUm)*vomyD$Mv&|`X$!GC;s9V-qKQ&bKzr}eUu^;Wujh{#c| zbF~7DWgSd*br%RUKA~0`Mlw1k-NlL#Z425Faf_;iSkQ)|SC?fOX)(zC0r$?8{y;Ca zlA7we`qE}P6J_)6lAyyt1&2x=SbO{tTwOeJs2aZ()<-Q2$ zii(Qm3VFjZ+127~(qYaTZl%3AH-d|sEi(k+Q|xx1Qg?X<#KHtdNYh(jz{=j>U7DFG zhMDy_9{T=TRMpt)O^I#rP~P57^R{`6OB0%$A;cK*vvS|~*IR}SG48L@Z-(IqrS|&Q z8lJTY;H#(-Tb)XuRc<+vTfxPzi`cl#3=6`Z``c+RvNX+>k@J{b<=MqWTl=;mlwcUh|oT z>h0ILz{&OP1-`ONs-|&q%&1s)97|1e_Ivfb{z=V-!Xl&NTw8MShixX;f^im4z$SqL9}_9%VYf*3?r z&h@(dNgaL9D6I%P?^Krg!`qAwVhT36Vq=t3c?C2JF_#)vUsMBaYt9|?MV;ncGV@dr} zd@(Eie2@aSLq)$$?S8bnCr$E`Z2#xH!JFBlSJyvV?r)mBJ*Ik#@nz935%)Ddah6fz zQev$=73;gBC%SyQF%ok41@%RZD%*IMSKSuDz1~Av#Qv7n9T3||^vUz@=%)zXjUJuI z$l9lY89cZ~eU7rQ+=Gs3W}#-^avu0v zj8JAIfld3?seCz%YGol8J78% zo-#1C^VrHn*`hoItgPteqI|H5EDl%lGY;)^!rgW;>3RD1>9JvqBQ>27XOX0Iliaq} z*DVw{*jVbDmza9KCkRDcI1VIs1^0r%2LwG!Uah-X1O%0PjL~fRb;AC#@nY~o(BK*% zdyt*iuRX{PdOR~VVxh;Ui%&S8H(iU|U0|!1&3?rl5bqH^zi6$ePwMu@?mRjFk`bV;>UYzWLR#F{Y_iMt$%ggI5t6qAXCV`y zC=}L4o}OyQUD&S_M$GDu1bL4^)7lzawrsmK3Sjl~xx91UH3t)bX-1Pz3pQw>z-j>Dj_Zl#plueQA&pV-mR797Q1(g zO$fA^?M~E`?{NaFnZAmbj(mDDw`$PG$xn0rzrm5986-MQ&&mC)cnrz`w zFJ5zF#r#Su>WAIjteI5-J9S^QmP-2z3wdpwUDp!K*S(uSd7uGe=Ga}mrUC?vU=hXU z;xe0N{SWslpOG=eE#wS|q3EGnOv=UavI+UqT~C3GBB_a##d2LJ60*ROQIfbkheJ0{ z;7m+52Dp~{d0{fqyw~DO==gwup8oK_Q?BjCEkZ0(qgs~i{zm6vq(ISl3my8&P8!TJ z`-cvx`#`oQBP?sY^?bYKiY7$t;;NlJ*Ht|xc=1S#+j-E;{vp?ZLZaDR;`uQGU{i~hG*j!Xb2nEic9z4F*t*ebom zOPjAvtwNIP2du(&-t=thntYY6Q2phA0w*xZPK-}6J&rueW}H~C)Vdk0e0&z z^n_IE55B_~F0Je_S2v}Rj5kgxSoGoTW`||$QDKlA<(_NW?iuZ2+XJhE@>;T{fE$7m zut`h$_-^Ga1)I>cHLCWRGyAr=p1LIQK)X!US)UkGth>ST6bfaLHv2a|vdjr^f3`uw zy{_{3nh)mGu!eUtrJ9312!RMwv$ITSvH;rlD{9qwhz^U3cN%UYkN7QKAZFlH#G@8F z>%xc7q~U@x7Q&nCQhF)SC1*k3LGpj=B70;MA9t(EC&Y>h_ zU83WxK)pkSMk~E^IltQia3>)4LP7Uc?g{C6l2%OLzY*Gcw+*oVqS^%Y61747GvnE> z1j*jvyhuV@fCeBYoIfP4^}zCg5#U)f`)WZ|r#BSH`2przN*9qkw2He>qVdX_l`U{+ zGXHa#ykZ6(aa_kUwk5M_=jPc}E5y4n^q6_^PFhdQl!Iq)5-Av!_u$O-!$vYI-Z=3@ zD3E|X)jzuZ=+VVbk9w2}(dsc}^z9gJt5}dhCtiO3vYp-DyB*y*Va}f)eC;ZebHNU! zJxtHRieb{j&%(otxsFBl3MpYU!oNv&c+-XwgB++r#8nr0SDozJ)FpY|A-V@dLW(1P zfwe*^&kc{eMZ7RnwErd9K>v0!lu%bUb6l3v-9@WFes}xmxni-v`*o_6_}s~-7(rM2 z2TSH43vF%JgHE!2!BQ1lu=MNM-{dsU4mKfo>Q5^Vz_ZXMYi6M|A#zI7|3tYvlp1P> zX8K2U8SPHg>w?l-KeqFW&+{>}O}S&NlUdrEgh39oZEcc&Lx!imB@;1(K&6 zy!{dSueLmTge40G8J{VMj5cUas|#>at1+!6ScMvVDO#M+T$(C)rc`-GqRLf88bygs zkUOXAxR|T_vG%{Q_389Uml8oyr_xzgO`sOLsbMZ;1_(XU7EgiJ!pZxZKa>x+iv2p~ zz-i=+DcI^iLU}~Y#{Y(%|Bd+yf|3mVl_zPhcuqq1i>LviTI;{AME{lDqeuULg!TXL z*#Mo3ElmR=82=&pg$h^lRnY&dhKKV%?;jDXg8#GH9zE)QZTw%ZzHol~ZwA04LwV}N zf6T|9&i~il)&@lWo~|$9KXP*=%BKwu{~`G4p}4r5q1Zc~1#s|I|J|kmsH3Cf0f~-^ zGS|K##ri{+jRCT)tD~cpczb6`7*hJD%3*SRAK7dAr^kvc$E#ilDnyUp>CaHVSpUWK z_rEuM)a(7p_)`DBiqbuS6K2+Ul0=l3+mpW~Ry*X>hO>seUcNm&weA;rBF+P=3bFOtsMv(7@nYgj$HOPl zR${l?cM8zR@T6-_8cN`6UzE^1;_k0-PS|uy&1n;E`9F@dKYdrYNPKHc)_1yX7sq6n z?V$Ttg|gSHNa)pYLDFUuPRnVUF42~Sc_dZq(Xau`^GAm`?U|34(o$9uQ*#+yY@{z0 zxq!)@?|r@X^$;y_NJ&A4{C?t!+N|DZ0E5rMbjYjjx35(tB4UNp_w?6q`lkV|V0(baqL$yU0EAO~S-nHU*F^khoxeeCS=0>DB91F`h}Z7xG~fzaph@a?yu zV8l#gOS+Peq4w5q8QFkg@(&ytuxNxns@|V+y2J-LZ?S#B4Fuw_D7CI{B|-d6CIiG2 zk>pFw#bOszD1-a;*Ce=@e4SqQ-nFotQ6cVYj2fpuEPY{)HRQjUl?vH7we!0ulO~v6 zb}_xxMEKI(%~CY#&=&k@#K9GCyrb)XxnIZ2SNtqW=|#fKTx#k|pJV?nv--PT)PU-+ z_iRZu2?+m5TZ2W1e)00n=6Ed@ZgxtgOK^1l=i4ba2pC*E+bG9C>E9!={+! z?&iQgiNPO1&5_+_kY3J1vEVxR0oeJVJ{sNm`t>}UAIrDsl3&6Fw`7|xms0K+G-+k@ zka2x$OW9IZ0b!*u|sB5yb+^*&lqR@ zaeNCTHk4nPHTtf9l|QPr0sl|B)|cXMhQb%C%=2@ND~w9bN9Cxy<9mqz9RksM2^Fg1 zsVibPxM}uskxI_)r$z5LM~2vrp=r-=O&UDh1cL|xC-HW3b3UlRV}Md|8R%KR61H&0 zWtho{eW<{4MTA#(yJb-+h8tm{xl)`9d`_9=A$E=S@T02s8gx!jWGOYNY{YAKP)O?@ z<_9soMBN$NwK*e1xUQ>LHXJ?i=@nDzU5?K@hIZ!n|LE$kgs_;R$ynGP{=3Fg)hDJ{ zxMaMDzI%%1@nZJbDkJxlvXN4(k@VVwCK+5ONseiodvoUxflF;g0eE?AP)oPw*ejgo zTf60W^!B!)(ms?huathZFMJArNb)4IKi#)u%<%&dnBM3%&{|J5IotVR_l3RoJI2?` zSAV>Zda7u*5QT5_ye^j`{!O%sybftIeCu`jh{@Z7Obj<$=H_?r3N2hxqHlR*Smo7{h)GtJ*_7Dd5CyOG@*@$^8mxWm+cf{$#*{r*ay!4lNtC( zlUJtyhQRY)`?~K%2*Jv2MK z>P{;ja^gfuRQ_!VxeSqj#Lf9SySFaaxmMR~$fUl~{ ze~!{_pkuk=uk20TA+z@;pnk5ZCn)Tp&!`)^o6%-0Ts1rsQ~>jG;{rVZfQP;{l<~UE zP$ni7kBz(@iXNNg&H6z3*SjDi2^QQQ&u`rJM9un{Cu$h>-%{P~)ngJc}uyYbvs z&IzhS!^ilfytYLvox9Z*K@HJ9XO_7pM~eHSBl`C%Y0sI$D?mi#TY}zYgS@D#rxq^d}X;%1|B0AOA7E3?Vn@#f&eESbdmv7r=3XlnR))`cy9P8 z&954ePPayjhwHiT=GUms?YLI5+EpFlcGd3Fb#6aZ^O@-0q-=RM+9o85gWIP!FfdW{ zb|-cI4pGmyi?hVRC(^6Ycz5bL`InqNOb7(D>2Ck#NY#43N2BDj#KAfmz0VK3JB63c zc$ZT}6aMYbnT9~x%cnW&gK^aFDK5s_fG|5PNm zX42uzElvbB!p9_(G zMmh7#7jRwPgofGgX8!j(kv;igiZ|Q$5bxvL?DqH`{mTu1i%TvbZCJYdK&;33RO{WA zz3yDAw}`G}TB~VMYOniY)vl<8So&WrhvmE7Y(n@z83s|1hkfHd_ghcA1+TS63JSybgK(@6*_1d4O*KW?-o%q#T%tTKB zM+H*Wsva&~uQKdZJ0M71E0$R2c!_7{!+TYNEpl)07Ot+U_Fh8Y(`xB3_orSpaL#!A zQM87Fc!B!+Y1=|lYvkUxzvKL3^rG{9pu6yGw?>BQ8<_8XurFvyIil~`W4{iZKRq<- z*L$L)sl@zdBGW6~mZvhly`#8&sb7R0)i-F+Z0M7mPTe-^=h6`zI7uO?NRr6wJX^)6 z{2W&A0pDXa^C|~$7>$*9+;&G!R@RGFSKJ3`>g3-a*2#0?#^l$#?9Wkju}XfxPpCHR z8cTowb0evr!BJTBePe0l3&_<36=fQk zm!xh$HRX?&{{x50ytYO5{>A_e7ijC1?hs!;IWnTAjoBo`a4ZD2-HcI?-K0qTM;L#X zU(w|2Lc2eg@60_lKC1n&3KG}{vtRxfL_7ilBM_ZX|A!fm7XN>s(f{jA@Be{>(~lwB z?5Nj&j{(ef@cZ>YS>$@ifPjDpVD)|Q?<0a)}`oZP2RzftVnf3O$+->2LLmxm^2 zUbmZ&e+G(l9LpNj&v@CLVyaoYhmnU@_W z)x(tq(>5;99v|7HujOi~WCbk?)ekIu2`?!w9@ur!Kh(Z?=6nu*H-@PMX%|qRVN1)X3$6bKkt7kKjf8#y>uH9oum?{7h375&iylQ z53QKKfgS+gN)Kkz&EFIAr~3Z{euKia5|Iicu-j?A+g$_qdt|P9tB-MeLq+kOahq8B z=F$8M10ky>HBBu7tZM^!r`M|6!lVx~u%a1BCB@gufHj z6l;)s7>Qn-hp+mFY`FJ2^Uv0EpzHmvL~};S^4&PM`x5dfu+`HSw5UzR>|*b8X}~b- z;XTsg{PboyW5&aI+YTpMICAy0bY6D4<-JPoP>#QXD=|{DEAQ*@aSO-p34_fE zbXUAVRbNY)cz_a>N!tp-8gcr`Z8yj@AUy>HZdjX&T;OD z=~PqU!G7ad_nRyafs;GS0VhYq>fm%b=E%>8`JlAylol)q-@m<)-Pz_spfG zb}&}mV4hxGRtzulChp6tkIyF2K^J#Lr`nmMWG|b0g`^Z)-;ZQ=n8Sn{4kB zFX3bCcL=9n^(GfCbp{1Fp1PF?Tg9W@{=2x!(meb5+HslvxPd!nW#sQvaA@dkowKHj z(}_}|^Y+p$x5Y>}5IOs+5aC%OPdC5H>SVXra>JDQ_|eey@xqG* zNbukiAi-gAcM0z9Zoz}QTY%v1?iLpJ;O_1OcUxS)P42z#y+7cqn%b(}nK|cdpYERS z{&n{h$(t*`$ycpjaU^z;iFO|mC?zs3UWISbwH(fM=PEtK%zg)GNOG62Jhw|N^1qiID_qWPmdrJz7Ii8#!|IBe zW3nt&Al;Dy74Gcpbf9b=u5beYUKY*ouj1lC5mr-QKO(@=sdI6ZLnJ#x`os7Z?kDhrFL$yL2l<{-dAV;5h4 zAuYS1go1FH<@+GTi3weIqRl5J5gQY>as}!t99v$WeVi1s`9|whs_|{rwys}^^J&aM zdohN(`X|0b%;U3LhxT7QzU*5iqc_MPvN1e_8 z#KtP@h1KnNxVNV-)HbwF8%P9p4O^+p*2K|$@APon#@c03mf0Ql#CPgA-?j=}59z~V zn!C2%Z%h zSl#P~)5>-R;k7^{k( zo78j+VM4EwV@VoQT!7Qz9;B^7Q?mMyp}9 zrjH~3Gd^_YquHH6Ixj670b&jI7t}2MbK}l)vrI2MJs8BhA zC}Lh`<$&Z`px%3fE&2i}r0C|Cd%3xbqA9}a{0+~7Wn}$C)y&C~{6eYzM%_!Dl^gcb zXw$@M2Kj?eUr08Wqf z)KOVIdZ%Z9nx}8$uE~G+pFJv`|4heNlWs zeKkUy^t`f#vI6REOT)rZbq8M17h!&Fa9d5Vbc=KRwM<~yz^kSOGA$>jmHm4_uL zc^s|Pm3mIcKT%g)QaY4`b{^WhhPYz)=bPSPN@~i0YW;tK-*neNlvEoPD_=t&@nLbi zJr3Hg=P4~(?UiX!j%J!|`KKzaTeXK7{is*Eas&GZ?$-6qUZBsnUn0*c6yGY^JKfJ1 zL+;+Pz9RaEyZd;E#EdR3(b`p}&t^MlyZ6)93x7x>zWKJBct0Pw51Gm-SaCk=%fj0G zQkiUN>8vY43WnAi7bE@Qo6dAnuYAMtKy4}f=qAqATFa>cZ}Cs&xRIP4rfadJX{5+OeOtHhq1@Mu)Zs z7+UewsM&DddT8Z4>MK(dOrFN~W?MPP-I1Es;nfL$vT1L5y-r7=gX|!6JI%8{Y|0-? zS&5s$_g>&D1^t?h8fW+(t+7?ly)>`@5s1Eebzdt^Fniy9KXYhVd*Vztqx$2C*LZu9 zq?IolsIR0w6h}+dnghd#8>W%?sZmLW{q9yL{wk>8bbv6riuYBX>UQIhS4h9`t;#dq zL%MKHuXYC?Y2AJMayvgBE4%uBUuDSjse3bmBVvHiy{*!-X#{`2jUWE3)63C5tLQlC zrTVx<9HB2aRCl8jT(LFqbmFuIDsP+q{Q138|UIHs6tmj3fAmhjsNVstLZQ`#*`Q^OvD}Huo;N zG!G}RV0N+7W!zM)Tm4%V!`=kjaGAuawHpz=Ci5A9!of?ga#wDn5RoUNO89v(81?<0J~rP$}{>~UGBe+@T$6jFLx2BUV0Gp{HmAZ+!zqVY++jiqg2Tw?P86#ASoIcdKsDh}p2HMqgY4NRN88TE=_033a9s(TF=*O0sVYY!+ULl{e1zY~j>HVv}BRK3eMyOTo*XmMyR#3uQ%rZ;GUS;9B5keAky8n)?`Z;;#-mU2oS`d6 zs_5s4)mlifKjQg*ZhvNkrYr>vY)R(B3 z_Vr-Gj-{dhIG!fq+Swqs=m;Ae5gx_mal#or0PlCUc1rkk^KvHLQBKC}x%tbHZ#=bf z|5pX$7Xf{_hE&d8Uqo~ang(5XTJg;0Bm}{IQwM4Q2{{(#qS(ifI+~5vU`-jsfIa)4 zp($DilF*HeU!r9NZTq?<-7Pd5EZ^$Ccq9XSORuinNj+@5cRQkbNGm4O=*Yt&HSH zJKs01qEnl=7Rx5dsBeA@XK@PmCBKtkTfg#+sGq$bjyX-8#B}-qBO&9qT)u24%WP z-AibFPcswK=atqIXjY}Y8&6xDz-uJ`@Kh;DaDd7;tCf#{AjHJR?uqdong(THBx76| zewm7b7(X1KARtco@Eg14n>(K`3aKfl>AqKW7Qw2h<(F6O8ygwyvSFZh4;=yxkUDX{ z)ib5XA4E=g!ye2Eh#8wzNr5C^Fvtv3^>^Pv|kOYn96JgpA*{)_E3d zs~T!1{ShGYNC+~OBv-|{GBlxs>qi2BZcfUH&0qlMeOG#v(r?0Cs;ZDig?egYhAfVe zAPz+l=}eF8tS9Gz;_iM4EFh$@9fydvxbihWFckW*`Za-}*;HuUvU}8Lp@mZTZ`GI*t0)*kgiMN4AkvDpy3@>z3|H3NXI~V zFkLlc_odlLDs3z^xQ+}!y3*XZ8&zAqRdjvhfp5XptrxrLuHLN8slPr$qw*q2QZH_| zKFH@_xO9P>s#M8?no{>Yt=}x3{WIH{F5lj1a}9sGdb_6sh@i zAs6Mnh$L+see(kJ813NxV@9((?N4Zcfn=E#vm^81yxbZ$i#KXz#3%+pWWnLExB7kY zhlmdmTj$k2AA4Z{BwP+!8CwM&kUeJ$0Cr(ue?Tzh8-Y?<4u{RAHDLQ#&Zx@662W-T z+P=bAMm6)cTUc+dhhM>(keGD5UFRS)qyrGL{rXv7GuH278rrn5SL-_CbXq(S7Lb-q zn2j=4z`Od@f9U~pFdm@NA3Eay^V99Fx*Iy71vQgy`bRJi4H`gjzp$^cW^Q-OOGEQe z^7FTTSOCozp7Z20#J@%u8&uwpfnqziOMf(uBirgO3c*HCoEPJB?|i*%E?VQ|MmoBY z4?eqHjk><(`IQjpD)Y_yw29B|Ih<~12N$n26?2dUaA5t$4q9j8U)J6i7?DS$P$tfnm0$S?YQB>s2 zTpsw6X0|@M=g>j{RFu3hN^_{R9sLr?5CBqNB~{!&d1wt<~DHIDEvzdElpmspa7&ZeO;Ev59<8ZcPS{_ zEyEZjB`%G#jFSqGhyrsyh&9B9lPR=s1j)POX=84s?wt5Qe}BjAuVR8BVS75~1ZP^k z_0^}B7m0~FSlC!Vf35jbW5msuuF7fkp8sM0@J_K}3@=7ua{kXMas>7*lPT0i-j}!? z=ek1Q=T&NQ^07bP-P&XT5|WZw?}KH`+WQ1pYC+*mg^r4Ivnsxzy2q>m5(#hjFGBVb zcTDYd>E#l`B_$fsrOvxlW;xk|P9>$eWw_c(^Cl(}cu_QTfHol)<0N)wO&M$`6)hcuaF6Ogz&S1%Ch|yrM^9ACy9n@J{FqkRcVngSy2^KS zpBD9iJX}di7Mg}pB8mrr!Q$twMOa}eboLm2Lnh31C$gy%b^=cFyV&+Kdit(<_avZh zS;y2w4kgCdMV<9@#thv;_*C47+;4s6BP? zrJ$k`IZD$}Nq_}v@625G`H2b;5H(RAhI;s9CG7Lh2wREt*tJuJy<9G0th{`LhFjx# zs&}2vR)kuV`~|_ya1U^h<3Tg*6(?$4-p1IJUIb8TYF@n8@#bg#Ayf}vVC@F2SDaGi zL{;IE>9T(4SS%t)*g#qeBw5C|Hy2j^3jHZs9ENnJv{?0IOjbS4nute2wN<-}p&>*b zn#k3-Z*&ePki`vFJ5F>`hMk}mmjtpIFtN)-r**=1YtJcPsKUKH?tq3fYbD)@r`>~h zctAQ8tA%$4M=P$eS1mVGc?vN&kDFqCdAbWp&OeHW2fy!)XB8F{AON!YgR?lD#i%fS z?o{j1(b3&kcgeCD0DkKze4aNam+^4(uC|&vV6Qcl53-MUwORZcaX=cm57Eu_E9c(W zFV01XiYIHyjiFk1nyjOeIx)9Q*UzaxbkgYE4qn_rV^@5cO{GJ6(Sa{@z)T72q%%ue=R39g=gY`-Nu!?NMcSTk zIXB6dZo*S$7kP_Tp)OUr1LoyNb?JQTa>*tbFO+YN$MZGq1Q_m+esJ7x`zC8Y{hmR| z5(Fsg(|7Y-Bc9_Xh^B0jVq>_|iUDNY(JN|RU_Wq?u1+{Zu|jp0W4VMe%BRWe8dd3JeoOWeqK*7qqoOAOJ{b=5{dd&_yi4+3E{|3 z)OH4iPgiuvDpeDgqCL^cbmU~;;J&1*nc}s(LD{vz?m1R;^v)sRm5-kWk5|8>TH#oa z^ErH**-_R+n!EK*rngu4?9a$l)WCo@vEpVXb@;fo$1*>`<#qpiRk8Fl9N!3f`o44G zm(63(4t6OFn^p~~j?2f_a5fUvNFe4o@T}Q-JJ4p^)p~Tp!z63_k+7lY;Wyh``eYmw zmR&cE1&?p##$%wehaJ5M8_NN+&j1~mTdz+J=iNFl=*>nEtJZW$Oy;Sh-xTM*=BA&J zzu4csJo{%$sTmG?$!r=?LpBm|YZMt#u-ret~S9FF?tAQy_i@m0O-z|F;?kL5*92WH5C?-hrP9 z5y9AU1C++Qo_%>vAE%dVf=yX@dk|q-p*}I>EmGc@6Mf8U(*z1@*_{XryBZ|WGymy;s+X))h!RSAaXBU zvfkU<`y)&>Tep+*r27gBCtOy>t;1Hak2z#b#=V1dSozN8V52Q|w|?i+jhmbMMh##8 z;w2H__jEXV)f3?URMcQ;J!D7lQAXhfaeA>yM&G*J-}h!@5#~8n@XVXFRE_kXs=hHoW~y z4bKEBY3~(r<-;bSEtgl<^7v09CE>hJaiy>5WGga@zMD_wFS`gybx!R;2%@Ven4Pr? zJwS>j>baiLcS_CPuDkCi`etoT=6pLeAOu2qiKQ7&9UB`fq$(RXTxx?DyubMOhmwB( zqWe4JWOgt)DHO?{riTvW!+`S*bi~{vraGSJ!}8C{p}%Mnos2J20!y*qP7W2*pBVmf z3c_4<+~7(6fc!ho+ox2rcNAh`a*)<7dwVNOE|mjEh8oy^6#)XN3NS=(!`;K#gS>Rt zX?m_St32@U&(|<168}IMGv{McJMW_2#f3I3rMYERh8kBu?_gwgI z4Aw{>@hsUNah$);be@;*8fvm4f7EBU)k{ES4%RNYg4Z0qv=%uZ;68J)x8~9YKvtFe zNJdXjkNKXU1zSLx3Nt(+V&*241ThWpzDFBk_gLT~kVxeH_tK5X`#&|B_%5%mJX}m4 za+o-XzOf+(7rr5vfudgV+_}77?W&bvVvK8L6HV}2u>UTp%$%B0(Xr<0I{AY=PF%xzt;6IwSzPSCD>}-VAZ7)8!CI6w<4a$EB zB`e}y3#6qKsLuIiNDEGmiA_?9*-qf?-~7h}Xl3I6rLg4*4f`U<;fgv>QA-U zjFXrPy=2U8tmg0kT}&z9HNx3jmdog}8ezz|!yfqrziLaOVe?!9#Qt{r1M`-A5FNh4DliHRepvw ze#qL-@?|Y=J039r;1}l$$l0-ImXiNBJK7_CQ9{AjKx>WPv}R#p9D_yZ!X+5bV!|cV zkIK=j;f6~LHH)CPZ)tlUf{-CtZ*oBpr;rNLs9Myhkp^}y#gRN;BFQZ7=4J4tE0d;4 zkB)QSE{?R+54QhzpfAxnX+{1e&rQ$oJ@CJg_-%Zjd$OvL!1tq%7!}q;N~%JOEM#Ji zP*A=W&yqs3B)hm5K4@iZ{I|Ob+p3Og%GaI-A^QL5u5!-Ef%lgj3i)6g8kn@AV@iCg zaIQwTxk3%aKGTZZnemEK`p_A^a&-_GF(BuV;iEAvzt}&D9EAQKy56%NJ)V*+d88E& zv8F?uk@2|Q3B;l%Cq8kUU?0l)wps0lrj=~86Ci4*&(r3L^S^yTD?|RTWU}dD!GLbq z4YB>G>4815WyyIRq7WIQz}zh`btu)Z3)`shYE;LG{|_S{i2ql@OYBQAJzr!~We)Rx ze=NVn{<#c}P9!wpU1>QpEH7N~5Vg@FEU}yL1e39*t9)CtIG`*38)xjZpBT?*eW0hw zjI&wl7$~6jUY7VMYUe8JZr7mD*Rv#I6C=ALN=(mTaMKAV-GFR2bWh~_+fIp^B7#)w zKUCxRAM5<2DNL?p)V|#h^y_wgD!yLRe@)0`GwCs;)Qx9Su1F^0xmo{Rda+vgoK+5g z_^Vkl=I*SkICsQl)S~Oj&3$9)W*-Yh*5cve**2MKM3i8^-mp)A-^&1O-`De@LKD#D zCvGPuv(hZBE+kVB!wvRXk=1^rdWK>e2|tIU_@@bvqHuQFMwi&4Cl5NUkI_!?;cbKa z;6%L)BqbwQzQ*pWpZSa)H=XzzN0x^hD-OxeSGE&v*n+@1()Qu%3crgrFqknmKDaAN zHnLkcf1)g_OIh;hJ@Y-qyd;bE;rrhXwQaDHH>eb@f?xxILjb@~gWSwA19#i50NQzN zp070aBtWo?>nE{wSvTNU7AO1fmzaU#8ew&L!{mpa%DE*#h)Cv%UgZq}6{rC=Es2R> zu{9AI20(N7{q@~{6qKdf^N;{z_PZSAXP7N`i{qHNYMP&Ib+#MQMK5Wlch`mV2=l6cuS!A`;(HHC*O%{Kk>*kfjTEkSnee z5J=`!`i@>HKVQS(OKK#Ax7Iq}WWu5Y078sQ%u>q~x`;Z~9nHmf46}vUXAo^U;j-?XKvO1z-J0NAjTA(Qu(RNkf`PZQg`tFxQgk zRmgB5ZOm}l@N97fG(JE=RJ0HOQC(JTh`_)31KQ)vOPp;f)%8_CrX5JCLsX(D=x3a* z=TmGCPkl^DgMyGEzq+85gmleYubs-ZD=o_9ON{&=)v$f7QouUp^}g9&*ZLnFPlYTob(94@8FKx9S%a?x@X?=On6{n$v-*t<3#nrYy|!`mr$!#DYYd z^mr1)==67UmO0~N=Qy8*Bc@lY+Rj?~h2Z4#5!iG&Vcu&rUf`Yw>m@N^p1SDlg-8d;OcU zZKUn<&hY#MNLC;&E2uUJmQ)JW?faiByKhST`Kfy51Altx5<6#_MM_3deMgAbUYLR8 z)oB*^U$vyxr`8ybweUi;LjSN7%cgaHUupmf|uhAQ!~MwX%~ zg~joCkxM#h?2t-iAJ)wmo7HIypBlZhBxVHo_Q&DjGk|+$`=Gh*%n=)yp0j=G08EjF z0VoW~kFR|g-@%5ITY9d?8_wibx*glH|7=XQZIj=1s1>%$_KY>3FKz#drA#mx7*R2Hj>Z}EkERu9*{aTx^ z=~w>fW*-O~MFXC=NHS1K5I%%$#?q)IY3+7WnzYhu&&a0>NjRmrJB6ecHET-0%fuv% zlY+{;m-%QcM`!Ulj)Mft}ptm?M;iWXtU1yRIB<1GKr?A>vR`0Y| zY;G>U`V$So_|qxZ6=%@AGwy6H5$$7F4a`2jSG8lPLMm|MS`&*V zUg9n3zKGbG!Yk5`4nkuFYDx6Lt-4`a@GBK}JJ7HkyrvR-A{~18+>ntJd)j2rrzO4H zx!gWXuF_tcDHCL_!JeO5x{cu3HKL5lZ^oi3^B9>vmEX*{x%ff2lL%$!^K9?0MY&Lk6!D$|+9-QDcgd-XMF+Qv9W#~GJ!!M+gmYxHyQ)!!5nJh_gZlX@(%gBap6RDr;&`n{_t_E7vSRsOJZK;g(#~L8i)yk|LejT{ z&f}lHSzH9HK7$bF{AY?#7f9i-%l7sAnXcZKTU;_aSIVen3813<#Hcfc4Rw&LuTs+@ zD}cbPQ==7uXKNROs6v{2yLk{Za?u7D*^!(Sv{_fnn1tX#{7h===4dN{o1AN7y8bih zD*)iKVlQpxk{HYzxGfzG=jImDXzbDd!PMHiwPC?bfjKo>&aI{Mfpd6J2ecPS0t;|X z0cxAdsEJ4m3CHR7ycg&|=Q1Uy5ZW~{Q+CRF3tKbK_Sv#pUc6z9le=kd^xWwAMmnjf zH~v)BN-mkUxTM7~0&e#{xfrR#->Zf4qXKf0==apgvT)z@+_XR06_uvqmrqg?+v@tH zODL8y$e(qfr&KRlNcc)WkZ~lhne#bHcfvQF6AO$jFmovSUr)lDfAWnh<9s%H9Ft5o zs6SvD4Ud0(90w;bu;qchCO&x*##FCP<+@I=8-?*VMhno7e54M)Lxy^}^>FBuT*tYC zWWLU@*i;TmUpM=#@TK?H-~{;y5Dto#gptniEE5cWOx4?WWk_rMK0i#vBhU9eVh`iz zIjgj#HRKIy0N{IYM2w}?sxY&_(dkm8IE?1IQ*B9{uPyrRc!TAKJ934*ofn&5)OEsv zx;?pCnKV7sHy`6o4>(WTFD~YH!v#>sCu+=S7a4e*zGr0N0?^*yjzn?FTYiB81f|GD z8k2udi9nO$ua(s30>~y z&cgu{>E~`&Skl>Vss~AGjlUA(cILXK{Q;{nxI;gF24EkCFMa(SVi@<pjRVnO9v>Mi_B%| zR8%L%i&mdEm)|K@ZP7^1t%%CjiD}0Yn7#MCO%H`TCi_YxsDR&-2OL)OXtEvRQ=OsE zCf1Z=cpLc7hr6w9pc%)YKUti&0h4wie{Ei_02UjSK zZp%_B*g7gg8ld2$AQklufo5;U4C$A2Rzro~#@1)Bxyl^YKI~;7jExTFBbV_umnS8x zdF%}Pa?>&b4!UVjRUuwgB++H2rg+}>Xh^fU#EI(ame7({Q(2n6{4zbu(6cK}Lu@v# zRkThLdSoZLlty!nrEbnnzXX0=6E38HVF}4%!F0MPFUPSjn&WkLZ=he&yX)Ac7B;yq z=ROzU;;o?^rbXdMCI;Vq#7>@dHj=Ny#Q6x$fTK81VSSTQHA6 z=4`!9wa)El8Xl%xzxh}wTVW$^(P3J)cv_4vxWj=9RfJ`t(5eZkNt9^Gs{JmX$}(F* zO@Tc1(0+pxLl8C~MQHL~YJIhY6WlK_eQ%*8shBkwHJs~LIj0j0k(?kGNAhV(YL23ny3Y{jNB(xuPJSHW8stkMkQ-Q-i`mG%YfBT(aJu4|1>G)nqN5?b0s*bk4 zewY#Z1-UXBDK$_Mz=#Wh(y715LMtGN4cU)Qj1Crm^B*`Q`ea(p;sCm$j_KVd%+)V& zB2j1WI-ORu<1V%)arMK07!#xi01%YR=t8DeSG8^))?#9QxZOge>)`pte^uHr79v-w zc|O)83j=q?1_Aa{#k@+zt%b~ppZyqMnn@}vD`g%B_DzeG?@a?RT1D&v z=>dY^t?W;0-`QptD0LK!H5!TbXCDct@S{X09@k~$fh&z?q$6e9>qFHy~ix&Ey^;bB$)AdZJ6>KdU&o&>A zN9Z1@LdMxsO|%8Kt1{8dUS9{_+|I9SJs^)tRUprisVOEJEaCDc6%&8?tEDK8XiKwL zghZ;E%^aSCB8aSjvbQ*Fxt!%7@BUsUJSHX?YkS90Vo*+cq*&MY;$Ok#?=~7n$ zT|!gyAX!&IrYyZ)xg$MclOSek!f-Us-e{lrNx+woBHxzRZIn?Q_|C6LwsF4Wu4jW6 z>BQPXr-oH&Y*g$?$Qnr{6)RlD*4+Hao%;8ARI+I_dpH@Xjin61K?M<|`zJ-ZpT#SHLY3Fx(#)8f`yo#AtA_Mco@b0EKGzRFj~!ERWCI z_GR2$yk7P0*GXY~6~Mr{OxKr5lcw*fzs9ZM7YQFPD@~@+@m-zO2!#ZA+|0FSo$vd4 zqE%Jj%k`r!sdB9=hj$VPl-RX)5VJBKT8mU@#H$~46`A1?9&62J8Yks;>=0BwAaijy z0$;MW+gxA+mt(x~)X_tHYH1u}P)0Znl{VG8y zPOz}e^Lt{PwAX&Bs6Q@wndn%`JEHF=aJd_Z@DAvf0li4pJT#r2=uSp6w!X$dJj4EC zzZh%buBt%(h|vn;l^kqKUx(^j1xQqGwn=3P2&W_|8jP6TR((c}#Cb^Ut@O=6@RY|Y zPh&xuQUE>Rx%bz^)Dmm4x4frK++g_?neZ231`^c7YR&gC@)X=eoMh*~3 zWizUrn!lOr8*WcmB0J&w*NE*=%!!(&hRoa%XT8pSb~$cnIceG+YrgxAqD zF&J(IVzmx=vtnsGibF4(k{^p}ahksIJwBh^;MJtz7(TB|Z#4f7Ew9!HzTo;mIExDi zs(7dq-S((6`r69pi;+@nJ!SVt;KfN(koB0`bDe}>*XzxkftLl7J1T{%HXTFAlJn=G zd6`%d>_gDS&nM>!@5a#FHP^@IR~tU%sN~YcJox{rBQ;YAYD&r?!*Q9)G zm`<5VV%gR2z0ab7Ko>8P2t25mLH@^#1^=kRi8bA)AogYv1CErsFi z#^Na)$%Dw3DC5(Iwi|7AhUz1?Sc!ONdwYks^sHfO%ymTIa}@&7yq0(bkxt_UHBk2i zgMRQ%yuhrqD1vw3_|FS>hY_~8t(2v@N*kPr@#srW&)p?+e~n|gB8Np=kxrD@#2aIw zxkzcdE>}?2jFk(@t1VY^b2A785~#C)U^=4s6C4bk+8Q(EyK%;HXB})e{sD6? z_~S_J&ThFZ002@I$~EB4_Rdy!jbP>U0CnCiYE`SutHh_0S6pZ)@XB{Y5mWU_P>@CI zTj|Su+1pw6nz%Tqw&C3tX5+iN36gHQlz@AWF*f-hKbGZ%D$uh>u-nAw4pb*jks@Q3W(a2d#g+MTWX z;^U1FLT)E^Cf=W8@H~V98ZVQARh@6ze;t9?r$do?LyVC;I|GluXiABsVVc~Uv&#`` z$B!w8lLi=LS|HgR56UMM{W;;1UR3$~w3f)$95P+394VjSzO+6jRHR9F;O zk4JF4-?MTf6PYL-dsVBnJk42EPw&u$q8uoEIwDmCdhl?%*ba3~LJ3EHO$?>^houM~ zFx>V?A{|L@r;J6R2?OpUgA``2Ly4N%D4D1x4E!XKd^*D=k!W_A05V2?3Lo!6Ga<-? z%72iFLz4fD@efo$`2Pdo3pV_RD&=;@kSvSayooWoPK zC5m0!A9Bwve=UJz8Z<;~@JWMcy6nh;(mwM#_`VaET}e0R?i$KKKRBJJeAd>YLYr@) zYG|?N_+l#7u7*k)dz?QM!VVQNi1(?eyDIm8WxpfEt1kH3P5hRloB)l)+ zd8J^u;N2O0Jnl>z6XC#xY9Mxr3mka`JPE7@k@~tRF^#}&5;Sj*DlD*`-})sQ4>QEFHAKVnw3vV z6Ln<+7*fPsjbTcqN5fv;T=3_M!qYa(@(cBy_VT@u^8n|~G22H6<)7L-K~@j2N?|Tu z{K#|}3V-twAb93~;nG)%X9W&oq2fYHHKznqvt(b&9g~s<&+VcFp9Xa=Vn=Z533{~CqgMt z8G%jm=g@zEci5C(z+VjYpt}3Rr4J?J(W+e8H5aL=<%}BUCf0>&zm^yng=jY5JmW@+ zhHf0y*X_?@x=P6X9dsE|r5uro7roAf;@PZfCaeLTEBl0})2rEc4^jq!qut9y?N0-n ze4YRKQ_z46;6D`kn&Xf6#r4M&8OC@Tec|siz{sHe)qrpr+KPd1XHAy5n}ZKyAMY+X zxs!}>kl74`H(lRT*4tEIR<9=#Tj$FF0HmhuJ~uyV=?CU@#?gikQcyM7*WXkAH;(|) zb0|pR2Z!E2VA#@tRaV_gP(3)0Dy^vYstH&(i(d!wO+L6cfy0yh_edy%hUBC=z~_a~ zq5fyfRVO9PMy|Hksxmw7`01F+Qz~BLQ-lU+lQ`JqY5&%J5g@Qn-I*LLA9%%<38XM%^zC zeQYZ?*_<7nS!7VZBV3*Bo1f@uq<>Gb9`kvm<@?jI=b{Tk`nNc4aF|W-`1FYuO#9um z7S|ij7IID%8-ph#=+;kWc^_v#n|s{e4pknjpa_>>A5`F2?PopaFj;Th3N8D7%cG$A z!#}vl@i+D0U_#U}|HY_KW`!y_OT6sN4BC(CsNcnI#x$P|Lr<5}V}^$=B58{CjAz{9 zM-3sOSGBieLz9Cv{3M#d+~oAwoj!?~RnTIXY#%S5UHtKXxd5SBv>b8kd=SO7{CLS=i|=C7 zmK>J?cVR;kuQsQk(biuRzA;hU!Sq?8h zkjk*etPZ?gZ-5D{varKniKDx2{k1LU^H!LCTEL$P>6TF)Fu&J96SM1a;8%X1(g!ai znnmC0+CoLFHLI8;*V6hH)Hyy2baZ0L=CWJy*0fsKxivy`Mahb=X7Sz@hAB-@_jD!X z%x!RtE!;spe;+hS9IkR$Z#bgRewBhE1R^`amnNUH8HhHZdCR?o*ibm!GXp#-Vv_Vz z11$D_4fEMft5fb-0}G*AHh6YlhZ|uOMbzOT71cUDaP}r4|lxqpu+q~zs8^57rK6GAwtR-R}6jT%{pK%+& z{$tBOgqeA`{VG(S9PjNY+Lz=lzC;V_albc{=T^OdSQ+}WVLC>g8IQMscK2!TOZGS- zvXtc^xiG*d)wqw8X-ZYSt=bVYQ9rib7Vo zLGgoy{MvPQQOg_L4SC9?8J@7R=M`cu2j8C(RL{G2HF-_V7R|i)elgRJb1M+8>-?CB z<#u!NhF#VC9H#zSsprh`5fW?gCNBI|1yO!bOQ-Oh&a-NpRCuVkQzGoM`yWxi;ti#a zIo&{Vs#X6Tm|PWc(4y!*ctF`ijB*dv#CG*fUynPXj{R@&##neQHBkPVZpxyNa&sdew+3rAunBGDg$M$kCSGpw!pINy_G^xV?|W#{FWgbnrv+mWY1(mePNeVai}-qS@HJ|E zGmcbNNmo7k6hHIpQo%q`*}PyZU6c# ze8BUy1}BNDxM2awcPmqPsP2r#Io$TwNNS^^sL~^fa#AFF5^2y-R&unC%Uepn@racs zQU>QrZg3OTsA-pEO>lZ<8i&&h`s2)0s?Qnv5m8avA|ork`y&O?)GP(m-@%FZmkEOP zJqh(j)z}aCx3kgBK(GSqbA7uF;wBA0@=e)HhEL8ap33K8?-uK;TIq;99lJVRcZ<$+ zHT~qFwp(vENn6I3jQS)iZ=GPkXptn~QJZZ9hk0 zop+1eBg4M=6hDzN*Klzx=fJ|FaXVtn>u%J2(rl$@{XMMT?_=*adsx=E4_5H^Fr86C~kj-w)+E1GI6_s`ub6<4*Ng@ z)Ex^XSFffw5vk&&PD?72n}JH3EWElb9g!J{`wOE?m98&#>O#>1SV z@tkIetMI@?slJXfVnB81O2Fi!1Fy;s_+hj`X{BKW;&fMSgE-9L>$IjN>lW7vz#Gs| zgD@13f?kYKYdKQM7AT*9O@bK*sjKL;5{Epl%P5_Hh^e8+&rK@D#F#An5*~9_I6q{S z<9Hn%ZkBUgu;X&sj ztxrd;>!NI^6#ivsj26xQ!+UCrQjmouorQ&qkPzuuOpN;0kFc%tQymuL`4IDP<09w8 zo>XguTnCk_7xFIy+$gk9c&qmJ4+}SO^ru6O&7K$2=YVSC+wailQHmj_# zW%oU^dGQO_&pKI(QBTvCxX+&17I-si{U+^1%eYoR`zRwq3OOH(E{~vE}8P!%Bt&39mN?WWzachGW zFYeGnpg6@HiWheYS_6U?4G^SQkzm1sySux)y9YUeZ|}4Bx%ZAe&aayh!b%`n?|Spf zoX>pbeAw!`EX<}97?#BOa5fT)isabMTH2pe4pgS5b_&q#5`S!Wo9W?#UW=}KPbWEx zP|bUbMB|{nkpW%tRW7IPT6uT}c8WQ4!gE3uVG=6HheuMV!8ZeAlMa-I_bj6m%rZV!4uv+~7$ZJX)yz zcKi(uw;Xd%ekeDi?ix*QE>!x_K>Y3E(C+Evhj%2?r(DtWXx~^b+>g6ti{P9lN){Ft zPgT;pdu~46BFxa%XB%gUnx3MX`8-I)YW|1PDlAUzT)(wU@EmU4_Y7?z%RRAzAalM~ zIrOdZKz^1Vs=|S@(oD0HBBy+{=EADheH48}T-hFr#cxs;Nz-ahF?E@3OZ!UM<0oWq z2SRc8_FaeQn}xAD!K_ho^*j<|xhGf#^L^zzFM*F4Sy-8JhjO{F3}QYEt4`*caKakX z)p~#I>DD?-^?n8M(h3E>{UzfSr4!45Vx&HPlfi;?wPR@gw&tHtpuc^#JEr^N(Us&? zWXj75uD8>+S3KfjL5Y05>(VmPXoznZZ`6kUUx}Ui_nn-DjFrcyNj}aoG|TiDU)CFX z&mxb9_HDB6?v)cQ&j%-2<4p5QzdQ5&y7YvOI=*l7($v2n|C;;w0sieZ0ZM1~d~TX> zdg@;K(0W2JZNh%nd%XBcM-M~&RSN-z41`kVB@IpdJk>YuD;;E&k7&ShXM7J76u2(8 zHV4`lG5UwOJNEU;T8^%;H#_(KwwIj$Krf>70r5SQ z?N;-kSOFDP4;|sX%r*E%0qH;(_pg}~eVQA*bP8lqTU{mCvQE-g)S8?5K;FbjiS{jg z)9-!Bfn<$z!`H>-{DhG0Y94Fhsu=Z0DN?fv#yE= z6a0bi$VhemLa;uTgqy;iW(o4IMerf#)P&kh=9Z(eF9sHpyRmLKWU!Ig@+sOuC+N7; zdiU8J@MOWZ?ZRT0*dKeh>c}76NUf81Kc?!^Q>*G3j{}zVkb`DpXxV(h^{QO=KQ6R* zXW!G}Xdj6K88Z`FjMzUh6U3P0VghvmMrtzLiZp~rzwlDEwctavF!kJC8bCodut$kO zjk%K;Fa(Rv1bDKmbb`=GwNN(_Qm2A{@xbu0tMuh%cThW-B;qJ&?OF zMKoeI<0iz%>T&a}BKqZ|hbogi0r&*Ef%)kcg8|#DXs@97E{An%d%HP$fG)&=`}lAb ze>F-LH&QFQchithZjwtCiH+YLy~7V*frkF`*Y=~l0M;JmSB=hb4aB*+cG}f<`B2K+ zSfaC81z*kIZ}KM_%MW5}`1pO!DxwI?m*Yl9i%cX#TBfcl8PfA)k_+JlCI&tMttAM= zQVlapckId8n+`A2HWPpKa4mna}vb!0|a6ntNdd z9OAMa-^BfccJZ_pq&)@; z^4`7DKhmXb9!QXAA679yWb7Dk#nr;tMs?oTi-Yu|jra6M1Dz1S<}TgY*7`Zck+Rcu zd<#4(la3i(S|LvyjkTkns^0drtZ<1yX;9ecth+8gPFC8nbY)&Rg}8rD3ozda-8}5` ziWwy4;zMs0m}H2aJ|nIIQOe%($*U}x*JgBKOBVpZhKT#0BQT$%dC_S~telxf#H!Te zyeM5z-V8N0#_`=@edHxFv16rymsnM(Ju#ak3(WAXIPabuXBFMr+4|7(>Ud{{Y>3G0 z^;9Y4osFoz#mAx1{O&QEQUe~C!|DgBOZf4)3;BM8YjUhUf7We?GJG_k^0ZaYjokp zGvnB*(D5g|>9%~f5f#QfaZt22E{b)I$R=*-T1%cUz5cjx^7cEPKbUKBk}98>^Xh--JN*sV_4d%vVuiE+pWJs9!nV7YVREORxeYK{UhiAn(HMEDj*k$ z|HG&@Bkc1=eXJCY4*B&+-iqK3bQ1oFcIq0645L-E#oK8xG$|vyG)wies#`9lRE{yL^Y7Vd^iY25^5%5TUVXH6RaE$$Yz+mopyS4@|A3*Ea9%zElu6t*Q zhNf7QNo!fQ)oI|+Ij?D!G`e{zgwOdXV05jGQiLRb$gB+&zB7O)PE&oW)sxo^= z(l+61YX~KXw)soV$F&?a40TGyj&VGL4r6fpx)U+p*g;|R1#(iZkkM9mICnI0@9x&z zmRr=0lKQl89eTa(Km6jzDD-*{PU|#&7jZL$d=_Qd_%Y#F=e*4;Y%|U%uflr9VWv_EQK|` zG|?_$xMQNkHwVAkD?LKH_!HtEKUFa?M9SUWmbGPjcb+#>FOIIkW00Ie-`^j#&Ll%3 zOCQ`cTwSi$_u1mLG?CAwcQ;%@9FjIs{g>PO7n_ZQWV(jBN~8g%awp4w&dQ5s(D z+nb$Dbp2g{tAp2|)lZ+7cpsxJL>;T+jJf)!h+443uGbkc1lRwB+Y0QV3%qi$Z_OC> zBMs{)h%|sPL{(Kg1Xied$P<^c?_|NzWq<{t{&E|OeY60j5A_xlJoz`aP0x}*F>C2{ zmKM#gBJvh50^^x@`$>y}jF+d)x+(?gadMqUNy$FGrr)u71Z57pSemrOuzXlG^dVTyE!B z>-)Gnb%r@Z3f~}_&vcoy(s=X@Jh77<9O!x~$uGApIMvD!>}62i5hzQs_Pj}(DeKVi*k4@rg>wAsd{Jf zur+Nd1^rd*)HAe;FL6Z8ayHhbRWgd*#q?%DBc+c)GYNz1RJ`vkxM)wHReEM2!@sDs zxh(UwS60UNpwfDYs^;g%*PmV*Ormt@a_duK)gxaC9(Pj^AdhA|S?>nfFO?id{%$t& zs9CRSP}RGd3Cf1>JVv{SelL);S4JvFRuZ!@I_|+kWQf=ca2TQKm zrKyks`-8sS0rX1P?FY zKQy5Gm7*3hw1#ycRlUy%_%|$5v7A`hO@Z?2hGbMwIF!}wrls&KlO%bvV=X0d+-b3O z$<2fA{;l5>arccM+K48CAJTysCQ@+y5k7lgY7u28VOu;X6}S_27yDLAF~XQek1u?W zla&`Xrdtkskq<>U4+_6OoE+^HZiI*hl9z0R#d2mI1)T>rlv~0a49;H^f6-i>6(=jF z3X)+pk-!!S4N%x1vubTF-*YJ1>lwgIvIO-unoGk-V;vR~U-#Zj!G}BFQ3&I1 zM%`9?-MG3r0}~A2aJcQ%#PzEuN@(UQ{aL(<`K1g1s5!5&!2Gd_ui>7$3s$DGbDead2f_?io?{0Tl6YS$4gU!*V?|z z#_qV#C) z4+AHqteszrBl5Sm2sbq9?yP?#MdU3moEbMJ6Q3j^CR2Kn$zLVekZa|p%(Fdbf;lOt zXG~I~OCW}KSyM~P0o?JXpXK+&WL(T{pIi25(|0MzCvsUbEs$~yNCaZ7oNsI6eUXWN zGwaBDw>o71>j{BwCzC>*u<^-ZkRG4eDVN=i^gI?>Jb&|h^1i5FJHs23*32CDu?r%yS>b?-w>o}LQ8L(NBdVK_V1c6U`Lrg$I3O=8*nUP2ij zs8|x?q@(#B*uuy`x$;ui0rpVj{Z2ib1y$G;?SOxgkK1}DqR7r0xbm~-`bSGt(e2oh2Bd?xM56Sm@s=SP&J{Fbt_b}P_;EXv1PCrtWQ=OigM&&_Jj zVPHUgyR7^>RjMmo5`=S{^;-JHHNMj9m7&Y+EjFi5+>PUWSDgK_cA`~(TSkkC%U&#L zAkXqVRFl&|_EBdIDOQ3|$GT~}(S0+%DN-KmTCm?AUNq<<%JTw(o7=Z{%<0*=o7V+d6oX-l3A|0dcJhO!xPJChro{CZpQOdU?)T|33|O5s+Q$3 z;tN;`;=mxZ(@=@@6C=9oYxZ|OB4lqNOiU0p+3gJ~{#rvy9m}@!HS{|c+6Q0)M)wtS zWtz7KetT7SI8&SIa$V=*$>BErFQ|9Pmm(dbi*YMVe8TV(Q2O$}4R6S$l%x%Q44aI> zG31~$!;83GoV$cPHpjMCKvEmc)^)qBKFbL<2xt`dxYD+l^0b(oNa@Sz&JwdvLb7V} zRp3Fu*<7}>M+!3$v+F-&>G*P!kc}9)-Zp1MPwT*Rwo)A!RqT1qYnU#HA?gBA`2wvK$%NW!8L!8 z=ajq_M&FV?M37c`HaCGXMcKAg;tfdaJx$#m^EWZ-oTd1M>@K@zZI98_ma@~z`$e-i zgp6;QOD7dek_Nj74JCBqq64evWkbx{y2x$u^8=uxV@lP5yQhnSRsXj{QD+!O_@Ke z*Z*vF(#Y~*48>`j>8~w*T4Nxv4$oojoVJ+vPG)y4u9T zAoSB_z55%(EXoO;w_l1(9R&e_n2O9y_3+{kR-O4avb@(d)2_X*3KNa3AbN00ZYK-j?dxEu`Y&c~9g+GH3|sz3Xd(=S-jmpu zx1S|F>fnjYxa=gGmv85(JbJ~q@Y9WgEnP{68fLqCRE;z$d$aY+Fw)qvHl*G5d;U?Y zotyo+!%S{GSEae+R##7?lnuR12i zyxoVzgq^5>LDO4iC0;cp`Q~R5Oa4vOxpj}eFcRXQ%_UgUFb4~Ys!jTNf6tF0c~FOyIiYl~K6Cc9*(xyvB5+&8&)% z(TXMy3U0$co=P`0;7~ZLq|nDOwtYKjQ008(Q&v8wOoruA@PD{X3a479?(ic=ysHtOHHZG>7P92FsF~!#mg!jtCcvBNEwpZ^bUiuy_y4!SjjJ&%GKKkFLoK@xAy(L;hiR1 z*NwJR)pz&ZdhqfukJ?Y23Xh;>gj#epwRaHweN=`n5B*w!pD(>gR+0AhBDYshm#evK znLzUA4%1Psc!{8lqRoK4RY&Vwu3b)NdvDK2C?lg#)UjZ@3G$l6LM_sW*&}~(qR3ZK zBP*z}JX2r{__gUk2zrhblw z!&s=i0JIAtP80H^krF$kErGAM*zIRX?cqDd&SPkiO|_4$(v?*Qj<0}%E^fJtSyEGa zKwqbpx&vsq3X1*HH)Nt5<IrQuH91gg{_PZE8z*&j%TQ|qy1Qe!sW6XnV9Z|M{3u;c>3 z8FC010fX(=ZypBTSuzgiWYfkp-FIWZaD*jC!LDxoB_gq_ISc3cD?HFC#_VL_4hzie zCsOZ{5pcA)z&J<38)^MS;81^valKL{Mxt;vizP@D?tR*)Y1kcDGBu?EEU229Fc|lz zlrGxmu(H;}Ffm0ff82J-vH7zNP%!08FR^GoMe{(ap2pn4hdf69Gus@`Z;(u#&nk#N zf0HC%0}GSOgqGxBzdi5*-+oLrlWuqwp`1ep2R7kKOVDaDKEZ{6HDi=p@uhzWr2?~+ zb1_YyeA6luv!Nq!kf1e^%v6P&w7!Z^$YCZB1gG@Yaj0Xv(sco7+e#lb7@L-vhK}$o z#vgREzQqhM2E2-$y;c_zF_OXS-<$AeS89x!;7cI%DVlrOK|C8{h+lB>=K=QU#@#|J zCPl7#Iu5ADC1ka+^#w`_f)D&w-Wjhgyip@y)Z(FMY~;v(a%Y+k#9JO@f>qV~b{5xy z)R29eBRN$PAk2P3$xqBL`19@FA53$zFd1erqcvo0^rC}3)ZqKPC~P1Hh5n8)3nV9B zRneMKsmxB4I5zvuw1bqwK&zGtiIGcq>T6r9(zTH6dym7YiCWf8gS|gBl4;#gEEgp> z#UdluB08|TEGzfydsZ-8{*G02gQGK z0aByq*Y7I!W6O7}tv|Xd`*%HV&@l{VwbjF8*u7hh#On6BM(JVAU5C$7-wz#k zCdp4;mn-388uX9%cw^8f;WXgpA`tG%43@8C*<~tk*+2WEI4l*V>ULJkr zk^~gu*75bE3-!VNtinzE<@Sq2vy|&5fxSYNbSuTp7ZP{z6EFF-Q1fRLN>Ayngr6ao8x#X3Awc$3f4Wwb1ccGOZguoIYD7c<;Jg zv@KU_Sw;x&84pa&>+E3j1kdKSSGb;5-GcNUZgU|W^>Vg6j}gkJLtfu<9yQRp&|tQg z`EWu6(Q#&2-?1p%-gNN)wGAevBiBK<*n-Pf8pIer|SrdrceLo>Y7##{BZv%Ln(Xk%%6ur+Ryd^9y~oSXJGSC-K+c z!YFjHEr(8UVp-YPDr9^FRSB9WU<1GWV3sn9#mxt-9 zMwoM(6*YaOOUX*HpJa-tZtK+lkOon+? zi@fLQrN8dknRflM34y)jCXdj|OvulY-$a2_OIIgXj#8Q%zLNWFxRu|<)&b%G502o_-@|54a5)lnU$c8SP{Q?3!m$yrF-AjX*xR7 zKPcoX>*N$4Pbt)p^Vu&ur0LYgj&hEtJtCeO+Vwl;pKtA$@$KeVK2@4Lh^{}avQ;%G z+{$LaQ&VoEhTXiQsZt&3TKj|NQ&0GT9`3b%^@AIb zIeCGL0(^u#3a=*FHzTe*CPo?!33M*G>HPa_?E)(Z(H2yiigvbzRiHu~*OjZ~`VFkJ zeAhNt_o`_JD9_I)Z-?6|r18ra)GRkxTwFRh6hKZ&%k>t)qwn2Zdt&2_NeRmoog$Q` z2Fd}+9%nULSfKIjM$NGQyos0>CdDS5d2684%L3Akt+mkUyDjG3ypgv5<+)tz)cV+H z`TxB^57a=t@0(&23Mz@76pT6rw!GKHcM90T62RV`&xoAt{yVo_ke_f6JbW%&C0KK* z4SzV#K^{W;=-zQe6Zu%9Z46P&XQL@Eeb2Io$e%W6<79?T&fLlm6<9C&ozAz7>j-qE z-1Sx8qgrSO`+gt)^~%Zo%^725Xq0n$GPR@F=P|P#*9TIkGwocNe=>@e{8>32`~86E zTFEWP-56BVZyF~5X<_Ec-7q>7UYycC&gzh8IJEFiYMoM9pPDI}=q0_x3ZoC!kE>`g5NjTibr zF#q8PwRR%RLqzo9e#YvG$B(KWy7_=XO#6PYER?hn>ejzvJKWxBS^b)cr`7#JwoP>% z7uRAnuv6PgXH8+!ha5iW#?;o#VU#n`k~P^?$-+zwFd`tqar~#CV*GxHqP-7-BxxML zk@v?3mBw0Un?&Jv`Cr}>cNyRwpGjnE*8bJZH0%7MA`~Q8#lNHwsz6q z!#9LddPL&iQXH z_73jHoSRYQit)9aT8co-W&){Q821L3(T6A*GfZ5i&2&+O&9u{{k0gAc(hP>1UNurW zV4%ajNR+h?adulE20;dAMc?0KQE$dvvD_7uZSJP0;`+`=F}{h{NY@wt#O1;RLKdzW z%l>cJHJQdFMN+E!VL#s%|F_eZk@gl^?(+ZfD)QhgYT=>P4-X66Zyvyxe_uKH`1XHz zb|~VC-t|?5ZD-bzYfHbX2KdJ5+-k<{OZyuuO56y#)s;1yfP$>-mc7#|Y|6nAtq;IF zj@yl~gZbs5(pWXJbK>d3SQZEv6U2+1HxJq?v<|Da8-7b&J;LQ%yz=8My@<@FcDH!T zD_po=77?}%m4@~$UEx&`?XjSy@%LwF@0w#X41}B)4*cpPkGOQ5+AUoY&NoMEf>uU} z0*5+G@qJ)b3t8pGEP*L|!6;hi#Ug``EzSM94ex%TrH_^)so`dKL* z;Ad@G@^PZw2G=Qy50{@Oz%HQm`txY{_1sRT;osZETR)A*f6tv{1WTw-8e%*h)wg!0 zeHQ-g)e({p>Fcu_&VgJmjly)Z=8o5Ka$9HtjG-8M@naxIr`<^+oe0+Bqu9`ZKKj=$ zldN3H1uD`ZB;qY=^Ha5(5PUcZBfeG2mEI?;uM3u98Qozsm8R_}ZXDcZs8muc@;T~> zv;PiI#9q5|aq20Y7lu;C!RTRDqWBHrFNULiXsrymzUhI zJ`ALy7QvtTQU{9;$!YGWZOENbaqfn z9^03E!(ROuZ9he1dFM(EM<4+8`I8X;c>mHk)qrmW)=hO1i!bVy%@j|$Q8Km;gOQ*Y0z%>StM1s+23_CRQMA&Dn7Y>r9Hh6B;{@7Y#m|H-gr7|Y9C@r(ko-KjYU(fgfg$d>_IHxi!`U^zVIUvt|3W8?p?OB=| z*7T~~yX#K>tl6ro$4s5uum*?L6nqJE#<{CDU7WEax{c@-;WxH$RZp!oH~r)(h<<<9 ziJzPfm45Qg7e{>RFyAve)XbZ=)SJbQND#d+A@rI2-QSeU%mHBpx8iR5mdvT0^W!9i zb6by>XesfBdJlf;hSR zj8U3M*S*=H>%KB~tW77*BWochLB43eL|1h@pUFq3F9s`P9_I~*mJMa;i$K*gJ?jM& zV#j=Dt9W^I?@(|_>7j<5R{7R=+qi<|qPE*t$kru0uZoKwyHaN|#Z~E1d1RN+G^X`# z1UWvFd8qGu)GnCiu{&7IMnaFA!7lWRNRV}bu--*{E-QmXe**q>`D>ep@;hB+iiaw5 z%qQ962D+z}D51F{4)`jV$ymCTC}}potgO?%Xw_Q%-*K#mTk2<0QOg^fw0tQS9Uqj# zDs_7QCgt)E`CEl6e*JB}LhN{}%g+jcH?+(Zf>H*Buk#{Md;oFv#E2sNp3X^KCPT<+u<7-(0 z!q*+aBb2PzRMpfe5iKK_@gqGmO-sgZPtoQ$Q_B>S%vfW9P-@1m*$9zQ_qa||C*yss zk)4k9*J?Jxc^(8M#j}$`%EF58R*JWFdH@p27kT36j+J9E&=X3bqU73d;FC@z5{1S- zFX@N~by|i_EmwVgQ%<4FJvAY&Pf<>oqZDK(+lxz@>=Wu5T?xZAq<*3ho(^I|!oCpG9w1|M|@0uWb^y!$8Yj&ven<#c8ydFmA-h%+DME zxYp&PRymvab13oz6| zDQY)o^|9kiN&wPFo6LOL>B|4~j%1V2jZsn-*wS^US+YdKomAz%>Tf5gqpQVvCzX&4 zmh!#3Ad#=$Of|SoO0*`KtyNi{#2y~YPZ6z*I73KmE36ew#R<#aF>PGU9)Vp-1P*U? z-8Kr6F>~q*v^{3i+CzT#cGp>&@(J6WPLhYj-tRi@6e00Z2Kj%!7|nMS_U4fQr-iO*p~f#l^t!0R=i$f!Mq}msgJgJSWG-O6o)W7MGur_9fJMo)WZ$2^jK)deDto$9G37<(AABzS7vfEsi#&@ z&+Hb~t~$$&rQF}|V6a9y$j!iNaXX}!=*o>`ZlYJ&NUgT{4{M)WzaFFnXr05zhA2|q zm^p*SYzL?=ZmIO$#Oqbt-JxQB@Sc+12A;mdapRbd2ji%QtUn;$dNI^J>YHU#yAC(W zIO6vGalkR*&#cp9BD`@}e-&85fX4+A$WoJly|WCVB8ktY7jFxtfugzX$!g+!!cevU7i<9^-Yap98IjWLkZ}A8(+e2q2izMDBJO^p)y<)&Lk%y$jO9 zdk@S|&Xr~+bZSvnlK$KE0cC5bXR00pjovE0!_AEe&w2%mvE&Tg*r!P%VL})DuAKS- zRip|Gw%RsPLFo#CPeEq1ALM0@s5#N;o&3Rk99AR&U`&aB7-i|Jk2Z~T(TULeC;&f& z=oQK8O{XA&j8j3@Gr?MbB~5J|lKQo}gI75K&K`CIf(6Eh(dY)C8DY6AItndiD!FfzxM`ue8C+_zAIJ-1jeN+=W0f>12Z%jWF^jw{K0CpGsqotsq}CMJnpzjriIcT=54Yg@xM8-O?r6V6mPhOcn-&Ul4+Cid{wnJFJz{j7{T*Y!VI;UD zM^49Bz!q?(@^C{c6Ws_A9_}W_F#c;i9M;y@&+P7yI!B%GdMSy~XY=_h7VE(+gIc10q-cxRmI*@(+Nc3T zYxJ34^Q=jNeCG}B{j!F7vhh)=xX$clTN29?HWXwmJe=!lC=Ed21gtoBkacr{k{~ybY4P?{-clrI7V!meG z%+(=KXfZtW)9?*+yu58#0__c8smhgjNYCADt{=C)U8tv{SNe*{5e3)mf?V28JS@{l zadF3CK1G+OH#%&YOhFiX$ul6KKrq;tYNX+CtiUEB&@W+Wr-CBb2fMn!z4f2A7KGuG zHL(f*VR#Pc@+joONide8CwnfhTv!~a>WE4+47Lbb`cYkPCmOvonH}pQJu|m2=4#OS zc^mW?pB2}jVHw1Qxt1~wM`<&g1~O7RZm02k?pw~!^FClTmG4Q-ESHUBtwxxGd0Y^8 zp6Yw^sXv*ZZ1)tg_0D60Ow?4BSlrZ`W;M^|3d+E!->F-jNK2Jf+R+>$-#%w2PYPWryxoIpj;P;p z$DzGMJIDdS(5(cU`%_8@yPaa}#?jlVHY=z$KD0CvM5z;5@&T%4eDeRwZSA$uE~#&F z8xFJ;rL!~Ygn)sMZvMJVl%7?;Aah<*O9;Qp&BPK17W*&Ln-$CmSv4?* zh1x+Gmbc>SnQ@Jjy*o;Mpl&;f?5v-dTrl={yxs9-QE2<0!~xiT;(j9bo+w_q{ZCzU zv*it~^qUz67FfN#{Gz8DlwFyk%5&~O&7*p1)&tR1_W?-W-e(Z5t#2_>bJaOBc(PN}yUQamO#$9f-!NP{h zpg~Qx8e%g`wPG50nVAlgoB2Ia2u-H-Bv*B+Fcj0feF2Fhc&zGNhR@ z5&h`ojnG|0lSaAYhLD41-&7G?oZxYLgMO3;GU4~FkG8h7*iH}qKgI5Q!jQX-xa({_ z%i$A4C}a5%EZjh_gknh>1+TqKAFk!n`Z7|=t`n&5oo_BK7EmLff`Xl-d_B8MxvvA6 z&{aK>B$`n0;Hi85P%+UC2GEEd_rEO7lEReu|FkrJfK_E^j~@e!7`sN^OKy$cUl#v?(swgB3DkNcP%xioh}x+c3oL;;_z~JZsm|*%P}>rQ z^+7{rFr?tJKl^NrSL3#H)e<)s?*Ulz;wv=JiA`mge|v};u5}JOmTp^TaKT4tcVblm z=;ivwyQ031f;!l^5uwd-aDJ6LrxTf!seERA{wFD>T0Mg(!Y#@^nc6~cF;8ZUIu=kB!fR=~t*OBtd~Jd}0r2KtPpM+Ni8!HZZ)msN461}LJiLrwYd zIah7RAfmnEP}r-7SUt(!NM~bkgC-^(W^kOEE^sMBQohmmU0zVJqT;|yus(L|m5TR)hGlUieKg~rP)J#eH;riY#fX)?hkt@f#KuGnGvM_m|v+O_p- zAj(GFZXwtn?8e^F=1w;oW2@KgFxI-fJe{Xtv=spj#>N;RMpAT3X|;R16btoTe*_Qa@Z!G?M`r@* zfFYn+g;`j_F*tYpDB?O(mE`4ee+$2>=EPX{kGH|)&2-Nx7degoQ{SV^u2b~}O1*$lk5M^b*v$BXv=9bz`jj(d)$MbwgzKji!1|jL2 zaXw|mK4-Sx1+`kY#%Z_dnrZ2Wep|E$cYOX0?T42jm<692tK|D(ZSLv!47b@O3mJO0 zI!N$PwrWaY-d|7yaRw?jhZ;rHLjBq<8E@(DdMrm8>x71L73_y^%w+Hr1_t&_^D;=lRB#xlAq^MM@v(?d^(XLSA zfo-rI;|ja~(uq|-c>8v#cK+dDL5OLRzle1G-nCt18ZgGytbI&eS^#dGFR9=lh|u-Y z%x37TtMqORPaO{;PVapfCL*3SHIG}{_wJ`$!+MzMWR`)@E#k*VAP{&YM$2w@shI@N z6?J{IzYy!Kv%d2iVo%$rwjG)@T^-NeT+|!jR$pS)cTxK|-fcE)R=_iVvfQMwKe4L~ z+i2SIn*4Mu6oW2bU513&AtQ&m|C+&k0p&6QXn#siofiH-C4944zuTNHnPq7en4EFp@}?GPr7d36Al3EXAr=R zbk6^b)%rWZ7-EZBK*& zL!vW+cghPrkNPZpfqBzzmjyF#Tn@M2yGtn=U|?IYv5+B$`MGtr;g#b<}h)sk!~C6)UzznIOdBb=1+zcI_9?BMjV`K9h!cSvT8lUagnEgmLG! zhSxf)oL*d9wZH}?Mz^n^oIqfeC+~{>t!n}lDu!)>#4@Pz8I6pHQE_F)sxC0X3db&d z9$dZ)|FT-cX0>)*?5-ilj;rHN=e!CZ@*j@PpF8nZtgZ+Z-LKP-@&D95###;7<8j&? zQ&SN*V)JJfj-mxULRAS>+*fr3X?a^!NkI!4XA_KQ#e;*^)mcQ_?F3zR zj|!pN3M?;!nZE>vBtvAD-3l=k&nRoZNO!z}T!b>YiH_7~aH1WsZwz6xU0BFQIw9EB z3v^D0cOG#cg)=An^2wjW|D_7=L-z*bU6>SR3!i@qMfU*yOWJzlc6Qr%3Eiv4zHnXk z_fy%*!De}RV@D}#?PJDMzt}&%~@S(-yQC|??2N$&)BF5bHhVCMn&3} z%Z7_ljH@oGetHf8>yS>Vew@qOfoYU{d#%!+>xDBF{{B@rd9Q8s_!hm;f{yO3sPw`$ z4U1ParuQ=<-AVY#4(54!T8{1A+#^;(<*YyYH`}CX>6Df#fc}iDlN~Blt*qVgT61HR zDrY@cMx{4xU$M)btBCE8IE|fgS>EzHB^fW}LltrT@tV7~k?U=$`}Wbc;-yF%M7!I85|>zp8adDW}=4 zAl*oY8hT|ccgHgot%3zLmbo+fy`#;SHGXDN9nqs=(wGgtzNV(RwsMCPRE;kU|@te?v8X=RUZE9?K z+Br_ek6vj{0!t8n#(l_~Qk%-e!X5Wqo{OO~{!D+)v=!%qQiL)gV@3A~KhMs530$RB zyjz*V3czLPp4^K(f6kne*YhvQ=^I$HwYQ#+8wTCvr21Q=ul6rA3duT6UwK_CLd!0{ zv}@7*7O=zz@_a!_`n; zcRX4$oD(p(H?Y!bald&TRiT}7uCG1M+O1p_w*10RS3N04E2Dytr`Gq*@JYRP5j%&9 zj!#W-MT}i(%;3c#_wxOU5na<5X&@Qtr@+dg!r92=>fXyKwT-j23UV?B=3T`{2Q*}T zWcj$0sl#~x^;IXYsuW%aNTrZQEp6;K(iRwhUT@P!B}1Knl&W2U-3i=B1Mlv6T1t_z z|MIjx{@+ra48cLh##r1pEtoLn>|ZG2*LmCjNdzO|GgIbtiBK-&an(=y59(OHQ6M;4 zCMFQx_eGfJ8&3c4s8|boXNLum+6XJUlGp^tY%a6;BhDYJP8xf2#U|=cPQTlj53y@u zqKPoWflG^9QkXyMan9Bkx8B7{iJaXDq1CvB#H;j9m2F+|2d4l_J&eC6e+TzgJ1CNW zmiQ17Y7orB%}jy{nfmTdpQ4Xi>HoCr=<70bSCDTjoGRKuvPLp7i39dxhoUM*QB<%0 z*3CbAQlf&buS;E<=}X;_;=*lkTcP5BotZUpH!ekbv&&Jkr!VaELzVEMPRo`F8aIE6 z;l=)+?io@-lp1{IqYPQRUU#iWf-&uKTPh;XXPYVS#v0T!lrbd^+sEXt%yi6V165F* zDK82XXG&aD;j&-Eds@qQTl+nb7Gd`l_AG%DXj%ZQpXKY@XVh`>=#kix2a4=fxw36WscwW(h$4KA_SC<+{CqAp zbEOMgS3G^@z=Xoni z32Vr*EwaCCh30l$4oc58x^%U574s{-i2X>>1v~w!d|U0@$abDIrKmkqSx%7x2I8^b z<66Z=V5uzC*dU4)a)7#v?_H#+=W*^?5OnA!C?cHM0BWm&vx3qcGqKbsq6=RYy<5!#7%4tla8eQQEH_(|i#2sRBA{fgxb@--%pu{4#q&4hBgc-UL`xwlXp#EUZb;z3 zTUlq^Wu?E#N!{$LOT=Qq@4nen#o9zvfFBb7^QWp>wn<8$PH3qI@?nu=u}i)=&NVWq zu7e0^biOY&8$3K2K`=8QAJ=_4UzG1-nQ;YdhX`-X6)q3$zJL|H51QaV1Bo)M}lqIRJAs%xU=6Rm`JA%rQLXquD8Nx{!J!I zsj!uNEd0PQ6a2$GH$qF9fVfS)Te+lu%*^-CwLbYr@Zw8$ zH@O>F?2TAXnqtZ-*T(3GHZ^2@we$Gs=y+5h%dUKjf`-Tne+Q16m;re%9%y!?zW*CqoG=-R4@=N0`5A^RufSH5>Mo*A5J!B4a=5Z z@}6JEYGzs#Jqd^ywNO1C%$e0VDoxlqM)r3+fsRDHm+Y6V>FOm5WTg^H{=>*pbv%7b z3^NO5atL)@^Y+R@JMewaBab}$t&bUxSa#NxarN12wn7)@(L;P4PEC$u-#FF%p7R1S zN-!hpuwof23Hyjj2)kIx?!OzzvRk(c%MjM1&~Y-JEb^gfx2?W$+Y_C*p06W=qq2hU zCVPKZIURk&_FkjtM^=x^^!l0VRiE0-=cBl}Hv(sr?ABMgdhCufxQ`mzjkyMfXF>+A zt{|a`qq8F3bfSNZ(KW<<^g&N^-eQ0dYmHKRYvk`~t$wS!kHyWB>h>+DNYH^^rOI-bipHZ@(1F0}MMB?T1LYOyhD zGZn2E#HfQ&^DGhNOoIf@EBDqta_HH-EvZ_5w??y*dLfmtCWAfZj&NpS%I}kN6_sFo zqrZw^cQ2FhIhc>DoJU3-C69}}W~;hS=pknf$IP~XsQxOGeM3l?A*_yqESK}#g5ONp zO2;2;5=!qCQ|YxF;=@F2RbM_#_Y`Guhb#xL(=H+Z-^{rJkv>gxLN_;YZ>?`Qil1}( z6SX42vz`zigmNlx+1YbT-cwjX%s;?K!U0cFP@b7oTnpR-YO9wZGEw(MJ~Xse)HUD{ znm$>$bgd69EZwQ~ar%_txLtOoZj>7cTYPIYm?XA*$&;vH9brR_gdSV*hwZN4%;e)i zPFg|dtUEY*T#D?-cBN7IdDDJ0v|FCF)(?tg_?c&$dLok9?`X^3u-T4wIE9nNaV3{K zNY>hx(0%2h(B(4At)Igo=UVvbM3&^4Cpiuqx~n*{W}airt6Hz6L^kbQHh8DXcXSwfW=1!e{7dP7@T zSbYT3fUf44FQWO!s&{QS@=xfz!18p9YpRouR(&ylcX5Ay_7%3Uiq06ZhpX`T`8cYq z70NE+1)<{Q*b2oVC)XPL2ZT5GE&O)go8e&}x*Rb$nKU)U4y;0l7-ck4*o0BAcxs%# zJA#x6vR%hy;%Zin>;xn@s;~h&RxQrV5BL!1-UKy>(by(ckR} zw3Je;Kyhga1&S9aE@^S6xCGbY5?pJzmEvApgKMzj?gV#=yF1LG{k`+fotfv}XYQPT zlAVNeI6KM7-fMr>`rdQB%V-bD6BI~=g%vA=)+gyydL?VI#1qmL>GsPUoc>Z+dfyvY9L(4bYeU^~ZRgP2qyx!Q-Y{7W70tPm-Ze%y6it>wb1+55YB>2(qH{`sT=)9qRpl0cqs!;h0_b1G^ZE9?YrOf&vE9DsaBBu-u;ac$Mo^y;lX?{T*1= z7KCq%&fX#&C$)EuCQ1MJMP=BPTT=_BEAp62V#i42CTIpakfnP z0_?F*5ZAj774=XFl2Rs!Vq7F7)82XW9l&5*I*hzJ7mt{&o$o($!Xf z8%j1fPq}6z)n>mVRFhTtgGxpZoG9o+ufaukG}cf1ZM+&9!)`q3V0AB(;S)HpV`S}1 zfBo>@EIJ)&hu=J$%x7*q>Jv<>s=ISyH;K;P;gEZOwb}HoSn0@tooN@UyZ}13(lO>- zn-{cKJR5y|0SEsAQJ>V5erx)+lqYJ)<`w>D`SKk1-wT%yN_wo z>CMil^%S{fb(P=(*?0%sIe8as?oj5y<43DxVk2ZZ-IB>r-osJ)mO-kk_>~MO>`UPm zE;l(g;DFakiG-v)7xL=C3FpU+=ZRWGUIqSFq=SSH|MX7gwhgx{ZX7|POZ9oq%5!6W zmbqN*0Ycr$#+~$?a<|?a%o-Kk2CJK;{3n<>;;Kxn`eStX!jzl+S2oAPYBFe36P_2b ze7r}7YUSOK#tp^GUqwe3m60*JH8BfWCQ?;z>{=!S!D>WV9pqYN>?&(VK>3*`rm?UZ z7ka+VS{bO|A=V>Wehvu{5DRV|l>PYelPlGkLPQF6jI`rzN8#-oQAyEE7RfsGH%`B2 z|9KA+n&-41&cT*id@v(RW_hUugJ%9NjI%t3p)!GSXazcXlr-5&mmUQq%s5%f@uDE7 z4x6*1VgZ%~)0|=?(Rt zjg}Us8N3IpFal9cXf!8$GopZ)sR>9Do{Pc5Ee-NacpVSLJntwSaA zu3v1WiEBP~37Cbqbxsr;M2*m9`SW`c%UzKP*h0;3-hvitE${h(O!o6UZ@W7On^7C@ z4xb!h)V(i4Em`VCfkN>DudP=Sru;F+3^690BRiegi;`Ip0yidSU3vk;VPQoP$?6jd z;FlZOGNM<^onG;EUfa`}b;q@|VcsjISciCc1w&l4VJ7>VkuTD~-seke!W10mXDi@s z>rm;x(5velPzy1y>Y?v-vl7;gqMOR6KfNQ3F)2R|BDZ4Fozq|7lgcBZ_4_w8&%nY} zy{lI0UwHVQAZ>jc`Fs0tAL(;!P;7MKeSYUd53Z#?*`Vt#^wR zQdR$}>}^b|0kNNQwR{y^m@w<#`yb^h{^X~+;6s;wuGX2Wu=0u|?!pMx+mu`oXZJc( zmN)$Tk2n^fQGq-h;NMoS@{d0K|K6%s7yK-}nz!yV>&&zz53i46EkCz9o|CR&Ijr1Dfb#1K!oLp>gl=o~sjf z&SuQzo_ly~a)@U3)Ymhg*tIpFq*bbi4^w;aY_f^wC)K=cJ-_#+&d?aFGHGJN=bJ*; z+q_2mJn@}x$sb)WwQJ-CNJk`8oTW7MIp?>oe~w@k!aw6CFP%x>rq>lvjdsa9uoR~>F^?D@Y$?c{E6h<}-^?^~ z4Z30__FwJ><5YJR1OyOc>lu!}F4v1NVTHd~?pb-~A(HZk_C-tD;UB&&Fq^xmF5N zv~*6B>4CfM_E)9`bdXB{k$Fibx>Tow?30)s- zY{A&h_6Jj!Lw728oIa*%p1`Zk*$11^VohhH4z4N)kez59AoZ z$>>~m^d0XHDoQ*kBO5QqL|AWCHkM7&p7fg48~sSjiY{5~i{YdjYcON7Hc>vC7>G_g zK94UX*^Kh?T*+tbSTSWrXYXkuZZzGL9zNQ47ub##1(pCfNxdd@x%M?o-BYR_ti17? zZoO+1md3GLnHx32gOt>e>E4s?c%#|L9asm0;Q$6pi+&zk}0JG{zL=H^0h~=peZ{c<5dm*k{dD^MQK2p|eK?m1=-+ zWyFM8S_y();{|Gf#_i?Tyv8^xLrm?jo;zZk@~#@u(zh-d z39zkpJ5*4hC@6*$s9eWuclNkx$4G)YTEU`cgB$C_8q^_1@o=$??%dUDa-3H8!0*Y& z8JljE1%diAaz&}Z5^LT!%pdfti;8IR0#)rM-XB+72byGZ0^d&1X~RYmtx(72aH-pT zgLp+nv{ZzU;T1L1$k&V0ShzAdqI_Wb)TnT z&%3h>_R?sN8D#t`k1kRnLpx^SuU6+`b5ZBjTr3KLl}77J1%XqfkI;(4GCCdY#i~#j z+YO^jV{J*RZd&B3-EpbWDVxSsvpT6jp#pndYl66ko6m6aYT%qQsH*Ee;AMc<~3`1h{|$TKvX zE+eW>=OWeFIhA6I_QRneICI`CrJ`dMy)~L50$a(yJ_iKgdZ1p~2^--fm<4NSq|92J zlLG2vGq@aVxb4OQo@02Q25r?ra(oZLDdvYONg3GCn6qlrfXVvN1#kEH;~8E-QJ28N zy9O_Gq=Pd&(z>cowxgmi8q1dtK~DKq|Gdz9VPDj7C|Iyk>H-P|0UP6s%uIrwzP?M9 zgmh-?)AHrq$PD&E6qwU%-{j7k+6`5k@37pD$KQpE&eUvTs6?)2G}I7Jb5#fm-@nnX zk(+KZ+fw3G#et+L**_MZy$24Q?dB(&8S}ZdM?AZr(^lWtuTy`@yv?q2Y&X@1XSvmO z%~r_nMoaojLV#ojlhRwz;fj=N8-V4$cov%eF^`c@a3DXZ9Tc6OtD>r+!hjb{=|cZ= zgMf%(to>P*IFox4(lBoD?Q9p@lz3>OFE?ZqDATs%iN#1|xlZ>2##f z%dN+;bBD-REdZOhCh684h40X*)se)LK>yU%CX{X0sePxJ3QwwIa%?8PzcIq7(q(Qz zMq6wj`IBj8!DQWcuQ)M)h$NBmB{wX;)2>}+8Z|iD!U}HMv9`0GOL)|60RlNq+nT9- zBeK1tcXakYQl62|-g?~Fr2iv>$F9YX#5&X>rkhY($i3D6Xt{X4eC5ZQfn(W9U+7ZZ zn$ySIvYk3;Or*LMW-7tQi{9Y?x)}PykbX=V2Z!EwJvGe1IBQp7I&gbLI__C@HPeDq z!JZfY&(E)7lPrhLnMB%pigo0y@McGt?swKs2b)?KN#0^AAD<`qp#1iElwr2IxlgoV zpt^zr*Mh|5Q5iyw_JSG`j{-07;$_1#LZ&aLPQvMIyvO#w&CAsmj`Kv(DCOuVlpZ)Q zvUgDK^4F3)__}QBj}6HX@dISC)GzO&+?@P&Ij_YI29-`RY8 zo)n(G$nOQmx+8Ek_r6Iyp4kpImZ#`ADUs)S8F}4SZ?y_WBnQaktL>lK8qi0_z1!z6 zOy;>#vfAt==K4L8d35uB+l4pLYgg&3PPKh?`) z))cBMF%c2{_O6b}JlrbjNBl z_-o*KoRt~Gp4ZjI1+=Mo-}*m})((_aoY0MqxTvxl3=H(lrQ+JxGS(V>?nCW%vN?mT z;<1H#L1du*2+16s1H%ySu~2_ODp~*2?-BmX>#g7b z6OxH4AO7{3r{5xgf=?LRmSUo!2`!LL?!LH&W5vZkn>u}z{)fO&lls_ffdAK?fQRre zWMP2P;_fd87qGo*ix1da7>E-nXKWo>YEVxprB;jgyp{J&u8vHD*+L)-Re~LVIt%X| zPWMLlnJ|A!PF{=AFddQrKt<4hFk$m-C6NbAIPc9`V4HBtM-Wp{nE#}qSZRtVus#sP zEA9J}hD1cvA}d|kn8h?;xZL)9$z@mQHE1OB<=xunzOLsS#7OT2C%@hZ=jFwh9I3>z zz2jIS`m=7?Rg;EpHZ@zQ9crLV?PQ>vmo~G4w&Eb$FUyI31d4IAU&cIGwhQT#i|frJ zv2eJ!hHBzfdu?iFMBwWj1wGErRt;Y;`fh6av!xy-2B;6yjmfZo3S?(~TSpcU!EfzM z)%2qq%F~WF;1O=fA7o$8lcqz|h95bGhB_YY_saalZ;W#+yTaN)jV@JL-%~DC511J+ zQVhSUs<&sGtBg#I@`|HoZPNMp@dxz?C)b!n^IB7=$y8E3N}y!%n(&VE=W2BIbeg_D zB|&6|+UJLGV2-Q$h7%<(1#nx(Rzf%$#^@98>JdI6q7d>PQ;9k5gKafliPWp%Eb9g9 zpa@6eMq{;Kp+BfV5#ws2g-7$v1O?cC;MjLoAHvt3s4h5KedsHS?!8k%#kux$LPJ9j zlLh9>zswYR`D)|PDja{VzX6=@%t9$C)06Zj1q7XUHD^i(EvR#H`5-c{byKyZnJkmS zzH!}~}`vV zAG93wd9(03PKh^V93D}QO>vdD9GUWsv7i#4&hHuS2bQjx9~Qnahmsg#++S^{RVHT4 z<3B-1vSkILW3{3pRHa!!AVZ8Yhn_6#5x?TqPwcEZ@}(yvbSvv5PmkHl5yk_+U{u~2 zo0_eS*%XPDkowSkss6Mp{zB+%UKRSXRLp)|Va}|R?Dzz$&BUb)LxbHkAeV^|LRA%| zHeL=k@eVcMVOD_>>T8+k$Tv{J7|wn&(vWXDWbRre;&u@6U+hlM@yC&|iH+ z>hz5$b!m7?z3;7Ip31~_L}@L749*C<-tS+FQf=;V0hXByDLB$%(-+GEnm*&8728j< z{y`)luKTf{gCGd=b#^2W8cWU+F2WG=y-I8OBklPPbD%nr5N^a(^RRCseuF$^p!I*T z0792Gh1DNUrLxA=$g2)oVxqy@C-F@O6xU6~3#IW*)*6K7T=q-XFxgbWTr{N5>f2M6 zqUYbmv>RL%6xw_mfw8d>`ADhTbaUto>uhfqD?^u5Fh6A@Yjc^?FM`0SaoWOsg zLhco-;X>L*;j-c7Zbsc5(~0?JR)IADvg{DARDHXaW@UlYtcPDj71qyYT1v$DN{~42 z5x!oIyFjaZ{SpU!`|FozguD5ExP1rgn>8tev(Fa|CpW3mvKkG|s6=8n*X}jR$P__H z0FTnXe)ykM?o>D(D}Cg`ozv6=*?phk7VRCeAFfB`L6-p8l}DA2CASVJEMDP9d;cSk zqD)5V%l30`9WJxO)G0X1+5FxhQBvQF1IaFGao+=?}VL1R(ghk;ho5bd4t%oUPv6KSk1|fEk#&d20LC#eSy( zbqvi+tPLD~iyett&8j{057&M*_};9jibsWxb+4)@wg7t*YRggPIq>6@CD!qcMX| zXg{LCG^i-BKuo;i9NC!ljUNY=P*wFSgqq!QdCI(_!rNIJRMh*Mo?5utllxFVudC`b zm;QFQR`m4|348hV`00IOnP%4hh`~+ge%xEp*Or`@t$m24R2)bv+u;VgkrIZNUqI=` z=~CRzDTFqRWf^jXoy658@?O+$cfkkjcDuKUFOzvjsgvzBG(~KNK>7$Sy8TSDBGZEH zC1|3YH#w5AD>2F!Ki=O%n4-gb!-U&<@c7C29!%&eU++g06`m{hy>VYyGNdUk0mf!` zu*K$Kh2cf+fTYXQ*!pYGOv?G*RUh%vGI$K$f!zokWo#y1LDZBY$49Bgd@x^XNjfba zS|Fu-Jp;`4vs#qg>%#bZ9w`Q5C;d|er?Cn-p~2n);!~Lv|e#UcdhqA zT54%#Ya4=|<3mWeA}Vy)t3=6-&Bxw)lA>*dS=p<-D-&`7x$_~vPDA8UQOyH&5iX-6 z();cG@$l_KxWF|s}!&dH@3nL;-i?0v}nOXs6%&=eU z(%4lNskzKr<4^9tu(NHF_(Gkn4UNaZ-w@12lCeIjaq0WpWSYV^{W1+FkdR+uzZ$T& z1h*AAilt9gddIcC3jR$)U{%W~FbT{uISw<)?yW@hm943jk?5Vai2$V>kdR2T)GC<} z^wBT~M?s~Env>Ca#c65TICVCbbFAT$Z%+_%y(5v&Ot(SS$5emiJpsj)(SKrLI_HlV z*o}@Qms-Z~m`=Hk|HsrTTDDgpSl(ohZ{@h?UqKcr1)26Q8tQsV>^Gbs3Dec(SWs^; zT`iDA6)L}4W6O;;NAPWac+~J$!W6(A`MdMtyeAHoocCi1@vvfMl>*3Wz7yp)x~hkj z4kXtn|J25M-F!=ZOSN_(d*ITFtzs5C4vVqYXP?rN)7|_1u(w4p%HK54&lBn<{G2j+1sJB4w09P;%QmH{Y7X`5wj^^e)bf+TB&&YCl{Y;4X8l?Y(nNt3z!^AC;6FGmx!>)72DHj7tUC)RF#pJ8@0G9x;DSZDc?f%}* zTIyp$L?&6+;1A`0xpd3BQ(*!U>VWOw=Ai2V0{c9n)$i|x@Z6eEuKId4R!v5hl8q$w zz_BB_QrR^=oYTQ{o`;{>!s9Xpf!Nk=T^$8k*f_VX)tq0~$U}$!F8|LOiPM;!X;mW) z7OOuzMT27|m*!z7ND7;rQh@PL{D#>1WNY`G8@=AzBEq>VK=+OoP=!bS;2X@~=*X!_ zl53q&2sSowrUqz;wG1B&;ZG>{n)J_L$Gv0v9U>!|FdLUTzAxZH9b9@~1$Ot;v;Eej z5XCu#t|(S@CntK(5Aew~mq80kRGLS_8)lqb)loKpa?qs)T#nVYOYHbk26l8bvq zHf(zL{o$S0uFfo|yDbLKyzlYaIEMTF8y>c*zqE}&m_F!~%#vyd9qx`x{@sR)~&uN9>@$$LN)T!l8tKpYYOUWkm zR>%~3po%7uv+u1P?UG_`N)}`Wcjd|Bc!MBe;94ZRf-}p+9PhzHts}2;E*n)@^0Pl_ zMxvJyi=no0dt2`O5uM!iP-lo-ekSwAz}Gxs-KFN zQCUy!Etw1P;K8+oR!o0GjmH#8v8rwiN|MT>_gLiREDOx!iz>-NCOn>VX8l{L4gJX#O=I+s<~#>{9ENn!eooh ziRzP{j;yB9#Z8Q9O+b&+Zgj{R^HzKbad$OF#C*C&#{fJ0ysxsk8)@KT?7ZB-!_C`k z>q?$ygS&j%8m~)^m1pa8;9z!zHzuXiB9cefqnp27UB;7WJi#R0p$3yhDy^N>cFAE_C{!~94B z)P4q}x#NYKG&nopO><}ZGp^r01c_vIF1zUpjg!#wq+5^pv$v6w#~WJd5lz(4`zz)T zAJ1+2WiyouV&=Z~kM7aMMDVRHZ>mfni#&p1g$iC{eQFg?xhx0?2pDt8fRcNKjHVkN z)q8|LE9LkJ=)IJ)Q;TZG!trNnCfvnsWX_b+h*3c3Boe49P86W!QjLD;wfjXmoGLky zRLVqtKg@GNh=xlo%!3vSV^?6h;6+97IH$e+%1H zn<5W!Pa%)!#uj~wc)`E??U3@Rb-yL`+&fP^aD5VJTh@!rea=up{| zf;aRm#kRgr?3wt(NxjW(tEM8I<9OZO-LI}tzh6vmLZvd^Fc^v&HsoVJxcOg5hn7jw zM+M|>d6GnkW=gX#s2&DOx1WWtzggUnIt^NVh7}PO5m}6@IwWQjTETSKuZ_|_+0vqn z3H;iB^ru~!tU&I(yGz_ZH^1n^MgjG==A!L3&ah8`j)#a+Sue*u`pyfgh-vmNt>%}Y z`*4?ay?OW&ynW0KDv;S;jnfCI2ZM~&%!Ug*$dC?FkKc7`UU0vn!Z_g4KPjw7DSWrN zc^#kG**hi%==1V6eH5h%9zwWMChUgM6V9Hut*e<<=I4WSHFi@;AXG*?aHEd21Za&h zIEoa+#mUt^;_)&J~rM+p||3Tbiv;6s_0X zY*eNe&$_`!f9eN{LW^_bXoN&WpNX*r(%^+jGB9{$j{SvV8KV9J#Y+1sDf8;EK(ti~ z=?Dy3ph&K?(a>HCw;m#eU&?O!0KdBz^emD2!AXr(d+@q%4v7_fz zy82U0P?n)dn&(O`5n^u>8&$>*@#r4rm&z{^`l}yNl1|SAxe>})@y70D<$p`C3uKm+ z?x}RFUbjb;E5sP2SuN@BBN;KKrHO%@|AxLnUR*W6V71b7Ry>=kH}QU=ogbjf)mS%2^z#$c6;I6k3^f>x$7<E-0cQW{SOR3@=vb342kH)UNU1V)gqG%14iwRB9&TkRh1pu6K$<3QrbA7M6mU>FYA zhn2eN4VaGk!Eb7-Rf%4aUp0Twgl6|ZX>O<9sMpLyl{3$V-}Vq&B{Dj z*LWZMI@b9MA-VW?dgVmx!nsa2pt}U|*lF#}RG}6Tqx>#6P^D>a?`iUpmR40z{Fbd$ zP>UicMa_G4;!TDN5Vac>ZP^3GkQqy;7;Rc`*_$sXDK4={tIx%x0}55!Cal9t zs(=p4EY(QKaBXCJOG}aMIe1gCvUrqd`K*TrR8Fg#Y&NiAJ4mw($4=t2=*_mJC4WOO zRY`I@{2mPmMfCLV-zzogkHzQCJJDIV)Ymdo1^`j(Y|o@xcE__Hsv)K8bsRa5x2PF0 zkOoB~-ENK}IDr&Qc!&nP(4{q$`2QWK30M7czxDC&v}>Vt42z@JC?iM*jYMs3%Y4-9 zXso`3LQhsVeS`ygLc(k2ih(O)JaxTNI%UZ%Pn@?1h!+WmDLKD32FV0c4~0RXs<$+p zU~cdJ>-BtY>Q5XTj?Q+;YQjnja&pYIMEsUL1D)GPiLQ~p)w@9BQ0ak$j+UomB zfmlP{>Tus^s)%t?$aqVS-P)|sAo#CK@$aiX-{*@f82;BE0Jnn~!-&6=qkoSb2>kf# z3;ow}&HLYNxoXy47Q18q_knD2#j}(ew%Gprk$SPWfq&=Be;@iS^RFPrzvut=TkRf* zN3TFi3p4zy+kI&UsTE7>cQ>aeCCik-M3{~vd7g>@coCawhCO+QY}Oj()HBRzT8+mM zJ~KCaw#iN61(cV_7<{hUW~-GvZh2MrvyP727NFy_yErRwc6hC<%p}-E^80#cgmENh z8J}x;oDvI``A1R$$!T+w)lTPuHJDkyCo4@-4_k$;P(||#gFUKt`8*iQWd}!Krw66C zkK`E7@e-Xp`;m_WBkOzd!>n+!~YY?6gh)zsm#VxTZe zmi&c5%LHB7yL;`PO5%gtbVd2utC_rIE}t8O?Ii$8U@Cn2v^{Te(B;j{?0AP5MtNUZ zhEd>G6u?wmD@munR;4igbgQTU4!7A7DkvsAXA8`~YDbC9Lq_`b43hLBnd!*fRO@u^ zmmuIvb6Wl)rtWFlVD`f2mDP1>^+=FwHcRtifKPN_=R3zHdu=gF)#+KG@-(C9vvfUTqZud+9Z5Fsoe8AMMQ}p_oAIBoGH!yGEMtmZ0QrXgSpEV1;f-1AGrAHa6pa^>isA7K)kHK_dKKnb zeQVb?rmw>_s%eFJ96Lx~o@NcL$_UF%$l2x%3XPTN%mqQNCv0R66M64Ng8vv{OcY)Z zpVb+hkw}c+*)>glcN^6fi_cMK(Je<9cAp?MtWSp{4Y|%{e^c{6MU-TA^K$O@*8I90 zg?I6^*_S8Xm^4OKV17Emwzbcofr~t*Bu%?O2QXA5OK@-t6NcV z1($M=D-}}{#CbY2;Udm_uR~OM@dxt!_>~f46S4@()W$~J(O9q9i1rnhxq->2ovCU) zvi{0)?%q5Bsv|#x94Z}wzRV|8A2K}ZR@-$IR0-O|Y51LA&UQ~pGC+6O>&rzPtdf#w zKvf4QX*M-$y!s+)t$ned)A zwLNPz*^PZF%M0qB%BSdMb3{(c^9$280;gkP$^ON(rk0rG^?YHJqwT68cv_!h|ImZ$ zozyH-8ldC#H&kiLx8L&<$#R%@W_DH%6mERCAcy@@O=CZGh^L zc*xUtD|wMF{qst*&9{5ubbB#JaytCp2Zyf~Na;kZn$2NzWkLKB!Y-7d^7Q&*Yb-Dc zInv3SaiCDZG_&^5jGss*yxeJedf8rv?hSXyo$^`H*2plVop0?fBgc_R5Wbr;NzQ&w zaoUZRT<9iBut{|0OBp2F#T3bfzQOIT5lahSB~lBm-FPd!E<2f}{Zk7KE8#*>V(;+M z(q~Z7t}#(r!0GNf#nujm9BI*3*l2=q*E%7f#YIg(H&Y%#xDgT6yVf?xcCeM!n$-*? zvOfjl4->vdRS3t&^QKByivRLfOUkcNeVFWrB+4M>BCN!G6X;$zR90JP|NS}mX(oAV z-c749)#Z44fmJxv#Vq;FAImOeq3+oI5L|SAs3UUoc!G7|BVNSXFd~;J_I+v(D}d6R zzQC|WW3gxU@~Ci*0z%0KLg%ab#m9@Hz4C$yIXauzm&Z? zbIC|snIV2<{pbMxk?y|2^O&=BPYQiaz`dsh zF34H*+!#Ff)xF!(9FB-51%88r>(kH7S32m@j}m>NPm-$5CXTwXtGW8-;z!NTst!=8 zLu_}1ydh#L-s?G+27zI%jgw`E*WsSfbEbL9JpI7jo$0(dQ{`3{e;Z=U(fNG) z2YX_@lG2G0<>T$IiK zM4jNrCw4>1xQj{k1>-)#oEzM$-Od7AP71KoM|?`4Y?ks0e~?MR{@mz`dA>%2j-BLi z6gq`{!!uWxT!-bbzEs}*&+y|N^e;~^70rdMYAq3-=%RgK z!qr%oIVIJm4pY6lDE$d*Z8|#Y(nhbYA0H?+*I9G&0s~y<1+Okij%(eWktsXc#d>l! zVvOdTu6oRMlCT~NguQ1Pp;vnm*~O8oX=?0E)G>7I&5Ch8P2+o?pBxZiIft<*Ov)w3r+sOaQm|G^(m8yw;$zVeYM|x}D)& z5GM{v;%$Ry=rMxaxBd=h-VEw4K7YO}D|&8gCYv%9ZLo1L&&X<{BHC8D#h$)idzses zSfQ{qYM*pcxaMm4bUFKSxO?CWa&%>xmGhX_qb3_w1p!tW-Uf%m6c05Wu;y&*f{Oox z$66xqW7%t?07;mNNB!i(PyEquQcxV8~EL?FU3PHRO4@li{KBG)oRv~wq}cOwbUz#RCnTZti~n8Tj2c>W7=F^!8%A+9bks6 ze9OyUZ-oS(4c5rZ=&cWpqVt})j8F(jTt_8c9#_q-6~BO_viZr1{kbw{EQ%^^v*g;T zV@BLcr-vklc{L4NgJO0BHX+pBBlZ@n ztQvNg%a`fKorL%%(H}(jP9b>3EYVc5Q~kR#XG9f=wdqaJQ$ccJ2!FYR)OoNb8Joz~ z9}jwzYZqBSkn&|_^cmme@LA$N^H~V#GQF!Z(9E1_^WCpzht2a6R2x1^Y_tR-%O_@= zV`@FYsuYvoWvmQFzG=&F^HZuX>Z=kTzVdhCG?I*rk5aLjn@ga6VLrv8ZfePTcWLu; zOUITXy)5&ZgqGnxTwGCsi21{1mrCxtB?VR+V#*JPfB+C_X_0EHT z^4AhnKrt{r&EXfT>I%x~-Q7SMrBG~uil%0*aNZaBQ!d`CC(C90Q>aWN9HJ^Q(Xi(b zX~u#blI&&?(K#Dl9PFaG`;FvcHRp0X_Jotxg+6(pw(-`=e%WnHRxeKR5sDDhJxE!| zk2PXr`YfrTu!$2G1B^&W#fSJ(;>(F*g`)!uR}jE(4H^B<7%nxB$31^iU||phP8iE< z(#C1Gi%|nsz5+ukzYQuNzV($W7?%8>%3#x96TCsWkkO+uc`<>)_*f_Ovx(q4`+JHy z{ib}asrs53xNcE2_m4Lj_dLCi&uuNWV`2fxtv7mom7su!t9jSjhJx3#{8#$x%X1@K zS$#AYA;xe4N|Ujy)NoPF%Ix|Q6_^wly49#WL0MFv-s4;AAf_p1s8aMT)oryA@2cXM zmDgiu&_8R{ZNlg3^uuV?gT_cWG|jOxcGop~R91NGKk(qbARP=^fdOL=(s)zMw*{-2l_qAcxMC(zWuLMt)y^WWQFEQyACc)aiTx>Ur> zKP*ojq$+ERcy1AvmlK%uEE}4Xg7%kSk%?;ik!YBkR_#li*7#k)lP+)g3TiaGuQ!Uo z7+zZLn~g!$$OmU`Jvg?41#EsPlxy7b$%?$Sq)@EHTIrR$0R36dLW@*>Hg`}%dfl)K zL7|rY{zL|@8^U}lWWnXule$_X0=EG=NTaK7SKjo7WDHl7C_V7tk0H~k6+ zId4BZD|$XSk;6&dY4Gfk+CaIiw+3FN(|8;#Ja(%_E@?B)oaln*nUScFh^g}e{LV+2 ztKdY3FXaA$0w2&>VYEJRwR|_n29`Xulscxe7HNae*$ADgWinUT?Ro-+m>1*(G#JXP z1udj~JXj*mCpQJTe2bIo)tfmh9Bet<)CTzsULw^qXkR09bi{tAxN`5wRw~VsmKmQAJDXmpZ@?YVoxL?q zQHn45y*2q86JoR(?5%i@e5hx?b3)>slJ2CIvIPrheHndC2Vk^vyMPGov^!9lJHs5i zD+oV5Dq)q_d65ABj=3{;D8Di8>%-$cr?|GzVn2G?vd3(l%D^ZS(q(p$gv{SsH87V7 z`#E`ilFZBgK72UEeKn37iYQFxZnzmW!Eg8oxSsDdW#`@(3$VZ^P2QV?KDRHdle>D$ zdgFiZRZ%EB*f;EPQJ97d^2?Qf-NnkMLs4BOmS=u>bm4>#dJvTbjYiErXf1cD{L_w3$Fsq49DVu2A z=uFel)`hrpF9SUukQ2hKx*b9o`?jT-EDW#AK#qa1oY&-7ID+YTOOgmJ~@>-O7CW@*5g z$MFOvbV=x#AJEd1bOo+FgG*Rv><3hCkG{M7?V3V%HU`ZYnfqw04Z8nQ-xHpl_}ptl)%j+v*8qaqKUrU!v`) zJXicj1r6X6vOw5dXsH}e8$~&B3qr08n$yx3!-=de;QoJ(Itb_}OGT~rYB?DPH|wuA zucA{OKi)RF_O^S*NFE<_CX01DJF z^C3nCi%xoQWPEa5gfyQwE)^Jb*cYhXC8V3b!B(9MjNo@8o8zz0-`1Hi&;u&czoXW0 zb3M!kJ8160Cclm*s@-c1TdW0DLe{b02IJg%FC;%35x8->4PsnwgvQwFaR9{{eQA1q zikqnd`Xbuv$a*k>i*?!Pzbrgp{Jaudbkk?v38HjUh`o61Nap|x(Nr^0H-N%&FFcX%72HX9^7eQ(b<61D^Wxo zUY`OGlmw){!`we|S#|iFsxRvXfQqP_Pwtu;uCc?@r|)_0lIP^+tlX)hhahj#Ximaj zy;2h8LrH(ifC37@B6uts^mN1nEze!?@n(Y`2sw);ExTH-tb1=@Km0L^^jDPmQ~yT2 z@N+j$TIfKM&VEwzaXg3FyygokkcH@Kc82fIvTFF-=@;WtFXl#FR z=Nq!E{QuG3dj~bOwtv64-HL7mM4D2!pdekONw-j>*U(861f+%@YN8tz1Oi)--a%?0 zAT6{IrFWzx^xjJnS_lxz8~5`(@A=J{bLPzN{o~A;Gw+)9$DPTnmCRcAy4QVwuJ84| zwl;!&`^OOEEQ6aDse`yK;c;6%OvS4oCA|8b1#dzS)$0mHI&~;q$l{iqT=trqo3{WwBY5NYmnJ{I$` z)SG@oXe&j_c(k8h33P1#v1?!h`iqX_-vV45rwGmsPpHoca|uRuf=?Jktfht>m;psifLUX zVd+j`DCjo&C1Lzh``~Fn&pp0e0b;TwiPrgaVD!$usvFTOprfvTOpK2&5mZZ%uDPR3 zEK`l|W~*LZj19)t@~;hK9Qn6S69xKC?>_B^TPX*Ihla;utYpYxhYd4Qa=?dCGK48- z5Epq}DX1rI16)(>!K)Z*{#(^Ap)AjbMJ|gPv;HpOr{Wjro7F6`ebtdgT7^)r>k>{9 zcErt%jZ#S-(8=N7W3+wEBL_7ME7dMWONKf&rfyGaZdtV#YF9b6D6udZNkPvYN&3Yj z(z@mWLY<5BlcVAu5`1yNTi=`L&3j~!_;SCppLGspb{tGbRrbx+m14y~tyWhFJ(s_m ztV&$Fe>qH<7XD@i>{-=`d^(i0A?@AMbDRa=Htv<6tdT}E$S|kl;!_7M))hI7SP546 z7%_J4SVi)n$(hFJg}zKHGQ$eTLHzcoF9LkIEr_3I`!3JVJw3C